Como fazer um pentest completo
Este guia é a espinha de um teste de intrusão do começo ao fim: o que fazer em cada fase, com que ferramenta, e o que precisa estar escrito antes de você tocar em qualquer coisa.
Leia
projetos/00-regras.mdprimeiro. Testar sistema de terceiros sem autorização escrita é crime no Brasil — Lei 12.737/2012 e Art. 154-A do Código Penal. Nenhuma técnica aqui muda isso.
Onde praticar: tudo neste guia se treina em labs/red-team-ctf.md e em repositorios/labs-vulneraveis.md. Máquina que é sua, ou plataforma que autoriza por escrito.
As sete fases
Um pentest não é "rodar o scanner e mandar o PDF". A ordem importa porque cada fase alimenta a seguinte, e pular uma custa achado.
| Fase | O que você produz | Tempo típico |
|---|---|---|
| 0. Escopo e autorização | Contrato, regras de engajamento, janela de teste | Antes de tudo |
| 1. Reconhecimento passivo | Superfície de ataque sem tocar no alvo | 10–20% |
| 2. Reconhecimento ativo | Portas, serviços, versões | 10% |
| 3. Enumeração | Usuários, compartilhamentos, endpoints, tecnologias | 25–30% |
| 4. Exploração | Acesso inicial comprovado | 15% |
| 5. Pós-exploração | Escalada, movimentação lateral, impacto demonstrado | 20% |
| 6. Relatório | O entregável. É o único artefato que o cliente lê | 20–25% |
A distribuição surpreende quem começa: enumeração e relatório juntos são metade do trabalho, e exploração é a menor fatia. Quem passa o tempo todo tentando explorar geralmente não enumerou o suficiente.
Fase 0 — Escopo e autorização
Nada começa sem isto por escrito e assinado.
O que o documento precisa dizer:
| Item | Por que importa |
|---|---|
| Alvos exatos: IPs, faixas CIDR, domínios, aplicações | "A rede da empresa" não é escopo, é convite a problema |
| O que está fora do escopo | Terceiros, produção crítica, sistemas de saúde ou industriais |
| Janela de teste: datas e horários | Testar fora da janela é acesso não autorizado |
| Tipo de teste: caixa preta, cinza ou branca | Define se você recebe credenciais e documentação |
| Técnicas proibidas | Negação de serviço, engenharia social, ataque físico |
| Contatos de emergência dos dois lados | Para quando algo cair |
| Quem pode autorizar uma pausa | Alguém tem de poder dizer "pare agora" |
| Tratamento de dado sensível achado | O que fazer se você encontrar dado pessoal ou credencial real |
Armadilha comum: o alvo tem um IP que na verdade pertence a um provedor de nuvem ou hospedagem. Você precisa da autorização do dono do sistema e verificar a política do provedor. AWS, Azure e GCP têm regras próprias para teste de intrusão.
Referência de metodologia: o PTES define essa fase como Pre-engagement Interactions e traz uma lista de perguntas pronta.
Fase 1 — Reconhecimento passivo
Você coleta sem enviar um pacote ao alvo. Tudo aqui vem de fonte pública ou de terceiros.
Subdomínios e superfície DNS
# subdomínios de fontes passivas (certificados, arquivos, APIs públicas)
subfinder -d example.com -all -silent > subs.txt
amass enum -passive -d example.com
# transparência de certificado, sem tocar no alvo
curl -s "https://crt.sh/?q=%25.example.com&output=json" | jq -r '.[].name_value' | sort -u
# registros DNS e histórico
dig example.com ANY +noall +answer
dig -t TXT example.com # SPF e DMARC revelam provedores e terceirosFerramentas: subfinder · amass · crt.sh
O que mais procurar
| Fonte | O que entrega |
|---|---|
| Shodan e Censys | Serviços expostos, banners, certificados, sem você escanear |
| Wayback Machine | Endpoints e parâmetros que saíram do ar mas continuam válidos |
| GitHub e GitLab | Segredo comitado, chave de API, arquivo de configuração |
| LinkedIn e site institucional | Nomes para montar lista de usuários e padrão de e-mail |
| Have I Been Pwned | Se credenciais do domínio já vazaram |
| Ofertas de emprego da empresa | Diz a pilha de tecnologia que eles usam, de graça |
Busca por segredo em repositório:
# num repositório que você clonou legitimamente
trufflehog git file://./repo --only-verified
gitleaks detect --source ./repoPadrão de e-mail
Descobrir o formato (nome.sobrenome@, inicial+sobrenome@) permite montar lista de usuários a partir dos nomes que você achou. É a base de password spraying na fase 4 — quando o escopo permite.
Fase 2 — Reconhecimento ativo
Agora você toca no alvo. Cada pacote seu pode aparecer num log, e isso é esperado num teste autorizado.
# descoberta de host na faixa
nmap -sn 10.0.0.0/24 -oA descoberta
# varredura completa de portas TCP, rápida, sem detecção
nmap -p- --min-rate 5000 -T4 -Pn 10.0.0.5 -oA portas
# só as portas abertas, agora com versão e script padrão
nmap -p 22,80,443,445,3389 -sCV -Pn 10.0.0.5 -oA servicos
# UDP nas portas que realmente valem (UDP é lento; não varra tudo)
nmap -sU --top-ports 20 -Pn 10.0.0.5 -oA udpPor que dois passos: a primeira varredura acha portas rápido; a segunda investiga só o que existe. Rodar -sCV -p- de uma vez leva horas e entrega o mesmo.
Alternativas mais rápidas para faixas grandes: masscan e naabu, sempre seguidos de nmap -sCV nas portas encontradas.
Cuidado real: -T5, --min-rate muito alto ou masscan sem limite derrubam equipamento de rede frágil. Isso conta como negação de serviço, e normalmente está proibido no contrato.
Fase 3 — Enumeração
A fase mais longa e a que decide o resultado. Aqui você transforma "porta 445 aberta" em "usuário X tem acesso de escrita ao compartilhamento Y".
Web (80, 443, 8080, 8443)
# tecnologias, cabeçalhos, framework
whatweb -a 3 https://example.com
curl -sI https://example.com
# diretórios e arquivos
feroxbuster -u https://example.com -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt -x php,txt,bak,old,zip
# vhosts por cabeçalho Host
ffuf -u https://example.com -H "Host: FUZZ.example.com" -w subs.txt -fs 0
# parâmetros escondidos
arjun -u https://example.com/Ferramentas: feroxbuster · ffuf · SecLists · Arjun
Para aplicação web, a referência completa de teste é o OWASP Web Security Testing Guide — ele lista o que testar em cada categoria, e é o que separa "achei um XSS" de "cobri autenticação, sessão, autorização, entrada, lógica de negócio".
SMB e Windows (139, 445)
# enumeração geral: compartilhamentos, usuários, política de senha
netexec smb 10.0.0.5 -u '' -p '' --shares --users --pass-pol
enum4linux-ng -A 10.0.0.5
# listar e baixar de compartilhamento
smbclient -L //10.0.0.5 -N
smbmap -H 10.0.0.5 -u usuario -p senhaNetExec (sucessor do CrackMapExec) · enum4linux-ng
Active Directory
# coleta completa para análise de caminho de ataque
bloodhound-python -d dominio.local -u usuario -p senha -c All -ns 10.0.0.1
# usuários com Kerberos pre-auth desabilitado (AS-REP Roasting)
GetNPUsers.py dominio.local/ -usersfile usuarios.txt -no-pass
# contas de serviço com SPN (Kerberoasting)
GetUserSPNs.py dominio.local/usuario:senha -requestBloodHound é o que transforma uma lista de objetos do AD num grafo de caminhos até Domain Admin. Aprender a ler o grafo vale mais que decorar comando.
Outros serviços que costumam entregar acesso
| Porta | Serviço | Primeiro passo |
|---|---|---|
| 21 | FTP | Tentar login anônimo |
| 25 | SMTP | VRFY e EXPN para validar usuários |
| 161 | SNMP | snmpwalk com community public |
| 389/636 | LDAP | Consulta anônima para listar objetos |
| 1433 | MSSQL | netexec mssql com credencial achada |
| 2049 | NFS | showmount -e e montar o que estiver aberto |
| 3306 | MySQL | Credencial padrão e usuário sem senha |
| 5985 | WinRM | evil-winrm com credencial achada |
| 6379 | Redis | Sem autenticação por padrão em instalação antiga |
Consulta de referência para qualquer porta: HackTricks tem uma página por serviço com o que enumerar e como explorar.
Fase 4 — Exploração
Você só chega aqui com um alvo específico e uma razão. Disparar exploit no escuro é o oposto de pentest.
O ciclo correto
- Identifique versão e produto exatos na fase 3.
- Procure a vulnerabilidade conhecida. Como fazer isso está em
docs/guia-cve.md. - Leia o exploit antes de rodar. Exploit público contém backdoor com frequência, e um que não bate com sua versão derruba o serviço.
- Teste no seu lab primeiro, quando o alvo é produção.
- Documente na hora: comando, saída, horário, evidência.
# buscar exploit conhecido para a versão
searchsploit "apache 2.4.49"
searchsploit -m 50383 # baixa uma cópia local para você LERAs vias que mais funcionam na prática
| Via | Onde aparece |
|---|---|
| Credencial padrão ou reusada | Painel administrativo, banco, dispositivo de rede |
| Credencial vazada em repositório ou arquivo de configuração | Achada na fase 1 ou 3 |
| Injeção em aplicação web | SQLi, upload sem validação, SSTI, deserialização |
| CVE conhecida sem correção | Serviço exposto com versão antiga |
| Serviço mal configurado | Redis, NFS, Jenkins, Docker socket expostos |
| Password spraying | Uma senha provável contra muitos usuários |
Sobre spraying: uma senha contra muitas contas, não muitas senhas contra uma conta. O segundo bloqueia contas e queima o teste. Confira a política de bloqueio (--pass-pol) antes.
Ferramentas
- Metasploit — exploits com payload e sessão prontos
- sqlmap — injeção SQL, com
--batche nível controlado - Burp Suite — a edição Community basta para aprender; interceptar e repetir requisição é o núcleo do teste web
- Exploit-DB — base de exploits, acessível também por
searchsploit
Fase 5 — Pós-exploração
Acesso inicial não é resultado. O resultado é impacto demonstrado.
Escalada de privilégio
# Linux: enumeração automatizada
./linpeas.sh | tee linpeas.txt
# o que checar na mão, sempre
sudo -l # o que você roda como root
find / -perm -4000 -type f 2>/dev/null # binários SUID
cat /etc/crontab; ls -la /etc/cron.* # tarefa agendada gravável
getcap -r / 2>/dev/null # capabilities# Windows: enumeração automatizada
.\winPEASx64.exe
# o que checar na mão
whoami /priv # privilégios do token
systeminfo # versão e patches
Get-ChildItem -Path C:\ -Include *.kdbx,*.config -Recurse -EA 0PEASS-ng (linPEAS e winPEAS) · GTFOBins para abusar de binário Unix · LOLBAS para o equivalente em Windows
Movimentação lateral
# reutilizar credencial ou hash pela rede
netexec smb 10.0.0.0/24 -u usuario -H <hash_ntlm>
evil-winrm -i 10.0.0.7 -u usuario -H <hash_ntlm>
psexec.py dominio/usuario@10.0.0.7 -hashes :<hash_ntlm>O objetivo é mostrar o caminho: de onde você entrou até onde conseguiu chegar, e o que isso significa para o negócio.
Limpeza
Anote tudo que você criou e desfaça: usuário, arquivo, tarefa agendada, chave de SSH, shell. Deixar artefato para trás é falha profissional, e às vezes cláusula de contrato.
Fase 6 — Relatório
É o único artefato que a maioria das pessoas do cliente vai ler. Use o modelo pronto em projetos/templates/relatorio-pentest.md.
Estrutura
| Seção | Para quem | O que tem de conter |
|---|---|---|
| Sumário executivo | Diretoria | Risco em linguagem de negócio, sem jargão, em uma página |
| Escopo e metodologia | Auditoria | O que foi e o que não foi testado, quando, como |
| Achados | Time técnico | Um por vulnerabilidade, com severidade e evidência |
| Plano de remediação | Quem vai corrigir | Ordenado por risco sobre esforço |
| Anexos | Quem for refazer | Saída de ferramenta, comandos, capturas |
O que faz um achado ser bom
- Reproduzível: o passo a passo funciona na mão de outra pessoa.
- Com impacto explicado: não "SQLi no parâmetro id", mas "leitura da tabela de clientes, 40 mil registros, incluindo CPF".
- Com severidade justificada: use CVSS e mostre o vetor, para a nota ser auditável.
- Com correção concreta: "usar consulta parametrizada em
app/models/user.py:88", não "validar entrada". - Com evidência mínima suficiente: captura de tela com dado sensível mascarado.
Erro clássico
Despejar a saída do scanner como se fosse achado. Um relatório de 200 páginas gerado por ferramenta vale menos que dez achados verificados à mão, com falso positivo removido.
Os erros que mais custam
| Erro | Consequência |
|---|---|
| Começar sem autorização escrita | Crime, independentemente da intenção |
| Enumerar pouco e tentar explorar muito | Você não acha o caminho fácil que existia |
| Rodar exploit sem ler | Derruba serviço, ou executa backdoor do autor |
| Não anotar durante o teste | Na hora do relatório você não reproduz o que fez |
| Testar fora da janela ou fora do escopo | Quebra de contrato |
| Entregar saída de ferramenta como relatório | O cliente não sabe o que corrigir |
| Esquecer de limpar | Artefato seu vira achado do próximo teste |
Como treinar cada fase, legalmente
| Fase | Onde praticar |
|---|---|
| 1. Recon passivo | Seu próprio domínio, ou os alvos de TryHackMe |
| 2–3. Recon ativo e enumeração | Hack The Box, VulnHub, Metasploitable |
| 4. Exploração web | PortSwigger Web Security Academy — gratuito e é o melhor material que existe de web |
| 4–5. Exploração e escalada | OverTheWire, exploit.education |
| 5. Active Directory | GOAD no seu lab |
| 6. Relatório | Refaça um alvo de CTF e escreva o relatório como se fosse cliente — é o projeto P13 |
Fontes
- PTES — Penetration Testing Execution Standard — a metodologia de referência, fase a fase
- OWASP Web Security Testing Guide — o que testar em aplicação web
- NIST SP 800-115 — guia de teste e avaliação de segurança
- HackTricks — consulta por serviço e por técnica
- PayloadsAllTheThings — payload e bypass por classe de vulnerabilidade
- MITRE ATT&CK — o vocabulário de técnicas que o relatório deve usar