
Un modulo Powershell per Cloud Forensics per eseguire playbook di threat hunting sui dati di Azure e O365

Un modulo Powershell per eseguire playbook di threat hunting su dati di Azure e O365 per scopi di Cloud Forensics.
In Exchange Online sono richiesti i seguenti ruoli per avere accesso in sola lettura a UnifiedAuditLog: View-Only Audit Logs o Audit Logs.
Questi ruoli sono assegnati per impostazione predefinita al gruppo di ruoli Compliance Management nell'Exchange Admin Center.
NOTA: se sei un analista della sicurezza, un incident responder o un threat hunter e la tua organizzazione NON ti concede accesso in sola lettura a questi log di audit, devi seriamente chiederti qual è la loro strategia di rilevamento e risposta!
Ulteriori informazioni:
NOTA: il tuo amministratore può verificare questi requisiti eseguendo
Get-ManagementRoleEntry "*\Search-UnifiedAuditLog"nel cloud shell del tenant Azure o in una sessione PowerShell locale connessa ad Azure.
Assicurati di avere ExchangeOnlineManagement (EXOv2) installato. Puoi trovare istruzioni sul web o andare direttamente alla mia piccola knowledge base su come farlo su the soc analyst scrolls
Import-Module .\source\AzureHunter.psd1Tutto ciò che devi fare è:
Install-Module AzureHunter -Scope CurrentUser
Import-Module AzureHunter
Il registro di controllo unificato contiene attività di utenti, gruppi, applicazioni, domini e directory eseguite nell'interfaccia di amministrazione di Microsoft 365 o nel portale di gestione di Azure. Per un elenco completo degli eventi di Azure AD, consulta l'elenco di RecordTypes.
UnifiedAuditLog è una grande fonte di informazioni forensi cloud poiché contiene una ricchezza di dati su molti tipi di operazioni cloud come ExchangeItems, SharePoint, Azure AD, OneDrive, Data Governance, Data Loss Prevention, avvisi di Windows Defender ed eventi di quarantena, eventi di intelligence sulle minacce in Microsoft Defender per Office 365 e la lista continua!
AzureHunter implementa una logica utile per garantire che la massima densità di log venga estratta ed esportata dai log di controllo di Azure e O365. Per fare ciò, eseguiamo due diverse operazioni per ogni ciclo (batch):

Si consiglia di eseguire Connect-ExchangeOnline prima di eseguire qualsiasi comando di AzureHunter. Il programma controlla la presenza di una sessione remota attiva e tenta di connettersi, ma alcune versioni di PowerShell non lo consentono e devi farlo comunque manualmente.
AzureHunter ha due comandi principali: Search-AzureCloudUnifiedLog e Invoke-AzHunterPlaybook.
Lo scopo di Search-AzureCloudUnifiedLog è implementare una logica complessa per garantire che la percentuale più alta di record di UnifiedAuditLog venga estratta da Azure. Per impostazione predefinita, esporterà i record estratti e deduplicati in un file CSV.
Lo scopo di Invoke-AzHunterPlaybook è fornire un'interfaccia flessibile per i playbook di hunting memorizzati nella cartella playbooks. Questi playbook sono progettati in modo che chiunque possa contribuire con le proprie analisi e idee. Finora sono stati sviluppati solo due playbook molto semplici: AzHunter.Playbook.Exporter e AzHunter.Playbook.LogonAnalyser. L'Exporter si occupa di esportare i record dopo aver applicato operazioni di deduplicazione e ordinamento ai dati. Il LogonAnalyser è in modalità beta ed estrae eventi in cui la proprietà Operations è UserLoggedIn. È un esempio di ciò che si può fare con i playbook e di quanto sia facile costruirne uno.
Quando esegui Search-AzureCloudUnifiedLog, puoi passare un elenco di playbook da eseguire per ogni batch di log. Search-AzureCloudUnifiedLog inoltrerà il batch ai playbook tramite Invoke-AzHunterPlaybook.
Infine, Invoke-AzHunterPlaybook può essere utilizzato in modo autonomo. Se hai un'esportazione di record di UnifiedAuditLog, puoi caricarli in un array PowerShell e passarli a questo comando specificando i playbook pertinenti.
Search-AzureCloudUnifiedLog -StartDate "2020-03-06T10:00:00" -EndDate "2020-06-09T12:40:00" -TimeInterval 12 -AggregatedResultsFlushSize 5000 -Verbose
Questo comando:
AggregatedResultsFlushSize specifica i batch di record che verranno elaborati dai playbook downstream. Stiamo dicendo ad AzureHunter di elaborare il batch di record una volta che la quantità totale raggiunge 5000. In questo modo, puoi ottenere risultati al volo, senza dover attendere ore fino a quando un'enorme quantità di record viene esportata in file CSV.Supponiamo di aver esportato record di UnifiedAuditLog in un file CSV, quindi puoi fare:
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.LogonAnalyser'
Puoi eseguire più di un playbook separandoli con virgole; verranno eseguiti in sequenza:
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.Exporter', 'AzHunter.Playbook.UAL.LogonAnalyser'
Supponiamo di aver esportato un report di riepilogo eDiscovery in un file CSV, quindi puoi fare:
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner'
Opzionalmente, possiamo passare alcuni parametri al playbook in questo modo:
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner' -PlayBookParameters @{"CsvRecordsBatchSize" = 700}
Il parametro "CsvRecordsBatchSize" dirà al playbook di scrivere i record su disco in batch di 700 record.
Dalle conseguenze della SolarWinds Supply Chain Compromise sono emersi molti strumenti dalle profondità dei cyberforensicatori, sviluppati attentamente da ninja cyber blacksmith. Questi strumenti di solito aiutano a eseguire la cloud forensics in Azure. La mia intenzione con AzureHunter non è aggiungere più rumore a questo spazio già affollato, tuttavia mi sono trovato nella necessità di affrontare alcune lacune che ho osservato in alcuni degli strumenti in questo campo (potrei sbagliarmi, dato che c'è una proliferazione di strumenti là fuori e non li conosco tutti...):
UnifiedAuditLog. Questa API è molto instabile e inconsistente quando si esportano grandi quantità di dati. Volevo sviluppare un'interfaccia che fosse tollerante ai guasti (abbastanza) da affrontare alcuni di questi problemi concentrandomi esclusivamente su UnifiedAuditLog, poiché questo è l'artefatto Azure che contiene i log di attività più rilevanti e dettagliati per utenti, applicazioni e servizi.Playbook estensibili. Volevo creare un framework semplice che aiutasse la comunità a creare e condividere nuovi playbook per estrarre diversi tipi di significato dagli stessi dati.Se, tuttavia, stai cercando un'applicazione più ricca di funzionalità e matura per Azure Cloud Forensics, ti suggerisco di dare un'occhiata all'eccellente lavoro svolto dagli esperti di sicurezza informatica che hanno creato le seguenti applicazioni:
Sono sicuro che esista un elenco più esteso di strumenti, ma questi sono quelli a cui sono riuscito a pensare. Sentiti libero di suggerirne altri.
Per maggiori informazioni
Grazie a tutte le persone che supportano questo e altri progetti Open Source! State aiutando persone come me a percorrere la via del cyberwarrior e a fornire toolcraft di qualità alla comunità :)