SiemMonkey: плагин против рутины в SOC

10 минут
Константин Грищенко
Константин Грищенко
Руководитель отдела мониторинга информационной безопасности, Positive Technologies
Для кого:
Специалисты SOC
Скиллы:
Автоматизация работы с SIEM
  • SiemMonkey
  • SOC

Для решения задач security operations center существует масса разных подходов, технологий и ПО. Сегодня мы остановимся на работе с SIEM и расскажем о решении, которое позволяет автоматизировать скучные рутинные операции.

SiemMonkey — это браузерный плагин, который упрощает работу специалистов SOC. Многим из них, особенно специалистам первой линии, часто приходится выполнять однообразную, монотонную работу, а это прямой путь к выгоранию.

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

В качестве основы для UI многих современных ИБ-продуктов, в том числе SIEM, выступает обычный браузер. Почему бы не сделать небольшой плагин, который будет выполнять роль тех самых инструментов, упрощающих работу аналитика? Звучит вполне реально. Помимо прочего, у этого подхода есть несколько важных преимуществ:

  • Пользователям не придется устанавливать дополнительное ПО. Браузер есть у всех.
  • Автоматическая аутентификация. Аналитик выполнит ее, когда откроет веб-интерфейс SIEM. Если встроить плагин в интерфейс системы, запросы к бэкенду будут выполняться автоматически.
  • Не нужно думать, как отображать результаты работы системы. Если вместо плагина использовать, к примеру, скрипт на Python, придется придумывать что-то с выводом результатов. В консоль? Формировать отдельный отчет? Создавать окна с помощью WinForms? Разобраться с HTML и CSS и вывести данные в интерфейс SIEM гораздо проще.
  • Браузерные плагины работают на любых ОС.

Для реализации решения мне понадобились базовые навыки разработки, доступ к исходному коду SIEM (той части, которая выполняется в браузере на стороне клиента) и немного свободного времени. С технической точки зрения в SiemMonkey нет ничего необычного, это стандартное расширение для Chrome. Внутри — классический JavaScript с примесью jQuery и ряда других библиотек, самописные обработчики, отслеживание изменений в DOM, а также простые манипуляции с CSS.

Кейсы: пять примеров автоматизации

1. Проверка хеша

Что может сделать аналитик, чтобы проверить, является ли активность вредоносной? Например, посмотреть вердикты по хешу на VirusTotal. Для этого нужно выделить хеш, скопировать его, открыть новую вкладку в браузере, перейти на virustotal.com, затем — на страницу поиска, вставить значение и нажать Search. Только после всей этой рутины можно будет изучать результаты.

задумчивая мартышка.png

Что умеет SiemMonkey? Нажимаете на название поля с хешем и автоматически открываете новую вкладку и заполненную строку поиска — даже Enter нажимать не нужно. Никакой рутины: один клик, и можно переходить к интеллектуальному труду.

рисунок 1.png
Рисунок 1. Проверка хеша

2. Проверка IP-адресов

В событиях зачастую встречаются подозрительные IP-адреса: источников, получателей, промежуточных узлов и др. Чтобы их проверить, аналитику придется выполнить те же самые скучные действия: выделить IP-адрес, скопировать, открыть новую вкладку с VirusTotal (с WHOIS, AbuseIPDB) и т.д.

мартышка с лупой.png

SiemMonkey снова сводит рутину к минимуму. Плагин добавляет в интерфейс SIEM раскрывающееся меню со ссылками на ресурсы, позволяющие проверить репутацию IP-адреса. Нажимаете на ссылку, и в соседней вкладке открывается нужный сервис. Отмечу, что помимо поддержки популярных ресурсов мы реализовали возможность добавления пользовательских ссылок.

рисунок 2.png
Рисунок 2. Проверка IP-адреса

3. «Интеграция»

Почему в кавычках? Потому что интеграция в привычном смысле слова уже реализована в большинстве ИБ-продуктов. Даже решения разных вендоров зачастую можно подружить с помощью стандартных API. Тем не менее это не всегда избавляет нас от рутины.

Предположим, SIEM зафиксировал у процесса подозрительную сетевую активность. Как проверить, что находится внутри трафика? Нужно воспользоваться NTA-решением. В нашем случае это PT NAD. Аналитику придется дважды копировать из SIEM IP-адреса и порты, переключаться на NTA и вбивать данные в фильтр. Как SiemMonkey упрощает этот процесс? Открываете всплывающее окно и нажимаете на ссылку для поиска сетевой сессии. В соседнем окне сразу откроется NTA-система с развернутым анализом — данными о сигнатурах и трафике. Схема работает и наоборот: если аналитик заподозрит что-то, глядя в NTA, он сможет найти соответствующие трафику события в SIEM.

рисунок 3.png
Рисунок 3. «Интеграция» SIEM с NTA

4. Дерево

Во многих SIEM есть табличные интерфейсы. Это один из важнейших инструментов аналитика, но не все данные удобно анализировать в таком виде. Допустим, специалист смотрит список запущенных на хосте процессов и находит среди них подозрительные. Дальше ему нужно понять, в каком порядке они были запущены: кто родитель, какие у него потомки и т. д. В этом случае работать с деревом гораздо удобнее, чем с таблицей.

мартышка на лиане.png

Для решения задачи в SiemMonkey есть три специальные кнопки. Одна позволяет получить всех потомков текущего процесса. Вторая — всех прямых предков. Третья строит дерево всех процессов в рамках одной пользовательской сессии. Для получения информации по процессам плагин фоном отправляет запросы в бэкенд SIEM (так же, как если бы аналитик выполнял их вручную).

рисунок 4.png
Рисунок 4. Дерево процессов

5. Параметризованные фильтры

Фильтры, которые использует аналитик для поиска определенных событий, можно сохранять во многих SIEM-системах, но, если они не зависят от контекста (конкретного события), это не всегда удобно. Зачастую, изучая одно событие, аналитик понимает, как найти другое, связанное с ним. Для этого нужно подставить определенные значения из первого события в поисковой фильтр второго. Если передавать такие данные как параметр, получится параметризованный фильтр.

При нажатии на соответствующую кнопку SiemMonkey найдет на странице все параметры текущего события. В этот момент во всплывающем окне автоматически появятся подходящие под контекст фильтры. Аналитику останется лишь нажать на подходящий фильтр, чтобы открыть в соседней вкладке окно с нужными событиями. При этом набор фильтров задается заранее простым JSON-файлом, в котором можно указать все необходимые параметры.

рисунок 5.png
Рисунок 5. Параметризованные фильтры

Пользователи SiemMonkey оставляют нам фидбэк и делятся идеями на GitHub. Мы постепенно улучшаем решение с учетом их запросов. Например, теперь в плагине можно быстро генерировать ссылки на конкретные события (раньше пользователи просто обменивались фильтрами). Другой пример: по запросу сообщества мы реализовали возможность сохранять нормализованные события в формате JSON-файлов.

Зачем нужен плагин, когда есть SIEM…

Функционал SiemMonkey не ограничивается перечисленными кейсами. Да, для решения подобных задач не обязательно писать отдельный плагин, ведь хороший SIEM во время сбора событий может сразу их обогатить, подцепит все нужные данные и предоставит аналитику. Это возможно, но не очень разумно.

Главная задача SIEM — собирать множество исходных событий, приводить их к единому виду, обогащать и коррелировать, выявляя признаки подозрительной активности и компьютерных атак. Как правило, этих событий действительно много: наш внутренний SOC за день собирает как минимум 1 000 000 000, среди которых 15–20% — сетевые. Если каждое из них автоматически проверять на сторонних ресурсах, скорее всего, на корреляцию мощности SIEM уже не хватит. Таким образом, в попытке облегчить работу аналитикам, можно больно ударить по работоспособности всего SOC. Куда разумнее вынести этот функционал в отдельное решение.

Наконец, довольно простой вывод: если приложить немного усилий, можно заметно упростить себе работу. А еще лучше — поделиться результатами с сообществом и вместе развивать решение.

СТАТЬИ ПО ТЕМЕ

Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!
Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!Подписаться на обновления!