NTLM
NTLM
Informações Básicas
Em ambientes onde Windows XP e Server 2003 estão em operação, são utilizados hashes LM (Lan Manager), embora seja amplamente reconhecido que esses hashes podem ser facilmente comprometidos. Um hash LM específico, AAD3B435B51404EEAAD3B435B51404EE
, indica um cenário em que o LM não é utilizado, representando o hash para uma string vazia.
Por padrão, o protocolo de autenticação Kerberos é o método principal utilizado. O NTLM (NT LAN Manager) entra em ação sob circunstâncias específicas: ausência de Active Directory, inexistência do domínio, mau funcionamento do Kerberos devido a configuração inadequada, ou quando as conexões são tentadas usando um endereço IP em vez de um nome de host válido.
A presença do cabeçalho "NTLMSSP" em pacotes de rede sinaliza um processo de autenticação NTLM.
O suporte aos protocolos de autenticação - LM, NTLMv1 e NTLMv2 - é facilitado por uma DLL específica localizada em %windir%\Windows\System32\msv1\_0.dll
.
Pontos Chave:
Os hashes LM são vulneráveis e um hash LM vazio (
AAD3B435B51404EEAAD3B435B51404EE
) significa que não está em uso.Kerberos é o método de autenticação padrão, com o NTLM usado apenas sob certas condições.
Os pacotes de autenticação NTLM são identificáveis pelo cabeçalho "NTLMSSP".
Os protocolos LM, NTLMv1 e NTLMv2 são suportados pelo arquivo de sistema
msv1\_0.dll
.
LM, NTLMv1 e NTLMv2
Você pode verificar e configurar qual protocolo será usado:
GUI
Execute secpol.msc -> Políticas locais -> Opções de segurança -> Segurança de rede: Nível de autenticação do LAN Manager. Existem 6 níveis (de 0 a 5).
Registro
Isso definirá o nível 5:
Valores possíveis:
Esquema básico de autenticação de domínio NTLM
O usuário introduz suas credenciais
A máquina cliente envia uma solicitação de autenticação enviando o nome do domínio e o nome de usuário
O servidor envia o desafio
O cliente criptografa o desafio usando o hash da senha como chave e o envia como resposta
O servidor envia para o controlador de domínio o nome do domínio, o nome de usuário, o desafio e a resposta. Se não houver um Active Directory configurado ou o nome do domínio for o nome do servidor, as credenciais são verificadas localmente.
O controlador de domínio verifica se tudo está correto e envia as informações para o servidor
O servidor e o Controlador de Domínio são capazes de criar um Canal Seguro via servidor Netlogon pois o Controlador de Domínio conhece a senha do servidor (ela está dentro do banco de dados NTDS.DIT).
Esquema de autenticação NTLM local
A autenticação é como a mencionada anteriormente, mas o servidor conhece o hash do usuário que tenta se autenticar dentro do arquivo SAM. Portanto, em vez de perguntar ao Controlador de Domínio, o servidor irá verificar por si só se o usuário pode se autenticar.
Desafio NTLMv1
O comprimento do desafio é de 8 bytes e a resposta tem 24 bytes de comprimento.
O hash NT (16 bytes) é dividido em 3 partes de 7 bytes cada (7B + 7B + (2B+0x00*5)): a última parte é preenchida com zeros. Em seguida, o desafio é cifrado separadamente com cada parte e os bytes cifrados resultantes são unidos. Total: 8B + 8B + 8B = 24 bytes.
Problemas:
Falta de aleatoriedade
As 3 partes podem ser atacadas separadamente para encontrar o hash NT
DES é passível de quebra
A 3ª chave é composta sempre por 5 zeros.
Dado o mesmo desafio, a resposta será a mesma. Portanto, você pode dar como desafio à vítima a string "1122334455667788" e atacar a resposta usando tabelas arco-íris pré-computadas.
Ataque NTLMv1
Atualmente está se tornando menos comum encontrar ambientes com Delegação Irrestrita configurada, mas isso não significa que você não possa abusar de um serviço de Spooler de Impressão configurado.
Você poderia abusar de algumas credenciais/sessões que você já tem no AD para solicitar que a impressora se autentique contra algum host sob seu controle. Em seguida, usando metasploit auxiliary/server/capture/smb
ou responder
, você pode definir o desafio de autenticação como 1122334455667788, capturar a tentativa de autenticação e, se ela foi feita usando NTLMv1, você será capaz de quebrá-la.
Se estiver usando responder
, você poderia tentar **usar a flag --lm
** para tentar rebaixar a autenticação.
Obs.: para essa técnica, a autenticação deve ser feita usando NTLMv1 (NTLMv2 não é válido).
Lembre-se de que a impressora usará a conta de computador durante a autenticação, e as contas de computador usam senhas longas e aleatórias que você provavelmente não conseguirá quebrar usando dicionários comuns. Mas a autenticação NTLMv1 usa DES (mais informações aqui), então usando alguns serviços especialmente dedicados a quebrar DES você será capaz de quebrá-la (você poderia usar https://crack.sh/ por exemplo).
Ataque NTLMv1 com hashcat
O NTLMv1 também pode ser quebrado com a Ferramenta Multi NTLMv1 https://github.com/evilmog/ntlmv1-multi que formata mensagens NTLMv1 de uma maneira que pode ser quebrada com o hashcat.
O comando
NTLM
Overview
NTLM (NT LAN Manager) is a suite of Microsoft security protocols that provides authentication, integrity, and confidentiality to users. NTLM is commonly used for authentication in Windows environments.
NTLM Relay Attack
An NTLM relay attack is a type of attack where an attacker captures the NTLM authentication request sent by a victim and relays it to a target server to authenticate as the victim. This attack can be used to gain unauthorized access to systems and resources in a network.
Mitigating NTLM Relay Attacks
To mitigate NTLM relay attacks, it is recommended to implement the following security measures:
Enforce SMB Signing: Enabling SMB signing can help prevent NTLM relay attacks by ensuring the integrity of SMB packets.
Disable NTLM: Consider disabling NTLM authentication in favor of more secure authentication protocols like Kerberos.
Use LDAP Signing and Channel Binding: Implement LDAP signing and channel binding to protect against NTLM relay attacks over LDAP.
Enable Extended Protection for Authentication: This feature helps protect against NTLM relay attacks by requiring extended protection for authentication.
By implementing these security measures, organizations can reduce the risk of NTLM relay attacks and enhance the overall security of their Windows environments.
Proteção contra NTLM Relay Attacks no Windows
Desativar NTLM
Para desativar o NTLM no Windows, siga as etapas abaixo:
Abra o Editor de Política de Grupo digitando
gpedit.msc
no menu Iniciar.Navegue até
Configuração do Computador -> Configurações do Windows -> Configurações de Segurança -> Diretivas Locais -> Opções de Segurança
.No painel direito, encontre a política denominada
Network security: Restrict NTLM: Outgoing NTLM traffic to remote servers
.Duplo clique na política e selecione
Habilitado
.No menu suspenso, selecione
Negar tudo
.Clique em
OK
para aplicar a configuração.
Restringir NTLM para Acesso Remoto
Para restringir o uso do NTLM apenas para acesso remoto, siga as etapas abaixo:
Abra o Editor de Política de Grupo digitando
gpedit.msc
no menu Iniciar.Navegue até
Configuração do Computador -> Configurações do Windows -> Configurações de Segurança -> Diretivas Locais -> Opções de Segurança
.No painel direito, encontre a política denominada
Network security: Restrict NTLM: Incoming NTLM traffic
.Duplo clique na política e selecione
Habilitado
.No campo
Permitir entrada de NTLM
, insiraRemote Servers
.Clique em
OK
para aplicar a configuração.
Execute o hashcat (distribuído é melhor através de uma ferramenta como hashtopolis) pois isso levará vários dias caso contrário.
Neste caso, sabemos que a senha é password, então vamos trapacear para fins de demonstração:
Precisamos agora usar as utilidades do hashcat para converter as chaves DES quebradas em partes do hash NTLM:
Finalmente a última parte:
NTLM Relay Attack
Overview
NTLM relay attacks are a common technique used by attackers to exploit the NTLM authentication protocol. In a typical NTLM relay attack, the attacker intercepts an NTLM authentication request from a victim host and relays it to a target host, tricking the target host into believing that the attacker is the victim. This allows the attacker to gain unauthorized access to the target host using the victim's credentials.
Mitigation
To mitigate NTLM relay attacks, it is recommended to implement the following security measures:
Enforce SMB Signing: Enabling SMB signing can help prevent NTLM relay attacks by ensuring the integrity of SMB packets exchanged between hosts.
Enable Extended Protection for Authentication: Enabling Extended Protection for Authentication can help protect against NTLM relay attacks by requiring stronger authentication methods.
Disable NTLMv1: Disabling NTLMv1 can mitigate NTLM relay attacks as NTLMv1 is vulnerable to relay attacks.
Use LDAP Signing and Channel Binding: Enabling LDAP signing and channel binding can help prevent LDAP relay attacks, which are similar to NTLM relay attacks.
By implementing these security measures, organizations can reduce the risk of falling victim to NTLM relay attacks and enhance the overall security of their network.
Desafio NTLMv2
O comprimento do desafio é de 8 bytes e são enviadas 2 respostas: Uma tem 24 bytes de comprimento e o comprimento da outra é variável.
A primeira resposta é criada cifrando usando HMAC_MD5 a string composta pelo cliente e o domínio e usando como chave o hash MD4 do hash NT. Em seguida, o resultado será usado como chave para cifrar usando HMAC_MD5 o desafio. Para isso, um desafio do cliente de 8 bytes será adicionado. Total: 24 B.
A segunda resposta é criada usando vários valores (um novo desafio do cliente, um timestamp para evitar ataques de repetição...)
Se você tiver um pcap que capturou um processo de autenticação bem-sucedido, você pode seguir este guia para obter o domínio, nome de usuário, desafio e resposta e tentar quebrar a senha: https://research.801labs.org/cracking-an-ntlmv2-hash/
Pass-the-Hash
Depois de obter o hash da vítima, você pode usá-lo para se passar por ela. Você precisa usar uma ferramenta que irá realizar a autenticação NTLM usando esse hash, ou você poderia criar um novo sessionlogon e injetar esse hash dentro do LSASS, para que quando qualquer autenticação NTLM for realizada, esse hash será usado. A última opção é o que o mimikatz faz.
Por favor, lembre-se de que você também pode realizar ataques Pass-the-Hash usando contas de Computador.
Mimikatz
Precisa ser executado como administrador
Isso iniciará um processo que pertencerá aos usuários que iniciaram o mimikatz, mas internamente no LSASS as credenciais salvas são as que estão dentro dos parâmetros do mimikatz. Em seguida, você pode acessar recursos de rede como se fosse esse usuário (similar ao truque runas /netonly
, mas você não precisa saber a senha em texto simples).
Pass-the-Hash a partir do linux
Você pode obter execução de código em máquinas Windows usando Pass-the-Hash a partir do Linux. Acesse aqui para aprender como fazer isso.
Ferramentas compiladas do Impacket para Windows
Você pode baixar binários do Impacket para Windows aqui.
psexec_windows.exe
C:\AD\MyTools\psexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.my.domain.local
wmiexec.exe
wmiexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local
atexec.exe (Neste caso, você precisa especificar um comando, cmd.exe e powershell.exe não são válidos para obter um shell interativo)
C:\AD\MyTools\atexec_windows.exe -hashes ":b38ff50264b74508085d82c69794a4d8" svcadmin@dcorp-mgmt.dollarcorp.moneycorp.local 'whoami'
Existem vários outros binários do Impacket...
Invoke-TheHash
Você pode obter os scripts do powershell daqui: https://github.com/Kevin-Robertson/Invoke-TheHash
Invoke-SMBExec
Invoke-WMIExec
Invoke-SMBClient
Invoke-SMBEnum
Invocar-SMBEnum
Invoke-TheHash
Esta função é uma combinação de todas as outras. Você pode passar vários hosts, excluir alguns e selecionar a opção que deseja usar (SMBExec, WMIExec, SMBClient, SMBEnum). Se você selecionar qualquer um dos SMBExec e WMIExec mas não fornecer nenhum parâmetro Command, ele apenas irá verificar se você tem permissões suficientes.
Windows Credentials Editor (WCE)
Precisa ser executado como administrador
Esta ferramenta fará a mesma coisa que o mimikatz (modificar a memória LSASS).
Execução remota manual do Windows com nome de usuário e senha
pageLateral MovementExtraindo credenciais de um Host do Windows
Para mais informações sobre como obter credenciais de um host do Windows, você deve ler esta página.
NTLM Relay e Responder
Leia um guia mais detalhado sobre como realizar esses ataques aqui:
pageSpoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay AttacksAnalisando desafios NTLM de uma captura de rede
Você pode usar https://github.com/mlgualtieri/NTLMRawUnHide
Last updated