Modèle / jeu de données
mrwadams/attackgen avatar
mrwadams/attackgen

AttackGen : générer des exercices de réponse à incident à partir de groupes APT réels

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 étoiles169 forksPythonGPL-3.0
GitHub

En bref

De quoi s’agit-il ?
AttackGen transforme une sélection de groupes de menaces MITRE ATT&CK ou de cas d'étude ATLAS en scénarios de tabletop rédigés par un LLM. L'outil vise les équipes purple team et les responsables de crise qui veulent des exercices ancrés dans des techniques documentées, pas des histoires inventées de toutes pièces.
À qui s’adresse-t-il ?
AttackGen convient aux équipes qui préparent déjà des exercices de tabletop et veulent réduire le temps de rédaction en partant de techniques ATT&CK documentées plutôt que d'une page blanche. Il ne convient pas à celles qui cherchent une simulation technique, un émulateur d'adversaire ou un outil qui s'exécute sans clé API externe.
Puis-je l’utiliser commercialement ?
Oui, sous conditions. GPL-3.0 est une licence copyleft : si vous distribuez un logiciel qui l’inclut, vous devez publier le code source de ce logiciel sous la même licence. Un usage interne, sans distribution, ne déclenche pas cette obligation.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 1 jour.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le problème : écrire un scénario crédible sans y passer une journée

Préparer un exercice de réponse à incident demande de choisir un adversaire plausible, de lister ses techniques, de les traduire en injects jouables et de calibrer le tout pour une organisation donnée. La partie rédactionnelle est longue, et elle est souvent refaite à chaque session. AttackGen prend cette matière première ailleurs : l'utilisateur sélectionne un groupe de menaces du framework MITRE ATT&CK, ou un cas d'étude ATLAS pour les systèmes d'IA, et le modèle de langage produit un scénario adapté à la taille et au secteur de l'organisation. Le README présente l'outil comme un moyen de générer des scénarios uniques à partir de ces sélections, avec la liste des techniques employées par le groupe choisi affichée en regard. Le public visé est donc précis : équipes purple team, responsables de continuité, formateurs internes qui animent des tabletop et connaissent déjà la nomenclature ATT&CK. Quelqu'un qui ne sait pas ce qu'est une technique T1059 n'aura pas grand-chose à faire de l'interface.

Sous le capot : ATT&CK comme socle, LiteLLM comme unique point de sortie

L'architecture décrite dans le README tient en deux blocs. D'un côté, les données : les frameworks MITRE ATT&CK Enterprise, ICS et ATLAS fournissent la liste des groupes et des techniques, et l'étape Data Setup du dépôt sert à les mettre en place avant le premier lancement. De l'autre, la couche de génération : tous les fournisseurs de modèles passent par LiteLLM derrière un wrapper interne unique. Le README liste OpenAI, Anthropic, Google AI, Mistral, Groq, ainsi que tout endpoint compatible OpenAI, ce qui couvre Ollama, LM Studio, Azure OpenAI ou OpenRouter. La conséquence pratique est intéressante : changer de modèle se limite, selon le README, à une modification d'une ligne. C'est aussi la limite de l'abstraction, car LiteLLM normalise les appels mais pas la qualité des sorties. Un petit modèle local produira un scénario syntaxiquement valide et potentiellement creux. Le mécanisme de génération lui-même a changé avec la v0.16 : la génération se fait désormais en phases, le scénario de base s'affiche en premier avec ses boutons de téléchargement actifs, et le récit purple team arrive ensuite en streaming. Les entrées sont figées au moment du clic sur Generate, ce qui évite qu'une modification de la barre latérale en cours de route ne réécrive à moitié le scénario en production. Les notes de version annoncent aussi des phases nommées et un compteur de temps écoulé, pour rendre visible l'endroit où un long appel en est arrivé.

Installation et configuration : ce que le dépôt demande réellement

Le README décrit une installation Python classique, puis un fichier .env pour les clés d'API et les secrets, présenté comme le mécanisme de gestion des identifiants. Une section LangSmith Setup existe pour ceux qui veulent tracer les appels de modèle, et elle est marquée comme optionnelle. Une image Docker est publiée, ce qui évite de reproduire l'environnement Python à la main. Le lancement se fait via l'interface Streamlit, et le README consacre une section à un serveur MCP ainsi qu'à des Agent Skills, deux points d'entrée que je ne peux pas détailler ici faute de contenu fourni. La v0.16 apporte une barre latérale Setup partagée par toutes les pages de scénario, qui regroupe fournisseur, modèle, framework, secteur et taille d'entreprise. Les sélections non secrètes persistent entre les pages et sont recopiées dans l'URL, tandis que les clés d'API en sont délibérément exclues. Le bouton Generate reste désactivé tant qu'un champ obligatoire manque, et un résumé d'une ligne rappelle framework, profil d'organisation, sélection et modificateurs avant le lancement. Ce dernier point compte pour les environnements où plusieurs personnes partagent un poste : le résumé sert de confirmation avant de consommer des tokens.

Le mode AI Insider Threat et ce qu'il suppose

La fonction la plus singulière du projet est la génération de scénarios dits AI Insider Threat. Le README les décrit comme des exercices où un agent d'IA de frontière déployé dans l'organisation se comporte en menace interne, à partir d'un modèle de menace exposé dans un article intitulé Actions Speak Louder Than Tokens. Les scénarios sont paramétrés par l'archétype de déploiement de l'agent, c'est-à-dire son niveau d'autonomie, par une catégorie de menace, par des menaces STRIDE et par une amorce de scénario en texte libre. C'est un choix éditorial fort : l'outil ne se contente pas de rejouer ATT&CK, il ajoute une couche propre aux systèmes d'IA via ATLAS. Cela dit, la qualité de ces scénarios dépend entièrement du modèle choisi et de la façon dont l'opérateur remplit l'amorce libre. Rien dans le matériel fourni ne permet de dire si les scénarios produits sont cohérents avec un déploiement d'agent réel, ni comment l'outil vérifie cette cohérence. À traiter comme une piste de travail à valider en interne, pas comme un référentiel établi.

Limites et cas où l'outil ne sert à rien

AttackGen produit de la prose. Il ne simule aucun trafic, n'exécute aucune technique et ne valide aucune détection. Une équipe qui cherche à mesurer sa couverture réelle doit se tourner vers un émulateur d'adversaire ou une campagne de tests offensifs, pas vers un générateur de texte. Deuxième limite : l'outil dépend d'un fournisseur de modèle externe par défaut, avec les questions de confidentialité que cela pose dès qu'on décrit la taille et le secteur de son organisation dans le formulaire. Le README mentionne un endpoint compatible OpenAI, donc un modèle local peut limiter cette exposition, mais rien n'indique que le prompt soit conçu pour éviter les fuites d'information sensible. Troisième limite, plus prosaïque : la sortie reste un document Markdown qu'un facilitateur doit relire, découper et chronométrer. La v0.16 ajoute un résumé compact, une navigation par sections et des raccourcis vers les injects, les critères de succès, les métriques, les artefacts et les règles d'engagement, ce qui aide à parcourir un long scénario, mais ne remplace pas la relecture. Enfin, l'outil est mono-utilisateur dans son usage courant : la persistance des résultats est décrite comme valable pour la session, et seule une action explicite de Regenerate ou Clear result remplace ou supprime un résultat.

Face à un générateur de scénarios maison ou à un LLM brut

L'alternative immédiate consiste à écrire ses propres prompts et à appeler un modèle directement. La différence n'est pas la qualité du texte, c'est la structure des entrées. Un prompt maison part d'une description libre et laisse le modèle inventer les techniques ; AttackGen contraint la génération à un groupe ATT&CK ou à un cas d'étude ATLAS sélectionné, affiche la liste des techniques associées et permet de composer un scénario à partir d'une sélection manuelle de techniques. Cette contrainte est ce qui rend la sortie vérifiable : on peut comparer le scénario produit à la liste de techniques du groupe. Un pipeline maison peut faire la même chose, mais il faut alors maintenir soi-même la correspondance entre groupes, techniques et frameworks, y compris la séparation Enterprise, ICS et ATLAS. AttackGen vend précisément ce travail de plomberie. Pour une équipe qui n'a pas de données ATT&CK à jour dans son propre outillage, c'est un gain net. Pour une équipe qui a déjà cette base et un pipeline de génération, l'intérêt se réduit à l'interface et aux exports.

Maintenance, licence et coût de mise à jour

Le rythme de publication est soutenu : trois versions entre juillet et août 2026 selon les informations de release fournies, avec une v0.16 qui modifie le déroulé de génération et l'organisation de l'interface. Ce rythme a un coût : les notes de version de la v0.16 décrivent des changements de comportement sur la persistance des résultats et sur l'emplacement des réglages, donc toute documentation interne ou capture d'écran devra suivre. Les données ATT&CK et ATLAS évoluent de leur côté, et l'étape Data Setup devra être rejouée à chaque mise à jour des frameworks. Le projet est sous GPL-3.0, ce qui implique que toute redistribution modifiée doit rester sous la même licence et que le code source correspondant doit être fourni. Pour un usage interne en entreprise, cela ne pose pas de difficulté particulière. Pour une intégration dans un produit propriétaire distribué, la question se pose et mérite un avis juridique, que je ne fournis pas ici. Le README mentionne une section Contributing, sans que le contenu en soit détaillé dans le matériel fourni.

Conclusion éditoriale

AttackGen convient aux équipes qui préparent déjà des exercices de tabletop et veulent réduire le temps de rédaction en partant de techniques ATT&CK documentées plutôt que d'une page blanche. Il ne convient pas à celles qui cherchent une simulation technique, un émulateur d'adversaire ou un outil qui s'exécute sans clé API externe. Avant d'adopter, vérifiez trois points concrets dans le dépôt : la version du fichier de données ATT&CK attendue par l'étape Data Setup, le fournisseur de modèle que vous allez déclarer dans le .env, et le fait que la sortie Markdown devra être relue par un facilitateur avant d'être jouée en salle.

Sources officielles

  1. Issues
  2. License: GPL-3.0
  3. mrwadams/attackgen on GitHub
  4. README
  5. Releases
Notes de la communauté

Notes de la communauté