
Модуль PowerShell для облачной криминалистики, предназначенный для запуска сценариев охоты на угрозы по данным из Azure и O365

Модуль PowerShell для запуска сценариев (playbooks) охоты за угрозами на данных из Azure и O365 в целях облачной криминалистики.
В Exchange Online требуются следующие роли для получения доступа только для чтения к UnifiedAuditLog: View-Only Audit Logs или Audit Logs.
Эти роли назначаются по умолчанию группе ролей Compliance Management в Центре администрирования Exchange.
ПРИМЕЧАНИЕ: если вы аналитик безопасности, специалист по реагированию на инциденты или охотник за угрозами, и ваша организация НЕ предоставляет вам доступ только для чтения к этим журналам аудита, вам следует серьёзно задуматься о стратегии обнаружения и реагирования!
Дополнительная информация:
ПРИМЕЧАНИЕ: ваш администратор может проверить эти требования, выполнив
Get-ManagementRoleEntry "*\Search-UnifiedAuditLog"в облачной оболочке вашего арендатора Azure или в локальном экземпляре PowerShell, подключённом к Azure.
Пожалуйста, убедитесь, что у вас установлен ExchangeOnlineManagement (EXOv2). Инструкции можно найти в интернете или обратиться к моей небольшой базе знаний по ссылке the soc analyst scrolls
Import-Module .\source\AzureHunter.psd1Всё, что вам нужно сделать:
Install-Module AzureHunter -Scope CurrentUser
Import-Module AzureHunter
Единый журнал аудита содержит действия пользователей, групп, приложений, доменов и каталогов, выполняемые в Центре администрирования Microsoft 365 или на портале управления Azure. Полный список событий Azure AD см. в списке RecordTypes.
UnifiedAuditLog — отличный источник облачной криминалистической информации, поскольку он содержит огромное количество данных о различных типах облачных операций, таких как ExchangeItems, SharePoint, Azure AD, OneDrive, управление данными, предотвращение потери данных, оповещения Защитника Windows и события карантина, события аналитики угроз в Microsoft Defender для Office 365, и этот список можно продолжать!
AzureHunter реализует полезную логику для обеспечения максимальной плотности журналов при извлечении и экспорте из журналов аудита Azure и O365. Для этого в каждом цикле (пакете) выполняются две различные операции:

Рекомендуется выполнить Connect-ExchangeOnline перед запуском любых команд AzureHunter. Программа проверяет наличие активного удалённого сеанса и пытается подключиться, но некоторые версии PowerShell этого не позволяют, и вам в любом случае нужно сделать это самостоятельно.
AzureHunter имеет две основные команды: Search-AzureCloudUnifiedLog и Invoke-AzHunterPlaybook.
Цель Search-AzureCloudUnifiedLog — реализовать сложную логику для обеспечения максимального процента извлечения записей UnifiedAuditLog из Azure. По умолчанию он экспортирует извлечённые и дедуплицированные записи в CSV-файл.
Цель Invoke-AzHunterPlaybook — предоставить гибкий интерфейс для сценариев (playbooks) охоты, хранящихся в папке playbooks. Эти сценарии разработаны так, чтобы каждый мог внести свой вклад со своими аналитическими методами и идеями. На данный момент разработаны только два очень простых сценария: AzHunter.Playbook.Exporter и AzHunter.Playbook.LogonAnalyser. Exporter отвечает за экспорт записей после применения операций дедупликации и сортировки данных. LogonAnalyser находится в бета-режиме и извлекает события, в которых свойство Operations равно UserLoggedIn. Это пример того, что можно сделать с помощью сценариев и как легко их создать.
При запуске Search-AzureCloudUnifiedLog вы можете передать список сценариев для выполнения для каждого пакета журналов. Search-AzureCloudUnifiedLog передаёт пакет сценариям через Invoke-AzHunterPlaybook.
Наконец, Invoke-AzHunterPlaybook можно использовать отдельно. Если у вас есть экспорт записей UnifiedAuditLog, вы можете загрузить их в массив PowerShell и передать этой команде, указав соответствующие сценарии.
Search-AzureCloudUnifiedLog -StartDate "2020-03-06T10:00:00" -EndDate "2020-06-09T12:40:00" -TimeInterval 12 -AggregatedResultsFlushSize 5000 -Verbose
Эта команда:
AggregatedResultsFlushSize определяет пакеты записей, которые будут обрабатываться нижестоящими сценариями. Мы указываем AzureHunter обрабатывать пакет записей, когда общее количество достигает 5000. Таким образом, вы можете получать результаты на лету, не дожидаясь часами, пока огромный диапазон записей будет экспортирован в CSV-файлы.Предположим, что вы экспортировали записи UnifiedAuditLog в CSV-файл; тогда вы можете сделать следующее:
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.LogonAnalyser'
Вы можете запустить более одного сценария, разделив их запятыми; они будут выполняться последовательно:
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.Exporter', 'AzHunter.Playbook.UAL.LogonAnalyser'
Предположим, что вы экспортировали сводный отчёт eDiscovery в CSV-файл; тогда вы можете сделать следующее:
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner'
При желании можно передать сценарию некоторые параметры следующим образом:
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner' -PlayBookParameters @{"CsvRecordsBatchSize" = 700}
Параметр "CsvRecordsBatchSize" указывает сценарию сбрасывать записи на диск пакетами по 700 записей.
После последствий компрометации цепочки поставок SolarWinds появилось множество инструментов, созданных в глубоких кузницах киберкриминалистов и тщательно разработанных кибер-кузнецами-ниндзя. Обычно эти инструменты помогают выполнять облачную криминалистику в Azure. Моё намерение с AzureHunter — не создавать лишний шум в этой переполненной области, однако я столкнулся с необходимостью устранить некоторые пробелы, которые заметил в некоторых инструментах этой области (возможно, я ошибаюсь, так как существует множество инструментов, и я знаю не все из них...):
UnifiedAuditLog. Этот API очень нестабилен и непоследователен при экспорте больших объёмов данных. Я хотел разработать интерфейс, который был бы (достаточно) отказоустойчивым для решения некоторых из этих проблем, сосредоточившись исключительно на UnifiedAuditLog, поскольку это артефакт Azure, содержащий наиболее релевантные и подробные журналы действий пользователей, приложений и служб.Playbooks. Я хотел придумать простую платформу, которая помогла бы сообществу создавать и делиться новыми сценариями для извлечения различных смыслов из одних и тех же данных.Если, однако, вы ищете более функциональное и зрелое приложение для облачной криминалистики Azure, я рекомендую ознакомиться с отличной работой экспертов по кибербезопасности, создавших следующие приложения:
Я уверен, что существует более обширный список инструментов, но это те, которые я смог вспомнить. Не стесняйтесь предлагать другие.
Для получения дополнительной информации:
Спасибо всем, кто поддерживает этот и другие проекты с открытым исходным кодом! Вы помогаете таким парням, как я, идти путём кибервоина и предоставлять качественные инструменты сообществу :)