Light Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

pwviptbl/ReconForge

Repository files navigation

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 parametros
  • web-test: web-map mais os scanners web request-based
  • infra: 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 avancado
  • nuclei - Scanner de vulnerabilidades
  • subfinder - Enumeracao de subdominios
  • whatweb - Deteccao de tecnologias

Instalacao

Requisitos do Sistema

# Debian/Ubuntu/Kali - Instalar dependencias
./scripts/system_update.sh

Requisitos Python

pip install -r requirements.txt

Ferramentas Externas (Opcionais)

# Kali Linux ja possui a maioria
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:

./run.sh example.com

o perfil padrao sera web-test.

Perfis

# Perfil padrao para web
./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:

headers:
Authorization: Bearer eyJhbGciOi...
cookies:
PHPSESSID: abc123
XSRF-TOKEN: xyz456
local_storage:
authToken: eyJhbGciOi...

Ou, se preferir, use cookie_string:

cookie_string: "PHPSESSID=abc123; XSRF-TOKEN=xyz456"

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 IA
  • Leitura 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:

./run.sh --show-web-map 50

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:

network:
tor:
enabled: false
proxy_url: socks5h://127.0.0.1:9050

Ou habilitar por-plugin (recomendado para aplicar so onde faz sentido):

plugins:
config:
DirectoryScannerPlugin:
use_tor: true

Notas:

  • O Tor precisa estar rodando localmente (porta SOCKS padrao 9050).
  • Para SOCKS funcionar com requests, a dependencia pysocks precisa estar instalada (ja incluida em requirements.txt).
  • Voce pode manter alguns plugins fora do Tor mesmo com network.tor.enabled: true definindo use_tor: false no 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) quando use_tor estiver habilitado, mas isso depende do suporte da ferramenta.

Ativar o servico Tor (Debian/Kali):

sudo apt update
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:

sudo systemctl restart tor

Ferramentas Extras (Opcional)

Alguns plugins usam ferramentas externas (se instaladas) para aumentar a cobertura sem brute force pesado:

  • KatanaCrawlerPlugin (katana): crawler rapido para coletar endpoints
  • GauCollectorPlugin (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):

# katana
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 httpx que e o CLI do Python HTTPX (cliente HTTP), nao o toolkit do ProjectDiscovery.
  • Se voce instalar o httpx do ProjectDiscovery via Go, garanta que ele fique antes no PATH (ex: ~/go/bin antes 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

# Listar plugins disponiveis
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:

  1. Crie um arquivo em plugins/
  2. Herde de BasePlugin, WebPlugin ou NetworkPlugin
  3. Implemente o metodo execute()
  4. O plugin sera detectado automaticamente

Licenca

MIT License - Veja o arquivo LICENSE para detalhes.


ReconForge - Framework de Pentest Automatizado
Desenvolvido para operacoes Red Team

About

Framework de pentesting automatizado para operacoes Red Team com orquestracao inteligente de plugins e ferramentas externas.

Topics

Resources

Readme

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages