Создание правил обнаружения на основе данных об угрозах
В нашем последнем этапе мы соединим два источника данных: данные журналов и данные об угрозах, чтобы получать оповещения в случае обнаружения индикаторов компрометации в нашей сети. Это очень важно для раннего обнаружения и реагирования, и помогает нам, защитникам, автоматизировать часть нашей работы. Однако важно оставаться бдительными и следить за последними угрозами - это может снизить нагрузку, но требует от нас внимательности в наших сетях!
Для этого нам нужно понять, какие данные поступают в нашу систему ELK из различных источников данных и найти общие поля, которые мы можем связать с данными об угрозах. Давайте подумаем о потенциальных индикаторах, которые мы могли бы искать: IP-адреса, URL-адреса и хэши файлов.
Примечание: Elastic предоставляет ограниченную поддержку создания совпадающих индикаторов из данных об угрозах. Несмотря на то, что это хорошая практика, некоторые из ваших правил могут вызывать ошибки в зависимости от их сложности, времени выполнения и других факторов. Увы, нет универсального решения для этой проблемы. Это дополнительно подчеркивает мой ключевой аргумент: инструменты могут быть надежными, но способность самостоятельно искать эти данные всегда остается важным навыком.
Давайте начнем с поиска наборов данных, которые нас интересуют. Несколько, которые привлекли мое внимание, - это хэши файлов, IP-адреса и URL-адреса в данных угроз. Рассмотрим, где мы можем найти эти индикаторы в данных с конечных точек: Где мы можем найти IP-адреса? В DNS-запросах? В событиях сетевых подключений?
А что касается хэшей файлов? В событиях запуска процессов? В событиях изменения файлов? Список может быть довольно обширным."
Откройте раздел Discover и выполните поиск некоторых доступных полей в наших данных об угрозах, переключившись на индекс filebeat-*. В разделе индекса мы можем искать доступные поля - введите threatintel, чтобы найти соответствующие поля!

Необходимые нам поля в индексе filebeat-*:
threatintel.indicator.file.hash.sha256
threatintel.indicator.ip
threatintel.url.domain
Повторите этот процесс, исследуя поля, доступные в логах конечных точек, переключившись на индекс logs-*.

Необходимые нам поля в индексе logs-*:
source.ip
destination.ip
process.hash.sha256
dns.question.name
Затем перейдем в раздел Security > Alerts > Rules, чтобы создать правило совпадения индикаторов.

В этом разделе мы определим, на какие индексы мы хотим запускать запрос - в данном случае нам необходим индекс 'logs-*', где присутствует поле 'destination.ip'. Мы сопоставим это с индексом паттернов индикаторов, в котором содержатся данные по угрозам, и скажем ELK искать данные за последние 30 дней (в данном случае данные об IP-адресах). Это позволит создать оповещение в случае, если IP-адрес из угроз соответствует IP-адресу назначения в наших журналах!

Затем мы должны назначить имя, описание и уровень серьезности для этого оповещения. Поскольку это использует актуальные данные, полученные при других компрометациях, я присвоил высокий приоритет.


Потом мы должны настроить, как часто это правило будет выполняться, и учесть возможное время задержки. Это может потреблять довольно много ресурсов на нашем компьютере и является местом, в котором часто возникают сбои.

В последнем разделе мы могли бы настроить механизм уведомления через Slack, Teams, PagerDuty или любую другую систему оповещения, которую мы хотели бы использовать, чтобы оповестить аналитика о необходимости проведения дополнительного анализа на основе оповещения. Однако стоит отметить, что эта функция недоступна в бесплатной версии ELK. Тем не менее, существуют способы настроить собственное оповещение, например, с использованием инструмента ElastAlert 2.

Вот что мы имеем

Мы можем повторить этот процесс с другими перечисленными полями!
Last updated