
Framework d'attaque modulaire en Python3 pour automatiser l'exploitation des plateformes SIEM (Splunk, Graylog, OSSIM, QRadar, McAfee) via le vol d'identifiants, le déploiement de charges utiles et des modules de post-exploitation.
MultiSIEM Modular Python3 Attack Framework
Par ElevenPaths https://www.elevenpaths.com/
Utilisation : python3 ./siemsframework.py
Les SIEM sont des outils défensifs de plus en plus utilisés dans le domaine de la cybersécurité, notamment par les grandes entreprises et les sociétés qui surveillent des systèmes et réseaux hautement critiques. Cependant, du point de vue d'un attaquant, les autorisations accordées aux SIEM sur les systèmes et comptes des réseaux d'entreprise sont élevées. De plus, l'accès administratif aux SIEM peut être utilisé pour obtenir une exécution de code sur le serveur où ce SIEM est installé, et parfois aussi sur les machines clientes, étant donné qu'un SIEM collecte des événements provenant de serveurs tels que les serveurs Active Directory, les serveurs AWS, les bases de données et les équipements réseau (par exemple, pare-feu et routeurs).
Au cours de notre investigation, nous avons détecté un grand nombre de vecteurs d'attaque qui pourraient être utilisés contre les différents SIEM pour les compromettre, par exemple :
• Obtenir les comptes utilisateurs et mots de passe stockés dans le SIEM provenant de systèmes critiques (serveurs LDAP/AD, bases de données, équipements réseau, serveurs AWS).
• Développer et installer des applications malveillantes telles que des reverse shells Windows/Linux, des bind shells Windows/Linux ou des scripts malveillants dans le but de compromettre le serveur où le SIEM est installé.
• Développer et installer des applications malveillantes telles que des reverse shells Windows/Linux, des bind shells Windows/Linux ou des scripts malveillants dans le but de compromettre les machines à partir desquelles le SIEM collecte les événements.
• Créer et appliquer des actions ou notifications malveillantes qui permettent d'exécuter des commandes lorsqu'un événement donné se produit, par exemple dans le but d'obtenir un reverse shell sur le serveur où le SIEM est installé.
• Tirer parti des mots de passe par défaut et des faiblesses des SIEM dans la configuration des images OVA pour obtenir les identifiants administrateur du serveur, de la base de données ou même de l'interface web du SIEM lui-même.
• Effectuer des attaques par dictionnaire ou par force brute contre l'interface web ou d'administration, ou contre le logiciel client du SIEM, pour obtenir les identifiants administrateur.
• Lire des fichiers arbitraires depuis le serveur où le SIEM est installé.
• Obtenir des informations de configuration du SIEM et d'autres paramètres pertinents pour mener d'autres attaques.
Sur la base des résultats de l'investigation, l'outil Open Source SIEMs Framework a été développé. Il s'agit d'un outil modulaire développé en Python3 par l'équipe Innovation & Laboratoire d'ElevenPaths. Il permet d'automatiser les attaques potentielles contre divers SIEM existants sur le marché (à la fois commerciaux et open source).
SIEMs Framework prend en charge plusieurs charges utiles d'attaque qui peuvent être sélectionnées en fonction du SIEM à attaquer et de son système d'exploitation. Il existe des charges utiles disponibles en PowerShell, Python, Bash, Exe, et d'autres formats. Une fois l'attaque sélectionnée exécutée, l'outil affiche les résultats à l'écran et il est possible de revenir et d'exécuter toute autre attaque sur le même SIEM ou de sélectionner un autre SIEM à compromettre. Il possède une interface simple, facile à utiliser et intuitive. Actuellement, il peut être utilisé avec les SIEM suivants : Splunk, Graylog et OSSIM.
SIEMs Framework peut être téléchargé depuis notre Github en téléchargeant le fichier .zip ou en clonant le dépôt, et présente les prérequis suivants qui peuvent être installés via pip3 install -r requirements.txt :
• splunk-sdk
• requests
• python-nmap
• colorama
• pandas
• paramiko
• pymongo
• qradar4py
• requests_mock
• urllib3
Une fois les prérequis installés, l'outil peut être utilisé comme suit : python3 ./siemsframework.py
Lorsque l'outil est exécuté, le menu principal s'affiche et vous devez alors sélectionner si vous souhaitez scanner une adresse IP spécifique où se trouverait un SIEM ou un réseau pour détecter les SIEM qui s'y trouvent. Pour scanner et détecter le SIEM dans une adresse IP spécifique, vous devez utiliser l'option 1, et pour scanner le réseau, l'option 2.
En sélectionnant l'option 1 « Scan and Detect SIEM », l'outil demande l'adresse IP afin de pouvoir scanner les ports spécifiques des SIEM pris en charge et se connecter à l'interface web ou d'administration pour vérifier qu'il s'agit bien d'un SIEM.
Une fois le SIEM détecté en suivant les méthodes ci-dessus, l'outil affiche le SIEM détecté en rouge et vous donne la possibilité de lancer le module d'attaque de ce SIEM.
En sélectionnant l'option 2 « Find SIEMs on the network », l'outil demande le réseau à scanner en notation CIDR, par exemple : 192.168.137.0/24. Une fois les informations saisies, SIEMs Framework effectue d'abord une découverte pour détecter les systèmes actifs ; ensuite, les ports par défaut des SIEM pris en charge sont scannés, et enfin il se connecte à l'interface web ou d'administration de chacun de ces systèmes pour vérifier qu'il s'agit bien d'un SIEM.
Une fois les SIEM détectés en suivant les méthodes ci-dessus, l'outil affiche les SIEM détectés en rouge et demande l'adresse IP du SIEM à attaquer.
En entrant « y » et en sélectionnant le lancement des modules d'attaque Splunk, l'outil affiche toutes les attaques possibles à effectuer contre ce SIEM. Pour les deux premières attaques, aucun identifiant n'est requis, mais pour la cinquième, des privilèges d'administrateur Splunk sont nécessaires.
Ce module d'attaque contient un dictionnaire spécifique pour Splunk nommé dict.txt, composé des 100 mots de passe les plus utilisés en 2018 et de diverses permutations du nom commercial du SIEM et de son utilisateur administrateur, en majuscules et minuscules, et en remplaçant les voyelles par des chiffres. Si vous souhaitez utiliser une autre liste que celle mentionnée ci-dessus, /splunk/dict.txt peut être remplacé par toute autre liste de mots, à condition que le nom du fichier soit conservé. La politique de mot de passe de Splunk ne s'applique pas aux utilisateurs ayant un rôle d'administrateur, donc les restrictions concernant le mot de passe ou le verrouillage du compte en cas de tentatives d'accès infructueuses ne s'appliquent pas. Avant de commencer l'attaque par dictionnaire, l'outil vérifie si le Splunk à analyser possède la version Free qui n'utilise aucun type d'authentification, ou s'il conserve encore le mot de passe par défaut « changeme » des versions les plus anciennes de ce logiciel :
Si le serveur Splunk à analyser a l'interface web active, ce module permet d'obtenir les informations du serveur et de session à partir de l'interface web elle-même sans nécessiter d'authentification. 8000 est le port par défaut de l'interface web Splunk ; pour utiliser ce module, il est nécessaire de connaître et de saisir le port sur lequel l'interface web est publiée.
Ce module peut être utilisé sur un serveur Splunk ou un Universal Forwarder. Pour l'utiliser, des identifiants administrateur Splunk sont nécessaires, et ils peuvent être obtenus par exemple via une attaque par dictionnaire (1ère attaque). Le résultat du module sont les informations de l'installation Splunk actuelle : version, système d'exploitation, configurations Splunk et plus.
Ce module est utilisé uniquement sur les serveurs Splunk. Pour l'utiliser, des identifiants administrateur Splunk sont nécessaires, et ils peuvent être obtenus par exemple via une attaque par dictionnaire (1ère attaque). Le résultat du module sont tous les identifiants stockés par les applications utilisées sur Splunk pour se connecter aux périphériques à partir desquels les événements sont obtenus.
Ce module peut être utilisé sur un serveur Splunk Linux. Pour l'utiliser, des identifiants administrateur Splunk sont nécessaires, et ils peuvent être obtenus par exemple via une attaque par dictionnaire (1ère attaque). Le module utilise un index pour charger le fichier concerné, et son résultat est le contenu du fichier /etc/shadow du serveur où Splunk est installé.
Ce module sera disponible dans la prochaine version de SIEMs Framework. Afin de compromettre les Universal Forwarders, l'attaque 1 pour obtenir les identifiants puis l'attaque 7 pour installer des applications malveillantes en fonction de la plateforme peuvent être effectuées jusqu'à présent.
Ce module d'attaque permet de développer et d'installer sur Splunk une application malveillante conçue pour compromettre le système concerné. Tout d'abord, le type de charge utile à utiliser en fonction du système d'exploitation et du type de Splunk à attaquer doit être sélectionné (Splunk Server ou Universal Forwarder). Vous pouvez utiliser Linux Python Reverse ou Bind Shell pour Splunk Server ou UF ; Windows Python Reverse ou Bind Shell pour Splunk Server (où Python est installé par défaut) ; et Executable Bind Shell ou un script pour ajouter un utilisateur administrateur sur Windows Universal Forwarders (où Python n'est pas installé par défaut). Ensuite, le nom d'utilisateur, le mot de passe administrateur Splunk et l'adresse IP de l'attaquant doivent être saisis.
En entrant « y » et en sélectionnant le lancement des modules d'attaque Graylog, l'outil affiche toutes les attaques possibles à effectuer contre ce SIEM. Pour les trois premières attaques, aucun identifiant n'est requis, mais pour la quatrième, des privilèges d'administrateur Graylog sont nécessaires.
Ce module d'attaque contient un dictionnaire spécifique pour Graylog nommé dict.txt, composé des 100 mots de passe les plus utilisés en 2018 et de diverses permutations du nom commercial du SIEM et de son utilisateur administrateur, en majuscules et minuscules, et en remplaçant les voyelles par des chiffres. Si vous souhaitez utiliser une autre liste que celle mentionnée ci-dessus, /graylog/dict.txt peut être remplacé par toute autre liste de mots, à condition que le nom du fichier soit conservé.
Ce module d'attaque vérifie si le Graylog à analyser possède des identifiants par défaut sur l'interface web Graylog (admin/admin), ainsi que des identifiants par défaut pour se connecter au système par console ou SSH (ubuntu/ubuntu). Ces deux paires d'identifiants sont configurées par défaut sur les appliances de machines virtuelles Graylog, à la fois OVA et AMI.
Ce module d'attaque vérifie si le Graylog à analyser a une base de données Mongo DB configurée sans authentification. Dans ce cas, il se connecte à MongoDB et obtient les informations de configuration, les identifiants LDAP (selon la version actuelle de Graylog, ils peuvent être en texte clair ou cryptés) et les clés d'accès et secrètes configurées dans le plugin AWS. S'il est crypté, la clé utilisateur LDAP est cryptée avec AES CBC. La clé correspond aux 16 premiers bits du champ password_secret, situé dans le fichier de configuration server.conf, ou graylog.conf dans le cas d'installations standard ; ou le champ secret_token situé dans le fichier graylog-secrets.json dans le cas d'installations OVA, l'IV est le sel affiché à l'écran.
Ce module d'attaque obtient les informations de configuration et les identifiants pour LDAP et AWS en texte clair depuis l'API REST Graylog. Pour utiliser ce module, des identifiants administrateur Graylog sont nécessaires.
En entrant « y » et en sélectionnant le lancement des modules d'attaque OSSIM, l'outil affiche toutes les attaques possibles à effectuer contre ce SIEM. Pour la première attaque, aucun identifiant n'est requis, mais pour les suivantes, des identifiants administrateur OSSIM sont nécessaires.
Ce module d'attaque contient un dictionnaire spécifique pour OSSIM nommé dict.txt, composé des 100 mots de passe les plus utilisés en 2018 et de diverses permutations du nom commercial du SIEM et de son utilisateur administrateur, en majuscules et minuscules, et en remplaçant les voyelles par des chiffres. Si vous souhaitez utiliser une autre liste que celle mentionnée ci-dessus, /ossim/dict.txt peut être remplacé par toute autre liste de mots, à condition que le nom du fichier soit conservé.
Ce module d'attaque permet d'obtenir les informations de configuration du serveur OSSIM. Pour l'utiliser, des identifiants administrateur OSSIM sont nécessaires, et ils peuvent être obtenus par exemple via une attaque par dictionnaire (1ère attaque). Le résultat du module sont les informations de configuration pertinentes de l'installation actuelle : utilisateurs définis, paramètres de connexion incluant les configurations LDAP et les politiques de mot de passe.
Ce module d'attaque permet d'obtenir un reverse shell depuis le serveur OSSIM vers le système de l'attaquant. Pour l'utiliser, des identifiants administrateur OSSIM sont nécessaires, et ils peuvent être obtenus par exemple via une attaque par dictionnaire (1ère attaque). Le module développe une action malveillante qui se connectera via netcat au système de l'attaquant. Ensuite, il déclenche une nouvelle politique qui utilise cette action pour avertir en cas d'événement de sécurité, et cet événement est déclenché par une tentative de connexion SSH infructueuse au serveur OSSIM. Par conséquent, un reverse shell est obtenu depuis le serveur OSSIM vers le système de l'attaquant sur le port 12345 avec les privilèges root.
En entrant « y » et en sélectionnant le lancement des modules d'attaque QRadar, l'outil affiche toutes les attaques possibles à effectuer contre ce SIEM. Pour les deux premières attaques, aucun identifiant n'est requis, mais pour les suivantes, des identifiants administrateur QRadar ou une clé API sont nécessaires.
Ce module d'attaque contient un dictionnaire spécifique pour QRadar nommé dict.txt, composé des 100 mots de passe les plus utilisés en 2018 et de diverses permutations du nom commercial du SIEM et de son utilisateur administrateur, en majuscules et minuscules, et en remplaçant les voyelles par des chiffres. Si vous souhaitez utiliser une autre liste que celle mentionnée ci-dessus, /qradar/dict.txt peut être remplacé par toute autre liste de mots, à condition que le nom du fichier soit conservé. Cette attaque est très lente car QRadar dispose d'une protection qui n'autorise que 5 tentatives toutes les 30 minutes.
Ce module d'attaque contient un dictionnaire spécifique pour QRadar nommé apikeys.txt, composé de 1000 options différentes de clés API qui respectent la structure requise par ce SIEM. Si vous souhaitez utiliser une autre liste que celle mentionnée ci-dessus, /qradar/dict.txt peut être remplacé par toute autre liste de mots, à condition que le nom du fichier soit conservé. Le programme vous donne la possibilité de créer le fichier avec des clés API de manière aléatoire.
Ce module d'attaque nous permet d'obtenir la configuration du serveur via l'utilisation de la clé API. Pour l'utiliser, une clé API administrateur QRadar est nécessaire, et elle peut être obtenue par exemple via une attaque par dictionnaire (2ème attaque). Le résultat du module sont les informations de configuration pertinentes de l'installation actuelle : utilisateurs définis, hiérarchie réseau et hôtes de déploiement.
Ce module d'attaque nous permet d'obtenir la liste des utilisateurs enregistrés dans la base de données Ariel. Pour l'utiliser, une clé API administrateur QRadar est nécessaire, et elle peut être obtenue par exemple via une attaque par dictionnaire (2ème attaque). Le résultat du module sont les informations de configuration pertinentes des utilisateurs qui ont eu un contact avec la base de données Ariel.
En entrant « y » et en sélectionnant le lancement des modules d'attaque McAfee, l'outil affiche toutes les attaques possibles à effectuer contre ce SIEM. Pour la première attaque, aucun identifiant n'est requis, mais pour les suivantes, des identifiants administrateur McAfee sont nécessaires.
Ce module d'attaque contient un dictionnaire spécifique pour McAfee nommé dict.txt, composé de 7000 mots de passe créés aléatoirement avec diverses permutations du nom commercial du SIEM et de son utilisateur administrateur, en majuscules et minuscules, et en remplaçant les voyelles par des chiffres. Si vous souhaitez utiliser une autre liste que celle mentionnée ci-dessus, /mcafee/dict.txt peut être remplacé par toute autre liste de mots, à condition que le nom du fichier soit conservé. Cette attaque est très lente car McAfee dispose d'une protection qui n'autorise que 3 tentatives toutes les 10 minutes.
Ce module d'attaque contient un dictionnaire spécifique pour McAfee nommé dict.txt, composé de 7000 mots de passe créés aléatoirement avec diverses permutations du nom commercial du SIEM et de son utilisateur administrateur, en majuscules et minuscules, et en remplaçant les voyelles par des chiffres. Si vous souhaitez utiliser une autre liste que celle mentionnée ci-dessus, /mcafee/dict.txt peut être remplacé par toute autre liste de mots, à condition que le nom du fichier soit conservé.
Ce module d'attaque nous permet d'obtenir la configuration du serveur via l'utilisation des identifiants administrateur. Pour l'utiliser, des identifiants SSH administrateur sont nécessaires, et ils peuvent être obtenus par exemple via une attaque par dictionnaire (2ème attaque). Le résultat du module sont les informations de configuration pertinentes de l'installation actuelle : serveur de noms sur le réseau, services actifs, configuration réseau et configuration du pare-feu.
Ce module d'attaque nous permet d'obtenir la configuration du serveur via l'utilisation des identifiants administrateur. Pour l'utiliser, des identifiants SSH administrateur sont nécessaires, et ils peuvent être obtenus par exemple via une attaque par dictionnaire (2ème attaque). Le résultat du module sont les informations de configuration pertinentes de l'installation actuelle : numéro de version du SIEM, données de disque dur, données RAM, données processeur, temps d'activité, statut de la prochaine date de vérification, statut de la date de vérification des règles et date de la prochaine sauvegarde.
Ce module d'attaque nous permet d'obtenir la configuration du serveur via l'utilisation des identifiants administrateur. Pour l'utiliser, des identifiants SSH administrateur sont nécessaires, et ils peuvent être obtenus par exemple via une attaque par dictionnaire (2ème attaque). Le résultat du module sont les informations pertinentes sur les utilisateurs système.
En entrant « y » et en sélectionnant le lancement des modules d'attaque SIEMonster, l'outil affiche toutes les attaques possibles à effectuer contre ce SIEM. Pour la première attaque, aucun identifiant n'est requis, mais pour les suivantes, des identifiants administrateur SIEMonster sont nécessaires.
Ce module d'attaque contient un dictionnaire spécifique pour SIEMonster nommé dict.txt, composé de 7000 mots de passe créés aléatoirement avec diverses permutations du nom commercial du SIEM et de son utilisateur administrateur, en majuscules et minuscules, et en remplaçant les voyelles par des chiffres. Si vous souhaitez utiliser une autre liste que celle mentionnée ci-dessus, /siemonster/dict.txt peut être remplacé par toute autre liste de mots, à condition que le nom du fichier soit conservé.
Ce module d'attaque nous permet d'obtenir la configuration du serveur via l'utilisation des identifiants administrateur. Pour l'utiliser, des identifiants SSH administrateur sont nécessaires, et ils peuvent être obtenus par exemple via une attaque par dictionnaire (1ère attaque). Le résultat du module sont les informations de configuration pertinentes de l'installation actuelle : serveur de noms sur le réseau, conteneurs Docker actifs, liste des services actifs, configuration réseau et configuration du pare-feu.
Ce module d'attaque nous permet d'obtenir la configuration du serveur via l'utilisation des identifiants administrateur. Pour l'utiliser, des identifiants SSH administrateur sont nécessaires, et ils peuvent être obtenus par exemple via une attaque par dictionnaire (1ère attaque). Le résultat du module sont les informations pertinentes sur les utilisateurs système.### Modules d'attaque ElasticSIEM En saisissant « y » et en sélectionnant le lancement des modules d'attaque ElasticSIEM, l'outil affiche toutes les attaques possibles à effectuer contre ce SIEM. Pour la première attaque, aucun identifiant n'est requis, mais pour les suivantes, les identifiants administrateur ElasticSIEM sont nécessaires.
Ce module d'attaque contient un dictionnaire spécifique pour ElasticSIEM nommé dict.txt, composé des 7000 mots de passe les plus utilisés en 2018 et de diverses permutations du nom commercial du SIEM et de son utilisateur admin, en lettres majuscules et minuscules, et en remplaçant les voyelles par des chiffres. Si vous souhaitez utiliser une autre liste que celle mentionnée ci-dessus, /elasticsiem/dict.txt peut être remplacé par toute autre liste de mots, à condition que le nom du fichier soit conservé.
Ce module d'attaque permet d'obtenir la configuration du serveur via l'utilisation des identifiants admin. Pour l'utiliser, les identifiants SSH admin sont nécessaires, et ils peuvent être obtenus par exemple via une attaque par dictionnaire (1ère attaque). Le résultat du module est l'information de configuration pertinente de l'installation actuelle : serveur de noms sur le réseau, conteneurs Docker actifs, liste des services actifs, et configuration réseau.
Veuillez signaler toute erreur en ouvrant une issue sur GitHub. Votre collaboration est très appréciée !