Содержание статьи
Иногда быстро отделить зерна от плевел просто. Достаточно воспользоваться подручными средствами или утилитами вроде EvtxECmd и Timeline Explorer.
Но бывает, что задача серьезнее: событий на входе много, и обработать такой объем данных быстро или найти вектор (и, что часто сложнее, определить время инцидента) довольно трудно. Больно смотреть на ИБ‑специалистов, которые используют для таких задач нативные инструменты, например предустановленный журнал просмотра событий Windows.
Вместо этого стоит вооружиться чуть более продвинутыми инструментами. Давай разберем несколько утилит и их особенности, а заодно посмотрим на них в действии — на примерах событий журналов Windows версий старше 7.
Знакомиться будем со следующими утилитами для Threat Hunting и Incident Response:
Sigma
О Sigma-правилах и их структуре уже написана не одна статья, поэтому очень коротко: Sigma — опенсорсный проект, который ведется с 2017 года и позволяет писать правила (сигнатуры) для обнаружения вредоносной активности. Сейчас общедоступные правила покрывают более 3 тысяч техник и тактик атакующих. Обнаружение вредоносной активности в инструментах, о которых мы будем говорить (кроме DeepBlueCLI), тоже основано на Sigma-правилах. Они позволяют быстро находить аномалии и вредоносную активность в большом количестве событий. Прежде чем приступать к утилитам, скачаем Sigma-правила:
git clone https://github.com/SigmaHQ/sigma
DeepBlueCLI
Начнем, пожалуй, с самого простого из выбранных инструментов. DeepBlueСLI — модуль PowerShell, разработанный Эриком Конрадом для поиска угроз в журналах событий Windows. В отличие от других инструментов в этой статье, механизм обнаружения здесь основан не на Sigma-правилах, а на обычных проверках наличия тех или иных артефактов и количестве срабатываний для определенных событий (например, попыток неуспешного входа).
На основе этих данных можно обнаруживать, например, подозрительные манипуляции с учетной записью (создание, добавление в группы, password spraying и прочее).
.\DeepBlue.ps1 .\evtx\password-spray.evtx
Здесь заметно, что были попытки войти в 41 уникальную учетную запись с одним паролем. И заодно мы видим подробное описание результата.
Еще можем глянуть активность в командной строке и оболочке PowerShell (есть поиск обфусцированных скриптблоков, запусков через PsExec и другие возможности).
.\DeepBlue.ps1 .\evtx\psattack-security.evtx | Out-GridView
Также DeepBlue позволяет проводить аудит служб, то есть искать попытки создания служб и другие подозрительные события.
Полученные после обработки данные можно вывести в разных удобных форматах для дальнейшего анализа: CSV, Out-GridView, Format-Table, HTML, JSON, XML.
Кроме того, утилита позволяет проводить исследование на работающей системе, без экспорта журналов событий.
Среди достоинств DeepBlue — возможность добавлять новые проверки непосредственно в код сценария на PowerShell. К примеру, можно с легкостью дописать детект password spraying в Active Directory (события 4771 и 4768).
Но из недостатков я бы выделил отсутствие возможности указать в качестве аргумента путь к директории с журналами. Это значит, что таким инструментом будет сложно пользоваться, если объем логов занимает несколько гигабайтов. Зато следующая утилита нам в этом поможет.
Chainsaw
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_Artifacts\winevt\Logs/ -s ..\..\..\sigma\ --mapping ..\..\mappings\sigma-event-logs-all.yml
Видим в консоли PowerShell приветствие Chainsaw и сообщение об успешной загрузке журналов событий и Sigma-правил. Утилита работает быстро и выдает таблицу с такими столбцами:
- временная метка;
- результат поиска на основе правил Sigma;
- число найденных событий (Count);
- Event.System.Provider;
- EID;
- Record ID;
- Computer;
- Event Data.
Самое интересное здесь — это детект на основе Sigma-правил.
Например, на рисунке выше видно время, сработавшие правила детекта — Sigma Rules для событий PowerShell с EID 4104, а также путь, из которого был запущен сценарий PowerShell, и его начальное содержимое.
Важно помнить, что аудит PowerShell (события 4103 и 4104) по умолчанию отключен, рекомендуется его включать. Как это сделать, можно почитать в документации.
В конце таблицы получим список детектов по Sigma-правилам и количество проанализированных журналов (пустые журналы были отброшены).
Если мы знаем, что подозрительная активность (судя по детекту) была связана со сценариями PowerShell, а именно с событиями с EID 4104, мы с легкостью можем взглянуть на сырые события и их скриптблоки, воспользовавшись вот такой командой:
.\chainsaw.exe search -t 'Event.System.EventID: =4104' CyberPolygon_Forensic_Artifacts\winevt\Logs/
Поищем также события с EID 4103:
.\chainsaw.exe search -t 'Event.System.EventID: =4103' CyberPolygon_Forensic_Artifacts\winevt\Logs/
Получаем три совпадения и узнаём, с какими аргументами запускались сценарии.
А также наблюдаем начало тела скриптблока tmpA7Z2.
.
Кроме поиска по EID, можно использовать регулярные выражения. Давай попробуем найти все события, связанные с запуском найденного сценария:
.\chainsaw.exe search -e 'tmpA7Z2.ps1' c56-CyberCorp\Downloads\CyberPolygon_Forensic_Artifacts\winevt\Logs
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»