
Un fork del excelente TokenTactics con soporte para CAE y token endpoint v2
______ __ __ __ _ ___
/_ __/___ / /_____ ____ / /_____ ______/ /_(_)_________ _ __ |__ \
/ / / __ \/ //_/ _ \/ __ \ / __/ __ `/ ___/ __/ / ___/ ___/ | | / / __/ /
/ / / /_/ / ,< / __/ / / / / /_/ /_/ / /__/ /_/ / /__(__ ) | |/ / / __/
/_/ \____/_/|_|\___/_/ /_/ \__/\__,_/\___/\__/_/\___/____/ |___(_)____/
Esta es una versión actualizada de TokenTactics escrita originalmente por Stephan Borosh @rvrsh3ll y Bobby Cooke @0xBoku.
Los tokens de acceso de Azure te permiten autenticarte en determinados endpoints como un usuario que inicia sesión con un código de dispositivo. Si posees un token de actualización capaz de FOCI (Familia de IDs de Cliente), puedes usarlo para obtener tokens de acceso a todos los endpoints capaces de FOCI conocidos. Dado que el token de actualización también contiene información sobre si el usuario ha realizado autenticación multifactor, puedes aprovecharlo. Una vez que tienes el token de acceso de un usuario, es posible acceder a ciertas aplicaciones como Outlook, SharePoint, OneDrive, MSTeams y más.
Por ejemplo, si tienes un token de actualización de Graph o MSGraph, puedes conectarte a Azure y volcar usuarios, grupos, etc. Luego, dependiendo de las políticas de acceso condicional, podrías cambiar a un token de Azure Core Management y ejecutar AzureHound. Después, obtener un token de acceso de Outlook y leer/enviar correos electrónicos, o de MS Teams y leer/enviar mensajes de Teams!
Para más información sobre los tipos de tokens de Azure: Tokens de acceso de la plataforma de identidad de Microsoft
Hay algunos ejemplos de solicitudes a endpoints en la carpeta resources. También hay una plantilla de phishing de ejemplo para el phishing con código de dispositivo.
También puedes usar estos tokens con AAD Internals. Recomendamos encarecidamente echarle un vistazo a esta increíble herramienta.
Import-Module .\TokenTactics.psd1
Get-Help Get-EntraIDToken
Invoke-RefreshToSubstrateToken -Domain "myclient.org"
El conjunto de pruebas requiere PowerShell 7 y Pester 5.7.1. Utiliza respuestas HTTP simuladas y no requiere credenciales de Entra ID ni acceso a la red.
Install-Module Pester -RequiredVersion 5.7.1 -Scope CurrentUser
pwsh ./tests/Invoke-Tests.ps1
El mismo conjunto se ejecuta en Linux, macOS y Windows para cada pull request.
Get-EntraIDToken -Client MSGraph
Una vez que el usuario haya iniciado sesión, se te presentará el JWT y se guardará en la variable $response. Para acceder al token de acceso, usa $response.access_token desde tu ventana de PowerShell para mostrar el token. También puedes mostrar el token de actualización con $response.refresh_token. Pista: ¡querrás el token de actualización para seguir renovando a nuevos tokens!
Get-EntraIDToken -Client DODMSGraph
[!IMPORTANT] Esta funcionalidad se introdujo en v0.2.20 y requiere PowerShell 7.0
Si has creado una clave de acceso en un proveedor de terceros como KeePassXC, Bitwarden, 1Password o similar, puedes exportar el material de la clave privada.
[!CAUTION] Exportar tu material de clave privada es extremadamente peligroso. Asegúrate de entender el riesgo antes de continuar.
El formato de archivo de clave de acceso de KeePassXC es compatible de forma nativa y puedes apuntar el cmdlet directamente al archivo. El procedimiento de inicio de sesión inicial solo obtendrá la cookie ESTSAUTH necesaria, y luego debes usar Get-EntraIDTokenFromESTSCookie para intercambiar esta cookie por un token de portador (token de acceso, token de actualización y token de identificación).
# Recuperar el valor de la cookie ESTSAUTH
Invoke-EntraIDPasskeyLogin -Verbose -KeyFilePath "C:\Users\Fabian\Microsoft.passkey"
# Intercambiar la cookie ESTSAUTH por tokens de portador
Get-EntraIDTokenFromESTSCookie -CookieValue $Global:ESTSAUTH
Si tienes un formato de archivo no compatible, puedes especificar los valores necesarios manualmente y lograr el mismo objetivo.
Invoke-EntraIDPasskeyLogin -Verbose -UserPrincipalName "[email protected]" -UserHandle "XYZ" -CredentialId "9e9c8297-0cde-4726-8852-16c141e15bd3" -PrivateKey $PrivateKey
Get-EntraIDTokenFromESTSCookie -CookieValue $Global:ESTSAUTH
Si has obtenido una cookie sccauth de una sesión autenticada en security.microsoft.com (por ejemplo, a través de Evilginx o las herramientas de desarrollo del navegador), puedes usarla para recuperar tokens de acceso de Entra ID para un amplio conjunto de recursos a través del portal de Microsoft Defender XDR.
# Recuperar un token de Microsoft Graph usando la cookie sccauth
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -ResourceName MicrosoftGraph
# Proporcionar un token XSRF explícitamente para omitir la solicitud de arranque
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -XSRF "your_xsrf_value" -ResourceName Azure
# Usar una URL de recurso personalizada
Get-EntraIDTokenFromSCCAUTHCookie -SCCAuth "your_sccauth_value" -Resource "https://management.core.windows.net/"
Valores admitidos de -ResourceName: Azure, LogAnalytics, MATP, MCAS, MicrosoftGraph, MicrosoftOffice, Purview, PurviewACC, ThreatIntelligencePortal.
Get-EntraIDTokenFromESTSCookie -ESTSAuthCookie "0.AbcApTk..."
Este módulo utiliza el flujo de código de autorización para obtener un token de acceso y un token de actualización usando la cookie ESTSAuth (o ESTSAuthPersistent). Útil si has suplantado una sesión a través de Evilginx u obtenido esta cookie de otro modo.
¡Asegúrate de usar la cookie correcta! ESTSAuthPersistent solo es útil cuando una política de CA realmente otorga una sesión persistente. De lo contrario, debes usar ESTSAuth. Por lo general, puedes saber cuál usar por la longitud; la cookie más larga es la que quieres usar :)
Nota: Esto puede no funcionar en todos los casos, ya que podría requerir interacción del usuario. Si es así, usa el flujo de código de dispositivo anterior o prueba roadtx interactiveauth --estscookie
Esta funcionalidad fue retroportada del pull request de rotarydrone en el repositorio original.
Uno de los ejemplos más destacados de este flujo oauth2 (al menos a principios de 2025) es el Portal de empresa de Intune, que permite, para algunos recursos, omitir los requisitos de cumplimiento del dispositivo.
Esta inteligencia fue publicada por primera vez por @dirkjan y luego presentada en Black Hat Europe a un público más amplio por @TEMP43487580