RakRecon é um orquestrador de reconhecimento automatizado para Bug Bounty e pentest. Você executa um único script Python, responde um wizard interativo, e o RakRecon monta e dispara um container Docker com todo o pipeline de forma isolada — o host fica limpo, nenhuma ferramenta de segurança é instalada fora do container.
Você executa o script, responde o wizard, e o RakRecon monta e dispara o container Docker automaticamente:
python3 rakrecon.py -d alvo.com
│
├─ verifica se Docker está disponível
│
├─ wizard interativo
│ [Fase 3] Port Scan? S
│ [Fase 5] Crawling? S
│ [Fase 6] Screenshots? N
│ [Fase 7] Nuclei? S → severidades: critical,high
│
├─ build automático da imagem (se necessário)
│
└─ docker run rakrecon:latest ...
│
├─ Fase 1: verifica ferramentas
├─ Fase 2: subfinder + dnsx → subdomínios
├─ Fase 3: naabu → portas abertas
├─ Fase 4: httpx → hosts vivos
├─ Fase 5: gau + katana → URLs
├─ Fase 6: gowitness → screenshots
├─ Fase 7: nuclei → vulnerabilidades
└─ Fase 8: reporter → relatório HTML
│
└─ reports/alvo.com/ (salvo no host via volume)
O container é removido automaticamente ao final. Os relatórios ficam em reports/<domínio>/.
| Requisito | Descrição |
|---|---|
| Docker | Para buildar e executar o container com todas as ferramentas |
| Python 3.11+ | Para rodar o wizard no host (pip install -r requirements.txt) |
git clone <repo-url> rakrecon
cd rakrecon
pip install -r requirements.txt
docker build -t rakrecon:latest .
docker build consulta a GitHub Releases API e instala automaticamente a versão mais recente de cada ferramenta. Os templates do Nuclei também são baixados durante o build.Escolha o modo de acordo com o escopo do contrato:
| Flag | Modo | Descrição |
|---|---|---|
-d, --domain |
Domínio | Recon completo — enumera subdomínios, portas, URLs e vulnerabilidades |
-u, --url |
URL | Escopo específico — uma única aplicação web; subdomínios pulados automaticamente |
-o, --output |
— | Diretório de saída (padrão: reports/) |
Exemplos
# Sem parâmetros — wizard pergunta tudo
python3 rakrecon.py
# Modo domínio — recon completo
python3 rakrecon.py -d exemplo.com
# Modo URL — escopo específico
python3 rakrecon.py -u https://app.exemplo.com
| # | Fase | Módulo | Ferramenta | Opcional |
|---|---|---|---|---|
| 1 | Verificação de dependências | utils/dependency_checker.py | — | Não |
| 2 | Enumeração de subdomínios | modules/subdomains.py | subfinder + dnsx | Não (pulada em modo URL) |
| 3 | Port scan | modules/portscan.py | naabu | Sim |
| 4 | Hosts ativos | modules/alive.py | httpx | Não |
| 5 | Crawling de URLs | modules/crawler.py | gau + katana | Sim |
| 6 | Screenshots | modules/screenshots.py | gowitness | Sim |
| 7 | Varredura de vuln | modules/vuln_scan.py | nuclei + takeover | Sim |
| 8 | Relatório HTML | modules/reporter.py | — | Não |
host:porta para o httpx.▶ DependencyManager utils/dependency_checker.py
Dentro do container, verifica apenas se cada binário está no PATH via shutil.which(). Não tenta baixar nada — as ferramentas já estão na imagem.
▶ SubdomainEnumerator modules/subdomains.py
Combina enumeração passiva via subfinder com DNS brute-force via dnsx (~300 subdomínios embutidos). Resultado deduplicado em _subdomains.txt. Pulada em modo URL.
Arquivos gerados: _subfinder.txt, _dnsx_brute.txt, _subdomains.txt | Timeouts: 300s cada
▶ PortScanner modules/portscan.py
Executa naabu nas top 1000 portas com connect scan. Por padrão filtra IPs e escaneia apenas hostnames (proteção contra blacklist de CDNs). Gera _http_targets.txt no formato host:porta para o httpx.
Arquivos gerados: _hostnames_only.txt, _ports.json, _http_targets.txt | Timeout: 300s
▶ AliveChecker modules/alive.py
Recebe o merge de subdomínios + http_targets e executa httpx com detecção de status, título, tecnologias, CDN e seguimento de redirecionamentos.
Flags: -json -status-code -title -tech-detect -follow-redirects | Timeout: 300s
▶ WebCrawler modules/crawler.py
Combina gau (URLs históricas via Wayback, Common Crawl, OTX) com katana (crawl ativo com JS, profundidade 3). Resultado deduplicado em _crawled_urls.txt.
Timeouts: gau 120s / katana 300s
▶ ScreenshotCapture modules/screenshots.py
Executa gowitness v3 (scan file) com fallback automático para a sintaxe v2. Screenshots salvos em screenshots/ como PNG/JPEG.
Timeout: 600s
▶ VulnScanner modules/vuln_scan.py
Dois modos: varredura geral via nuclei com severidades configuráveis contra URLs vivas e crawleadas; e detecção de subdomain takeover via -tags takeover. Findings exibidos em tempo real com cores por severidade. Timeout via NUCLEI_TIMEOUT (padrão: 1800s).
▶ ReportGenerator modules/reporter.py
Gera relatório HTML autocontido — screenshots e logo embedados em base64, sem dependências externas. Inclui cards de sumário, tabelas de vulnerabilidades, hosts vivos, portas abertas, grid de screenshots e listas de URLs e subdomínios.
Saída: reports/<domain>/<domain>_report.html
Todos os artefatos são salvos em reports/<domínio>/ (mapeado de /data no container via volume Docker):
└── exemplo.com/
├── exemplo.com_subfinder.txt
├── exemplo.com_dnsx_brute.txt
├── exemplo.com_subdomains.txt
├── exemplo.com_hostnames_only.txt
├── exemplo.com_ports.json
├── exemplo.com_http_targets.txt
├── exemplo.com_all_targets.txt
├── exemplo.com_alive.json
├── exemplo.com_alive.txt
├── exemplo.com_gau_urls.txt
├── exemplo.com_katana_urls.txt
├── exemplo.com_crawled_urls.txt
├── exemplo.com_nuclei_targets.txt
├── exemplo.com_nuclei_results.json
├── exemplo.com_takeover_results.json
├── exemplo.com_report.html ← relatório final
└── screenshots/
└── https_exemplo.com.png
├── rakrecon.py # único script — wizard (host) + pipeline (container)
├── Dockerfile # imagem Python 3.11-slim + 8 ferramentas Go
├── .dockerignore
├── requirements.txt # rich
├── assets/
└── img/
└── logo.png # logo oficial (embedado em base64 nos relatórios)
├── modules/
├── subdomains.py # Fase 2: subfinder + dnsx
├── portscan.py # Fase 3: naabu
├── alive.py # Fase 4: httpx
├── crawler.py # Fase 5: gau + katana
├── screenshots.py # Fase 6: gowitness
├── vuln_scan.py # Fase 7: nuclei
└── reporter.py # Fase 8: relatório HTML autocontido
├── utils/
└── dependency_checker.py # verifica ferramentas no container
├── docs/
├── index.html # documentação completa (HTML)
└── rakrecon.txt # documentação em texto plano
└── reports/ # artefatos gerados (não incluído na imagem)