
Triaje de vulnerabilidades con procedencia. Resuelve CVEs a partir de corpus construidos localmente (NVD/KEV/EPSS, ExploitDB, nmap script.db) y emite comandos de verificación clasificados según lo que su ejecución hace sobre el objetivo.
Una herramienta de triaje de vulnerabilidades. Toma lo que un escaneo ya encontró, determina qué CVE son plausibles de aplicar, te indica cuánta confianza tiene y por qué, y te da los comandos para verificarlo por tu cuenta.
No escanea nada, y no explota nada.
git clone https://github.com/xGhst0/reconkg && cd reconkg && pip install -e . --break-system-packages && python -m reconkg.selfcheck
Ese último paso informa lo que puede y no puede ver: si se encontró el script.db de nmap, qué corpus están configurados y cuántas huellas realistas producen realmente una pista. Ejecútalo primero. De fábrica, la respuesta es "nueve CVE escritos a mano", y selfcheck lo dice en lugar de dejarte suponer lo contrario.
Las nueve entradas integradas son un conjunto de datos de demostración. Para cualquier cosa 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
Sin la clave de API, NVD limita a 5 solicitudes cada 30 segundos y la
extracción completa tarda unas cuatro horas en lugar de veinticinco minutos. Guarda puntos de control,
por lo que una extracción interrumpida se reanuda. --since extrae solo lo que cambió.
Si se establece una variable de corpus y el archivo no se puede abrir, reconkg se niega a iniciarse. Servir silenciosamente nueve entradas cuando solicitaste 300.000 significaría un escaneo que no encuentra nada y parece haber funcionado.
python -m reconkg.app # serves http://127.0.0.1:8765/ui
python -m reconkg.console # REPL
app se enlaza solo a loopback, sin ninguna opción para cambiarlo. Este proceso contiene tus resultados de escaneo y emite comandos dirigidos a los hosts que estás probando; un túnel SSH es un pequeño precio a pagar frente a tener eso accesible desde el resto de la red. --port lo mueve, RECONKG_PORT establece un valor predeterminado.
Autenticación. Cada ruta requiere Authorization: Bearer <token>, proveniente de RECONKG_TOKENS con el formato name:role:token (roles: viewer, scanner, operator, admin; tokens de al menos 16 caracteres). Si no está establecido, app genera uno solo para ese proceso y lo imprime al iniciar — no se escribe en disco, es diferente en cada reinicio.
Un navegador no puede adjuntar una cabecera a una navegación simple, por lo que abrir /ui directamente devolverá 401. Usa una extensión que inyecte cabeceras, o maneja la API:
export RECONKG_TOKENS="me:admin:$(openssl rand -hex 16)"
curl -H "Authorization: Bearer ${RECONKG_TOKENS##*:}" \
http://127.0.0.1:8765/api/corpus
La interfaz muestra el grafo de conocimiento con la procedencia al hacer clic, de modo que puedes ver por qué se asoció un CVE a un host en lugar de confiar en una puntuación, y un registro ordenado por prioridad de triaje con KEV y EPSS ponderados.
Cada comando sugerido lleva una categoría NSE que describe qué le hace al objetivo al ejecutarlo. Ese vocabulario es de nmap, no inventado aquí.
| Categoría | Qué hace reconkg |
|---|---|
safe, discovery, version | compuesto, mostrado por defecto |
intrusive, vuln, unclassified | compuesto, mostrado cuando marcas la casilla, con la advertencia de autorización |
exploit, dos, fuzzer, brute | nombrado, nunca compuesto |
La última fila es el límite. Si existe un exploit funcional para una pista,
reconkg te indica el módulo o la plantilla y dónde encontrarlo. No lo
ensambla en una invocación con tu objetivo ya incluido. Las sugerencias de
Metasploit se detienen en show options — el paso donde relees RHOSTS y
confirmas que es el host contra el que estás autorizado.
Esa es una diferencia de una pulsación de tecla en una máquina que posees, y una diferencia mucho mayor en lo que es la herramienta.
La seguridad se clasifica por comprobación, nunca por herramienta. Eso no es un capricho:
las plantillas CVE actuales de nuclei logran la detección explotando — una publica
una carga útil subprocess.run('cat /etc/passwd') a través de un RCE de Langflow y
coincide con root:.*:0:0:. Cualquier cosa que asuma "nuclei detecta, Metasploit
explota" se equivoca en la primera plantilla que encuentra, así que nuclei se trata como
no clasificado y queda detrás de la opción de activación.
selfcheck imprime la tasa de aciertos real
en lugar de una halagadora.describe() marca un corpus como desactualizado pasado los 30 días y nombra qué
fuente es antigua.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/ contiene las notas de diseño y el razonamiento detrás de las decisiones
anteriores. audit/AUDIT.md es el registro de hallazgos: 47 hallazgos a lo largo de diez
rondas adversariales, incluido un análisis de la única forma de bug que explica
13 de ellos y una evaluación honesta de lo que lo ha impedido y lo que no.
MIT — véase LICENSE.
reconkg no incluye datos de vulnerabilidades. Los corpus se construyen en tu máquina a partir de feeds que tú mismo obtienes, lo que hace que sus licencias sean tuyas de respetar; el índice de ExploitDB en particular es GPL-2.0-or-later y deliberadamente nunca se redistribuye aquí.
Todo lo que reconkg emite es una sugerencia para que la ejecute un humano. Ejecutar
comprobaciones intrusive o vuln contra un sistema que no posees o para el que no tienes
autorización por escrito para probar es ilegal en la mayoría de jurisdicciones.