Publicado: 27 de Junio de 2025
Autor: José Miguel Romero aKa x3m1SecDificultad: ⭐ Hard
OS: Windows
📝 Descripción
Blackfield es una máquina Windows de nivel Hard que presenta un entorno de Active Directory complejo y desafiante. Esta máquina está diseñada para poner a prueba habilidades avanzadas de pentesting en entornos empresariales Windows, incluyendo técnicas de reconocimiento de AD, explotación de privilegios específicos de Windows y escalada de privilegios mediante abuso de funcionalidades del sistema operativo.
La máquina simula un controlador de dominio corporativo con múltiples servicios expuestos, incluyendo SMB, LDAP, Kerberos y WinRM. El vector de ataque inicial requiere un enfoque meticuloso de enumeración para descubrir usuarios válidos del dominio y explotar configuraciones débiles de autenticación.
Objetivos de Aprendizaje:
Enumeración avanzada de servicios de Active Directory
Técnicas de AS-REP Roasting para obtener hashes de autenticación
Explotación de permisos específicos de AD (ForceChangePassword)
Análisis forense de volcados de memoria LSASS
Abuso del privilegio SeBackupPrivilege para escalada de privilegios
Extracción y análisis de la base de datos NTDS.dit
🎯 Información General
Atributo
Valor
Nombre
Blackfield
IP
10.10.10.192
Dificultad
Hard
OS
Windows Server 2019
Puntos
40
Creador
adf11
📊 Resumen de la Explotación
🔗 Cadena de Ataque
🎯 Puntos Clave
Vector inicial: Enumeración SMB sin autenticación
Técnica crítica: AS-REP Roasting para obtener primer acceso
Escalada lateral: Abuso de permisos AD (ForceChangePassword)
Análisis forense: Extracción de credenciales desde volcado LSASS
Escalada final: Explotación de SeBackupPrivilege para acceso total
🛠️ Herramientas Utilizadas
Herramienta
Propósito
nmap
Reconocimiento y enumeración de puertos
smbclient
Enumeración de recursos SMB
netexec
Enumeración de usuarios y recursos
impacket
Ataques AS-REP Roasting y Kerberoasting
bloodhound
Análisis de rutas de ataque en AD
pypykatz
Análisis de volcados de memoria LSASS
evil-winrm
Shell interactivo en Windows via WinRM
hashcat
Cracking de hashes
🔭 Reconocimiento
🏓 Ping para verificación en base a TTL
💡 Nota: El TTL cercano a 128 sugiere que probablemente sea una máquina Windows.
🚀 Escaneo de puertos
🔍 Enumeración de servicios
⚠️ Añadimos el siguiente vhost a nuestro fichero /etc/hosts:
📋 Análisis de Servicios Detectados
Puerto
Servicio
Descripción
53
DNS
Servicio DNS del dominio
88
Kerberos
Autenticación del dominio
135
MSRPC
Llamadas a procedimientos remotos
389/3268
LDAP
Directorio activo
445
SMB
Recursos compartidos
593
RPC over HTTP
Llamadas RPC via HTTP
5985
WinRM
Administración remota Windows
🔥 Servicios críticos identificados:
SMB (445): Potencial acceso a recursos compartidos
WinRM (5985): Shell remoto si obtenemos credenciales
🌐 Enumeración de Servicios
🗂️ SMB (Puerto 445) - Acceso Inicial
Ya que no disponemos de credenciales, comenzamos tratando de enumerar posibles recursos mediante una sesión nula:
📁 Enumeración de recursos compartidos
👥 Enumeración de usuarios
📝 Nota: Se identificaron más de 300 usuarios del dominio mediante RID brute force.
Nos conectamos al recurso profiles$ y descargamos el contenido en nuestro host de ataque, pero tras revisarlo no encontramos nada de interés:
🎫 Ataques de Autenticación Kerberos
🎯 AS-REP Roasting
Verificamos si alguno de los usuarios obtenidos no tiene habilitada la pre-autenticación de kerberos y podemos realizar un ataque de tipo AS-Rep Roasting:
🎉 ¡Éxito! Encontramos que la cuenta support no tiene la pre-autenticación de kerberos habilitada y logramos obtener un ticket.
Alternativa usando kerbrute:
🔓 Cracking del Hash
Procedemos a intentar crackearlo usando hashcat y rockyou.txt:
🔑 Credencial obtenida: support:#00^BlackKnight
🎪 Verificación Kerberoasting
Intentamos sin éxito un ataque de kerberoasting:
🩸 Análisis con BloodHound
📊 Recolección de Datos
Ahora que disponemos de una cuenta unida al dominio con credenciales, usamos bloodhound-python para obtener un mapeo del dominio:
Es importante realizar una configuración adicional introduciendo el nombre de la máquina y el FQDN en /etc/hosts:
🔍 Análisis de Rutas de Ataque
Al cargar los datos en bloodhound vemos que el usuario support tiene el privilegio ForceChangePassword sobre el usuario audit2020:
🔄 Escalada Lateral - Abuso de ForceChangePassword
💡 Explotación del Privilegio
Primero intentamos usar bloodyAD, pero falla debido a restricciones LDAP:
Error: LDAPBindException: LDAP Bind failed! Result code: "invalidCredentials"
🛠️ Métodos Alternativos
Método 1: Comando net
Método 2: Comando rpcclient
📂 Acceso al Recurso Forensic
Una vez cambiada la contraseña, verificamos acceso a recursos compartidos:
🎯 ¡Acceso obtenido! Tenemos permisos de lectura sobre el recurso forensic.
🕵️ Análisis Forense
📥 Descarga de Archivos
Nos conectamos al recurso forensic y descargamos el contenido:
🗂️ Estructura de Archivos Encontrados
commands_output: Volcados de comandos ejecutados en la máquina
memory_analysis: Archivos comprimidos con volcados de memoria
tools: Herramientas como sysinternals y volatility
🧠 Análisis del Volcado LSASS
El archivo más crítico encontrado es lsass.zip:
🔧 Uso de pypykatz
Instalamos y usamos pypykatz para analizar el volcado:
🔑 Extracción de Hashes
Usuario
Hash NT
Estado
svc_backup
9658d1d1dcd9250115e2205d9f48400d
✅ Válido
DC01$
b624dc83a27cc29da11d9bf25efea796
❌ Inválido
Administrator
7f1e4ff8c6a8e6b6fcae2d9c0572cd62
❌ Inválido
💻 Acceso Inicial al Sistema
🏃 Conexión WinRM
Utilizamos el hash válido de svc_backup para conectarnos:
🏁 Primera Flag
📋 Enumeración de Privilegios
En el directorio C:\ encontramos un archivo notes.txt con información adicional.
Información crítica identificada:
✅ Pertenece al grupo Backup Operators
✅ Tiene el privilegio SeBackupPrivilege habilitado
🎁 Escalada de Privilegios - Abuso de SeBackupPrivilege
💡 Concepto del Ataque
El privilegio SeBackupPrivilege permite realizar copias de seguridad de archivos críticos del sistema:
SYSTEM (Clave de registro del sistema)
SAM (Security Account Manager)
NTDS.dit (Base de datos de Active Directory)
📋 Preparación del Entorno
Paso 1: Crear script VSS para montar copia de volumen:
Paso 2: Descargar DLLs necesarias:
Paso 3: Transferir archivos al host víctima:
💾 Extracción de la Base de Datos NTDS
Paso 4: Ejecutar script VSS:
Paso 5: Extraer archivos críticos:
🔓 Extracción de Todos los Hashes
Descargamos los archivos críticos a nuestro host atacante:
Utilizamos impacket-secretsdump para extraer todos los hashes del dominio:
👑 Acceso como Administrator
🔥 Pass-the-Hash Final
Con el hash NT del Administrator extraído, realizamos el ataque final:
graph TD
A[🔍 Reconocimiento inicial] --> B[🗂️ Enumeración SMB con sesión nula]
B --> C[👥 Extracción de usuarios via RID Brute Force]
C --> D[🎫 AS-REP Roasting - Usuario support]
D --> E[🔓 Cracking offline → support:#00^BlackKnight]
E --> F[🩸 Análisis con BloodHound]
F --> G[🔄 Abuso ForceChangePassword → audit2020]
G --> H[📂 Acceso al recurso SMB forensic]
H --> I[🧠 Análisis de volcado LSASS con pypykatz]
I --> J[🔑 Extracción hash NT svc_backup]
J --> K[💻 Acceso WinRM como svc_backup]
K --> L[🎫 Identificación privilegio SeBackupPrivilege]
L --> M[💾 Creación VSS y extracción NTDS.dit]
M --> N[🔓 Extracción hashes con secretsdump]
N --> O[👑 Pass-the-Hash como Administrator]
❯ ping -c2 10.10.10.192
PING 10.10.10.192 (10.10.10.192) 56(84) bytes of data.
64 bytes from 10.10.10.192: icmp_seq=1 ttl=127 time=44.6 ms
64 bytes from 10.10.10.192: icmp_seq=2 ttl=127 time=47.6 ms
--- 10.10.10.192 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1011ms
rtt min/avg/max/mdev = 44.611/46.095/47.579/1.484 ms
nmap -sC -sV -p$ports 10.10.10.192 -oN services.txt
Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-26 19:34 CEST
Nmap scan report for 10.10.10.192
Host is up (0.046s latency).
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-06-27 00:36:07Z)
135/tcp open msrpc Microsoft Windows RPC
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: BLACKFIELD.local0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: BLACKFIELD.local0., Site: Default-First-Site-Name)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-time:
| date: 2025-06-27T00:36:11
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|_clock-skew: 7h01m55s
echo "10.10.10.192 blackfield.local" | sudo tee -a /etc/hosts
smbclient -N -L //10.10.10.192
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
forensic Disk Forensic / Audit share.
IPC$ IPC Remote IPC
NETLOGON Disk Logon server share
profiles$ Disk
SYSVOL Disk Logon server share
*Evil-WinRM* PS C:\Users\svc_backup\Desktop> type user.txt
[USER FLAG OBTENIDA]
cat > vss.dsh << 'EOF'
set context persistent nowriters
set metadata c:\\Windows\\Temp\\test.cab
set verbose on
add volume c: alias test
create
expose %test% z:
EOF