Modell / Datensatz
mrwadams/attackgen avatar
mrwadams/attackgen

AttackGen: Tabletop-Szenarien aus MITRE ATT&CK und einem LLM

AttackGen is a cybersecurity incident response testing tool that leverages the power of large language models and the comprehensive MITRE ATT&CK framework. The tool generates tailored incident response scenarios based on user-selected threat actor groups and your organisation's details.

1.242 Sterne169 ForksPythonGPL-3.0
GitHub

Auf einen Blick

Was ist das?
AttackGen erzeugt Incident-Response-Übungen aus Bedrohungsakteuren, ATLAS-Fallstudien oder einer eigenen Technikauswahl. Die Streamlit-Anwendung setzt auf LiteLLM und verlangt eine bewusste Entscheidung darüber, welche Daten das Modell sehen darf.
Für wen ist es gedacht?
Sinnvoll ist AttackGen für Teams, die Tabletop-Übungen regelmäßig brauchen und die Vorbereitungszeit dafür senken wollen, und für alle, die ATT&CK-Techniken bereits kennen. Wer generative Szenarien nicht reviewen kann oder keine API-Keys verwalten darf, sollte es nicht einführen.
Darf ich es kommerziell nutzen?
Ja, unter Bedingungen. GPL-3.0 ist eine Copyleft-Lizenz: Wenn Sie Software weitergeben, die sie enthält, müssen Sie deren Quellcode unter derselben Lizenz veröffentlichen. Wer sie nur intern betreibt, ohne sie weiterzugeben, löst diese Pflicht nicht aus.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 1 Tag.
In welcher Sprache ist es geschrieben?
Hauptsächlich Python, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Welches Problem AttackGen adressiert

Eine Tabletop-Übung von Hand zu bauen kostet Stunden. Wer sie realistisch halten will, muss Techniken kennen, sie zu einer plausiblen Angriffskette ordnen und daraus Injects, Diskussionsfragen und Erfolgskriterien formulieren. AttackGen nimmt diesen ersten Entwurf ab. Man wählt eine Bedrohungsgruppe oder eine ATLAS-Fallstudie, ergänzt Branche und Unternehmensgröße, und das Werkzeug erzeugt ein Szenario in Markdown samt ATT&CK-Navigator-Layer. Das ist kein Ersatz für Übungsleitung, sondern ein Rohtext, den ein Facilitator prüft und kürzt.

Die Zielgruppe ist eng umrissen. Das README nennt Purple-Team- und Incident-Response-Arbeit, und die Techniklisten setzen voraus, dass jemand ATT&CK-IDs lesen und einordnen kann. Wer zum ersten Mal eine Übung plant, bekommt hier ein Gerüst, aber keine Erklärung, warum eine bestimmte Technik in welcher Reihenfolge plausibel ist. Der Nutzen liegt bei wiederkehrenden Übungen, nicht beim einmaligen Workshop.

Wie die Szenarien entstehen

AttackGen ist eine Streamlit-Anwendung. Ein gemeinsames Setup in der Seitenleiste hält Provider, Modell, Framework, Branche und Unternehmensgröße, und diese Auswahl gilt für alle Szenarioseiten. Das README beschreibt drei Wege: eine Bedrohungsgruppe, eine ATLAS-Fallstudie oder eine freie Auswahl von ATT&CK- und ATLAS-Techniken. Dazu kommen Vorlagen für häufige Incident-Typen und ein spezieller Modus für Insider-Threat-Szenarien, in dem ein Frontier-Agent als Innentäter modelliert wird.

Alle Modellaufrufe laufen laut README über LiteLLM hinter einem internen Wrapper. Unterstützt werden OpenAI, Anthropic, Google AI, Mistral, Groq und jeder OpenAI-kompatible Endpunkt, also auch Ollama, LM Studio, Azure OpenAI oder OpenRouter. Das ist der praktisch wichtigste Architekturpunkt: Der Anbieter ist austauschbar, das Szenarioformat bleibt gleich.

Seit v0.16 läuft die Generierung in Phasen. Zuerst entsteht das Basisszenario, dessen Download-Schaltflächen für Markdown und Navigator-Layer sofort aktiv sind. Die optionale Purple-Team-Erzählung wird danach nachgereicht. Währenddessen zeigt die Oberfläche benannte Phasen und eine laufende Zeitangabe. Die Eingaben werden beim Klick auf Generate eingefroren, damit spätere Änderungen in der Seitenleiste nicht in ein laufendes Szenario hineinschreiben.

Installation und die Datei, die fehlen darf

Das README führt eine Installation über Python und eine Docker-Variante. Für den lokalen Betrieb sind die Schritte: Repository klonen, in das Verzeichnis wechseln, Abhängigkeiten installieren, dann die Anwendung mit dem Streamlit-Befehl starten. Die genauen Zeilen stehen im Abschnitt Installation des README; ich habe sie nicht ausgeführt und gebe sie deshalb nicht als getestete Befehlsfolge wieder.

Zwei Dinge sind aus der Struktur klar erkennbar. Erstens gehört eine .env-Datei ins Projektverzeichnis, denn das README nennt sie als Ort für API-Keys und Secrets. Zweitens erwartet der Abschnitt Data Setup eine lokale MITRE-ATT&CK-Datei, im Material sichtbar als data/enterprise-attack/enterprise-attack.json. Wer diese Datei nicht bereitstellt, bekommt keine Techniklisten und damit auch kein Szenario. Das ist der häufigste Stolperstein, weil die Anwendung selbst fehlerfrei startet und erst bei der Auswahl leer bleibt.

Optional ist die Anbindung an LangSmith. Sie ist als Debugging- und Monitoring-Weg beschrieben, kein Pflichtteil. Wer sie aktiviert, sollte wissen, dass damit Prompts und Antworten an einen weiteren Dienst gehen.

Was das Modell über die Organisation erfährt

Die Anwendung fragt Branche und Unternehmensgröße ab und schickt sie zusammen mit der Technikauswahl an den konfigurierten Anbieter. Das README formuliert das als Vorteil, weil das Szenario dadurch passe. Aus Sicht einer Sicherheitsabteilung ist es der Punkt, an dem eine Entscheidung fällig wird: Diese beiden Felder sind zwar keine personenbezogenen Daten, beschreiben aber die Angriffsfläche eines konkreten Hauses. Wer einen Cloud-Anbieter nutzt, gibt sie aus der Hand.

Der Ausweg steht im selben README. Über den OpenAI-kompatiblen Endpunkt lässt sich ein lokales Modell über Ollama oder LM Studio anbinden. Dann verlassen die Angaben die eigene Umgebung nicht. Der Preis ist Modellqualität, und dazu macht das README keine Angaben. Ob ein lokales Modell die Techniken sinnvoll verknüpft, lässt sich nur im eigenen Test klären. Das ist die wichtigste offene Frage des Projekts.

Der AI-Insider-Threat-Modus und seine Grenzen

Der ungewöhnlichste Teil ist der Modus für Insider-Threat-Szenarien. Er modelliert einen Frontier-Agenten, der innerhalb der Organisation als Innentäter agiert, und stützt sich laut README auf ein Threat Model aus dem Paper Actions Speak Louder Than Tokens. Die Szenarien werden über den Deployment-Archetyp, also die Autonomiestufe, die Threat-Kategorie, STRIDE-Threats und einen optionalen Freitext-Seed geformt.

Das ist erkennbar eine Designentscheidung für einen schmalen Anwendungsfall. Wer keine Agenten im Einsatz hat, für den ist der Modus ohne Wert, und die STRIDE-Kategorien sind ein allgemeines Rahmenwerk, kein ATT&CK-Ersatz. Interessant wird er für Teams, die genau diese Frage üben wollen, ohne einen Vorfall abzuwarten. Das README beschreibt den Aufbau, aber nicht, wie belastbar die erzeugten Szenarien sind. Wer den Modus produktiv nutzen will, muss die Ausgaben gegen das zitierte Paper prüfen, nicht gegen das Tool.

Sitzungszustand, Exporte und der Assistant

Ergebnisse bleiben laut README für die Sitzung erhalten. Jede Szenarioseite hält ihr letztes Resultat, die Eingaben, die dazu geführt haben, und die Download-Namen. Wer zur Assistant-Seite wechselt und zurückkommt, findet Szenario, Navigator-Layer und Detection-and-Response-Bericht unverändert vor. Ändert man das Formular, bleibt das alte Ergebnis stehen, ergänzt um einen Hinweis, dass die Auswahl sich geändert hat. Nur Regenerate und Clear result ersetzen oder entfernen es.

Das ist mehr als Kosmetik. Bei langen Szenarien ist der Abbruch mitten im Lauf der wahrscheinlichste Bedienfehler, und die expliziten Schaltflächen machen ihn rückgängig. Für lange Texte gibt es eine Kurzfassung mit Abschnittsindex und Sprungmarken zu Injects, Diskussionsfragen, Erfolgskriterien, Metriken, Artefakten und Rules of Engagement. Der Assistant ist als Chat über ein erzeugtes Szenario beschrieben, mit Rücksprung auf die Ursprungsseite. Die Persistenz gilt ausdrücklich nur für die Sitzung, nicht über einen Neustart hinweg.

Alternative: Szenarienbibliotheken statt Generierung

Der naheliegende Vergleich ist eine kuratierte Sammlung fertiger Tabletop-Szenarien, etwa die öffentlichen Übungspakete aus dem Umfeld von MITRE oder vergleichbare Bibliotheken. Der Unterschied liegt im Erstellungsweg. Eine Bibliothek liefert einen geprüften Text, der immer gleich bleibt. AttackGen liefert bei jedem Lauf eine neue Variante, abhängig von Modell, Auswahl und Formulierung. Für eine Übung, die jedes Jahr wiederholt wird, ist die Konstanz der Bibliothek ein Vorteil, weil Teilnehmer nicht dieselbe Geschichte in neuer Verpackung sehen.

Der zweite Unterschied ist die Prüfbarkeit. Ein Bibliotheksszenario lässt sich vorab lesen und freigeben. Ein generiertes Szenario muss nach jedem Lauf geprüft werden, und genau diese Prüfung kostet die Zeit, die das Tool einsparen soll. AttackGen lohnt sich, wenn die Prüfung schneller geht als das Schreiben. Wer ohnehin jede Zeile umformulieren muss, gewinnt nichts.

Wartung, Lizenz und was vor dem Einsatz zu klären ist

Die Release-Historie zeigt einen kurzen Takt: v0.14.0, v0.15.0 und v0.16.0 liegen jeweils rund zwei Wochen auseinander, der letzte Push datiert vom 9. September 2026. Das deutet auf aktive Arbeit hin, bedeutet aber auch, dass sich die Oberfläche zwischen Versionen bewegen kann. Die v0.16-Notizen beschreiben genau solche Umbauten: neue Seitenleiste, eingefrorene Eingaben, geänderte Selektoren. Wer die Anwendung einführt, sollte die Version pinnen und Upgrades bewusst ziehen, statt einem beweglichen main-Branch zu folgen.

Lizenziert ist das Projekt unter GPL-3.0. Wer es intern betreibt, hat damit in der Regel keine Weitergabepflicht. Wer es in ein eigenes Produkt einbettet oder als Dienst mit geändertem Code anbietet, muss die Bedingungen der GPL prüfen. Das ist keine Rechtsberatung, sondern ein Hinweis darauf, dass die Lizenzfrage vor der Integration zu klären ist, nicht danach.

Ein weiterer Kostenpunkt ist der Modellzugriff. Jede Generierung ist ein API-Aufruf, und der Purple-Team-Teil ist laut README ein zweiter. Bei häufigen Übungen summiert sich das, und die Kosten skalieren mit der Szenariolänge, nicht mit der Teilnehmerzahl. Wer das umgehen will, braucht eine lokale Inferenzumgebung, deren Qualität das README nicht bewertet. Genau dort liegt die Grenze des Projekts: Es liefert den Rahmen und die Anbindung, aber die Frage, ob das erzeugte Szenario fachlich trägt, bleibt beim Team.

Redaktionelles Fazit

Sinnvoll ist AttackGen für Teams, die Tabletop-Übungen regelmäßig brauchen und die Vorbereitungszeit dafür senken wollen, und für alle, die ATT&CK-Techniken bereits kennen. Wer generative Szenarien nicht reviewen kann oder keine API-Keys verwalten darf, sollte es nicht einführen. Vor dem ersten Lauf ist zu prüfen, ob die MITRE-Enterprise-Datei tatsächlich unter data/enterprise-attack/enterprise-attack.json liegt, ob das gewählte Modell über LiteLLM erreichbar ist und ob die Angaben zu Branche und Unternehmensgröße das Haus verlassen dürfen, denn genau diese Felder fließen in den Prompt ein.

Offizielle Quellen

  1. Issues
  2. License: GPL-3.0
  3. mrwadams/attackgen on GitHub
  4. README
  5. Releases
Community-Notizen

Community-Notizen