ReconForge
Introducao
ReconForge e um framework de pentesting automatizado desenvolvido para operacoes Red Team. O fluxo atual foi simplificado para funcionar bem com poucos comandos: descobrir a superficie, mapear entradas reais, testar o que faz sentido e gerar relatorio.
Por que ReconForge?
- Simples de operar: perfis prontos para os casos mais comuns
- Modular: Sistema de plugins extensivel
- Completo: Do reconhecimento a exploracao
- Automatizado: Execute scans completos com um comando
Funcionalidades
Capacidades Red Team
| Categoria | Descricao |
|---|---|
| Reconnaissance | DNS, subdominios, tecnologias web, mapeamento de rede |
| Network Attack Surface | Port scanning, Nmap NSE, SSL/TLS, exposicao de servicos |
| Web Attack Vectors | Crawling, mapeamento de formularios, requests reais e vulnerabilidades web |
| Vulnerability Assessment | Nuclei templates e scanners HTTP request-based |
| Exploit Intelligence | Busca automatica de exploits (Exploit-DB/CVE) |
| Firewall/WAF Detection | Identificacao de protecoes ativas |
Perfis recomendados
Em vez de montar listas longas de plugins, prefira os perfis:
web-map: mapeamento gentil de rotas, formularios, uploads e parametrosweb-test:web-mapmais os scanners web request-basedinfra: portas, servicos, SSL, firewall e exposicao de infraestrutura
Os plugins continuam habilitaveis por YAML, mas o caminho padrao agora e por perfil.
Integracoes Externas:
nmap- Scanner de rede avancadonuclei- Scanner de vulnerabilidadessubfinder- Enumeracao de subdominioswhatweb- Deteccao de tecnologias
Instalacao
Requisitos do Sistema
./scripts/system_update.sh
Requisitos Python
Ferramentas Externas (Opcionais)
sudo apt install nmap nuclei subfinder whatweb
Uso
Caminho oficial
O projeto agora usa um unico motor de execucao: o pipeline por estagios.
Se voce rodar apenas:
o perfil padrao sera web-test.
Perfis
./run.sh example.com
# Mapear entradas web e requests observadas
./run.sh example.com --profile web-map
# Mapear e testar vetores web
./run.sh example.com --profile web-test
# Foco em infraestrutura
./run.sh example.com --profile infra
# Listar perfis
./run.sh --list-profiles
# Ver saude do ambiente e dependencias
./run.sh --healthcheck
# Mostrar rotas e parametros de um run ja executado
./run.sh --show-web-map 50
# Rodar autenticado com cookies/token carregados de arquivo
./run.sh https://app.exemplo.local/dashboard --session-file sessions/app.yaml
# Modo avancado do mesmo pipeline
./run.sh example.com --pipeline --recon-plugins PortScannerPlugin,WebFlowMapperPlugin
Sessao autenticada por arquivo
Para acessar areas autenticadas sem criar configuracao fixa do projeto, crie um arquivo YAML ou JSON e passe --session-file.
Ha um modelo pronto em examples/session.example.yaml.
Exemplo:
Authorization: Bearer eyJhbGciOi...
cookies:
PHPSESSID: abc123
XSRF-TOKEN: xyz456
local_storage:
authToken: eyJhbGciOi...
Ou, se preferir, use cookie_string:
O mesmo arquivo e reaproveitado pelo WebFlowMapperPlugin, pelos scanners HTTP e pela fase de exploit.
Relatorio complementar com IA
Se GEMINI_API_KEY estiver configurada no ambiente, o stage_report tenta adicionar ao Markdown final duas secoes extras:
Resumo Executivo Assistido por IALeitura Tecnica Assistida por IA
Se a chave nao existir, estiver expirada ou a API falhar, o relatorio tecnico atual continua sendo gerado normalmente, sem interromper o run.
Leitura pratica do web map
Depois de um web-map ou web-test, use:
Voce vai ver:
- formularios detectados no DOM
- requests observadas de verdade
- parametros por bucket
- acao UI associada a cada request
Quando houver divergencia entre DOM e request real, a request observada e a fonte de verdade.
Opcional: Usar Tor (Plugins Mais "Barulhentos")
Voce pode rotear requests via Tor (proxy SOCKS5) quando estiver usando plugins com bruteforce/fuzzing (ex: DirectoryScannerPlugin) para reduzir risco de bloqueio do seu IP.
Config global em config/default.yaml:
tor:
enabled: false
proxy_url: socks5h://127.0.0.1:9050
Ou habilitar por-plugin (recomendado para aplicar so onde faz sentido):
config:
DirectoryScannerPlugin:
use_tor: true
Notas:
- O Tor precisa estar rodando localmente (porta SOCKS padrao
9050). - Para SOCKS funcionar com
requests, a dependenciapysocksprecisa estar instalada (ja incluida emrequirements.txt). - Voce pode manter alguns plugins fora do Tor mesmo com
network.tor.enabled: truedefinindouse_tor: falseno plugin (ex:ExploitSearcherPlugin,ReconnaissancePlugin). - Plugins baseados em ferramentas externas (ex:
nuclei,whatweb,subfinder) tentam usar proxy via variaveis de ambiente (ALL_PROXY/HTTP(S)_PROXY) quandouse_torestiver habilitado, mas isso depende do suporte da ferramenta.
Ativar o servico Tor (Debian/Kali):
sudo apt install -y tor
# subir e iniciar no boot
sudo systemctl enable --now tor
# verificar se o SOCKS esta ouvindo (padrao 9050)
ss -lntp | rg ':9050\\b' || netstat -lntp | rg ':9050\\b'
Nota (systemd): no Debian/Kali, o processo que fica rodando normalmente aparece como tor@default.service.
Voce nao precisa (e geralmente nao consegue) dar enable diretamente nele; habilitar tor.service puxa o tor@default.service no boot.
Se a porta 9050 nao estiver aberta, confira /etc/tor/torrc e garanta:
SocksPort 9050
Opcional (Tor): tentar trocar circuito aproximadamente a cada 1 minuto.
Isso pode ajudar em alguns cenarios, mas nao garante IP novo a cada request e pode degradar performance/estabilidade.
Edite /etc/tor/torrc:
MaxCircuitDirtiness 60
E reinicie o servico:
Ferramentas Extras (Opcional)
Alguns plugins usam ferramentas externas (se instaladas) para aumentar a cobertura sem brute force pesado:
KatanaCrawlerPlugin(katana): crawler rapido para coletar endpointsGauCollectorPlugin(gau): coleta URLs historicas (Wayback/CommonCrawl)
Atalho recomendado: rode scripts/system_update.sh (agora ele instala katana e gau automaticamente, alem das dependencias de sistema).
Instalacao (via Go):
go install -v github.com/projectdiscovery/katana/cmd/katana@latest
# gau
go install -v github.com/lc/gau/v2/cmd/gau@latest
# garanta que o binario esta no PATH (geralmente ~/go/bin)
export PATH=\"$HOME/go/bin:$PATH\"
Nota sobre httpx:
- No Kali/Debian pode existir um binario
httpxque e o CLI do Python HTTPX (cliente HTTP), nao o toolkit do ProjectDiscovery. - Se voce instalar o
httpxdo ProjectDiscovery via Go, garanta que ele fique antes noPATH(ex:~/go/binantes de/usr/bin), senao vai chamar o binario errado.
Comandos do Menu Interativo
| Comando | Descricao |
|---|---|
1-N |
Selecionar plugin por numero |
nome |
Selecionar plugin por nome (busca parcial) |
r |
Ver resultados detalhados |
d |
Ver descobertas atuais |
s |
Ver servicos encontrados |
v |
Ver vulnerabilidades |
q |
Encerrar varredura |
Relatorios
Formato de Saida
Os relatorios sao salvos em dados/scan_YYYYMMDD_HHMMSS.json contendo:
- Metadados: Alvo, duracao, plugins executados
- Descobertas: Hosts, portas, servicos, tecnologias
- Vulnerabilidades: CVEs, severidade, descricoes
- Erros: Falhas de execucao
Exemplo de Relatorio
"metadata": {
"target": "example.com",
"duration_seconds": 45.2,
"plugins_executed": ["PortScannerPlugin", "DirectoryScannerPlugin"]
},
"discoveries": {
"hosts": ["192.168.1.1"],
"open_ports": [22, 80, 443],
"services": [{"port": 80, "service": "HTTP"}]
},
"vulnerabilities": [
{"severity": "HIGH", "title": "SSL Certificate Expired"}
]
}
Estrutura do Projeto
ReconForge/
+-- scripts/
| +-- main.py # Ponto de entrada
+-- core/
| +-- minimal_orchestrator.py # Orquestrador principal
| +-- plugin_manager.py # Gerenciador de plugins
| +-- plugin_base.py # Classes base
| +-- config.py # Configuracoes
+-- plugins/ # Plugins disponiveis
+-- wordlists/ # Wordlists para fuzzing
+-- utils/ # Utilitarios
+-- dados/ # Relatorios gerados
Gerenciamento de Plugins
python scripts/manage_plugins.py list
# Habilitar plugin
python scripts/manage_plugins.py enable NomePlugin
# Desabilitar plugin
python scripts/manage_plugins.py disable NomePlugin
Contribuindo
Contribuicoes sao bem-vindas! Para adicionar um novo plugin:
- Crie um arquivo em
plugins/ - Herde de
BasePlugin,WebPluginouNetworkPlugin - Implemente o metodo
execute() - O plugin sera detectado automaticamente
Licenca
MIT License - Veja o arquivo LICENSE para detalhes.
ReconForge - Framework de Pentest Automatizado
Desenvolvido para operacoes Red Team