
Um módulo Powershell de Cloud Forensics para executar playbooks de caça a ameaças em dados do Azure e O365
As seguintes funções são necessárias no Exchange Online para ter acesso somente leitura ao UnifiedAuditLog: View-Only Audit Logs ou Audit Logs.
Essas funções são atribuídas por padrão ao grupo de funções Compliance Management no Centro de Administração do Exchange.
NOTA: se você é um analista de segurança, respondedor a incidentes ou caçador de ameaças e sua organização NÃO está lhe dando acesso somente leitura a esses logs de auditoria, você precisa questionar seriamente qual é a estratégia de detecção e resposta deles!
Mais informações:
NOTA: seu administrador pode verificar esses requisitos executando
Get-ManagementRoleEntry "*\Search-UnifiedAuditLog"no shell de nuvem do seu inquilino Azure ou em uma instância local do powershell conectada ao Azure.
Por favor, certifique-se de que o ExchangeOnlineManagement (EXOv2) está instalado. Você pode encontrar instruções na web ou ir diretamente para meu pequeno KB sobre como fazer isso em the soc analyst scrolls
Import-Module .\source\AzureHunter.psd1Tudo o que você precisa fazer é:
Install-Module AzureHunter -Scope CurrentUser
Import-Module AzureHunter
O log de auditoria unificado contém atividades de usuário, grupo, aplicativo, domínio e diretório realizadas no centro de administração do Microsoft 365 ou no portal de gerenciamento do Azure. Para uma lista completa de eventos do Azure AD, consulte a lista de RecordTypes.
O UnifiedAuditLog é uma ótima fonte de informações forenses em nuvem, pois contém uma riqueza de dados sobre vários tipos de operações em nuvem, como ExchangeItems, SharePoint, Azure AD, OneDrive, Governança de Dados, Prevenção contra Perda de Dados, Alertas do Windows Defender e eventos de Quarentena, eventos de Inteligência de Ameaças no Microsoft Defender para Office 365 e a lista continua!
O AzureHunter implementa algumas lógicas úteis para garantir que a maior densidade de logs seja minerada e exportada dos Logs de Auditoria do Azure e O365. Para fazer isso, executamos duas operações diferentes para cada ciclo (lote):

Recomenda-se executar Connect-ExchangeOnline antes de executar qualquer comando do AzureHunter. O programa verifica se existe uma sessão remota ativa e tenta conectar, mas algumas versões do Powershell não permitem isso e você precisa fazer isso por conta própria.
AzureHunter possui dois comandos principais: Search-AzureCloudUnifiedLog e Invoke-AzHunterPlaybook.
O propósito de Search-AzureCloudUnifiedLog é implementar uma lógica complexa para garantir que a maior porcentagem de registros do UnifiedAuditLog seja minerada do Azure. Por padrão, ele exporta registros extraídos e deduplicados para um arquivo CSV.
O propósito de Invoke-AzHunterPlaybook é fornecer uma interface flexível para playbooks de caça armazenados na pasta playbooks. Esses playbooks são projetados para que qualquer pessoa possa contribuir com suas próprias análises e ideias. Até agora, apenas dois playbooks muito simples foram desenvolvidos: AzHunter.Playbook.Exporter e AzHunter.Playbook.LogonAnalyser. O Exporter cuida da exportação de registros após aplicar operações de deduplicação e ordenação aos dados. O LogonAnalyser está em modo beta e extrai eventos onde a propriedade Operations é UserLoggedIn. É um exemplo do que pode ser feito com os playbooks e como é fácil construir um.
Ao executar Search-AzureCloudUnifiedLog, você pode passar uma lista de playbooks para executar por lote de log. Search-AzureCloudUnifiedLog passará o lote para os playbooks através de Invoke-AzHunterPlaybook.
Finalmente, Invoke-AzHunterPlaybook pode ser usado de forma independente. Se você tiver uma exportação de registros do UnifiedAuditLog, pode carregá-los em um Array do Powershell e passá-los para este comando, especificando os playbooks relevantes.
Search-AzureCloudUnifiedLog -StartDate "2020-03-06T10:00:00" -EndDate "2020-06-09T12:40:00" -TimeInterval 12 -AggregatedResultsFlushSize 5000 -Verbose
Este comando irá:
AggregatedResultsFlushSize especifica os lotes de registros que serão processados pelos playbooks downstream. Estamos dizendo ao AzureHunter aqui para processar o lote de registros assim que a quantidade total atingir 5000. Dessa forma, você pode obter resultados em tempo real, sem ter que esperar horas até que uma grande quantidade de registros seja exportada para arquivos CSV.Assumimos que você exportou registros do UnifiedAuditLog para um arquivo CSV, se sim, você pode então fazer:
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.LogonAnalyser'
Você pode executar mais de um playbook separando-os por vírgulas; eles serão executados sequencialmente:
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.Exporter', 'AzHunter.Playbook.UAL.LogonAnalyser'
Assumimos que você exportou um Relatório Resumido de eDiscovery para um arquivo CSV, se sim, você pode então fazer:
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner'
Opcionalmente, podemos passar alguns parâmetros para o playbook assim:
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner' -PlayBookParameters @{"CsvRecordsBatchSize" = 700}
O parâmetro "CsvRecordsBatchSize" dirá ao playbook para gravar registros no disco em lotes de 700 registros.
Desde as consequências do Comprometimento da Cadeia de Suprimentos SolarWinds, muitas ferramentas surgiram das forjas profundas dos peritos forenses cibernéticos, cuidadosamente desenvolvidas por ninjas ferreiros cibernéticos. Essas ferramentas geralmente ajudam você a realizar perícia forense em nuvem no Azure. Minha intenção com o AzureHunter não é trazer mais ruído para este espaço já concorrido, no entanto, senti a necessidade de abordar algumas lacunas que observei em algumas das ferramentas do ramo (posso estar enganado, já que há uma proliferação de ferramentas por aí e não conheço todas...):
UnifiedAuditLog. Esta API é muito instável e inconsistente ao exportar grandes quantidades de dados. Queria desenvolver uma interface que fosse tolerante a falhas (o suficiente) para lidar com alguns desses problemas, focando exclusivamente no UnifiedAuditLog, já que este é o artefato do Azure que contém os logs de atividade mais relevantes e detalhados para usuários, aplicativos e serviços.Playbooks extensíveis. Queria criar uma estrutura simples que ajudasse a comunidade a criar e compartilhar novos playbooks para extrair diferentes tipos de significado dos mesmos dados.Se, no entanto, você está procurando uma aplicação mais rica em funcionalidades e madura para Perícia Forense em Nuvem do Azure, sugiro que verifique o excelente trabalho realizado pelos especialistas em segurança cibernética que criaram as seguintes aplicações:
Tenho certeza de que há uma lista mais extensa de ferramentas, mas estas são as que consegui lembrar. Sinta-se à vontade para sugerir mais.
Para mais informações
Obrigado a todas as pessoas que apoiam este e outros projetos Open Source! Vocês estão ajudando pessoas como eu a trilhar o caminho do cyberwarrior e entregar ferramentas de qualidade para a comunidade :)