
Schwachstellen-Triage mit Provenienz. Löst CVEs aus lokal aufgebauten Korpora (NVD/KEV/EPSS, ExploitDB, nmap script.db) auf und gibt Verifizierungsbefehle aus, klassifiziert danach, was ihre Ausführung mit dem Zielsystem bewirkt.
Ein Tool zur Schwachstellen-Triage. Es nimmt, was ein Scan bereits gefunden hat, ermittelt, welche CVEs plausibel zutreffen, teilt mit, wie sicher es sich dabei ist und warum, und liefert die Befehle, um selbst nachzuprüfen.
Es scannt nichts und es exploitet nichts.
git clone https://github.com/xGhst0/reconkg && cd reconkg && pip install -e . --break-system-packages && python -m reconkg.selfcheck
Dieser letzte Schritt berichtet, was er sehen kann und was nicht: ob nmaps script.db gefunden wurde, welche Korpora konfiguriert sind und wie viele realistische Fingerprints tatsächlich zu einem Hinweis führen. Führen Sie ihn zuerst aus. Out of the box lautet die Antwort „neun handgeschriebene CVEs“, und selfcheck sagt das auch, statt Sie etwas anderes annehmen zu lassen.
Die neun eingebauten Einträge sind eine Demonstrations-Fixture. Für alles, was echt ist:
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
Ohne den API-Schlüssel drosselt NVD auf 5 Anfragen pro 30 Sekunden und der vollständige
Abruf dauert etwa vier Stunden statt fünfundzwanzig Minuten. Er setzt Checkpoints,
sodass ein unterbrochener Abruf fortgesetzt wird. --since ruft nur das ab, was sich geändert hat.
Wenn eine Corpus-Variable gesetzt ist und die Datei nicht geöffnet werden kann, weigert sich reconkg zu starten. Still neun Einträge zu liefern, wenn Sie 300.000 angefordert haben, würde bedeuten, dass ein Scan nichts findet und aussieht, als hätte er funktioniert.
python -m reconkg.app # serves http://127.0.0.1:8765/ui
python -m reconkg.console # REPL
app bindet nur an Loopback, ohne Flag, um dies zu ändern. Dieser Prozess hält deine Scan-Ergebnisse und gibt Befehle aus, die auf Hosts abzielen, die du testest; ein SSH-Tunnel ist ein kleiner Preis dafür, dass dies nicht aus dem restlichen Netzwerk erreichbar ist. --port verschiebt ihn, RECONKG_PORT legt einen Standard fest.
Authentifizierung. Jede Route benötigt Authorization: Bearer <token>, aus RECONKG_TOKENS im Format name:role:token (Rollen: viewer, scanner, operator, admin; Tokens mit mindestens 16 Zeichen). Wenn es nicht gesetzt ist, generiert app eines nur für diesen Prozess und gibt es beim Start aus — nicht auf die Festplatte geschrieben, bei jedem Neustart anders.
Ein Browser kann keinen Header an eine einfache Navigation anhängen, daher führt das direkte Öffnen von /ui zu einem 401. Verwende eine Header-injizierende Erweiterung oder steuere die API an:
export RECONKG_TOKENS="me:admin:$(openssl rand -hex 16)"
curl -H "Authorization: Bearer ${RECONKG_TOKENS##*:}" \
http://127.0.0.1:8765/api/corpus
Die UI zeigt den Knowledge Graph mit Provenienz per Klick, sodass du siehst, warum eine CVE einem Host zugeordnet wurde, statt einer Bewertung zu vertrauen, sowie ein Ledger, geordnet nach Triage-Priorität mit berücksichtigten KEV und EPSS.
Jeder vorgeschlagene Befehl trägt eine NSE- Kategorie, die beschreibt, was seine Ausführung am Ziel bewirkt. Dieses Vokabular stammt von nmap, es ist nicht hier erfunden.
| Kategorie | Was reconkg tut |
|---|---|
safe, discovery, version | zusammengesetzt, standardmäßig angezeigt |
intrusive, vuln, unclassified | zusammengesetzt, angezeigt wenn du das Kästchen aktivierst, mit der Autorisierungswarnung |
exploit, dos, fuzzer, brute | benannt, niemals zusammengesetzt |
Die letzte Zeile ist die Grenze. Wenn ein funktionierender Exploit für einen
Lead existiert, nennt reconkg das Modul oder Template und wo du es findest. Es
setzt das nicht zu einem Aufruf mit deinem bereits eingetragenen Ziel zusammen.
Metasploit-Vorschläge enden bei show options — dem Schritt, an dem du RHOSTS
zurückliest und bestätigst, dass es der Host ist, gegen den du autorisiert bist.
Das ist ein Tastendruck Unterschied auf einer Box, die dir gehört, und ein deutlich größerer Unterschied darin, was das Tool ist.
Sicherheit wird pro Check klassifiziert, niemals pro Tool. Das ist keine
Pedanterie: aktuelle nuclei-CVE-Templates erreichen Erkennung durch
Ausnutzung — eines sendet eine subprocess.run('cat /etc/passwd')-Payload
durch eine Langflow-RCE und matcht auf root:.*:0:0:. Alles, was annimmt
„nuclei erkennt, Metasploit exploitiert", liegt beim ersten Template falsch,
auf das es trifft, daher wird nuclei als unclassified behandelt und liegt
hinter dem Opt-in.
selfcheck gibt die
echte Trefferquote aus statt einer schmeichelhaften.describe() markiert
einen Korpus als veraltet, wenn er älter als 30 Tage ist, und nennt, welcher
Feed alt ist.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/ enthält die Designnotizen und die Begründung hinter den oben
getroffenen Entscheidungen. audit/AUDIT.md ist das Fundprotokoll: 47 Funde
über zehn adversariale Runden, einschließlich einer Analyse der einen
Fehlerform, die für 13 davon verantwortlich ist, und einer ehrlichen
Einschätzung dessen, was sie verhindert hat und was nicht.
MIT — siehe LICENSE.
reconkg liefert keine Schwachstellendaten mit. Die Korpora werden auf deiner Maschine aus Feeds aufgebaut, die du selbst abrufst, wodurch ihre Lizenzen deine bleiben, die du einhalten musst; insbesondere der Index von ExploitDB steht unter GPL-2.0-or-later und wird hier bewusst niemals weiterverbreitet.
Alles, was reconkg ausgibt, ist ein Vorschlag für einen Menschen, der es
ausführt. intrusive- oder vuln-Prüfungen gegen ein System auszuführen, das
dir nicht gehört oder für das du keine schriftliche Testgenehmigung hast, ist
in den meisten Rechtsordnungen illegal.