
Triagem de vulnerabilidades com proveniência. Resolve CVEs a partir de corpora construídos localmente (NVD/KEV/EPSS, ExploitDB, nmap script.db) e emite comandos de verificação classificados pelo que a execução deles faz ao alvo.
Uma ferramenta de triagem de vulnerabilidades. Ela recebe o que um scan já encontrou, determina quais CVEs se aplicam plausivelmente, informa o quão confiante ela está e por quê, e fornece os comandos para você verificar por conta própria.
Ela não escaneia nada e não explora nada.
git clone https://github.com/xGhst0/reconkg && cd reconkg && pip install -e . --break-system-packages && python -m reconkg.selfcheck
Essa última etapa relata o que consegue e o que não consegue ver: se o script.db do nmap foi encontrado, quais corpora estão configurados e quantas impressões digitais realistas realmente produzem uma pista. Execute-a primeiro. Pronto para uso, a resposta é "nove CVEs escritos à mão", e o selfcheck diz isso em vez de deixar você presumir o contrário.
As nove entradas integradas são um fixture de demonstração. Para qualquer coisa real:
export NVD_API_KEY=... # free: https://nvd.nist.gov/developers/request-an-api-key
python -m reconkg.fetch --dest ~/.reconkg/feeds --all
python -m reconkg.builddb --feeds ~/.reconkg/feeds --out ~/.reconkg/vuln.db
export RECONKG_VULN_DB=~/.reconkg/vuln.db
export RECONKG_EXPLOIT_DB=~/.reconkg/exploits.db
export RECONKG_SCRIPT_DB=/usr/share/nmap/scripts/script.db
Sem a chave de API, o NVD limita a 5 requisições a cada 30 segundos e a
extração completa leva cerca de quatro horas em vez de vinte e cinco minutos. Ele faz checkpoint,
então uma extração interrompida é retomada. --since extrai apenas o que mudou.
Se uma variável de corpus estiver definida e o arquivo não puder ser aberto, o reconkg se recusa a iniciar. Servir silenciosamente nove entradas quando você pediu 300.000 significaria um scan que não encontra nada e parece que funcionou.
python -m reconkg.app # serves http://127.0.0.1:8765/ui
python -m reconkg.console # REPL
app escuta apenas no loopback, sem flag para alterar isso. Este processo mantém seus
resultados de varredura e emite comandos direcionados aos hosts que você está testando; um túnel
SSH é um preço pequeno comparado a ter isso acessível a partir do resto da
rede. --port altera a porta, RECONKG_PORT define um padrão.
Autenticação. Toda rota exige Authorization: Bearer <token>, proveniente de
RECONKG_TOKENS no formato name:role:token (papéis: viewer, scanner,
operator, admin; tokens com pelo menos 16 caracteres). Se não estiver definido, app
gera um apenas para aquele processo e o imprime na inicialização — não gravado em
disco, diferente a cada reinicialização.
Um navegador não consegue anexar um cabeçalho a uma navegação simples, então abrir /ui
diretamente resultará em 401. Use uma extensão que injeta cabeçalhos, ou utilize a API:
export RECONKG_TOKENS="me:admin:$(openssl rand -hex 16)"
curl -H "Authorization: Bearer ${RECONKG_TOKENS##*:}" \
http://127.0.0.1:8765/api/corpus
A UI mostra o grafo de conhecimento com proveniência ao clicar, para que você possa ver por que um CVE foi associado a um host em vez de confiar em uma pontuação, e um ledger ordenado por prioridade de triagem com KEV e EPSS ponderados.
Todo comando sugerido carrega uma categoria NSE descrevendo o que executá-lo faz com o alvo. Esse vocabulário é do nmap, não inventado aqui.
| Categoria | O que o reconkg faz |
|---|---|
safe, discovery, version | composto, exibido por padrão |
intrusive, vuln, unclassified | composto, exibido quando você marca a caixa, com o aviso de autorização |
exploit, dos, fuzzer, brute | nomeado, nunca composto |
A última linha é o limite. Se existe um exploit funcional para uma pista,
o reconkg informa o módulo ou template e onde encontrá-lo. Ele não
monta isso em uma invocação com o seu alvo já incluído. As sugestões do
Metasploit param em show options — a etapa em que você lê o RHOSTS de volta e
confirma que é o host contra o qual você está autorizado.
Essa é uma diferença de uma tecla em uma máquina que você possui, e uma diferença muito maior no que a ferramenta é.
A segurança é classificada por check, nunca por ferramenta. Isso não é frescura:
os templates de CVE atuais do nuclei alcançam detecção explorando — um deles envia
um payload subprocess.run('cat /etc/passwd') através de um RCE no Langflow e
casa com root:.*:0:0:. Qualquer coisa que assuma "nuclei detecta, Metasploit
explora" está errada no primeiro template que encontra, então o nuclei é tratado como
não classificado e fica atrás do opt-in.
selfcheck imprime a taxa de acerto real
em vez de uma lisonjeira.describe() marca um corpus como desatualizado após 30 dias e nomeia qual
feed está velho.pip install -r requirements-dev.txt
python -m pytest tests/ -q # 1219 tests
python -m audit.mutation # mutation testing, 12 targets at 100%
python -m audit.scale_bench # corpus scale benchmark
docs/ contém as notas de design e o raciocínio por trás das decisões
acima. audit/AUDIT.md é o registro de achados: 47 achados ao longo de dez
rodadas adversariais, incluindo uma análise do único formato de bug que responde
por 13 deles e uma avaliação honesta do que o impediu e do que não o impediu.
MIT — consulte LICENSE.
O reconkg não distribui dados de vulnerabilidade. Os corpora são construídos na sua máquina a partir de feeds que você mesmo busca, o que mantém as licenças deles sob sua responsabilidade de cumprir; o índice do ExploitDB em particular é GPL-2.0-or-later e deliberadamente nunca é redistribuído aqui.
Tudo o que o reconkg emite é uma sugestão para um humano executar. Executar
verificações intrusive ou vuln contra um sistema que você não possui ou para o qual não tem
autorização por escrito para testar é ilegal na maioria das jurisdições.