OpenSource NTA для безопасника

Привет, хабр!

Уже многое было рассказано об анализе сетевого трафика, например, с помощью Suricata или Snort, но что делать, если контекста алертов IDS\IPS все еще не хватает для полноценного анализа?

Под катом — обзор opensource NTA — Arkime (в прошлом Moloch).

Немного теории

Что же такое этот ваш NTA? Это система анализа трафика (network traffic analysis), которая позволяет в удобном для аналитики виде представить сетевой трафик (например распарсит его и пололжит в Elasticsearch). В англоязычных ресурсах это так же называют FPC (Full Packet Capture).

В странах СНГ, анализ трафика как правило, ограничивается IDS/IPS от вендоров сетевого оборудования или коммерческим NTA.

Почему NTA так мало распространено? Все очень просто — для этих продуктов необходимо мощное железо и, желательно, TAP (например такой). В виртуальной среде NTA, к сожалению, работает хуже, чем bare metal.

Сам по себе трафик для безопасника может быть интересен только в ходе расследования, но никак не на стадии обнаружения нелегитимной активности. Это связано с тем, что вручную искать иголку в стоге HEX-сена очень и очень непростая задача.

Такое утверждение справедливо для чистого трафика, даже если он индексирован, однако если к этому трафику прикрутить детекты (например от PTSecurity и\или ET Open), то применение NTA преображается в инструмент обнаружения, threat hunting«а и расследования инцидентов ИБ.

Подводя черту, можем сформулировать несколько основных задач NTA для безопасника следующим образом:

  • Поиск хакерских атак по сигнатурам в трафике (Вредоносное ПО, шеллы, SYN-flood и т.д.)

  • Мониторинг и выявление аномалий (в сетевом взаимойдействии, в работе протоколов, выгружаемых данных, в наименовании хостов и д.р.) в т.ч. со сбором метаданных на сети и использованием в последующем машинного обучения.

  • Выявление нелегитимного взаимодействия по управляющим протоколам

  • Обнаружение туннелей

  • Нахождение мисконфигов и потенциальных уязвимостей в сетевом трафике (например, простые пароли в LDAP/HTTP трафике и пр.)

Подробнее можно прочитать тут

Подробнее о Arkime

Хорошенько погуглив, нам удалось найти opensource NTA — Arkime. К сожалению, русскоязычных статей или опыта использования инструмента найти не удалось. Поэтому мы расскажем Вам, что же это такое и зачем оно надо.

Итак, как говорилось ранее, Arkime — opensource NTA решение, которое парсит и складывает трафик в Elasticsearch и pcap«ы. Это позволяет анализировать сетевой трафик из веб-интерфейса, что очень и очень удобно. Для безопасников предусмотрена интеграция c Suricata — Arkime умеет сопоставлять алерт с сессией и отображать это в интерфейсе.

Вкладка Sessions, пример интеграции с SuricataВкладка Sessions, пример интеграции с Suricata

Таким образом, мы очень плавно переходим к обзору функциональности и начнем, разумеется, с обертки  веб-морды.

По умолчанию, нас приветствует вкладка Sessions.

Вкладка SessionsВкладка Sessions

На этой вкладке осуществляется поиск сессий, синтаксис поисковых запросов интуитивно понятен, хорошо задокументирован (в самом интерфейсе есть ЧАВо и документация по языку запросов) и подсказывает поля при вводе (пример на скрине ниже).

Подсказка при написании фильтраПодсказка при написании фильтра

Из приятного, что можно найти, копаясь в сессиях:

  1. Все файлы, которые передавались по сети (например, по smb)

  2. Аутентификационные данные (например, http basic или в ldap-трафике)

  3. Хакера, если сработали сигнатуры по делу и это видно в трафике

View таблицы настраиваемые, можно в любом порядке включить в отображение любое индексируемое поле (например на скрине выше я добавил название сработавшей сигнатуры в конец), и это можно выгружать в файл (в csv или прям в pcap):

Кнопка и меню выгрузки сессийКнопка и меню выгрузки сессий

Так же можно сохранить поисковый запрос и сделать его периодичным (а потом еще и оповещалку прикрутить).

Из важного — текущий поисковый запрос сохраняется при переходе между различными вкладками Arkime (сделал запрос на вкладке sessions, и для дальнейшего анализа идешь на вкладку SPIView например).

Следующая вкладка — SPIView. Это своего рода группировки по индексируемым полям. На наш взгляд, очень удобно и хорошо реализовано — можно из интерфейса накликать фильтр, который интересен.

вкладка SPIViewвкладка SPIView

В повседневном мониторинге самое интересное — это сработавшие сигнатуры. Ниже представлен пример группировок по имени и важности сигнатуры (практически, это каскадные группировки).

группировка по сигнатурам и их критичностьюгруппировка по сигнатурам и их критичностью

Кейс 1. Разбор сработавшей сигнатуры

Примерный сценарий, который мы реализовываем каждый день:

  1. Смотрим сработавшие уникальные сигнатуры

  2. Выбираем заинтересовавшую нас (для примера использую любую)

Выбираем сигнатуру Log4jВыбираем сигнатуру Log4j

  1. На этой же вкладке (SPIView) смотрим уникальные адреса источников атаки и цели

Смотрим группировки по IP адресам и протоколам на той же вкладке SPIViewСмотрим группировки по IP адресам и протоколам на той же вкладке SPIView

  1. Внутренние адреса — точно наш сканнер, это смотреть не интересно, а вот внешний уже интереснее. Давайте посмотрим, успешная ли атака с этого адреса? Добавим его в фильтр и вернемся на вкладку sessions

    Вкладка Sessions с примененным ранее фильтромВкладка Sessions с примененным ранее фильтром
    1. Итак, анализируя сработку в самом интерфейсе — стало очевидно, что сработка по делу, но атака неуспешная — соединение дропнуто и атакуемый адрес ничем не ответил, кроме RST.

Следующая вкладка — SPIGraph. Это функционал дашбордиков, табличек и графов.

Дашбордики пока сыроваты (можно только один на одну страницу)

Пример бублика с группировкой по странамПример бублика с группировкой по странам

Далее — вкладка Connections. Эта вкладка строит граф взаимодействия адресов и проставляем вес линкам (чем жирнее линк — тем больше данных передано во взаимодействии).

8520b993d3f321a431b001229dd32a5d.png

Немного забегая вперед, расскажем о вкладке Upload. Тут можно загрузить свой pcap, он будет проиндексирован и отобразится в интерфейсе. Рекомендуем тегировать файл с целью упрощения его дальнейшего поиска.

f42463eb4ea48e0027bc73b66752f509.png

Однако есть значительный минус — при загрузке pcap через интерфейс, он не прогоняется по сигнатурам suricata, соответственно алертов мы не увидим.

47d2c33f36b2593e0674d3469658cac6.png

«Как же быть?» спросите вы. А мы ответим — «есть два варианта»

  1. Проиграть pcap на интерфейсах захвата (например tcpliveplay). Он будет получен как обычный трафик, прогонится по сигнатурам и отобразится в интерфейсе, но присвоить ему тэг не выйдет.

  2. Искать активность хацкеров c помощью функционала вкладки Hunt.

Здесь можно осуществлять поиск по raw-данным (т.е. прямо по содержимому пакета, вне индексированных полей). По своей сути, это — движок для ретроспективного поиска. 

Кейс 2. Hunt«им

Так как трафик из добавленных pcap, можно искать по указанным тегам. Для демонстрации функционала Hunt мы загрузили из интернета файл с записью трафика, содержащую активность хацкеров и протегировали «Habr».

Отфильтровали загруженный PCAPОтфильтровали загруженный PCAP

Сделаем несколько простых запросов, посмотрим есть ли в трафике команды «net use» или что-то со словом «base64» в загруженном pcap?

Поисковый запрос HUNT для net useПоисковый запрос HUNT для net useПоисковый запрос HUNT для base64Поисковый запрос HUNT для base64

После создания и запуска ханта происходит поиск внутри сессий, подпадающих под текущий фильтр. Так как мы хотим искать только в загруженном pcap, наш фильтр «tags == Habr». После завершения поиска нам будет предложено посмотреть результаты, нажимаем кнопку «open» и в фильтр добавляется id нашего ханта. Переходим на вкладку Sessions и смотрим сессии.

Результаты выполнения HUNT запросовРезультаты выполнения HUNT запросов

Так как же использовали ли утилиту net? Смотрим в пакеты.

Сессия по результатам Hunt Сессия по результатам Hunt «Habr_Hunt_1» (net use)

Ого! Кто-то создал пользователя с правами администратора.
Идем дальше. Base64.

Сессия по результатам Hunt Сессия по результатам Hunt «Habr_Hunt_2» (base64)

Так, мы видим Get-запрос, который возвращает powershell скрипт с элементами, кодированными base64. Как же здорово, что под капотом есть функционал CyberChief. Будем декодировать. Однако, данный текст почему-то не читабельный даже после base64-decode. Круто, что есть функционал «Magic» — это модуль, комбинирущий различные варианты декодирования. Благодаря нему мы видим, что это на самом деле сжатый Base64.

Используем magic в CyberChiefИспользуем magic в CyberChief

Декодируем дальше, смотрим в скрипт, а в нем…

Base64 в Base64Base64 в Base64

А в нем еще base64.  Ну ничего, вкладок у нас много. Поехали дальше.

Декодируем следующий Base64Декодируем следующий Base64

Это что сон во сне base64 в base64gzip? Получается так. Зачем так сложно? Тут уже забирают скрипт для создания dns-туннелей.

Вот так вот мы нашли в нашем тестовом pcap-файле несколько атак.

С помощью такого функционала можно делать и более сложные ханты, шарить другим пользователям и делать их периодичными. Однако, если запустить hunt по всем сессиям, то это будет крайне медленно и ресурсозатратно. Хантами нельзя заменить функционал сурикаты, но можно его дополнить поиском «в прошлом». Как пример:

  1. Вышел 0-day

  2. На следующий день после публикации 0-day, обновились сигнатуры suricata

  3. Устанавливаем сигнатуру и, с момента установки, будем мониторить сработки

  4. С помощью функционала Hunt, можно проверить, атаковались ли мы в период между выходом 0-day и установкой сигнатуры.

Если это переложить на Time-Line:

f6ad48fd8f0c202b1cacb5150236f616.png

Вкладки Files и Stats больше служебные — отображение pcap файлов что есть в системе, а также данные по эластику\нодам захвата.

Вкладки Files\StatsВкладки Files\Stats

История поисковых запросов сохраняется и к ним можно вернуться, правда это находится в другой вкладке — History.  Не очень удобно, но важен сам факт наличия такого функционала.

Вкладка HistoryВкладка History

Вкладки Settings и User особо комментировать не станем, из интересного — можно выбрать тему веб-интерфейса под себя (не все коммерческие NTA умеют в темную тему

© Habrahabr.ru