Привет. Меня зовут Андрей Урывко, я инженер ИБ.

Это цикл статей о том, как мы перешли с Wazuh на коммерческий SIEM, а затем построили цепочку автоматизации обработки алертов с использованием IRIS (case management), Cortex, MISP и n8n.
В предыдущей части статьи об Интеграция SIEM с IRIS, Cortex, MISP, n8n я рассказывал о том, почему мы перешли с Wazuh и о том, как установить все необходимые приложение и подключить SIEM к n8n.

В этой части я покажу:

  • базовую настройку IRIS;

  • логику обработки события «переход по опасной ссылке»;

  • добавление активов в кейс IRIS.

Настройка IRIS

IRIS в данной схеме используется как case management система SOC: в ней хранятся инциденты, активы и история обработки.

После развертывания IRIS необходимо перейти по ссылке, которую указали в docker-compose - https://iris.hostname.

При первом запуске будет создана УЗ administrator. Пароль можно найти в логах IRIS "WARNING :: post_init :: create_safe_admin". Также пароль для первого входа можно указать через переменную в .env IRIS_ADM_PASSWORD. После первого входа переменная перестанет действовать

Перед началом работы необходимо создать пользователя, из-под которого мы и будем работать. Делается это во вкладке "Advanced" -> "Access Control" -> "Add user". После создания новой УЗ перезаходим под ней.

Создание нового пользователя
Создание нового пользователя

На вкладке "Case" можно увидеть всю информацию о тестовом кейсе, который был создан при первом запуске.

Demo case
Demo case

Подробно про все вкладки можно почитать в официальной документации

Для подтверждённых инцидентов создаётся case, так как они требуют реагирования и трекинга. Подозрительные события оформляются как alert, чтобы не перегружать case management систему.

Если с alerts все просто, достаточно просто по API передать нужные поля, то для case предварительно нужно создать case_template. Необходимо перейти "Advanced" -> "Case Templates" -> "Add case template". Здесь есть готовый пример шаблона кейса. После создания, рядом с новым шаблонов появится его #ID этот id мы будем указывать при создании case.

Создание шаблона кейса
Создание шаблона кейса

Обрабатывать события мы будем через сервисную УЗ, поэтому её необходимо создать и добавить в нужную группу. Запоминаем User API Key, он нам понадобится для создания интеграции с n8n.

Пример создания СУЗ
Пример создания СУЗ
Группа с необходимыми правами. На создание алертов и кейсов
Группа с необходимыми правами. На создание алертов и кейсов

Зафиксирован переход по опасной ссылке

В качестве примера возьмем кейс "Зафиксирован переход по опасной ссылке" коробочного набора SIEM.

Пример обработки правила "Зафиксирован переход по опасной ссылке"
Пример обработки правила "Зафиксирован переход по опасной ссылке"

В правиле детектируется событие "переход заблокирован" так же и "переход не был заблокирован". Первое, что необходимо сделать — отсечь события, которые были заблокированы антивирусным средством защиты (АВЗ).Для этого через ноду If проверяем были ли переход заблокирован. Если да, то событие можно закрывать, если нет - пускать на дальнейшую обработку.

Проверка был ли заблокирован переход
Проверка был ли заблокирован переход

Для enrichment я использую Cortex как прокси-слой, который обращается к MISP и возвращает нормализованный вердикт (тут так же можно использовать VirusTotal, Censys и прочее).

Запуск проверки URL по базах MISP
Запуск проверки URL по базах MISP

Для использования ноды Cortex необходимо указать креды подключения. Делается это через создания новых кред в поле "Credential to connect with". В полях указываем локальный адрес cortex и API ключ.

Добавление учетных данных для Cortex
Добавление учетных данных для Cortex
API key необходимо взять в УЗ в Cortex, Cortex instance - адрес сервера Cortex
API key необходимо взять в УЗ в Cortex, Cortex instance - адрес сервера Cortex

После создания задания на проверку URL необходимо подождать, пока Cortex сделает запрос в MISP и получит ответ. Задержка в 30 секунд выбрана исходя из среднего времени, за которое Cortex успевает получить ответ от MISP в нашем окружении.

Ожидание выполнения задачи в Cortex
Ожидание выполнения задачи в Cortex

Через 30 секунд идет запрос на получение результатов выполнения задачи в cortex. В качестве аргумента указывает ID задачи, который был получен после выполнения предыдущей ноды cortex.

Получение данных о URL
Получение данных о URL

Следом я проверяю вердикт. Cortex проставляет статус "suspicious" если есть данные в базе MISP и "info", если нет. Если Cortex возвращает статус info, создаётся alert. При статусе suspicious создаётся case, так как индикатор уже подтверждён внешним источником.

Считается ли URL подозрительным
Считается ли URL подозрительным

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

Сбор необходимых полей для создание алерта
Сбор необходимых полей для создание алерта

Также как и для Cortex создаем креды подключения для IRIS.

Настройка подключения к IRIS
Настройка подключения к IRIS

Следом создаю алерт через ноду IRIS.

Создание алерта через ноду IRIS в n8n
Создание алерта через ноду IRIS в n8n

| Набор полей можно посмотреть на сайте разработчика

Кейс создается несколько иначе, так как для него можно указать case_template, который мы создавали недавно.

Создание кейса через ноду IRIS в n8n
Создание кейса через ноду IRIS в n8n

Вот так выглядит созданный алерт и кейс

Созданный алерт
Созданный алерт

Добавление активов

В отличие от алертов, при создании кейса нельзя сразу указать активы, поэтому приходится добавлять их отдельно.

Добавление активов в кейс
Добавление активов в кейс

Первое, что я делаю — собираю всю необходимую информацию в одну ноду для дальнейшей обработки.
Следом я получаю активы. Имя пользователей и имена машин для моей SIEM находятся в конкретных полях, поэтому я и прописываю строго обращение к этим полям. Далее я проверяю каждый актив на его наличие и потом с помощью ноды Switch я распределяю активы на свои ноды. Запрос для user_name и host_name различаются, отсюда и несколько нод создания активов.
На вкладке "Case" -> "Assets" можно увидеть созданные активы

Активы в кейсе
Активы в кейсе

В результате мы получили автоматизированную цепочку обработки событий, которая снижает нагрузку на SOC и позволяет заводить кейсы только по подтверждённым инцидентам.

В следующей части я расскажу как настроить Cortex и MISP. А так же как запускать задачи на проверки ioc.