Vulnerability Assessment – Phase 3
Scripts: build_phase3.py + vuln_check.py (auto-generiert)
Pfad: /home/andre/Claude/Hacking/bgv_de/phase3_vuln_check/
Phase: 3 – CVE Presence Detection (passiv, kein Exploit)
Überblick
Phase 3 besteht aus zwei Schritten:
build_phase3.pyliest die Phase-2-Findings, extrahiert alle CVEs und lässt Claude zielspezifische Probe-Funktionen generieren → schreibtvuln_check.pyvuln_check.py(auto-generiert) führt die Probes aus und erstellt einen Vulnerability-Report
Der Ansatz ist rein passiv: HTTP-Anfragen auf bekannte vulnerable Endpunkte, keine Authentifizierung, keine Payload-Ausführung. Ziel ist die Feststellung ob ein verwundbarer Endpunkt erreichbar ist (Presence Detection).
build_phase3.py
Aufgabe
build_phase3.py ist der Builder – er wird einmalig pro Ziel ausgeführt und erzeugt den
zielspezifischen Scanner vuln_check.py.
Ablauf
- Phase-2-JSON einlesen (
web_recon.json) - CVE-IDs normalisieren (
CVE-YYYY-NNNNNvia Regex aus Rohtexten) - CVEs nach Produktfamilie gruppieren: citrix, ivanti, exchange, checkpoint, jsf, log4j, other
- Für jede Gruppe: Claude generiert Probe-Funktionen (passiv, HTTP-only)
- Nuclei-Template-Verfügbarkeit prüfen (
~/nuclei-templates/cves/) - Vollständiges
vuln_check.pyaus Template + generierten Funktionen zusammenbauen
Aufruf
cd /home/andre/Claude/Hacking/bgv_de/phase3_vuln_check python3 build_phase3.py \ --web-recon ../../phase2_web_recon/web_recon.json \ --domain bgv.de
Parameter
| Parameter | Beschreibung |
|---|---|
--web-recon FILE | JSON-Output von web_recon.py (Phase 2) |
--domain DOMAIN | Zieldomain (für Report-Benennung und Probe-Kontext) |
--output FILE | Ziel für generierten Scanner (Standard: vuln_check.py) |
Was Claude generiert
Für jede Produktgruppe wird ein Batch-Prompt an Claude gesendet:
- Passiver HTTP-Probe auf bekannte vulnerable Endpunkte
- Kein Auth-Versuch, kein Exploit, kein Payload
- Response-Analyse: Status-Code, Body-Strings, Header-Werte
- Return-Dict:
{„status“: „CONFIRMED“|„LIKELY“|„NOT_VULNERABLE“, „evidence“: „…“}
Beispiel Probe-Funktion (CVE-2023-3519, Citrix NetScaler):
def probe_CVE_2023_3519(host, session): url = f"https://{host}/logon/LogonPoint/tmindex.html" try: r = session.get(url, timeout=10, verify=False) if r.status_code == 200 and "Citrix" in r.text: return {"status": "CONFIRMED", "evidence": f"HTTP {r.status_code}, Citrix-Page gefunden"} except Exception as e: return {"status": "ERROR", "evidence": str(e)} return {"status": "NOT_VULNERABLE", "evidence": f"HTTP {r.status_code}"}
vuln_check.py
Aufgabe
Der auto-generierte Scanner – zielspezifisch, enthält alle Probe-Funktionen für die in Phase 2 identifizierten CVEs des Ziels.
Aufruf
python3 /home/andre/Claude/Hacking/bgv_de/phase3_vuln_check/vuln_check.py
Keine Parameter nötig – Zieldomain, Hosts und CVE-Liste sind eingebettet.
Internes Vorgehen
- Alle Probe-Funktionen über
globals()automatisch registriert - Tor-Session aufbauen (SOCKS5 auf 127.0.0.1:9050)
- Optional: Nuclei mit verfügbaren CVE-Templates ausführen
- Alle Custom-Probes parallel ausführen (ThreadPoolExecutor)
- Ergebnisse klassifizieren: CONFIRMED / LIKELY / NOT_VULNERABLE / ERROR
- Reports generieren: JSON + Maltego CSV + PDF
Ergebnisstatus
| Status | Bedeutung |
|---|---|
CONFIRMED | Verwundbarer Endpunkt antwortet mit erwartetem Fingerprint |
LIKELY | Schwaches Indiz (z.B. HTTP 403 auf bekannte CVE-URL – könnte gesichert oder anfällig sein) |
NOT_VULNERABLE | Endpunkt nicht erreichbar oder kein Fingerprint |
ERROR | Netzwerkfehler, Timeout |
Output
Reports unter /home/andre/Claude/Hacking/bgv_de/phase3_vuln_check/reports/<domain>_<ts>/:
| Datei | Beschreibung |
|---|---|
vuln_check.json | Vollständige Probe-Ergebnisse, wird von Phase 4 eingelesen |
maltego_vuln.csv | Maltego-Import: CVE-Nodes + Host-Nodes mit Verwundbarkeits-Labels |
vuln_check.pdf | PDF-Report: Executive Summary, Findings-Tabelle, Patch-Empfehlungen |
Maltego-Entities
| Entity-Typ | Inhalt |
|---|---|
maltego.DNSName | Verwundbare Hosts (Label: [VULN] hostname) |
maltego.Phrase | CVE-Nodes (Label: CVE-YYYY-NNNNN – Beschreibung) |
maltego.Phrase | Status-Nodes: 🔴 CONFIRMED / 🟡 LIKELY |
maltego.URL | Verwundbare Endpunkte (direkte URL) |
Ergebnisse bgv.de (Beispiel)
Aus dem bgv.de-Scan (Phase 3, März 2026):
| CVE | Host | Status | CVSS |
|---|---|---|---|
| CVE-2023-3519 | auth.bgv.de | CONFIRMED | 9.8 |
| CVE-2023-3519 | citrix.bgv.de | CONFIRMED | 9.8 |
| CVE-2023-3519 | icisplus-mobile.bgv.de | CONFIRMED | 9.8 |
| CVE-2023-3519 | login.bgv.de | CONFIRMED | 9.8 |
| CVE-2023-3519 | vpn.bgv.de | CONFIRMED | 9.8 |
| CVE-2022-27518 | icisplus-mobile.bgv.de | LIKELY | 9.8 |
| CVE-2024-29943 | vpn-gw1.bgv.de | LIKELY | 9.8 |
Start aus Claude heraus
Build + Run in einem Schritt
Führe Phase 3 (Vulnerability Assessment) für bgv.de durch – lies die Phase-2-Ergebnisse, generiere den Scanner und führe ihn aus.
Claude erledigt dann:
build_phase3.pyausführen →vuln_check.pyerzeugenvuln_check.pyausführen → Reports generieren- Ergebnisse zusammenfassen
Analyse-Fragen nach dem Scan
- „Welche CONFIRMED-Findings haben CVSS ≥ 9.0? Wie hoch ist das Risiko?“
- „CVE-2023-3519 ist auf 5 Hosts confirmed – welche Angriffsmöglichkeiten gibt es?“
- „Sind die LIKELY-Findings wirklich anfällig oder nur möglicherweise gesichert?“
- „Schreibe eine Executive Summary für den Vorstand.“
- „Welche Patches müssen sofort eingespielt werden?“
Zusammenspiel mit anderen Phasen
Phase 2 (web_recon.py) → web_recon.json (CVEs, KRITISCH-Hosts)
↓
Phase 3 (build_phase3.py) → vuln_check.py (zielspezifischer CVE-Scanner)
(vuln_check.py) → vuln_check.json (CONFIRMED/LIKELY-Findings)
↓
Phase 4 (build_phase4.py) → Exploit-Dokumentation, Angriffsketten, MSF-Configs
Hinweise
vuln_check.pyist zielspezifisch – für ein neues Ziel immerbuild_phase3.pyneu ausführen- Die generierten Probe-Funktionen sind passiv – kein Schaden am Zielsystem
- Nuclei-Templates werden genutzt wenn unter
~/nuclei-templates/cves/vorhanden - HTTP-Probes laufen über Tor (Exit-IP wechselt automatisch)
- CONFIRMED bedeutet: Endpunkt vorhanden + Fingerprint positiv – kein Beweis dass Exploit funktioniert
