Skip to content

Cet outil n'est ni affilié à Microsoft Corporation, ni approuvé, ni sponsorisé par celle-ci. Azure, Microsoft Azure et Microsoft Defender for Cloud sont des marques du groupe de sociétés Microsoft. Les autres noms sont des marques de leurs propriétaires respectifs.

Activity Log · Key Vault · Storage · NSG / VNet

Votre abonnement Azure a-t-il été compromis ?

Déposez votre Activity Log (et vos logs Key Vault, Storage, flow logs NSG / VNet) : obtenez un verdict, la chronologie de l'attaque et ce qu'il faut corriger. Analyse dans votre navigateur en WebAssembly — rien n'est envoyé.

Déposez ici vos exports de logs Azure

Activity Log (CSV du portail, JSON az CLI / REST, Log Analytics, export vers un compte de stockage), AuditEvent Key Vault, StorageBlobLogs, flow logs NSG / VNet, alertes Defender for Cloud. Dossiers, archives ZIP et fichiers .gz acceptés tels quels.

Exemple : une entreprise fictive et un incident fictif — des logs synthétiques aux formats d'export réels.

Jamais exporté de journaux Azure ? Voici comment faire

100 % local : les logs sont analysés par WebAssembly dans votre navigateur et ne sont jamais envoyés.

Comment récupérer vos journaux

De zéro aux résultats en deux minutes environ : lancez une commande dans Azure Cloud Shell, téléchargez le ZIP, déposez-le ici.

  1. CollecterUne commande dans Cloud Shell, ou un téléchargement depuis le portail
  2. Déposer le fichier, le dossier ou le ZIP iciJSON, CSV, .gz, dossiers et ZIP tels qu'exportés
  3. Tout reste dans votre navigateurAnalysé par WebAssembly, jamais envoyé

Portail Azure → Cloud Shell (Bash). Rôle Lecteur (Reader) sur les abonnements. Rien à installer.

1. Journal d'activité de tous les abonnements, 30 derniers jours

mkdir -p ~/triage && cd ~/triage && for s in $(az account list --query "[?state=='Enabled'].id" -o tsv); do az monitor activity-log list --subscription "$s" --offset 30d --max-events 100000 -o json > "activity-$s.json"; done

Remplacez 30d pour couvrir l'incident plus une semaine avant (le journal d'activité est conservé 90 jours).

2. Alertes Defender for Cloud (facultatif, abonnement courant)

az rest --method get --url "https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Security/alerts?api-version=2022-01-01" -o json > ~/triage/defender-alerts.json

3. Tout compresser

cd ~ && zip -qr azure-logs.zip triage

Puis, dans la barre de Cloud Shell : Gérer les fichiers → Télécharger → azure-logs.zip, et déposez le ZIP ici.

Pièges

  • On ne trouve que ce qui a été journalisé : le journal d'activité garde 90 jours, et les journaux Key Vault, stockage et flux n'existent que si un paramètre de diagnostic était actif avant l'incident. Incluez une semaine avant le début supposé : les règles « première occurrence » apprennent sur les 72 premières heures.
  • Le > de Windows PowerShell écrit en UTF-16, qui est ignoré : lancez les commandes dans Cloud Shell (Bash). N'ouvrez et ne réenregistrez jamais un journal dans Excel.
  • Un export peut être tronqué sans prévenir : az monitor activity-log list ne renvoie que 50 événements sans --max-events, az rest ne renvoie que la première page, et le CSV du portail perd l'IP de l'appelant. Vérifiez le premier et le dernier horodatage.

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ègleDétecteGravitéMITRE ATT&CK
AZ-RBAC-001Rô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.MoyenneT1098.003
AZ-RBAC-002Identité 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éeT1098.003
AZ-RBAC-003Principal 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éeT1098.003
AZ-RBAC-004Accès élevé à tous les abonnementsUn Administrateur général a utilisé elevateAccess pour devenir User Access Administrator à la racine (/).ÉlevéeT1078.004, T1098.003
AZ-VM-001Commande 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éeT1651
AZ-VM-002Extension Custom Script déployéeL'extension télécharge et exécute un script sur la VM.ÉlevéeT1651
AZ-VM-003Connexion à la console sérieAccès interactif à la VM qui contourne les contrôles réseau.MoyenneT1651
AZ-VM-004VM 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.MoyenneT1496, T1578.002
AZ-VM-005Disque ou snapshot exportébeginGetAccess renvoie une URL de téléchargement d'un disque entier.ÉlevéeT1537, T1578.001
AZ-VM-006Snapshot de disque crééSouvent une première étape avant de copier un disque hors de l'abonnement.FaibleT1578.001
AZ-KV-001Key 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éeT1555.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éeT1555.006
AZ-KV-003Stratégie d'accès Key Vault modifiéeLes stratégies d'accès donnent accès aux secrets, clés et certificats.MoyenneT1098
AZ-KV-004Protection Key Vault affaiblie ou objets purgésSuppression réversible ou protection contre le vidage désactivée, ou objets supprimés définitivement.ÉlevéeT1485, T1562
AZ-ST-001Jeton SAS de stockage généréUn SAS de compte / de service est un jeton au porteur utilisable de partout jusqu'à son expiration.ÉlevéeT1528, T1530
AZ-ST-002Clés du compte de stockage listéesLes clés de compte donnent un accès complet aux données du compte.FaibleT1552
AZ-ST-003Accès anonyme aux blobs activéLe compte ou un conteneur sert désormais des blobs sans authentification.ÉlevéeT1530
AZ-ST-004Pare-feu du stockage ouvertLes règles réseau acceptent désormais les connexions de tous les réseaux.MoyenneT1562.007
AZ-ST-005Té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éeT1530, T1567
AZ-ST-006Lectures anonymes de blobsDes blobs ont été téléchargés sans aucune authentification.MoyenneT1530
AZ-DE-001Paramètre de diagnostic suppriméUne ressource (Key Vault, stockage, NSG…) a cessé d'envoyer ses logs.ÉlevéeT1562.008
AZ-DE-002Export de l'Activity Log suppriméL'abonnement n'exporte plus son Activity Log.ÉlevéeT1562.008
AZ-DE-003Plan Defender for Cloud désactivéUn plan Defender a été repassé au niveau Free.ÉlevéeT1562.001
AZ-DE-004Verrou de ressource suppriméLes verrous protègent les ressources contre la suppression ou la modification.MoyenneT1562
AZ-DE-005Règle NSG ouverte sur InternetUne règle entrante autorisant toute source / Internet a été créée.MoyenneT1562.007
AZ-PER-001Runbook ou webhook Automation crééLes runbooks exécutent du code avec l'identité (souvent privilégiée) du compte Automation.MoyenneT1648
AZ-PER-002Logic App ou Function modifiéeDu code serverless peut conserver un accès et s'exécuter avec une identité managée.FaibleT1648
AZ-PER-003Identifiant fédéré ajouté à une identité managéeUn fournisseur d'identité externe peut désormais obtenir des jetons pour cette identité.ÉlevéeT1098.001
AZ-ID-001Service principal utilisé depuis une nouvelle IPUne identité d'application a appelé Azure depuis une IP jamais vue pendant la période d'apprentissage.MoyenneT1078.004
AZ-ID-002Jeton 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éeT1528, T1078.004
AZ-DEF-001Alerte Defender for CloudMicrosoft Defender for Cloud a levé une alerte de sécurité.Moyenne
AZ-NET-001Port d'administration joignable depuis InternetDes flux entrants SSH / RDP / WinRM depuis des IP publiques ont été autorisés.MoyenneT1133, T1021
AZ-NET-002Connexion vers un port de minageUne VM s'est connectée vers un port typique des pools de minage.ÉlevéeT1496
AZ-NET-003Gros transfert sortantPlus de 500 Mo sont sortis du réseau vers une seule IP publique.MoyenneT1048
AZ-NET-004Trafic réseau avec une IP de l'attaquantLes flow logs montrent du trafic avec une adresse IP impliquée dans d'autres constats.ÉlevéeT1105

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.

La rétention de l'Activity Log Azure est de 90 jours et les logs de ressources sont désactivés par défaut. Ce que chaque log ne dit pas, et comment conclure.
Une compromission Azure fictive, analysée de bout en bout : secret fuité, rôle auto-attribué, Run Command, jeton d'identité managée volé, Key Vault et blobs.
Comment les attaquants abusent des principaux de service et identités managées Azure : secrets fuités, vol de jeton IMDS, identifiants fédérés, runbooks.

Cet outil n'est ni affilié à Microsoft Corporation, ni approuvé, ni sponsorisé par celle-ci. Azure, Microsoft Azure et Microsoft Defender for Cloud sont des marques du groupe de sociétés Microsoft. Les autres noms sont des marques de leurs propriétaires respectifs.