Saltar al contenido
OPS // KITitspentest.sh

X-AZU

azure_oauth_phishing_example

Implementación de referencia mínima de una página de phishing de consentimiento OAuth en Entra ID, usada para demostrar el impacto del illicit consent grant en engagements autorizados.

Sitio oficialVolver al catálogo

RESUMEN

azure_oauth_phishing_example (carlospolop/azure_oauth_phishing_example) es un script de referencia pequeño y sin licencia — publicado junto con la documentación de HackTricks Cloud del autor sobre phishing de apps OAuth en Entra ID — que recorre lo mínimo necesario para ejecutar un ataque de illicit consent grant: registrar una aplicación en Entra ID, solicitar un conjunto de permisos de Microsoft Graph (por ejemplo, `Mail.Read`, `Files.ReadWrite.All`, `User.Read`), y levantar una página local que redirige a la víctima a través del prompt de consentimiento real de Microsoft de vuelta a un endpoint `/callback` que captura el código de autorización.

Existe como código didáctico/de referencia en lugar de un producto mantenido, lo que lo hace útil para explicar la mecánica de la técnica con claridad: la víctima nunca revela una contraseña, solo hace clic en 'Aceptar' en una pantalla de consentimiento de una aplicación que parece legítima, y el propio Entra ID entrega al redirect URI del atacante un código que se canjea por un token de acceso/refresco con el alcance de los permisos solicitados y consentidos.

CASOS DE USO

Casos de uso en un engagement

  • 01

    Construir una página de prueba de concepto de consentimiento mínima y autoalojada para demostrarle a un cliente el phishing de illicit consent grant durante una simulación acotada.

  • 02

    Explicar, con código funcional, por qué el phishing de consentimiento evita por completo los controles de MFA basados en contraseña.

  • 03

    Guiar al equipo de seguridad de un cliente exactamente por los scopes de Microsoft Graph que necesitaría una app controlada por un atacante para leer correo, archivos o datos de perfil.

  • 04

    Combinarlo con una herramienta más completa como 365-Stealer cuando el cliente quiera una versión automatizada y con capacidad de reporte de la misma técnica.

PRIMEROS PASOS

Una vez autorizada y acotada explícitamente con el cliente una simulación de phishing de consentimiento contra usuarios de Entra ID, como referencia mínima para alojar la página de consentimiento OAuth y canjear el código resultante.

  1. Consigue que la simulación de phishing de consentimiento, incluyendo los scopes exactos y los usuarios objetivo, esté explícitamente autorizada y acotada por escrito antes de registrar nada.
  2. Registra una aplicación descartable en Entra ID, crea un client secret y define el redirect URI hacia el endpoint de callback que controlas (por defecto `http://localhost:8000/callback`).
  3. Selecciona solo los permisos de Graph acordados con el cliente para la simulación (por ejemplo, `Mail.Read`, `Files.ReadWrite.All`, `User.Read`).
  4. Ejecuta el script y envía la URL de consentimiento resultante solo a los destinatarios de prueba preacordados: `python3 azure_oauth_phishing_example.py --client-secret <secret> --client-id <id> --scopes 'email,Mail.Read,User.Read,offline_access,openid,profile'`.
  5. Usa el token de acceso capturado únicamente para demostrar el impacto al cliente, y luego revoca el consentimiento de la app y elimina el token/secret capturados.
python3 — bash
python3 azure_oauth_phishing_example.py --client-secret <client-secret> --client-id <client-id> --scopes 'email,Mail.Read,User.Read,offline_access,openid,profile'

ANTES DE USARLA

Qué revisar antes de lanzarla

Es código de ejemplo/referencia sin archivo de licencia y sin garantías de mantenimiento — léelo por completo antes de ejecutarlo, y trátalo como material didáctico y no como una herramienta de phishing lista para producción.

El phishing de consentimiento apunta al criterio de usuarios finales reales, no a infraestructura — requiere autorización explícita por escrito que nombre a los usuarios objetivo, los scopes exactos solicitados y la ventana de la simulación, por separado de cualquier autorización de pentest limitada a lo técnico.

Un consentimiento exitoso queda registrado en Entra ID como un evento de consentimiento de aplicación OAuth y los posteriores inicios de sesión de la API de Graph desde la app del atacante — acuerda con el cliente qué debería aparecer en los logs de auditoría/inicio de sesión para que el blue team pueda validar su detección durante el debrief.

SIGUE EXPLORANDO

Ver toda la fase →