OPEN BETA
OPEN BETA
KI ADVERSARY SIMULATION

🌑 ShadowTwin

Digitaler Zwilling der eigenen Attack Surface — kombiniert mit Monte-Carlo-Angriffssimulation und LLM-gestützten Angreifer-Personas. 90.000 Simulationsläufe quantifizieren Kompromittierungswahrscheinlichkeiten pro Asset, Pfad und Persona.

90kMonte-Carlo-Läufe
3Angreifer-Personas
EPSSCVE-Gewichtung
Dual-PDFTechnisch + Management

// Was ist ein Digital Twin?

ShadowTwin konstruiert aus dem YADS-Scan-Export einen gerichteten Angriffsgraphen. Jede Domain, IP, jeder Port und jedes CVE wird als Knoten modelliert; Kanten repräsentieren Erreichbarkeit, Exploit-Pfade und Pivot-Möglichkeiten. Auf diesem Graphen simulieren drei Angreifer-Personas mit unterschiedlichen Capabilities und Zielen 90.000 Angriffspfade — Monte-Carlo über alle Zufallsvariablen der Umgebung.

Twin-Engine-Eingaben

  • YADS Simulation-Export (/api/v1/simulation-export)
  • CVE-Liste mit EPSS-Scores (täglich aktualisiert)
  • CISA KEV — Known Exploited Vulnerabilities
  • Blast-Radius-Graph aus YADS-Network-Analyse
  • Canary-Token-Trigger-History (Erreichbarkeit)

Ausgabe-Artefakte

  • Kompromittierungswahrscheinlichkeit P(c) pro Asset
  • Top-5-Angriffspfade pro Persona
  • Expected Cost of Compromise (ECC)
  • Technischer PDF-Report (Angriffsgraph, Pfade)
  • Management-PDF (Risk-Score, Top-Maßnahmen)
  • LLM-Narrativ pro kritischem Pfad (Gemini)

// Kompromittierungswahrscheinlichkeit P(c)

Für jeden Knoten im Angriffsgraphen berechnet ShadowTwin die Kompromittierungswahrscheinlichkeit als kombinierte Funktion aus EPSS-Score, Erreichbarkeit aus dem Internet und dem Blast-Radius-Hub-Score.

P(c) = 1 − ∏(1 − EPSS(cveᵢ)) × reachability(node) × (1 + 0.3 × hub_score(node))
def compute_compromise_probability(node: TwinNode, graph: AttackGraph) -> float: """ Berechnet P(c) für einen Knoten im Angriffsgraphen. EPSS-Scores werden täglich via epss_updater.py aktualisiert. """ if not node.cves: base_prob = 0.05 # Minimales Hintergrundrisiko ohne CVEs else: # Kombination mehrerer CVEs: Gegenwahrscheinlichkeit-Produkt no_exploit_prob = 1.0 for cve in node.cves: epss = cve.epss_score or 0.01 # Fallback wenn kein EPSS kev_boost = 1.5 if cve.in_kev else 1.0 no_exploit_prob *= (1 - min(epss * kev_boost, 0.99)) base_prob = 1 - no_exploit_prob reachability = graph.compute_reachability(node) # 0.0 = intern only, 1.0 = internet-facing hub = graph.hub_score(node) # Blast-Radius Hub Score p_c = base_prob * reachability * (1 + 0.3 * hub) return min(p_c, 1.0)

// Monte-Carlo-Simulation: Personas & Win-Conditions

Drei Angreifer-Personas simulieren je 30.000 Angriffspfade (10.000 pro Win-Condition). Jede Simulation wählt zufällig Einstiegspunkte, Exploit-Erfolg (Bernoulli-Experiment mit EPSS als p) und Pivot-Entscheidungen gemäß Persona-Capability-Matrix.

PersonaCapabilityZielTypische Einstiegspunkte
opportunistNiedrig — nur bekannte Exploits, automatisiertSchneller Gain, Crypto-Mining, Credential DumpExponierte Admin-Panels, Default-Credentials, CVE-Scoring > 0.5
targeted_attackerMittel — manuelle Recon, mehrstufige ExploitsDatenexfiltration, Persistenz, Lateral MovementVPN-Gateway, Mail-Server, API-Endpunkte mit schwachen Auth-Mechanismen
nation_stateHoch — Zero-Days verfügbar, Supply-Chain-ZugriffLangfristige Persistenz, Sabotage, SpionageAlle Angriffspfade + Supply-Chain-Vektoren, Insider-Pivot möglich
Win-ConditionDefinition
data_exfiltrationAngreifer erreicht Mind. einen Knoten mit Daten-Klassifikation ≥ "confidential"
service_disruptionAngreifer kompromittiert Mind. einen kritischen Service-Knoten (SPOF)
persistenceAngreifer hält Mind. 3 Simulationsschritte lang Zugriff auf intern-erreichbaren Knoten

// War Room & API-Integration

ShadowTwin läuft als eigenständiger FastAPI-Dienst (Port 8088) und bezieht seine Daten über den YADS-Simulation-Export-Endpoint. Die War-Room-UI zeigt Echtzeit-Simulationsfortschritt, Kosten-Widget und PDF-Download-Buttons.

EigenschaftWert
Dienst-Port8088 (FastAPI)
YADS-Export-EndpointGET /api/v1/simulation-export?tenant_id=...
Monte-Carlo-Läufe90.000 (3 Personas × 3 Win-Conditions × 10.000)
EPSS-UpdateTäglich via epss_updater.py — FIRST.org EPSS CSV + CISA KEV JSON
LLM-NarrativGemini 1.5 Flash — post-hoc nach Simulation, nur für Top-3-Pfade
Report-FormatDual PDF: Technisch (Angriffsgraph, Pfad-Details) + Management (Risk-Score, Maßnahmen)
SprachenDE + EN (beide Reports gleichzeitig generierbar)
Entry-Point-TogglePOST /analytics/simulation/entry-point/toggle — markiert Domains als Simulationseinstiegspunkte