Communitygithub.com

audit-configuration-azure-active-directory

Audit de la configuration d'Azure Active Directory (Microsoft Entra ID) pour évaluer la sécurité identitaire, les politiques d'authentification et les attributions de rôles privilégiés.

Qu'est-ce que audit-configuration-azure-active-directory ?

Cette compétence permet d'auditer la configuration de Microsoft Entra ID (anciennement Azure Active Directory) d'un tenant Azure. Elle couvre l'énumération des paramètres de sécurité, l'examen des rôles privilégiés (notamment les administrateurs généraux), la revue des politiques d'accès conditionnel et la détection des comptes obsolètes (plus de 90 jours sans connexion) ou invités ayant des privilèges excessifs. L'analyse des logs de connexion permet de repérer les authentifications à risque (déplacements impossibles, localisations inconnues) et l'utilisation d'une authentification héritée qui contourne la MFA. Le workflow s'appuie sur Microsoft Graph PowerShell SDK, Azure CLI, et ScoutSuite pour des vérifications automatisées. Utile pour les assessments de sécurité post-acquisition, les audits de conformité, et l'investigation d'activités suspectes. Nécessite les rôles Global Reader ou Security Reader et un abonnement Azure AD Premium P1/P2 pour l'accès aux logs avancés. Le résultat est un rapport structuré listant les vulnérabilités critiques (permanent admin assignments, absence de MFA, invités avec rôles privilégiés).

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/auditing-azure-active-directory-configuration

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Audit de la configuration d'Azure Active Directory

Quand l'utiliser

  • Lors d'une évaluation de sécurité de la configuration identitaire d'un tenant Azure
  • Quand des audits de conformité exigent la revue des politiques d'authentification, de l'application de la MFA et des attributions de rôles
  • Lors de l'intégration d'un nouveau tenant Azure après une fusion ou acquisition
  • Quand vous enquêtez sur une activité de connexion suspecte ou des comptes compromis
  • Pour valider que les politiques d'accès conditionnel protègent correctement contre les attaques basées sur l'identité

Ne pas utiliser pour l'audit Active Directory sur site (utilisez PingCastle ou BloodHound AD), pour l'audit RBAC au niveau des ressources Azure sans contexte identitaire, ni pour la détection de menaces en temps réel (utilisez Microsoft Defender for Identity).

Prérequis

  • Rôle Global Reader ou Security Reader dans le tenant Microsoft Entra ID cible
  • Kit SDK Microsoft Graph PowerShell installé (Install-Module Microsoft.Graph)
  • Azure CLI authentifié auprès du tenant cible (az login --tenant TENANT_ID)
  • ScoutSuite configuré avec le fournisseur Azure pour une évaluation automatisée
  • Accès aux journaux d'audit Azure AD et aux journaux de connexion (nécessite Azure AD Premium P1/P2)

Workflow

Étape 1 : Énumérer la configuration du tenant et les paramètres de sécurité par défaut

Évaluez les paramètres de sécurité identitaire de base du tenant, notamment les paramètres de sécurité par défaut et l'état de l'authentification héritée.

# Connexion à Microsoft Graph
Connect-MgGraph -Scopes "Directory.Read.All","Policy.Read.All","AuditLog.Read.All"

# Obtenir les détails du tenant
Get-MgOrganization | Select-Object DisplayName, Id, VerifiedDomains

# Vérifier si les paramètres de sécurité par défaut sont activés
Get-MgPolicyIdentitySecurityDefaultEnforcementPolicy | Select-Object IsEnabled

# Lister les politiques de méthodes d'authentification
Get-MgPolicyAuthenticationMethodPolicy | ConvertTo-Json -Depth 5

# Vérifier l'état de l'authentification héritée via l'accès conditionnel
Get-MgIdentityConditionalAccessPolicy | Where-Object {
    $_.Conditions.ClientAppTypes -contains "exchangeActiveSync" -or
    $_.Conditions.ClientAppTypes -contains "other"
} | Select-Object DisplayName, State

Étape 2 : Auditer les attributions de rôles privilégiés

Passez en revue les attributions de rôles d'annuaire pour identifier les utilisateurs sur-privilégiés, les comptes administrateurs permanents et les configurations de rôles risquées.

# Lister toutes les attributions d'administrateur général
az rest --method GET \
  --url "https://graph.microsoft.com/v1.0/directoryRoles/filterByIds" \
  --body '{"ids":["62e90394-69f5-4237-9190-012177145e10"]}' | \
  az rest --method GET \
  --url "https://graph.microsoft.com/v1.0/directoryRoles?filter=displayName eq 'Global Administrator'" \
  --query "value[0].id" -o tsv

# Lister toutes les attributions de rôles privilégiés à l'aide de l'API Graph
az rest --method GET \
  --url "https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$expand=principal" \
  --query "value[*].{Role:roleDefinitionId, Principal:principal.displayName, PrincipalType:[email protected]}" \
  -o table

# Vérifier les utilisateurs avec plusieurs rôles d'administration
az ad user list --query "[].{UPN:userPrincipalName, DisplayName:displayName}" -o table

# Lister les principaux de service avec des attributions de rôles d'administration
az rest --method GET \
  --url "https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$filter=principalOrganizationId eq 'TENANT_ID'" \
  -o json

Étape 3 : Examiner les politiques d'accès conditionnel

Auditez les politiques d'accès conditionnel pour détecter les lacunes de couverture, en particulier concernant l'application de la MFA, la conformité des appareils et les restrictions basées sur la localisation.

# Lister toutes les politiques d'accès conditionnel
Get-MgIdentityConditionalAccessPolicy | Select-Object DisplayName, State, @{
    N='ContrôlesAccord'; E={$_.GrantControls.BuiltInControls -join ', '}
} | Format-Table -AutoSize

# Identifier les politiques en mode rapport uniquement (non appliquées)
Get-MgIdentityConditionalAccessPolicy | Where-Object {$_.State -eq "enabledForReportingButNotEnforced"} |
    Select-Object DisplayName

# Vérifier la couverture de l'application de la MFA
Get-MgIdentityConditionalAccessPolicy | Where-Object {
    $_.GrantControls.BuiltInControls -contains "mfa"
} | Select-Object DisplayName, State, @{
    N='Utilisateurs'; E={$_.Conditions.Users.IncludeUsers -join ', '}
}

# Trouver les politiques qui excluent des groupes (contournement potentiel)
Get-MgIdentityConditionalAccessPolicy | Where-Object {
    $_.Conditions.Users.ExcludeGroups.Count -gt 0
} | Select-Object DisplayName, @{
    N='GroupesExclus'; E={$_.Conditions.Users.ExcludeGroups -join ', '}
}

Étape 4 : Identifier les comptes obsolètes et les utilisateurs invités

Trouvez les comptes qui ne se sont pas connectés récemment, les comptes désactivés avec des attributions de rôles actives et les configurations d'utilisateurs invités risquées.

# Trouver les utilisateurs qui ne se sont pas connectés depuis 90 jours ou plus
az ad user list --query "[?signInActivity.lastSignInDateTime < '2025-11-25T00:00:00Z'].{UPN:userPrincipalName, DernièreConnexion:signInActivity.lastSignInDateTime, Activé:accountEnabled}" -o table

# Lister tous les utilisateurs invités
az ad user list --filter "userType eq 'Guest'" \
  --query "[].{UPN:userPrincipalName, DisplayName:displayName, DateCréation:createdDateTime}" \
  -o table

# Trouver les utilisateurs invités avec des rôles privilégiés
az rest --method GET \
  --url "https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments?$expand=principal" \
  --query "value[?principal.userType=='Guest'].{Rôle:roleDefinitionId,Invité:principal.userPrincipalName}" \
  -o table

# Vérifier les comptes avec MFA désactivée
az rest --method GET \
  --url "https://graph.microsoft.com/v1.0/reports/authenticationMethods/userRegistrationDetails" \
  --query "value[?!isMfaRegistered].{UPN:userPrincipalName,MfaEnregistrée:isMfaRegistered}" \
  -o table

Étape 5 : Analyser les journaux de connexion pour une activité risquée

Examinez les journaux de connexion pour identifier les modèles d'authentification anormaux, les échecs de défis MFA et les détections de connexion risquées.

# Obtenir les connexions risquées des 7 derniers jours
az rest --method GET \
  --url "https://graph.microsoft.com/v1.0/auditLogs/signIns?$filter=riskLevelDuringSignIn ne 'none' and createdDateTime ge 2026-02-16T00:00:00Z" \
  --query "value[*].{Utilisateur:userPrincipalName,Risque:riskLevelDuringSignIn,IP:ipAddress,Application:appDisplayName,Statut:status.errorCode}" \
  -o table

# Obtenir les connexions depuis des localisations inconnues
az rest --method GET \
  --url "https://graph.microsoft.com/v1.0/auditLogs/signIns?$filter=riskEventTypes_v2/any(r:r eq 'unfamiliarFeatures')" \
  --query "value[*].{Utilisateur:userPrincipalName,Localisation:location.city,IP:ipAddress}" \
  -o table

# Vérifier les connexions par authentification héritée
az rest --method GET \
  --url "https://graph.microsoft.com/v1.0/auditLogs/signIns?$filter=clientAppUsed ne 'Browser' and clientAppUsed ne 'Mobile Apps and Desktop clients'" \
  --query "value[*].{Utilisateur:userPrincipalName,ApplicationClient:clientAppUsed,Statut:status.errorCode}" \
  -o table

Étape 6 : Exécuter une évaluation automatisée avec ScoutSuite

Exécutez ScoutSuite pour des vérifications automatisées complètes de la configuration du tenant Azure.

# Exécuter ScoutSuite contre Azure
python3 -m ScoutSuite azure --cli \
  --report-dir ./scoutsuite-azure-report \
  --all-subscriptions

# Consulter le rapport HTML généré
open ./scoutsuite-azure-report/azure-report.html

Concepts clés

TermeDéfinition
Microsoft Entra IDService cloud de gestion des identités et des accès de Microsoft, anciennement Azure Active Directory, fournissant l'authentification et l'autorisation
Accès conditionnelMoteur de politique qui évalue les signaux (utilisateur, appareil, localisation, risque) pour appliquer des contrôles d'accès comme la MFA, la conformité des appareils ou le blocage d'accès
Paramètres de sécurité par défautParamètres de protection d'identité de base de Microsoft qui imposent l'enregistrement MFA, bloquent l'authentification héritée et protègent les actions privilégiées
Gestion des identités privilégiéesFonctionnalité Azure AD Premium P2 permettant un accès privilégié juste-à-temps avec des workflows d'approbation et une activation de rôle limitée dans le temps
Authentification héritéeProtocoles d'authentification plus anciens (POP3, IMAP, SMTP, ActiveSync) qui ne prennent pas en charge la MFA et sont couramment exploités pour les attaques par vol d'identifiants
Connexion risquéeDétection par Microsoft Entra Identity Protection d'anomalies de connexion, notamment les déplacements impossibles, les localisations inconnues et les IP liées à des logiciels malveillants

Outils et systèmes

  • Microsoft Graph API : Interface programmatique principale pour interroger la configuration Entra ID, les politiques, les rôles et les journaux d'audit
  • Microsoft Graph PowerShell SDK : Module PowerShell pour la gestion Entra ID et les tâches d'audit de sécurité
  • ScoutSuite : Outil d'audit multi-cloud avec prise en charge du fournisseur Azure pour les vérifications IAM, stockage, réseau et identité
  • AzureADRecon : Outil communautaire pour la reconnaissance complète Azure AD et la génération de rapports d'évaluation de sécurité
  • Microsoft Defender for Identity : Solution de sécurité basée sur le cloud pour détecter les menaces basées sur l'identité et les identifiants compromis

Scénarios courants

Scénario : Évaluation de la sécurité d'un tenant Azure après acquisition

Contexte : Après l'acquisition d'une entreprise, l'équipe de sécurité doit évaluer la posture identitaire du tenant Azure avant de l'intégrer à l'Entra ID de l'entreprise.

Approche :

  1. Énumérer tous les administrateurs généraux et vérifier les comptes personnels dans des rôles d'administration
  2. Examiner les politiques d'accès conditionnel pour confirmer que la MFA est appliquée à tous les utilisateurs, pas seulement aux administrateurs
  3. Identifier les utilisateurs invités avec un accès privilégié pouvant indiquer un sur-privilège de fournisseur tiers
  4. Vérifier les comptes obsolètes (aucune connexion depuis 90 jours ou plus) qui pourraient être des cibles d'attaques par vol d'identifiants
  5. Consulter les journaux de connexion pour détecter l'utilisation de l'authentification héritée contournant la MFA
  6. Vérifier que les paramètres de sécurité par défaut ou les politiques CA équivalentes bloquent les protocoles d'authentification héritée
  7. Produire un rapport de risques avec des mesures de correction priorisées avant l'intégration du tenant

Pièges : Azure AD Premium P2 est requis pour les détections de connexion risquées et le PIM. Si le tenant acquis utilise un niveau de licence inférieur, de nombreuses fonctionnalités de protection d'identité ne seront pas disponibles. Les utilisateurs invités de tenants partenaires peuvent avoir un accès implicite via des groupes dynamiques qui ne sont pas visibles dans les requêtes d'attribution de rôles standard.

Format de sortie

Rapport d'audit de sécurité Azure Active Directory
===============================================
Tenant : acme-acquired.onmicrosoft.com
ID du tenant : a1b2c3d4-e5f6-7890-abcd-ef1234567890
Date d'audit : 23/02/2026
Licence : Azure AD Premium P2

CONFIGURATION D'IDENTITÉ :
  Sécurité par défaut : Désactivé (accès conditionnel en cours d'utilisation)
  Politiques d'accès conditionnel : 12 (8 appliquées, 3 rapport uniquement, 1 désactivée)
  Authentification héritée bloquée : Partielle (bloquée pour les admins uniquement)

ACCÈS PRIVILÉGIÉ :
  Administrateurs généraux :              8 (recommandé : <= 4)
  Attributions d'administration permanentes :        6 (aucune activation PIM requise)
  Principaux de service avec admin :      3
  Utilisateurs invités avec rôles privilégiés :  2

HYGIÈNE DES COMPTES :
  Nombre total d'utilisateurs :                        1 247
  Comptes obsolètes (90+ jours) :          89
  Utilisateurs invités :                        234
  Utilisateurs sans MFA enregistrée :       156

RISQUE DE CONNEXION :
  Connexions risquées (30 derniers jours) :      34
  Connexions par authentification héritée (7 derniers jours) : 67
  Détections de déplacement impossible :        5
  Connexions depuis une localisation inconnue :       12

CONSTATATIONS CRITIQUES :
  1. 8 administrateurs généraux avec des attributions permanentes (utilisez PIM)
  2. L'authentification héritée n'est pas bloquée pour les utilisateurs non administrateurs
  3. 156 utilisateurs sans enregistrement MFA
  4. 2 utilisateurs invités avec le rôle Administrateur de rôle privilégié

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Skills associés