Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Первый этап реагирования на ИБ‑инцидент — это обработка событий и поиск в них артефактов. Затем специалист строит таймлайны и определяет вектор и время атаки. В этой статье мы поговорим об инструментах, которые облегчают этот труд и помогают в расследовании, в особенности когда данных очень много.
Иногда быстро отделить зерна от плевел просто. Достаточно воспользоваться подручными средствами или утилитами вроде EvtxECmd и Timeline Explorer.
Но бывает, что задача серьезнее: событий на входе много, и обработать такой объем данных быстро или найти вектор (и, что часто сложнее, определить время инцидента) довольно трудно. Больно смотреть на ИБ‑специалистов, которые используют для таких задач нативные инструменты, например предустановленный журнал просмотра событий Windows.
Вместо этого стоит вооружиться чуть более продвинутыми инструментами. Давай разберем несколько утилит и их особенности, а заодно посмотрим на них в действии — на примерах событий журналов Windows версий старше 7.
Знакомиться будем со следующими утилитами для Threat Hunting и Incident Response:
О Sigma-правилах и их структуре уже написана не одна статья, поэтому очень коротко: Sigma — опенсорсный проект, который ведется с 2017 года и позволяет писать правила (сигнатуры) для обнаружения вредоносной активности. Сейчас общедоступные правила покрывают более 3 тысяч техник и тактик атакующих. Обнаружение вредоносной активности в инструментах, о которых мы будем говорить (кроме DeepBlueCLI), тоже основано на Sigma-правилах. Они позволяют быстро находить аномалии и вредоносную активность в большом количестве событий. Прежде чем приступать к утилитам, скачаем Sigma-правила:
git clone https://github.com/SigmaHQ/sigma
Начнем, пожалуй, с самого простого из выбранных инструментов. DeepBlueСLI — модуль PowerShell, разработанный Эриком Конрадом для поиска угроз в журналах событий Windows. В отличие от других инструментов в этой статье, механизм обнаружения здесь основан не на Sigma-правилах, а на обычных проверках наличия тех или иных артефактов и количестве срабатываний для определенных событий (например, попыток неуспешного входа).
На основе этих данных можно обнаруживать, например, подозрительные манипуляции с учетной записью (создание, добавление в группы, password spraying и прочее).
.DeepBlue.ps1 .evtxpassword-spray.evtx
Детектирование password spraying
Здесь заметно, что были попытки войти в 41 уникальную учетную запись с одним паролем. И заодно мы видим подробное описание результата.
Еще можем глянуть активность в командной строке и оболочке PowerShell (есть поиск обфусцированных скриптблоков, запусков через PsExec и другие возможности).
.DeepBlue.ps1 .evtxpsattack-security.evtx | Out-GridView
Suspicious Command Line
Также DeepBlue позволяет проводить аудит служб, то есть искать попытки создания служб и другие подозрительные события.
Полученные после обработки данные можно вывести в разных удобных форматах для дальнейшего анализа: CSV, Out-GridView, Format-Table, HTML, JSON, XML.
Кроме того, утилита позволяет проводить исследование на работающей системе, без экспорта журналов событий.
Среди достоинств DeepBlue — возможность добавлять новые проверки непосредственно в код сценария на PowerShell. К примеру, можно с легкостью дописать детект password spraying в Active Directory (события 4771 и 4768).
Но из недостатков я бы выделил отсутствие возможности указать в качестве аргумента путь к директории с журналами. Это значит, что таким инструментом будет сложно пользоваться, если объем логов занимает несколько гигабайтов. Зато следующая утилита нам в этом поможет.
Chainsaw — инструмент для первичного реагирования на инциденты и поиска артефактов в журналах событий Windows, таблицах Master File Table и System Resource Utilization Monitor. Для автоматизации поиска угроз используются Sigma-правила, но этим дело не ограничивается. Можно искать отдельные слова, используя регулярные выражения, прочесывать события при помощи кастомных правил, использовать кастомные правила для агрегации полученных записей о срабатывании. Есть другие интересные фичи, которые я покажу дальше.
Попробуем возможности на практике. Представь, что в рамках реагирования на инцидент нам отгрузили события в количестве 333 штук (131 Мбайт). Изучать журналы по отдельности имеет смысл, только если мы уже знаем, какой вектор атаки и когда она была совершена. Это не наш случай. Сейчас необходимо взглянуть на ситуацию с высоты птичьего полета, поэтому воспользуемся утилитой Chainsaw в режиме охоты на подозрительные активности.
Чтобы включить режим охоты на угрозы, зададим аргумент hunt
, укажем правила Sigma (флаг -s
) и каталог с правилами (можно использовать как директорию, так и репозиторий на GitHub). Также нужно задать каталог с данными об инциденте (журналы событий Windows) и путь к файлу YAML для маппинга правил Sigma и событий (он нужен для сопоставления полей из сырых событий и Sigma-правил):
.chainsaw.exe hunt CyberPolygon_Forensic_ArtifactswinevtLogs/ -s ......sigma --mapping ....mappingssigma-event-logs-all.yml
Видим в консоли PowerShell приветствие Chainsaw и сообщение об успешной загрузке журналов событий и Sigma-правил. Утилита работает быстро и выдает таблицу с такими столбцами:
Chainsaw, обнаружение на основе Sigma
Самое интересное здесь — это детект на основе Sigma-правил.
Chainsaw, обнаружение на основе Sigma
Например, на рисунке выше видно время, сработавшие правила детекта — Sigma Rules для событий PowerShell с EID 4104, а также путь, из которого был запущен сценарий PowerShell, и его начальное содержимое.
Важно помнить, что аудит PowerShell (события 4103 и 4104) по умолчанию отключен, рекомендуется его включать. Как это сделать, можно почитать в документации.
В конце таблицы получим список детектов по Sigma-правилам и количество проанализированных журналов (пустые журналы были отброшены).
Chainsaw — результаты
Если мы знаем, что подозрительная активность (судя по детекту) была связана со сценариями PowerShell, а именно с событиями с EID 4104, мы с легкостью можем взглянуть на сырые события и их скриптблоки, воспользовавшись вот такой командой:
.chainsaw.exe search -t 'Event.System.EventID: =4104' CyberPolygon_Forensic_ArtifactswinevtLogs/
Поиск Event ID 4104
Поищем также события с EID 4103:
.chainsaw.exe search -t 'Event.System.EventID: =4103' CyberPolygon_Forensic_ArtifactswinevtLogs/
Получаем три совпадения и узнаём, с какими аргументами запускались сценарии.
Поиск Event ID 4103
А также наблюдаем начало тела скриптблока tmpA7Z2.ps1
.
Кроме поиска по EID, можно использовать регулярные выражения. Давай попробуем найти все события, связанные с запуском найденного сценария:
.chainsaw.exe search -e 'tmpA7Z2.ps1' c56-CyberCorpDownloadsCyberPolygon_Forensic_ArtifactswinevtLogs
Поиск по ключевому слову
Источник: xakep.ru