Saltar al contenido
OPS // KITitspentest.sh

PE-ROA

roadtx

ROADtools Token eXchange — obtiene, refresca e intercambia tokens OAuth de Entra ID entre distintos clientes y flujos para pruebas de red team sobre tokens.

Sitio oficialVolver al catálogo

RESUMEN

roadtx (ROADtools Token eXchange, parte de dirkjanm/ROADtools junto con la herramienta de exploración roadrecon) automatiza los flujos OAuth2 que Entra ID usa para emitir tokens de acceso, de refresco y Primary Refresh Tokens (PRT). Sus comandos `gettokens`, `refreshtokento`, `devicecode` y `appauth` cubren autenticación interactiva, por device code y basada en aplicación, permitiendo a quien evalúa obtener un token para un par cliente/recurso y luego intercambiarlo por otro.

Su capacidad más relevante para pruebas de red team es el intercambio de tokens FOCI (Family of Client IDs): muchos client IDs de primera parte de Microsoft comparten refresh tokens, por lo que un refresh token emitido a un cliente (por ejemplo, Azure CLI) a menudo puede canjearse por un token de acceso con alcance hacia una app de primera parte totalmente distinta (por ejemplo, Microsoft Teams o SharePoint) sin volver a autenticarse. roadtx se usa para demostrar que esta portabilidad de tokens, combinada con un acceso condicional débil o inexistente, permite que un único token comprometido alcance mucho más del tenant de lo que sugiere su alcance de consentimiento original.

CASOS DE USO

Casos de uso en un engagement

  • 01

    Intercambiar un refresh token obtenido de un client ID FOCI por tokens de acceso hacia otras apps y recursos de primera parte de Microsoft.

  • 02

    Probar si las políticas de acceso condicional de Entra ID realmente se aplican entre distintas combinaciones de cliente/recurso, y no solo a la que el usuario usó para autenticarse por primera vez.

  • 03

    Simular flujos de autenticación por device code y basados en aplicación para evaluar el hardening de inicio de sesión y consentimiento en Entra ID.

  • 04

    Solicitar y usar Primary Refresh Tokens para evaluar la exposición de la autenticación estilo Windows Hello for Business / WAM.

PRIMEROS PASOS

Una vez autorizadas las pruebas post-explotación sobre el acceso condicional y los límites de alcance de tokens en Entra ID, para obtener, refrescar e intercambiar tokens OAuth entre distintos client IDs y flujos.

  1. Instala roadtx una vez que las pruebas de intercambio de tokens estén dentro del alcance: `pip install roadtx`.
  2. Obtén un token inicial con credenciales provistas por el cliente o comprometidas, por ejemplo `roadtx gettokens -u user@tenant.onmicrosoft.com -p '<password>' -r msgraph`.
  3. Lista los alias de cliente/recurso disponibles con `roadtx listaliases` para entender qué intercambios FOCI son posibles.
  4. Usa `roadtx refreshtokento` para intercambiar el refresh token cacheado por un cliente o recurso distinto y documenta qué permitió o bloqueó el acceso condicional.
roadtx — bash
roadtx gettokens -u user@tenant.onmicrosoft.com -p '<password>' -r msgraph

ANTES DE USARLA

Qué revisar antes de lanzarla

Cada solicitud e intercambio de token es un evento real de inicio de sesión en Entra ID y aparece en los logs de sign-in bajo la identidad usada — acuerda con el cliente el volumen y momento esperados para que no se marque como un incidente en curso.

El intercambio de tokens FOCI puede otorgar acceso a recursos mucho más allá del alcance que el usuario o el evaluador esperaba; confirma por escrito qué recursos están en alcance antes de intercambiar tokens hacia ellos.

Los flujos de autenticación con contraseña (`gettokens -p`) cuentan hacia el umbral de bloqueo de cuenta como cualquier otro intento de inicio de sesión — prioriza el device code o los flujos con tokens/refresh tokens existentes cuando sea posible.

SIGUE EXPLORANDO

Ver toda la fase →