Extrair Hashes de Senha usando hashdump no Meterpreter

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá uma das técnicas de pós-exploração mais comuns: extrair hashes de senhas de um alvo Windows comprometido. Especificamente, você usará o comando hashdump disponível no payload Meterpreter do Metasploit. Esses hashes, uma vez obtidos, podem ser quebrados offline para revelar senhas de usuários, permitindo escalonamento de privilégios adicional ou movimento lateral dentro de uma rede.

Para este exercício educacional, trabalharemos dentro de um ambiente simulado do Metasploit Framework. Isso permite que você aprenda os comandos exatos e o fluxo de trabalho sem a necessidade de configurar uma rede complexa de vítima/atacante. Você começará com uma sessão Meterpreter pré-estabelecida em uma máquina Windows simulada.

Seus objetivos são:

  • Acessar uma sessão Meterpreter ativa.
  • Usar o comando hashdump para extrair hashes de senhas.
  • Compreender a estrutura dos hashes extraídos.
  • Salvar os hashes em um arquivo para uso futuro.

Obter uma sessão Meterpreter com privilégios SYSTEM

Nesta etapa, você iniciará o console Metasploit simulado e interagirá com a sessão Meterpreter pré-existente. Em um cenário do mundo real, obter essa sessão envolveria explorar uma vulnerabilidade na máquina alvo. Para este laboratório, a sessão foi preparada para você.

Primeiro, navegue até o diretório de simulação que foi criado pelo script de configuração.

cd ~/project/metasploit-simulation

Agora, inicie o console Metasploit simulado executando o script msfconsole.

./msfconsole

Você deverá ver um banner de boas-vindas e o prompt msf6 >. Isso indica que você está no console principal do Metasploit. Para ver as sessões ativas, use o comando sessions com o flag -l (listar).

sessions -l

Você verá a seguinte saída, mostrando uma sessão ativa com o ID 1.

Active sessions
===============

  Id  Name  Type                     Information                  Connection
  --  ----  ----                     -----------                  ----------
  1         meterpreter x64/windows  NT AUTHORITY\SYSTEM @ WIN-PC  10.0.2.15:4444 -> 10.0.2.16:49152

A saída mostra que temos uma sessão meterpreter rodando como NT AUTHORITY\SYSTEM, que é o nível de privilégio mais alto em um sistema Windows. Isso é crucial para extrair hashes.

Agora, interaja com esta sessão usando seu ID.

sessions -i 1

Seu prompt mudará de msf6 > para meterpreter >, confirmando que você agora está dentro da sessão Meterpreter na máquina alvo.

Carregar a extensão da API padrão priv, se necessário

Nesta etapa, você carregará a extensão priv. Esta extensão do Meterpreter fornece comandos para escalonamento de privilégios e para acessar partes sensíveis do sistema operacional, como o banco de dados do Security Account Manager (SAM), onde os hashes de senha são armazenados.

Embora muitos payloads modernos do Meterpreter carreguem as extensões necessárias automaticamente quando um comando é chamado, é uma boa prática saber como carregá-las manualmente. Isso garante que você tenha a funcionalidade necessária.

Dentro do prompt meterpreter >, digite o seguinte comando para carregar a extensão priv:

load priv

O simulador confirmará que a extensão foi carregada com sucesso.

[+] Loading extension priv...
[+] Loaded extension: priv

Com a extensão priv carregada, você agora tem acesso a comandos como hashdump.

Executar o módulo de pós-exploração hashdump

Nesta etapa, você executará o comando hashdump. Este comando é o principal motivo pelo qual carregamos a extensão priv. Ele funciona lendo o banco de dados SAM diretamente da memória do sistema, contornando as proteções em disco. Isso é possível porque nossa sessão está rodando com privilégios SYSTEM.

Agora que você está no prompt do Meterpreter e carregou a extensão priv, basta executar o comando hashdump.

hashdump

O comando será executado e imprimirá uma lista de nomes de usuário e seus hashes de senha correspondentes na tela.

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
labex-user:1001:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::

Você extraiu com sucesso os hashes de senha da máquina Windows simulada. Na próxima etapa, analisaremos a estrutura desta saída.

Observar os hashes NTLM extraídos do banco de dados SAM

Nesta etapa, você aprenderá a interpretar a saída do comando hashdump. Compreender este formato é essencial para saber o que fazer com os hashes que você coletou.

Vamos examinar uma linha da saída que você gerou na etapa anterior:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

Esta string é delimitada por dois pontos e possui vários campos:

  1. Nome de usuário (Username): Administrator

    • Este é o nome da conta do usuário.
  2. Identificador Relativo (RID - Relative Identifier): 500

    • Este é um ID exclusivo para a conta dentro do domínio. O RID 500 é sempre a conta de administrador padrão.
  3. Hash LM (LM Hash): aad3b435b51404eeaad3b435b51404ee

    • Este é o hash para o protocolo de autenticação LAN Manager mais antigo. Em sistemas Windows modernos, este é frequentemente um hash em branco ou "nulo", como visto aqui. Este valor específico indica que nenhum hash LM está armazenado.
  4. Hash NTLM (NTLM Hash): 31d6cfe0d16ae931b73c59d7e0c089c0

    • Este é o hash NT LAN Manager, que é usado por todas as versões modernas do Windows. Este é o hash que você usaria em uma ferramenta de quebra de senha offline como John the Ripper ou Hashcat.
  5. Comentário e Diretório de Origem (Comment and Home Directory): :::

    • Estes três últimos campos geralmente estão vazios e não são usados para quebra de senha.

Ao observar esta saída, você pode identificar as contas de usuário ativas e, o mais importante, seus hashes NTLM, que representam suas senhas em um formato não reversível.

Salvar os hashes em um arquivo para cracking offline

Nesta etapa final, você salvará os hashes coletados em um arquivo de texto. É prática padrão salvar evidências e "loot" de um sistema comprometido para análise e uso posterior. Armazenar os hashes em um arquivo facilita a inserção deles em softwares de quebra de senha.

Primeiro, você precisa sair do ambiente simulado msfconsole para retornar ao seu shell Linux regular. Digite exit no prompt meterpreter > para retornar ao prompt msf6 >, e então digite exit novamente.

exit

Você deve agora estar de volta ao prompt meterpreter >. Digite exit novamente para sair da simulação.

exit

Você deve agora estar de volta ao seu diretório ~/project/metasploit-simulation.

Em seguida, crie um novo arquivo chamado hashes.txt usando o editor de texto nano.

nano hashes.txt

Agora, copie a saída de hash do seu terminal (a saída do comando hashdump na Etapa 3) e cole-a no editor nano. O conteúdo deve se parecer com isto:

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
labex-user:1001:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::

Pressione Ctrl+X para sair do nano, depois Y para confirmar que deseja salvar as alterações e, finalmente, Enter para confirmar o nome do arquivo.

Para verificar se o arquivo foi salvo corretamente, você pode exibir seu conteúdo com o comando cat.

cat hashes.txt

Você salvou com sucesso os hashes de senha em um arquivo, prontos para cracking offline.

Resumo

Neste laboratório, você realizou com sucesso uma técnica clássica de pós-exploração usando uma sessão simulada do Meterpreter.

Você aprendeu a:

  • Navegar e interagir com sessões no console do Metasploit Framework.
  • Carregar extensões do Meterpreter como priv para obter funcionalidades adicionais.
  • Executar o comando hashdump para extrair hashes de senha NTLM de um alvo Windows.
  • Compreender o formato dos hashes extraídos, identificando o nome de usuário, RID e hash NTLM.
  • Salvar os hashes coletados em um arquivo para uso offline com ferramentas de quebra de senha.

Esta habilidade é uma parte fundamental de testes de penetração, pois frequentemente fornece as chaves necessárias para expandir o acesso em uma rede.