Sécuriser son SI : Top 2024 des outils indispensables pour les sysadmins
Sommaire
I. Présentation
Dans cet article, je vous propose un ensemble d'outils et de ressources permettant d'évaluer et de tester la sécurité de votre système d'information. Mon objectif de fournir aux administrateurs système les principaux outils que je juge utiles et techniquement abordables pour réaliser cette tâche.
L'objectif de sécurisation de son système d'information peut paraitre abstrait ou lointain lorsque l'on ne se frotte pas quotidiennement à la cybersécurité, qui est devenue un métier à part entière de l'informatique au sens général. Néanmoins, chaque acteur du système d'information a son rôle à jouer au sujet de la cybersécurité, de manière plus ou moins forcée en fonction des budgets, tailles d'équipe ou autres contraintes spécifiques à chaque cas et entreprise.
L'idée de cet article est de vous fournir les premiers éléments de réponse et options à suivre pour vous lancer sur ce chemin, notamment si vous souhaitez ou devez ajouter une corde "cybersécurité" à votre arc sans pour autant devenir un expert à plein temps sur le sujet.
La connaissance de ces outils et ressources présentées dans cet article n'est, en soit, pas suffisante pour la réalisation d'un test d'intrusion ou d'une opération red team en bonne et due forme. En revanche, ceux-ci sont tout à fait maitrisables pour des administrateurs systèmes et réseau, et, utilisés de manière relativement standard, pourront déjà permettre de détecter et de corriger les vulnérabilités les plus visibles d'un système d'information.
Cette liste contient uniquement des outils gratuits ou utilisés dans leur version gratuite, pour plusieurs raisons, la principale étant la volonté de partager des solutions utiles et utilisables par tous.
II. Disclaimer
Quel que soit l'outil dont il est question, il est important d'être au fait qu'une simple exécution occasionnelle sans analyse précise ou capacité à interpréter les résultats ne sert à rien. Soyez bien clair sur plusieurs points :
- Avant d'utiliser n'importe lequel de ces outils, il faut être certains de comprendre ce pour quoi il est fait, ce qu'il est capable de détecter, voire d'exploiter, et quelles sont ses limites (faux positifs, périmètre d'action). S'il y a une quelconque incompréhension de votre part concernant la description de l'outil et son fonctionnement global, c'est qu'il n'est pas encore temps de l'utiliser en conditions réelles.
- Il est aussi important d'être capable d'interpréter les résultats de chacun de ces outils afin de comprendre ce qui est urgent, ce qui est incertain, ce qui est secondaire, etc. À ce titre, il faut être conscient de ses propres limites quant à leur utilisation et l'interprétation de leur résultat.
- L'utilisation de ces outils, pour certains offensifs, ne doit être effectuée uniquement sur des cibles pour lesquelles vous disposez d'une autorisation explicite. Pour rappel : Code pénal : Chapitre III : Des atteintes aux systèmes de traitement automatisé de données
L'utilisation de ces outils peut ainsi être un premier pas vers une phase de diagnostic ou de contrôle routinier de la sécurité du système d'information. Cependant, elle ne peut pas être un substitut à l'analyse d'un expert en cybersécurité, qu'il soit interne ou externe à l'entreprise. Par exemple, l'utilisation avec les options "standard" ou "par défaut" peut vous faire passer à côté d'une vulnérabilité qui ne serait détectable qu'à travers une analyse approfondie, ou l'utilisation d'options plus avancées.
Il est donc important d'être en phase avec ces différents points pour éviter d'avoir un faux sentiment de sécurité. Cet avertissement étant fait, nous pouvons passer à la suite ! 🙂
III. Ma liste d'outils pour sécuriser son SI en tant qu'administrateur système
A. Scan réseau : nmap
nmap est la référence absolue des outils de scan réseau ! Il permet d'effectuer une reconnaissance et une cartographie du système d'information en découvrant les hôtes accessibles sur un réseau local ou distant ainsi que les services exposés. À ce titre, il permet également d'effectuer une analyse de cloisonnement pouvant exister entre deux réseaux en évaluant de manière pragmatique l'efficacité et l'exhaustivité d'une politique de filtrage.
L'utilisation de nmap peut donc permettre de voir si un hôte situé sur un réseau peut accéder aux services d'un autre hôte du réseau local ou sur un réseau distant. Voici, en exemple, une commande classique d'utilisation de nmap et les résultats d'un scan sur un hôte unique, visant à découvrir les services exposés et procéder à des premières actions d'énumération sur ceux-ci :
On retrouve notamment différentes colonnes indiquant, dans l'ordre : le protocole et port scanné, son status (open/closed/filtered), le service correspondant et une éventuelle bannière indiquant la technologie utilisée et sa version lorsque les scripts nmap ont réussi à les identifier avec précision.
En plus de ces fonctionnalités principales, nmap possèdent également de nombreux modules sous forme de scripts qui permettent de détecter les types de services exposés (est-ce un service web, un service SSH ou RDP ? etc...), mais également leur version. Ces scripts, écrits en LUA et utilisables tels quels, permettent également d'effectuer un scan de vulnérabilité élémentaire, par exemple, en relevant la présence d'une version obsolète, d'une authentification anonyme ou la présence d'une configuration particulière vulnérable.
De manière élémentaire, nmap peut aider à répondre aux questions suivantes :
- Pour un poste situé dans le réseau "utilisateur", combien de systèmes et services de mon système d'information lui sont accessibles ?
- La politique de filtrage et de cloisonnement que j'ai définie est-elle implémentée telle qu'attendu ?
- Si un attaquant prend le contrôle d'un poste de l'équipe RH, peut-il directement joindre mon serveur de sauvegarde ?
- Existe-t-il des services exposés sur le réseau "serveurs" qui ne sont pas à jour ?
- Y-a-t-il sur mon réseau des services SMB ou FTP accessibles en authentification anonyme ?
Enfin, celui-ci nécessite forcément des connaissances en systèmes et en réseau. C'est notamment le cas lorsqu'il s'agit de tester la bonne application d'une politique de filtrage réseau ou d'identifier les services exposés grâce à leur port (TCP/UDP). La sortie qu'il produit peut dans un premier temps paraitre non intuitive, mais le résultat est en fait assez claire, si l'on prend la peine de s'y familiariser.
- Lien vers l'outil : Site officle de nmap
👉 Apprenez à utiliser Nmap avec notre cours complet :
B. Scan web : nuclei
Nuclei fait partie de mes outils préférés lorsqu'il s'agit de faire des scans web automatisés et de dégrossir l'analyse d'un grand nombre de cibles, principalement parce que j'apprécie son fonctionnement modulaire et le développement communautaire de ses templates de test. Il s'agit d'un scanner utilisant des modules écrit en Yaml écrit par la communauté.
Il est très simple d'utilisation et plutôt efficace. Son objectif est de vous permettre de scanner un ou plusieurs sites en effectuant un grand nombre de tests qui sont clairement définis. Ces tests, sous forme de module donc, sont majoritairement orientés autour :
- de la détection de version et la présence de logiciels, plugins ou dépendances obsolètes.
- de la présence de défaut de configuration, tels que le Directory Listing, l'absence d'options de sécurité sur les cookies, l'absence d'en-tête de sécurité au niveau du service web, etc.
- la recherche de fichiers sensibles qui ne devraient pas être exposés, comme un fichier "docker-composer.yml" contenant un mot de passe, un fichier "phpinfo()", etc.
- la découverte de CVE reposant sur des éléments de détection simples.
Voici un exemple d'utilisation de nuclei, qui peut aussi bien prendre en entrée un site web qu'un fichier contenant plusieurs centaines de domaines :
# Scanner un site web
nuclei -u https://www.monsiteweb.fr
# Scan les URL/domaine inscrits dans un fichier
nuclei --list /tmp/url.txt
Nuclei va faire une analyse en utilisant ses modules (appelés templates). Nous pouvons spécifier ceux que nous souhaitons utiliser via les options, ou laisser nuclei les choisir automatiquement en fonction de ses découvertes. Si nuclei détecte les traces du CMS WordPress, il va automatiquement exécuter tous les modules portant le tag "wordpress".
Voici un exemple d'utilisation d'un module. Nous souhaitons effectuer une vérification très précise sur toutes nos applications web exposées, en recherchant l'exposition d'un "PhpMyAdmin" :
nuclei --list /tmp/url.txt -t http/exposed-panels/phpmyadmin-panel.yaml
C'est cette possibilité de pouvoir sélectionner précisément un test ou catégorie de test sur un site précis ou un grand ensemble de site qui le rend très pratique d'utilisation. Voici, par exemple, le cas d'utilisation de toute une catégorie de template permettant de rechercher les technologies à partir du contenu des pages web et des bannières. On spécifie ici une catégorie qui contient plus de 300 modules :
Au delà des simples découvertes de bannières ou de fichiers, certaines catégories de modules sont orientées sur la découverte de CVE, voici un exemple :
Vous pourrez en apprendre plus sur les templates de test nuclei simplement en parcourant leur configuration Yaml : Github - Nuclei-templates
Il faut cependant être conscient de la limite des scans automatisés : ceux-ci sont très surfaciques et permettent uniquement de relever des vulnérabilités basiques. Ne vous attendez pas, par exemple, à découvrir une injection SQL ou un problème de cloisonnement des droits entre profils utilisateurs grâce à nuclei. Vous serez en revanche certain d'avoir des résultats et des éléments à corriger si vous exécutez ce genre de scan pour la première fois sur un SI qui n'a jamais été à l'épreuve d'une cyberattaque/d'un audit.
Dans la réalité d'un test d'intrusion ou d'une opération red team, les scans automatisés sont utilisés pour dégrossir le travail, repérer les cibles les plus faibles et avoir une première idée du niveau de sécurité global. Ils sont rarement, voir jamais utilisés dans le cadre de cyberattaques réelles pour des problématiques évidentes de discrétion.
- Lien vers l'outil : Github - ProjectDiscovery/Nuclei
👉 Apprenez à utiliser Nuclei avec notre tutoriel complet :
C. Analyse des partages et permissions avec Snaffler
Snaffler est un exécutable Windows qui vise à automatiser la découverte des partages de fichiers des systèmes sur un domaine, puis la recherche d'informations sensibles dans ces partages. Ses règles par défaut, qui sont hautement personnalisables, sont orientées autour des fichiers techniques contenant des mots de passe, des configurations, des archives, crashdump, disques virtuels, etc. Tout type de fichier dans lequel un attaquant pourrait trouver des informations intéressantes.
C'est un outil très efficace qui ne manque jamais à remonter des informations intéressantes, tant la tâche de sécurisation et difficile à atteindre. Il permet notamment d'automatiser une tâche colossale : naviguer dans la totalité des partages de fichiers, dossiers et sous-dossiers d'un système d'informations. Exécuter régulièrement sur un système d'informations, en utilisant des comptes utilisateurs de privilèges différents, il permettra d'être un peu plus confiant sur l'absence d'informations sensibles dans les partages de fichiers, notamment ceux accessibles en lecture par tous les utilisateurs du domaine.
Voici un exemple de lancement de Snaffler et des premiers résultats qu'il peut afficher (Cliquez sur l'image pour zoomer) :
Dans cet exemple, on voit que Snaffler réalise dans un premier temps une énumération et recherche des partages de fichiers des systèmes de mon domaine, puis recherche des données sensibles à l'intérieur de ceux-ci. La dernière ligne (marquées en {Red}) est une trace typique de la découverte d'un mot de passe dans un script accessible dans le partage concerné.
- Lien vers l'outil : Github - SnaffCon/Snaffler
👉 Apprenez à utiliser Snaffler avec notre tutoriel complet :
D. Diagnostique et conformité de l'Active Directory avec PingCastle
PingCastle est un exécutable Windows orienté autour des vérifications de conformité et de bonnes pratiques de configuration de l'Active Directory, élément plus que central dans la sécurisation d'un système d'information. Dans son utilisation la plus commune, il permet de faire une analyse globale de la sécurité de l'AD suite une collecte d'information automatisée. Cette analyse porte notamment sur les utilisateurs, groupes, système d'exploitation, GPO, les permissions et appartenance aux groupes, mais aussi des éléments plus techniques comme la conformité à l'état de l'art concernant des paramètres bien précis :
Lors de l'analyse de la sécurité d'un système d'information, il s'agit réellement d'un incontournable sur le sujet. Une des grandes forces de l'outil est également son rapport, au format web, qui contient une notation globale, une catégorisation des points de vérification et faiblesses découvertes, ainsi que des recommandations et références externes qui permettent de mieux comprendre l'impact des faiblesses découvertes et le sens des recommandations proposées.
Son utilisation est, elle aussi, très simple, depuis un poste intégré au domaine, voici comment l'exécuter :
.\Pingcastle.exe --healthcheck
Comme vous le voyez dans la sortie ci-dessous, celui-ci va réaliser une collecte et une analyse des données de l'Active Directory. il produira ensuite un rapport HTML :
Enfin, voici un exemple de résultat. Ce premier exemple vous montre la synthèse générale du niveau de risque du domaine déterminé par PingCastle à la suite de son analyse :
Ce second exemple vous expose le cas d'une vulnérabilité précise, avec notamment une description, un détail de l'impact, de la recommandation, des objets concernés :
N'hésitez pas ici à consulter les ressources qui sont référencées par PingCastle pour en apprendre plus sur ce qu'est, dans cet exemple, la vulnérabilité ASREPRoast (ou alors, consultez notre article sur le sujet 🙂 : IT-Connect - Sécurité de l’Active Directory : comprendre et se protéger de l’attaque ASREPRoast).
Une bonne pratique consiste, par exemple, à réaliser une analyse tous les trimestres et de prendre en compte les recommandations proposées, en commençant bien sûr par les plus urgentes.
- Lien vers l'outil : SIte officiel - PingCastle
Pour aller plus loin dans la compréhension de ce très bon outil, je vous oriente vers nos articles sur le sujet, ainsi que vers Purple Knight qui est une alternative :
- IT-Connect - Comment auditer l’Active Directory avec PingCastle ?
- IT-Connect - Sécurité Active Directory : comment atteindre un score de 0/100 dans PingCastle ?
- IT-Connect - Comment auditer l'Active Directory avec Purple Knight ?
- Youtube - IT-Connect : Auditez votre Active Directory en 5 minutes avec PingCastle !
E. Recherche des chemins d'attaque dans l'Active Directory avec BloodHound
Bloodhound est une application web couplée à une base Neo4j qui permet de visualiser les relations qui existent entre les nombreux objets d'un domaine (utilisateurs, groupes, ordinateurs, etc.) et d'y rechercher des chemins d'attaque. Il permet notamment de répondre à une complexité inhérente aux annuaires Active Directory, qui est la succession de relations qui peuvent exister entre plusieurs objets, par l'intermédiaire d'appartenance à des groupes, de présence de session sur un poste, de privilèges et ACL spécifiques, etc. Grâce à BloodHound, ces relations parfois très indirectes, mais bien existantes peuvent être identifiées et visualisées simplement. Voici un exemple :
Ce type de relation, qui permet de comprendre que l'utilisateur "[email protected]" est finalement membre du groupe "ADMINS DU DOMAINE" de façon indirecte, n'est pas aisée à visualiser, encore moins à découvrir à l'aide des outils natifs Microsoft. Dans la réalité, cela représente un chemin potentiel pour un attaquant, qui, ayant compromis le compte utilisateur initial, fini par obtenir le plus haut niveau de privilège au sein du domaine : Administrateur du domaine.
BloodHound est un outil puissant, initialement créé par des attaquants/pentesters, mais qui est très utile entre les mains des administrateurs de l'Active Directory une fois maitrisé. Il permet de découvrir des chemins d'attaque parfois complexes et insoupçonnés, notamment grâce à une nouvelle façon de parcourir, visualiser et rechercher dans les données (la théorie des graphes).
Dans les grandes lignes, BloodHound va se baser sur les données de l'Active Directory, que l'on devra collecter pour lui via un agent appelé Collecteur. Il va ensuite stocker ces données dans une base de données neo4j, utilisant le langage de base de données Cypher pour y appliquer des recherches et des filtres, et un front-end en Sigma.js/Go nous permettra de les afficher et de les manipuler. Voici un exemple plus complet et réaliste (cliquez sur l'image pour zoomer) :
Cette vue vous montre de nombreux chemins d'attaque avec des nœuds de différents types (OU, Ordinateur, Utilisateur) et des relations différentes entre ces nœuds (possibilité d'ajouté un membre, de changer un attribut, de lire les attributs sensibles, de se connecter en RDP, d'être propriétaire d'un autre objet, etc.).
- Lien vers l'outil : Github - BloodHound
👉 Pour maitriser cet outil de A à Z, je vous oriente vers notre cours gratuit dédié à BloodHound :
IV. Les ressources
L'idée à travers le partage de ces ressources est de vous fournir une liste de bases de connaissances utiles pour comprendre et interpréter les résultats fournis par les outils listés ci-dessus. Également, certaines d'entre elles pourront vous orienter vers les principaux tester à réaliser, ou vous fournir des éléments complémentaires de compréhension concernant les remédiations.
A. Active Directory Mindmap
Cette mindmap, que je vous conseille d'ouvrir localement avec le logiciel "Xmind", représente de manière très concrète la démarche globale et les différentes opérations classiques d'un attaquant. Elle a été conçue par des experts en cybersécurité et tests d'intrusion comme un pense-bête ou méthodologie pour la réalisation d'un test d'intrusion. Un test d'intrusion étant une prestation consistant à simuler une cyberattaque sur un système d'information d'entreprise, la démarche, les outils et les attaques menées sont très proches de la réalité.
Ainsi, suivre la lecture de cette mindmap vous donnera une idée de ce qui peut être tenté par les attaquants si vous n'êtes pas familier de la sécurité offensive, avec autant de points de sécurisation et de contrôle potentiels. Ce genre d'outil, fait pour les attaquants, présente l'avantage par rapport aux guides de bonnes pratiques de se baser uniquement sur actions réelles et concrètes.
Pour une personne non experte en cybersécurité, cette mindmap peut être difficile à appréhender et à comprendre dans son ensemble. Mais, l'étudier permettra cependant de retrouver, pour partie, certains des outils exposés dans cet article ou des types de faiblesses et d'attaques que les outils de globaux de scan comme PingCastle, nuclei ou nmap peuvent identifier.
L'exemple ci-dessus vous montre une partie des tests réalisés en boite noire, c'est-à-dire sans compte sur le domaine et en étant uniquement connecté au réseau interne de l'entreprise. On y retrouve bien sûr l'utilisation de l'outil nmap pour la réalisation d'une cartographie du réseau.
- Lien vers la ressource : Github - Orange Cyberdéfense AD Mindmap
B. Framework MITRE ATT&CK
Le framework ATT&CK (Adversarial Tactics, Techniques, and Common Knowledge) du MITRE est une base de connaissances des techniques d'attaque maintenue et mise à jour grâce aux observations et investigations des cyberattaques effectuées à travers le monde. Elle vise à fournir à tous un référentiel des opérations des attaquants afin de mieux les comprendre, les étudier, et s'en protéger.
Vous trouverez notamment dans cette base de données, un peu intimidante au début, de nombreuses informations sur ce qu'un attaquant est capable et susceptibles de réaliser comme attaque sur un système d'information :
Plusieurs des outils cités dans cet article utilisent notamment des références au MITRE ATT&CK et ses TTP (Tactics, Technics & Procedures, nom donné à chaque type d'attaque référencé) pour expliciter la menace que représente un défaut de configuration ou une autorisation trop permissive.
Voici un exemple de TTP, qui explicite l'attaque consiste à effectuer un brute force de mot de passe sur un compte utilisateur :
Chaque TTP contient notamment une description, des outils susceptibles d'être utilisé, des exemples de groupes de cyberattaques réels ayant utilisé cette technique par le passé et une liste de recommandation pour se protéger et détecter l'opération en question :
- Lien vers la ressource : framework MITRE ATT&CK
C. Points de contrôle Active Directory
Le référentiel de l'ANSSI sur les points de contrôle de l'Active Directory est également une très bonne ressource à connaitre pour évaluer la sécurité de son domaine.
En complément des outils d'analyse comme PingCastle et BloodHound, le contenu des recommandations proposées et leur priorisation permet d'avoir une base de travail pour analyse la sécurité de son Active Directory et expliciter certains points identifiés par les outils cités dans cet article :
Les différents points de contrôle y sont triés par priorité et accompagnés d'une recommandation pour vous orienter sur l'application des correctifs. Vous pourrez parfois faire un lien direct entre les points de contrôle PingCastle est ceux de l'ANSSI.
- Lien vers la ressource : ANSSI - Points de contrôle Active Directory
V. Conclusion
Nous avons fait le tour de ce que je considère être les principaux outils offensifs que les administrateurs système et réseau peuvent utiliser afin de prendre la température du niveau de sécurité de leur système d'information. Il en existe beaucoup d'autres, souvent plus complexes, mais maitriser ceux présentés ici vous fera certainement avancer dans le bon sens quant à la sécurité de votre système d'information et de votre domaine.
N'hésitez pas à utiliser les commentaires et le Discord pour partager votre avis ! 🙂
Xmind ne permet pas d’ouvrir les SVG.
Firefox est censé les lire, mais celui-ci est tout noir:
https://orange-cyberdefense.github.io/ocd-mindmaps/img/pentest_ad_dark_2023_02.svg
Inkscape (version Appimage) les ouvre, mais celui-ci ne contient aucun texte:
https://github.com/Orange-Cyberdefense/ocd-mindmaps/blob/main/img/pentest_ad_dark_2023_02.svg
Enregistrer la cible du lien:
https://github.com/Orange-Cyberdefense/ocd-mindmaps/blob/main/src/Pentesting_Active_directory_dark.xmind
Donne un fichier corrompu non ouvrable par Xmind…
Il faut utiliser git:
git clone https://github.com/Orange-Cyberdefense/ocd-mindmaps/
puis ouvrir le fichier
ocd-mindmaps/src/Pentesting_Active_directory_dark.xmind
Et là ça fonctionne…
Bref, il faudrait mettre à jour l’article et mettre le bon lien directement et la bonne méthode…
Merci pour ces précisions. Un fichier .xmind s’ouvre avec Xmind, une image s’ouvre avec un navigateur web ou un lecteur d’image.
Le fichier .svg est « tout noir » : il est nécessaire dézoomer, la mindmap contient énormément de détails et compresser l’image pour réduire sa taille rendrait le tout illisible. Quant au fichier .xmind, il s’ouvre très bien de mon côté (Xmind 23.11.0436 sous Ubuntu).