суббота, 22 июня 2019 г.

Троян в BIOS или руткит в ОС можно обнаружить по сетевому трафику

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


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

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

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

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

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

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

Концепция Zero Trust

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

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

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

NGFW отлично справляются с различными видами туннелирования, типа TCP-over-DNS и техниками обхода защиты, например, использования чужого порта другого приложения (например, передавать данные по 80 или 53 порту, которые обычно быть открыты). С правильно настроенным NGFW вредоносному коду сложно бороться.

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

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

Пример: Unknown-TCP

На приведенном ниже скриншоте из вкладки ACC показан 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 работают все браузеры).

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

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

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

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

Прелесть периметровой защиты в том, что в одной точке вы контролируете сразу все свои тысячи устройств всеми умеющимися у вас индикаторами атак.

Что дальше?

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



Важное замечание

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

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