
"Des incidents de sécurité en boîte !" Un outil modulaire, piloté par menus, multiplateforme, pour construire des événements de sécurité personnalisés, différés et distribués. Créez facilement des chaînes d'événements personnalisées pour des exercices d'équipe Bleue & Rouge et le mappage de capteurs/alertes. Les équipes rouges peuvent créer des incidents leurres, des distractions et des appâts pour soutenir et étendre leurs opérations. Construisez des séquences d'événements ("récits") pour simuler des scénarios réalistes et générer les artefacts réseau et système de fichiers correspondants.
DumpsterFire Toolset - "Des incidents de sécurité dans une boîte !"
(Mise à jour 27/05/2020 : Oui, je vais migrer tous mes projets Github vers Python3 au cours de l'été 2020.)
Le DumpsterFire Toolset est un outil modulaire, piloté par menu et multi-plateforme pour construire des événements de sécurité reproductibles, différés dans le temps et distribués. Créez facilement des chaînes d'événements personnalisées pour les exercices d'équipe bleue et le mapping des capteurs/alertes. Les équipes rouges peuvent créer des incidents leurres, des distractions et des appâts pour soutenir et dimensionner leurs opérations. Transformez des exercices de table en événements de tir réel contrôlés. Construisez des séquences d'événements (« narratives ») pour simuler des scénarios réalistes et générer les artefacts réseau et système de fichiers correspondants.
L'outil est conçu pour être extensible dynamiquement, vous permettant de créer vos propres Feux (modules d'événements) à ajouter à la collection de Feux incluse dans l'outil. Il vous suffit d'écrire votre propre module Fire et de le placer dans le répertoire FireModules. Le DumpsterFire Toolset détectera automatiquement vos Feux personnalisés au démarrage et les rendra disponibles.
Joe Gervais (TryCatchHCF)
Les équipes rouges et les équipes bleues sont généralement surchargées. Ce qui manque, c'est un moyen de dimensionner les capacités de chaque équipe, en offrant une activité d'équipe rouge plus efficace et des exercices d'équipe bleue / équipe violette plus réalistes (et utiles). L'automatisation à la rescousse ! Le DumpsterFire Toolset est une solution multi-plateforme pilotée par menu qui vous permet de créer facilement des incidents de sécurité personnalisés en combinant des événements modulaires et chaînés en un récit cohérent. Ces collections d'événements (DumpsterFires) peuvent ensuite être exécutées sous forme de processus automatisés différés dans le temps. (Elles peuvent également être déclenchées immédiatement, bien sûr.)
Le résultat ? Pendant que vous êtes en réunion ou en train de profiter de la vie, votre DumpsterFire attend son déclencheur date-heure pour s'activer. Lors d'une mission d'équipe rouge, pendant que vous exploitez ce service exposé sur un serveur B2B oublié, vos DumpsterFires clonés et synchronisés dans le temps illuminent le SIEM de l'organisation cible sur un sous-réseau éloigné, distrayant leur équipe de réponse. Les équipes bleues peuvent transformer des exercices de table en événements de tir réel, avec des chaînes d'événements DumpsterFire contrôlées et pré-approuvées pour déclencher des capteurs et des alertes, et former leurs analystes en utilisant leur environnement opérationnel réel. Les opérations d'équipe violette peuvent désormais exécuter des chaînes d'événements méthodiques et reproductibles pour cartographier systématiquement leur posture de capteurs et d'alertes. Vous pouvez générer des scénarios inédits pour tester et former vos équipes, en anticipant le paysage des menaces pour être prêt aux contingences de sécurité.
Vous êtes-vous déjà demandé comment votre équipe bleue réagirait à une activité de bot Mirai sur votre réseau interne ? Maintenant, vous pouvez le savoir ! (Ne vous inquiétez pas, le module Fire du bot Mirai ne pivote pas, mais il utilise les mêmes noms d'utilisateur et mots de passe pour forcer en brut les sessions Telnet sur le réseau cible.)
Vous n'avez pas d'équipe rouge mais vous souhaiteriez un moyen simple d'exécuter des exercices contrôlés, reproductibles et personnalisés contre toutes vos équipes de SOC ? Fait !
Vous souhaiteriez pouvoir soutenir une mission d'équipe rouge contre une équipe distante à 7 fuseaux horaires, sans vous réveiller à 3h du matin ? Appuyez sur le bouton snooze !
Vous avez toujours voulu rickroller simultanément tous les systèmes de vos adversaires lors de votre exercice annuel de cyber-guerre ? « Never gonna let you down! »
Voir des exemples de DumpsterFires ci-dessous. Et bien sûr la section Shenanigans.
Voir mes diapositives CactusCon 2017 (incluses dans le projet). Les diapositives sont conçues pour être autonomes, fournissant contexte, approches, cas d'utilisation spécifiques, etc. Elles mettront tout en contexte et ne vous endormiront pas. À moins qu'elles ne vous endorment, auquel cas vous aviez probablement besoin de repos de toute façon, donc nous y gagnons tous.
DumpsterFire crée un journal d'événements horodaté pour que les équipes rouges et bleues puissent coordonner et suivre les événements, en les corrélant à ce qui a été détecté (ou non) par vos capteurs, aux alertes qui se sont déclenchées ou non, etc. Il permet également aux équipes de confirmer quels événements faisaient partie de votre opération / exercice, afin que tout le monde reste hors de danger. Tout le suivi des dates-heures est effectué en UTC, afin que vos opérations mondiales puissent être facilement corrélées sans se soucier des conversions entre fuseaux horaires et lignes de changement de date.
Les journaux d'événements horodatés auto-générés fournissent également une valeur ajoutée sans effort à vos missions. Générez une collection de DumpsterFires pour vos clients, adaptés à leurs surfaces d'attaque. À la fin de vos opérations, vous pouvez remettre les journaux en bonus livrable d'équipe violette à votre client pour une analyse post-engagement.
Le flux de travail du DumpsterFire Toolset est conçu pour être convivial et robuste. Tout peut être fait depuis le script dumpsterFireFactory.py piloté par menu. Lancez le script et l'outil vous guidera pas à pas. Vous pouvez commencer par parcourir les modules Fire existants et les DumpsterFires sauvegardés. Lorsque vous serez prêt à créer vos propres DumpsterFires, l'outil vous guidera à travers le flux de travail pour mener à bien la tâche. Enfin, il sera temps d'allumer votre DumpsterFire. Après avoir sélectionné le DumpsterFire de votre choix, vous examinerez ses modules Fire et ses paramètres. Si tout est correct, allumez-le !
Lorsque vous construisez un DumpsterFire, après avoir choisi tous les modules Fire que vous souhaitez inclure, l'outil parcourt la liste des Feux. Si un Fire a des options de paramètres personnalisés, l'outil appelle sa méthode Configure() pour vous présenter des invites pour ses paramètres (par exemple, l'adresse IP d'un réseau cible).
Une fois tous les Feux configurés, vous aurez ensuite la possibilité d'attribuer des délais individuels à vos Feux. Cela permet au DumpsterFire de mieux imiter les opérations réelles lors de l'exécution de sa chaîne d'événements. Par exemple, le premier Fire peut visiter divers sites Web de hacking, le Fire suivant télécharge ensuite quelques outils de hacking courants avant de lancer le troisième Fire qui commence à scanner le réseau local. Si tout cela se produisait en quelques secondes, aucun analyste SOC ne croirait qu'il s'agit d'un humain. En ajoutant plusieurs minutes ou même heures entre ces événements, vous créez une chaîne d'événements plus réaliste.
Après avoir configuré tous les Feux et attribué des délais individuels optionnels, il vous sera demandé de nommer votre DumpsterFire. N'utilisez pas d'espaces ou de caractères spéciaux étranges, contentez-vous de lettres, chiffres, underscores et traits d'union.
Voilà ! Vous avez maintenant créé votre premier DumpsterFire. Il est temps d'en allumer un !
Lorsque vous êtes prêt à allumer un DumpsterFire, l'outil vous montrera d'abord ses paramètres. Si tout est correct, il vous sera demandé si vous souhaitez attribuer un délai date-heure avant l'allumage. Tout le traitement des dates-heures est effectué en UTC pour garantir une exécution cohérente quel que soit le lieu d'exécution de votre DumpsterFire. Sinon, vous pouvez refuser le délai et l'exécution commencera immédiatement après votre confirmation finale.
Pendant l'exécution du DumpsterFire, vous recevrez régulièrement des informations horodatées sur le statut de chaque Fire et les événements critiques. Cela vous aide non seulement à suivre la progression, mais fournit également un enregistrement chronologique des activités de votre DumpsterFire - essentiel pour coordonner et désamorcer vos événements du bruit de fond général qui inonde chaque SOC. Vous pouvez également remettre l'enregistrement chronologique à vos clients externes après la fin de vos opérations, en tant que relevé à valeur ajoutée de vos activités qu'ils peuvent utiliser pour examiner leurs paramètres de capteurs et d'alertes. Le tout sans effort supplémentaire de votre part.
Le 1er avril arrive ! Ainsi que les jeux de guerre cybernétiques ou l'anniversaire de votre meilleur ami. Certaines circonstances nécessitent un petit plus. Vous avez enfin infiltré le périmètre de votre adversaire lors de cette compétition de guerre réseau ? Célébrez avec Shenanigans tout en verrouillant votre victoire ! Votre meilleur ami a laissé son écran déverrouillé pendant une soirée de jeu ? Partager, c'est s'occuper ! Les Shenanigans de DumpsterFire vous permettent d'ajouter un peu de saveur à votre opération.
Vous voulez ouvrir le navigateur par défaut du système et diffuser toute la glorieuse Rick Astley ? Après avoir réglé le volume système au maximum ? Que diriez-vous d'ouvrir n'importe quelle URL de votre choix ? Ou de définir des alias shell pour faire croire que le système de fichiers est corrompu ?
dumpsterFireFactory.py - Outil piloté par menu pour créer, configurer, planifier et exécuter des DumpsterFires
FireModules/ - Répertoire contenant les sous-répertoires des Feux, chaque sous-répertoire est une Catégorie spécifique de Feux pour garder vos modules Fire organisés. Les Feux sont ajoutés à un DumpsterFire pour créer une chaîne d'événements et d'actions.
DumpsterFires/ - Répertoire contenant votre collection de DumpsterFires
igniteDumpsterFire.py - Script sans interface, invoqué en ligne de commande avec le nom du fichier DumpsterFire que vous souhaitez exécuter. Utile pour allumer des DumpsterFires distribués.
testFireModule.py - Script utilitaire pour tester unitairement les méthodes de classe de vos modules Fire personnalisés, sans avoir à passer par tout le processus de l'usine DumpsterFire pour déboguer. Également utile pour exécuter un seul Fire afin de vérifier vos paramètres. testFireModule.py vous demandera les paramètres de configuration le cas échéant.
__init__.py - Fichiers requis pour que Python traite les répertoires comme contenant des packages Python, permettant au DumpsterFire Toolset de trouver et charger les modules Fire.
Python 2.7.x
$ ./dumpsterFireFactory.py
Le script de l'usine DumpsterFire piloté par menu vous guide à chaque étape, avec une aide contextuelle tout au long du processus.
Dans notre premier exemple, nous avons un DumpsterFire qui pourrait être soit un exercice SOC, soit une distraction pour l'équipe rouge. Le DumpsterFire commence par une recherche Google d'outils de hacking. Le Fire suivant ouvre des sessions Web vers divers sites de hacking. Ensuite, un Fire suivant télécharge quelques outils de hacking courants. Puis un scan de ports cible le sous-réseau, suivi de tentatives de connexion bruteforce contre un seul hôte via Telnet. Le dernier Fire exécute une série de commandes Linux. Notez qu'entre chaque Fire, le créateur de ce DumpsterFire a inséré des délais. Cela rend le flux d'événements plus réaliste.
Dans l'exemple suivant, les membres de l'équipe violette ont créé un DumpsterFire pour aider à analyser et valider leurs configurations de capteurs et d'alertes. Ce DumpsterFire exécute une série chorégraphiée de scans de ports, chacun ciblant différentes collections de ports et services, avec des taux de sondes variables également. Ils ont inséré un délai de 5 minutes entre chaque Fire de scan pour simplifier l'isolation du trafic associé à chaque Fire de scan. Lorsqu'ils exécutent ce DumpsterFire, ils verront également des horodatages au début de chaque Fire pour les aider à désamorcer l'activité réseau du Fire par rapport à d'autres événements réseau.
La conception modulaire de DumpsterFire vous offre une flexibilité pour créer un nombre illimité de récits de chaînes d'événements. Les modules Fire qui ont des paramètres configurables vous permettent de définir des réseaux ou systèmes cibles, etc. Cependant, il existe quelques modules Fire qui vous offrent une flexibilité immédiate pour étendre considérablement vos séquences d'événements DumpsterFire.
Sans créer de nouvelles classes FireModule, vous pouvez utiliser ces modules Fire « personnalisés » existants pour tirer parti et étendre vos DumpsterFires :
Vous pouvez ajouter autant de ces modules à votre DumpsterFire, chacun avec ses propres actions personnalisées. Par exemple, vous pourriez enchaîner une douzaine de modules 'custom_url.py' pour construire un récit de navigation complet et sur mesure. Vous pourriez ensuite avoir diverses instances de Fire 'OSCommand/' qui exécutent des commandes système pour renforcer davantage le récit d'événements souhaité. Les Feux 'OSCommand/' en particulier vous offrent une flexibilité incroyable. Chaque Fire individuel de votre chaîne d'événements DumpsterFire prend toutes les commandes shell appropriées pour le système d'exploitation de l'hôte :
Exemple : Linux/Unix (et terminal OSX)
find /home -name '*.bash_history' -exec cat {} ; ; echo "Never gonna give you up" > rickroll.txt ; wall rickroll.txt
DumpsterFire est prêt à l'emploi, mais sa vraie valeur réside dans la facilité avec laquelle vous pouvez étendre la boîte à outils de scénarios de DumpsterFire en créant vos propres modules Fire personnalisés. En créant et en adaptant des modules Fire à vos besoins spécifiques, vous pouvez rapidement élargir les types de scénarios DumpsterFire que vous pouvez construire et exécuter. Écrivez simplement votre nouveau module Fire et déposez-le dans un répertoire existant sous FireModules/ ; le DumpsterFire Toolset le chargera automatiquement au moment de l'exécution et le rendra disponible.
Vous voulez garder vos modules Fire personnalisés complètement séparés dans leur propre Catégorie ? Facile ! Créez simplement un nouveau répertoire sous FireModules/ et le DumpsterFire Toolset le détectera automatiquement et le rendra disponible comme nouvelle Catégorie de Feux.
NOTE : Assurez-vous que votre nouveau répertoire contienne un fichier vide nommé __init__.py sinon le gestionnaire de packages Python ne pourra pas le trouver, et DumpsterFire ne le verra pas.
Votre module Fire hérite d'une classe appelée FireModule. Comme point de départ, vous pouvez copier un module Fire existant. Assurez-vous de changer le nom du fichier et toutes les références de nom de classe dans le fichier pour correspondre à votre nouveau Fire. (Mettez également à jour les références de chemin de Catégorie dans les méthodes constructeur de la classe, si nécessaire.)
Méthodes de classe requises :
Configure() - Demande une entrée à l'utilisateur, remplit les paramètres du FireModule
Description() - Renvoie une chaîne contenant une description du FireModule
GetParameters() - Renvoie une seule chaîne des paramètres du Fire
SetParameters( string ) - Prend une seule chaîne et remplit les membres du Fire
ActivateLogging( boolean ) - Définit un indicateur pour que le Fire génère un journal de ses activités (idéal pour la révision) NOTE : Pour la version initiale, la journalisation vers stdout est toujours activée.
Ignite() - Exécute les actions du Fire
Tester des classes Python peut être ennuyeux, surtout lorsque vous souhaitez tester unitairement chacune des méthodes de la classe, vous forçant à parcourir tous les cas d'utilisation de l'application pour vous assurer que chaque méthode de classe est exécutée dans le bon ordre. Beurk. J'ai donc écrit et inclus un script qui invoquera correctement chaque méthode de vos nouvelles classes dérivées de FireModule, vous permettant de brûler rapidement votre chemin à travers le débogage. De rien. :-) Également un excellent moyen d'exécuter un seul Fire pour tester vos paramètres, voir ce qu'il fait, etc.
En ligne de commande, donnez au script testFireModule.py le chemin relatif du fichier vers votre module Fire personnalisé. Le script de test appellera chacune des méthodes requises de FireModule pour vous, dans le bon ordre (obtention de la configuration avant l'enregistrement, etc.). Le script de test n'utilise pas la gestion des exceptions, car Python ne donne des erreurs utiles (comme signaler le guillemet manquant) que lorsqu'il plante. Crash et brûlez votre chemin vers un Fire personnalisé réussi !
J'ai actuellement environ 30 modules Fire supplémentaires à divers stades de développement et de débogage. Je les publierai en octobre et novembre. Pour chaque module que je crée, j'ai envie d'en créer deux de plus, alors gardez un œil sur cet espace pour les mises à jour.