Ce que fait cet outil
Azure Forensics est un triage gratuit de premier niveau en cas de compromission Azure suspectée. Il lit les logs que vous exportez de votre abonnement et répond à une question : y a-t-il des traces d'attaque dans le plan de contrôle (Azure Resource Manager) ou le plan de données (secrets Key Vault, blobs de stockage, flux réseau) ?
Tout se passe dans votre navigateur : un analyseur en Rust compilé en WebAssembly lit vos fichiers en flux dans un Web Worker. Rien n'est envoyé : vous pouvez l'utiliser sur des logs de production sensibles.
Logs pris en charge
- Activity Log — chaque écriture, suppression et action via Azure Resource Manager : attributions de rôle, Run Command, génération de SAS, paramètres de diagnostic… CSV du portail, JSON az CLI / REST, AzureActivity de Log Analytics (CSV ou JSON), ou export vers un compte de stockage / Event Hubs (insights-activity-logs).
- Logs AuditEvent de Key Vault — qui a lu quel secret, clé ou certificat, depuis quelle IP (insights-logs-auditevent, ou AzureDiagnostics dans Log Analytics).
- Logs blob du stockage (StorageRead / StorageWrite / StorageDelete, StorageBlobLogs) — accès aux données, y compris les téléchargements par SAS et anonymes.
- Flow logs NSG (v1, v2) et flow logs VNet — conversations réseau, agrégées par source, destination et port.
- Alertes Defender for Cloud (export REST / JSON ou SecurityAlert de Log Analytics).
Comment le verdict est établi
Chaque détection est une règle dans un fichier JSON relisible (inspiré de Sigma) : événements unitaires (Run Command, paramètre de diagnostic supprimé…), seuils (téléchargement massif de blobs, énumération de secrets) et règles de première occurrence qui apprennent ce qui est normal pendant les 72 premières heures de vos logs (nouvelle IP pour un service principal, nouveau principal lisant un coffre, nouvelle région).
Compromis : au moins deux constats de gravité élevée (ou un critique). Suspect : au moins un constat moyen ou élevé. Sain : rien au-dessus de faible — ce qui signifie seulement que rien n'a correspondu dans les logs fournis.
Les constats sont reliés aux techniques MITRE ATT&CK, rattachés aux principaux, IP et ressources impliqués, et placés sur une chronologie de l'incident avec une liste de remédiation.
Détections
Les règles livrées avec l'outil. Leurs identifiants sont stables : vous pouvez les citer dans vos rapports.
| Règle | Détecte | Gravité | MITRE ATT&CK |
|---|---|---|---|
| AZ-RBAC-001 | Rôle privilégié attribuéOwner, User Access Administrator ou RBAC Administrator a été accordé : ce principal peut désormais donner accès à n'importe qui. | Moyenne | T1098.003 |
| AZ-RBAC-002 | Identité non humaine dotée d'un rôle privilégiéUn service principal ou une identité managée a accordé Owner, Contributor ou un rôle de gestion des accès — typique d'un secret d'application volé. | Élevée | T1098.003 |
| AZ-RBAC-003 | Principal s'attribuant un rôle à lui-mêmeL'appelant de l'attribution de rôle en est aussi le bénéficiaire : une élévation de privilèges classique. | Élevée | T1098.003 |
| AZ-RBAC-004 | Accès élevé à tous les abonnementsUn Administrateur général a utilisé elevateAccess pour devenir User Access Administrator à la racine (/). | Élevée | T1078.004, T1098.003 |
| AZ-VM-001 | Commande exécutée sur une VM (Run Command)Run Command exécute des scripts en SYSTEM / root via l'agent de la VM — sans accès réseau à la VM. | Élevée | T1651 |
| AZ-VM-002 | Extension Custom Script déployéeL'extension télécharge et exécute un script sur la VM. | Élevée | T1651 |
| AZ-VM-003 | Connexion à la console sérieAccès interactif à la VM qui contourne les contrôles réseau. | Moyenne | T1651 |
| AZ-VM-004 | VM créée dans une région jamais utiliséeNouvelle région par rapport à la période d'apprentissage : signe fréquent de minage de cryptomonnaie. | Moyenne | T1496, T1578.002 |
| AZ-VM-005 | Disque ou snapshot exportébeginGetAccess renvoie une URL de téléchargement d'un disque entier. | Élevée | T1537, T1578.001 |
| AZ-VM-006 | Snapshot de disque crééSouvent une première étape avant de copier un disque hors de l'abonnement. | Faible | T1578.001 |
| AZ-KV-001 | Key Vault lu par un nouveau principalUn principal a lu des secrets, clés ou certificats d'un coffre qu'il n'avait jamais consulté pendant la période d'apprentissage. | Élevée | T1555.006 |
| AZ-KV-002 | Énumération des secrets Key VaultUn même principal a lu de nombreux secrets différents d'un coffre en moins d'une heure. | Élevée | T1555.006 |
| AZ-KV-003 | Stratégie d'accès Key Vault modifiéeLes stratégies d'accès donnent accès aux secrets, clés et certificats. | Moyenne | T1098 |
| AZ-KV-004 | Protection Key Vault affaiblie ou objets purgésSuppression réversible ou protection contre le vidage désactivée, ou objets supprimés définitivement. | Élevée | T1485, T1562 |
| AZ-ST-001 | Jeton SAS de stockage généréUn SAS de compte / de service est un jeton au porteur utilisable de partout jusqu'à son expiration. | Élevée | T1528, T1530 |
| AZ-ST-002 | Clés du compte de stockage listéesLes clés de compte donnent un accès complet aux données du compte. | Faible | T1552 |
| AZ-ST-003 | Accès anonyme aux blobs activéLe compte ou un conteneur sert désormais des blobs sans authentification. | Élevée | T1530 |
| AZ-ST-004 | Pare-feu du stockage ouvertLes règles réseau acceptent désormais les connexions de tous les réseaux. | Moyenne | T1562.007 |
| AZ-ST-005 | Téléchargement massif de blobsDe nombreux blobs différents ont été téléchargés par une même identité depuis une même IP en moins d'une heure. | Élevée | T1530, T1567 |
| AZ-ST-006 | Lectures anonymes de blobsDes blobs ont été téléchargés sans aucune authentification. | Moyenne | T1530 |
| AZ-DE-001 | Paramètre de diagnostic suppriméUne ressource (Key Vault, stockage, NSG…) a cessé d'envoyer ses logs. | Élevée | T1562.008 |
| AZ-DE-002 | Export de l'Activity Log suppriméL'abonnement n'exporte plus son Activity Log. | Élevée | T1562.008 |
| AZ-DE-003 | Plan Defender for Cloud désactivéUn plan Defender a été repassé au niveau Free. | Élevée | T1562.001 |
| AZ-DE-004 | Verrou de ressource suppriméLes verrous protègent les ressources contre la suppression ou la modification. | Moyenne | T1562 |
| AZ-DE-005 | Règle NSG ouverte sur InternetUne règle entrante autorisant toute source / Internet a été créée. | Moyenne | T1562.007 |
| AZ-PER-001 | Runbook ou webhook Automation crééLes runbooks exécutent du code avec l'identité (souvent privilégiée) du compte Automation. | Moyenne | T1648 |
| AZ-PER-002 | Logic App ou Function modifiéeDu code serverless peut conserver un accès et s'exécuter avec une identité managée. | Faible | T1648 |
| AZ-PER-003 | Identifiant fédéré ajouté à une identité managéeUn fournisseur d'identité externe peut désormais obtenir des jetons pour cette identité. | Élevée | T1098.001 |
| AZ-ID-001 | Service principal utilisé depuis une nouvelle IPUne identité d'application a appelé Azure depuis une IP jamais vue pendant la période d'apprentissage. | Moyenne | T1078.004 |
| AZ-ID-002 | Jeton d'identité managée utilisé depuis une nouvelle IPL'identité d'une VM ou d'une application a été utilisée d'ailleurs : son jeton a probablement été volé. | Élevée | T1528, T1078.004 |
| AZ-DEF-001 | Alerte Defender for CloudMicrosoft Defender for Cloud a levé une alerte de sécurité. | Moyenne | |
| AZ-NET-001 | Port d'administration joignable depuis InternetDes flux entrants SSH / RDP / WinRM depuis des IP publiques ont été autorisés. | Moyenne | T1133, T1021 |
| AZ-NET-002 | Connexion vers un port de minageUne VM s'est connectée vers un port typique des pools de minage. | Élevée | T1496 |
| AZ-NET-003 | Gros transfert sortantPlus de 500 Mo sont sortis du réseau vers une seule IP publique. | Moyenne | T1048 |
| AZ-NET-004 | Trafic réseau avec une IP de l'attaquantLes flow logs montrent du trafic avec une adresse IP impliquée dans d'autres constats. | Élevée | T1105 |
Entra ID (Azure AD) est une investigation à part
Cet outil couvre les plans de contrôle et de données Azure. La façon dont l'attaquant a obtenu les identifiants — connexions, MFA, nouveaux secrets d'application, consentements — se trouve dans les logs Entra ID, analysés par l'outil frère : Forensique M365 / Entra ID
Limites
- Seul ce qui a été journalisé peut être trouvé : les logs de données Key Vault et stockage devaient être activés avant l'incident, et l'Activity Log est conservé 90 jours.
- Les détections de première occurrence nécessitent plus de 72 heures d'historique avant l'activité suspecte.
- Les règles sont des heuristiques : une automatisation légitime peut y correspondre, et un attaquant prudent peut rester sous les seuils. Un verdict sain n'est pas une garantie.
- Les exports Avro (Event Hubs Capture) et Parquet ne sont pas encore lus ; exportez en JSON ou CSV.
FAQ
Mes logs sont-ils envoyés quelque part ?
Non. L'analyseur est écrit en Rust, compilé en WebAssembly, et s'exécute dans un Web Worker de votre navigateur. Il n'existe aucun point d'envoi ; vous pouvez même vous déconnecter du réseau une fois la page chargée.
Par quels logs commencer ?
L'Activity Log de chaque abonnement concerné, couvrant la période suspecte plus au moins une semaine avant. Ajoutez les logs Key Vault et stockage s'ils étaient activés, et les flow logs des VNet concernés.
Comment savoir si un Run Command était malveillant ?
L'Activity Log indique qui l'a lancé, quand et depuis quelle IP, mais pas toujours le script. Croisez avec les logs de la VM (dossier de l'extension RunCommand), les alertes Defender et les flux sortants de la VM juste après.
Détecte-t-il le minage de cryptomonnaie ?
Il signale les VM créées dans des régions jamais utilisées, les connexions sortantes vers les ports habituels des pools de minage dans les flow logs, et les alertes Defender. Vérifiez aussi votre facturation : le minage se voit souvent par un pic soudain de coût de calcul.
Que faire en cas de verdict « Compromis » ?
Contenir d'abord : renouveler les identifiants des principaux impliqués, supprimer les attributions de rôle qu'ils ont créées, isoler les VM touchées, renouveler les secrets lus. Préservez les logs avant qu'ils n'expirent. Investiguez ensuite l'accès initial dans Entra ID.
Puis-je réutiliser les règles de détection ?
Oui. Elles sont dans un simple fichier JSON avec des identifiants stables, des tags MITRE ATT&CK et des clés de remédiation : elles peuvent être relues, étendues et réutilisées dans d'autres outils.
Cet outil est-il lié à Microsoft ?
Non. C'est un outil indépendant ; Azure n'est cité que pour décrire les logs qu'il lit.