
Triage des vulnérabilités avec provenance. Résout les CVE à partir de corpus construits localement (NVD/KEV/EPSS, ExploitDB, nmap script.db) et émet des commandes de vérification classées selon l'effet de leur exécution sur la cible.
Un outil de triage des vulnérabilités. Il prend ce qu'un scan a déjà trouvé, détermine quels CVE s'appliquent plausiblement, vous indique son niveau de confiance et pourquoi, et vous fournit les commandes pour vérifier par vous-même.
Il ne scanne rien et n'exploite rien.
git clone https://github.com/xGhst0/reconkg && cd reconkg && pip install -e . --break-system-packages && python -m reconkg.selfcheck
Cette dernière étape indique ce qu'elle peut et ne peut pas voir : si le script.db de nmap a été trouvé, quels corpus sont configurés, et combien d'empreintes réalistes produisent réellement une piste. Exécutez-la en premier. Par défaut, la réponse est « neuf CVE écrites à la main », et selfcheck le dit plutôt que de vous laisser supposer le contraire.
Les neuf entrées intégrées sont un jeu de démonstration. Pour quoi que ce soit de réel :
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
Sans la clé API, NVD limite à 5 requêtes par 30 secondes et l'extraction
complète prend environ quatre heures au lieu de vingt-cinq minutes. Elle effectue des points de contrôle,
ainsi une extraction interrompue reprend. --since extrait uniquement ce qui a changé.
Si une variable de corpus est définie et que le fichier ne peut pas être ouvert, reconkg refuse de démarrer. Servir silencieusement neuf entrées alors que vous en avez demandé 300 000 signifierait un scan qui ne trouve rien et qui semble avoir fonctionné.
python -m reconkg.app # serves http://127.0.0.1:8765/ui
python -m reconkg.console # REPL
app n'écoute que sur l'interface loopback, sans option pour changer cela. Ce processus conserve vos résultats de scan et émet des commandes vers les hôtes que vous testez ; un tunnel SSH est un faible prix à payer comparé au fait de rendre cela accessible depuis le reste du réseau. --port le déplace, RECONKG_PORT définit une valeur par défaut.
Authentification. Chaque route exige Authorization: Bearer <token>, issu de RECONKG_TOKENS sous la forme name:role:token (rôles : viewer, scanner, operator, admin ; jetons d'au moins 16 caractères). S'il n'est pas défini, app en génère un pour ce processus uniquement et l'affiche au démarrage — non écrit sur le disque, différent à chaque redémarrage.
Un navigateur ne peut pas attacher d'en-tête à une simple navigation, donc ouvrir /ui directement renverra un 401. Utilisez une extension qui injecte des en-têtes, ou pilotez l'API :
export RECONKG_TOKENS="me:admin:$(openssl rand -hex 16)"
curl -H "Authorization: Bearer ${RECONKG_TOKENS##*:}" \
http://127.0.0.1:8765/api/corpus
L'interface affiche le graphe de connaissances avec la provenance au clic, ce qui vous permet de voir pourquoi un CVE a été rattaché à un hôte plutôt que de faire confiance à un score, ainsi qu'un registre ordonné par priorité de triage avec KEV et EPSS pris en compte.
Chaque commande suggérée porte une catégorie NSE décrivant ce que son exécution fait à la cible. Ce vocabulaire est celui de nmap, pas inventé ici.
| Catégorie | Ce que fait reconkg |
|---|---|
safe, discovery, version | composée, affichée par défaut |
intrusive, vuln, unclassified | composée, affichée lorsque vous cochez la case, avec l'avertissement d'autorisation |
exploit, dos, fuzzer, brute | nommée, jamais composée |
La dernière ligne est la limite. Si un exploit fonctionnel existe pour une piste,
reconkg vous indique le module ou le template et où le trouver. Il ne l'assemble pas
en une invocation avec votre cible déjà intégrée. Les suggestions Metasploit s'arrêtent à show options — l'étape où vous relisez RHOSTS et
confirmez qu'il s'agit bien de l'hôte contre lequel vous êtes autorisé.
C'est une frappe de différence sur une machine que vous possédez, et une différence bien plus grande dans ce qu'est l'outil.
La sécurité est classifiée par vérification, jamais par outil. Ce n'est pas de la minutie :
les templates CVE actuels de nuclei réalisent la détection en exploitant — l'un envoie
une charge utile subprocess.run('cat /etc/passwd') via une RCE Langflow et
correspond à root:.*:0:0:. Tout ce qui suppose « nuclei détecte, Metasploit
exploite » se trompe dès le premier template rencontré, c'est pourquoi nuclei est traité comme
non classifié et se trouve derrière l'option à activer.
selfcheck affiche le taux de réussite réel
plutôt qu'un taux flatteur.describe() marque un corpus comme obsolète au-delà de 30 jours et nomme quel
flux est ancien.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/ contient les notes de conception et le raisonnement derrière les décisions
ci-dessus. audit/AUDIT.md est le registre des constats : 47 constats répartis sur dix
rounds adversariaux, incluant une analyse de la forme de bug unique qui en explique
13 et une évaluation honnête de ce qui l'a et ne l'a pas empêché.
MIT — voir LICENSE.
reconkg ne fournit aucune donnée de vulnérabilité. Les corpus sont construits sur votre machine à partir de flux que vous récupérez vous-même, ce qui fait que leurs licences restent les vôtres à respecter ; l'index d'ExploitDB en particulier est sous GPL-2.0-or-later et n'est délibérément jamais redistribué ici.
Tout ce que reconkg émet est une suggestion destinée à être exécutée par un humain. Exécuter
des vérifications intrusive ou vuln contre un système que vous ne possédez pas ou pour lequel vous n'avez pas
d'autorisation écrite de tester est illégal dans la plupart des juridictions.