Как обнаружить троян в BIOS

Как обнаружить троян в BIOS
На прошедшей неделе многие исследователи говорили о том, что проблемой современного мира являются атаки на цепочку поставок оборудования (supply chain). Они заключаются в том, что в любой момент от старта производства оборудования до доставки оборудования к вам существует угроза того, что кто-то встроит что-то, либо в плату, либо в BIOS поставляемого оборудования.


И, если была возможность вредоносному коду запуститься до вашей операционной системы и до старта любого защитного продукта, то шансов его обнаружить на самом хосте имеющимися хостовыми средствами защиты очень мало. Начал говорить на эту тему на прошедшей неделе Александр Матросов в  своем выступлении  на OFFZONE.

Он привел несколько вариантов защиты на уровне ядра, загрузчика. На конференции  ICC.MOSCOW об этом же рассказал в своем выступлении ( запись уже доступна ) Тимур Биячуев.

Как вы видите на слайде Александра Матросова выше, защиты от трояна в BIOS нет. Так ли все плохо?

Как узнать, что ваш BIOS содержит троян?

Существует одна проблема для атакующего - ему нужно каким-то образом передавать информацию из кода запущенного из BIOS в сторону своего создателя или центра управления. Для этого трояну приходится использовать сеть компании, в которой стоит данное взломанное оборудование, будь то сервер, роутер, сотовый телефон, кофемашина (угрозы IoT) или станок (если мы говорим про защиту ICS/SCADA).

И злоумышленники понимают, что в сетевом пакете им спрятаться некуда. Да, они могут зашифровать само передаваемое сообщение, но сам сетевой пакет им спрятать некуда - он виден в сети и этот неожиданный пакет от конечного оборудования будет замечен и, возможно, заблокирован. Поэтому обычно используются соединения по типовым открытым портам в сети: порт 80, порт 53, порт 123. Смотрите ли вы за всеми неожиданными пакетами в своей сети?

Существуют продвинутые безопасники, которые в курсе методологии Zero Trust - разрешать только те соединения изнутри сети наружу, которые реально нужны для работы. Да, таких безопасников и сетей пока немного, обычно в сетях соединения в стиле permit any to any для всех хостов в сети.

О концепции Zero Trust говорят во всем мире уж лет пять, например, презентация Данила Дрожжина (КРОК) про Zero Trust и реализацию его на межсетевых экранах Palo Alto Networks:


Соответственно, если вы применяете технологию Zero Trust, то вы должны не просто купить лучший в мире межсетевой экран, а еще и важно настроить его правильно. И в этом случае улететь из вашей сети информация из трояна НЕ МОЖЕТ, пока вы ее сами не разрешили. NGFW отлично справляются с различными видами туннелирования, типа TCP-over-DNS и техниками обхода защиты, например, использования чужого порта другого приложения для туннелирования своего (например передавать данные по 80 или 53 порту, которые обычно быть открыты). Но с NGFW вредоносному коду сложно.

Как найти несанкционированные соединения в Интернет на своем межсетевом экране

Если вы посмотрите статистику используемых вашими сотрудниками приложений, то вы должны видеть какие приложения передают трафик с компьютера сотрудника или с сетевого устройства (принтер, роутер, сервер и др). Если у вас NGFW, то каждое соединение "раскрашено" контекстом: что за приложение L7 используется, какая страна, какой URL, какой сотрудник, какие типы файлов внутри.

На приведенном ниже скриншоте dashboard "TOP 10 приложений L7", вы видите, что в сети за последний час были соединения, которые помечены как unknown-tcp. Эта информация должна Вас встревожить, потому что в сети компании обычно 200-300 приложений разного типа, и обычно NGFW все их "знает", то есть обнаруживает и даже блокирует, когда вы задали соответствующее правило. На данной картинке видно, что за час сделано 36 сессий TCP, контент которых межсетевой экран не понял, поэтому пометил как unknown-tcp.


Что наличие приложения unknown-tcp значит для вас? Наличие неизвестного соединения TCP или UDP или ICMP на NGFW - это инцидент. Нужно проводить расследование!

Проведем расследование инцидента c unknown-tcp используя возможности Palo Alto Networks NGFW

Начнем с простого: посмотрим в какие страны уходят эти неизвестные соединения. Включим глобальный фильтр по unknown-tcp (видно слева, что он включен) и посмотрим dashboard Destination Regions, на котором показаны страны, в которые идет unknown-tcp:


Видно, что за 7 последних дней соединения были с Англией, США, Аргентиной, Россией, Германией, Францией, Китаем, Ирландией. Здесь конечно зависит от вашей сети и от вашего бизнеса. Обычно самые подозрительные именно редкие соединения! 5 раз соединялись с Китаем: кто, почему, зачем? Если вы не ведете бизнес с Китаем, то конечно вас должны заинтересовать все соединения в Китай из вашей сети - то есть вы их будете расследовать как более подозрительные. (Я встречал у заказчиков неизвестные им IPSEC туннели в Китай, хотя вроде как IPSEC в Китае разрешен далеко не всем.)

Следующим шагом можно перейти уже в подробный журнал и вывести на экран все соединения, например, давайте посмотрим все соединения с Китаем по unknown-tcp. Для простоты есть специальная кнопка в виджете Destination Regions - кликаем на кнопку и переходим из вкладки ACC (скриншот вкладки ACC был выше, где были dashboard со статистикой приложений в сети) во вкладку Monitor и в журнал Traffic - в нем журналируется каждое соединение и одновременно хранится обогащенная контекстом информация по этому соединению. Здесь на картинке вы видите уже все соединения, а не просто статистику:

NGFW в случае unknown-tcp собирает PCAP пакетов, поэтому у вас есть возможность кликнуть на зеленую стрелку напротив каждой строки соединения и посмотреть что же за контент был передан в Китай. Или выгрузить себе в виде файла PCAP эти собранные пакеты, чтобы посмотреть в Wireshark.

На картинке выше вы видите, что была применена типовая тактика обхода защиты - соединение было сделано по tcp/80 порту, который открыт практически в любой компании (потому что по порту 80 работают все браузеры).

Межсетевой экран уровня L7 не увидел в передаваемом трафике никакого WEB контента и, более того, не увидел никакого известного ему типа трафика вообще - ведь в базе NGFW хранятся тысячи паттернов приложений L7 - они все были применены к этому трафику и никакой из них не подошел! Посмотрите  базу приложений Palo Alto Networks. Раз никакой тип трафика не был обнаружен, то данный трафик был помечен как unknown-tcp и мы с вами увидели как реально обходят защиту и увидели как этот обход увидеть.

Чтобы расследовать инцидент дальше нужно разбираться с владельцем конечного устройства: смотреть что у него работает в памяти и зачем "оно" что-то отправляет в Китай.

Важно понимать, что если у вас L4 firewall, который не смотрит в содержимое пакета, то обнаружить такие атаки невозможно. Более подробно про разницу L4 и L7 читайте статью " Преимущества межсетевых экранов нового поколения ".

Приведенный мной метод как никогда актуален, особенно в сетях с критический инфраструктурой.

Полное описание лучших практик и стратегии защиты вашей сети на периметре и в том числе методология защиты Zero Trust, есть в виде записи вебинара Евгения Кутумина:



Пожалуй важно будет добавить, что любое приложение 7 уровня может являться транспортом для туннелей: тот же DNS или SSL туннель или HTTP может быть туннелем чего-то нелегитимного. И тут уже помогают сигнатуры IPS и anti-spyware - включайте их все, пожалуйста, неважно какая у вас сеть: телеком, банк, завод, больница, отель или автозаправка.

Сейчас я бы обращал еще внимание на туннели на основе websocket - например, прямо сейчас посмотрите имеющимися средствами кто использует websocket в вашей сети и задайтесь вопросом: зачем? 
Alt text

ksiva

Пусть будет утренний в честь того, что я его создал утром.