
Un module Powershell de forensique cloud pour exécuter des playbooks de chasse aux menaces sur les données d'Azure et d'O365

Un module PowerShell permettant d'exécuter des playbooks de chasse aux menaces sur les données d'Azure et d'O365 à des fins de criminalistique cloud.
Les rôles suivants sont requis dans Exchange Online pour avoir un accès en lecture seule au UnifiedAuditLog : View-Only Audit Logs ou Audit Logs.
Ces rôles sont attribués par défaut au groupe de rôles Compliance Management dans le centre d'administration Exchange.
REMARQUE : si vous êtes analyste en sécurité, réponse aux incidents ou chasseur de menaces et que votre organisation ne vous donne PAS l'accès lecture seule à ces journaux d'audit, vous devez sérieusement vous interroger sur sa stratégie de détection et de réponse !
Plus d'informations :
REMARQUE : votre administrateur peut vérifier ces prérequis en exécutant
Get-ManagementRoleEntry "*\Search-UnifiedAuditLog"dans le cloud shell de votre locataire Azure ou dans une instance PowerShell locale connectée à Azure.
Veuillez vous assurer que vous avez ExchangeOnlineManagement (EXOv2) installé. Vous trouverez des instructions sur le web ou rendez-vous directement sur ma petite base de connaissances the soc analyst scrolls
Import-Module .\source\AzureHunter.psd1Il vous suffit de :
Install-Module AzureHunter -Scope CurrentUser
Import-Module AzureHunter
Le journal d'audit unifié contient les activités des utilisateurs, groupes, applications, domaines et répertoires effectuées dans le centre d'administration Microsoft 365 ou dans le portail de gestion Azure. Pour une liste complète des événements Azure AD, voir la liste des RecordTypes.
Le UnifiedAuditLog est une excellente source d'informations de criminalistique cloud car il contient une multitude de données sur plusieurs types d'opérations cloud comme ExchangeItems, SharePoint, Azure AD, OneDrive, Gouvernance des données, Prévention des pertes de données, Alertes Windows Defender et événements de quarantaine, événements de renseignement sur les menaces dans Microsoft Defender pour Office 365, et la liste est encore longue !
AzureHunter implémente une logique utile pour garantir que la plus haute densité de journaux est extraite et exportée des journaux d'audit Azure & O365. Pour ce faire, nous exécutons deux opérations différentes pour chaque cycle (lot) :

Il est recommandé d'exécuter Connect-ExchangeOnline avant d'exécuter des commandes AzureHunter. Le programme vérifie la présence d'une session distante active et tente de se connecter, mais certaines versions de Powershell ne le permettent pas et vous devez le faire vous-même.
AzureHunter dispose de deux commandes principales : Search-AzureCloudUnifiedLog et Invoke-AzHunterPlaybook.
Le but de Search-AzureCloudUnifiedLog est d'implémenter une logique complexe pour garantir que le plus grand pourcentage d'enregistrements UnifiedAuditLog soit extrait d'Azure. Par défaut, elle exportera les enregistrements extraits et dédoublonnés dans un fichier CSV.
Le but de Invoke-AzHunterPlaybook est de fournir une interface flexible pour les playbooks de chasse stockés dans le dossier playbooks. Ces playbooks sont conçus pour que chacun puisse contribuer avec ses propres analyses et idées. Pour l'instant, seuls deux playbooks très simples ont été développés : AzHunter.Playbook.Exporter et AzHunter.Playbook.LogonAnalyser. L'Exporter se charge d'exporter les enregistrements après avoir appliqué des opérations de dédoublonnage et de tri aux données. Le LogonAnalyser est en mode bêta et extrait les événements dont la propriété Operations est UserLoggedIn. C'est un exemple de ce qui peut être fait avec les playbooks et de la facilité à en construire un.
Lors de l'exécution de Search-AzureCloudUnifiedLog, vous pouvez passer une liste de playbooks à exécuter par lot de journaux. Search-AzureCloudUnifiedLog transmettra le lot aux playbooks via Invoke-AzHunterPlaybook.
Enfin, Invoke-AzHunterPlaybook peut être utilisé de manière autonome. Si vous disposez d'une exportation d'enregistrements UnifiedAuditLog, vous pouvez les charger dans un tableau PowerShell et les transmettre à cette commande en spécifiant les playbooks pertinents.
Search-AzureCloudUnifiedLog -StartDate "2020-03-06T10:00:00" -EndDate "2020-06-09T12:40:00" -TimeInterval 12 -AggregatedResultsFlushSize 5000 -Verbose
Cette commande va :
AggregatedResultsFlushSize spécifie les lots d'enregistrements qui seront traités par les playbooks en aval. Nous indiquons ici à AzureHunter de traiter le lot d'enregistrements une fois que le total atteint 5000. Ainsi, vous pouvez obtenir des résultats en vol, sans avoir à attendre des heures jusqu'à ce qu'une vaste étendue d'enregistrements soit exportée dans des fichiers CSV.Supposons que vous ayez exporté des enregistrements UnifiedAuditLog dans un fichier CSV, vous pouvez alors faire :
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.LogonAnalyser'
Vous pouvez exécuter plusieurs playbooks en les séparant par des virgules ; ils s'exécuteront séquentiellement :
$RecordArray = Import-Csv .\my-exported-records.csv
Invoke-AzHunterPlaybook -Records $RecordArray -Playbooks 'AzHunter.Playbook.UAL.Exporter', 'AzHunter.Playbook.UAL.LogonAnalyser'
Supposons que vous ayez exporté un rapport récapitulatif eDiscovery dans un fichier CSV, vous pouvez alors faire :
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner'
Nous pouvons également passer quelques paramètres au playbook comme ceci :
$eDiscoReportFile = .\eDisco-Summary-Report-PersonOfInterest.csv
Invoke-AzHunterPlaybook -Records $eDiscoReportFile -Playbooks 'AzHunter.Playbook.eDisco.SummaryReportCleaner' -PlayBookParameters @{"CsvRecordsBatchSize" = 700}
Le paramètre "CsvRecordsBatchSize" indique au playbook de vider les enregistrements sur le disque par lots de 700 enregistrements.
Depuis les conséquences de la Compromission de la chaîne d'approvisionnement SolarWinds, de nombreux outils ont émergé des forges profondes des criminalistes informatiques, soigneusement développés par des ninjas cyberforgerons. Ces outils vous aident généralement à effectuer de la criminalistique cloud dans Azure. Mon intention avec AzureHunter n'est pas d'ajouter plus de bruit dans cet espace déjà encombré, mais je me suis retrouvé dans le besoin de combler certaines lacunes que j'ai observées dans certains outils de cet espace (je peux me tromper cependant, car il y a une prolifération d'outils et je ne les connais pas tous...) :
UnifiedAuditLog. Cette API est très instable et incohérente lors de l'exportation de grandes quantités de données. Je voulais développer une interface tolérante aux pannes (assez) pour résoudre certains de ces problèmes en me concentrant uniquement sur le UnifiedAuditLog, car c'est l'artefact Azure qui contient les journaux d'activité les plus pertinents et détaillés pour les utilisateurs, applications et services.Playbooks extensibles. Je voulais proposer un framework simple qui aiderait la communauté à créer et partager de nouveaux playbooks pour extraire différents types de signification des mêmes données.Si, cependant, vous recherchez une application plus riche en fonctionnalités et mature pour la criminalistique cloud Azure, je vous suggère de consulter l'excellent travail réalisé par les experts en cybersécurité qui ont créé les applications suivantes :
Je suis sûr qu'il existe une liste plus exhaustive d'outils, mais ce sont ceux auxquels j'ai pensé. N'hésitez pas à en suggérer d'autres.
Pour plus d'informations
Merci à toutes les personnes qui soutiennent ce projet et d'autres projets Open Source ! Vous aidez des gars comme moi à suivre la voie du cyber-guerrier et à livrer des outils de qualité à la communauté :)