• Aucun résultat trouvé

A. Exemple sur l’Active Directory virtuel

Dans cette partie nous allons voir comment PingCastle et BloodHound peuvent être utiles dans le cas d’un audit. Pour cela nous avons créé un AD fictif en utilisant le script BadBlood (https://github.com/davidprowe/BadBlood) contenant environ 250 utilisateurs, 530 groupes et 270 ordinateurs.

A la différence d’un AD réel, lorsque l’on crée un environnement virtuel avec BadBlood, les groupes et les droits des utilisateurs sont faits au hasard, ce qui rend l’environnement très vulnérable, avec par exemple des imbrications de groupes permettant des élévations de privilèges. Ce scénario est tout de même très intéressant car dans la réalité, il n’est pas rare de trouver des utilisateurs avec les mauvais droits ou appartenant à plusieurs groupes à la fois, ceci résultant d’une erreur humaine. Sans action de la part des administrateurs, un AD de ce type est fortement vulnérable.

La démarche de cette démonstration est la suivante:

Réaliser un rapport avec PingCastle afin de confirmer la vulnérabilité d'imbrication de groupe.

Trouver un chemin d'attaque vers le contrôleur de domaine grâce à une analyse via BloodHound et au rapport de PingCastle.

Corriger une vulnérabilité liée à ce chemin et refaire un dump avec SharpHound afin de comparer les résultats.

Voici un extrait d'un problème relevé par PingCastle:

L’énoncé encadré en rouge fait référence au problème d’imbrication de groupe évoqué précédemment : un grand nombre d’utilisateurs se trouvent plus ou moins directement dans des groupes à privilèges élevés.

En chargeant les données de notre AD sur BloodHound grâce à l’outil SharpHound, nous pouvons visualiser le problème. Par exemple, voici les chemins d'attaque les plus courts pour un certain utilisateur, "FELECIA_VELEZ" :

Cas d'utilisation

On constate qu'une des sources principales du problème vient du fait que l'utilisateur fait partie du groupe "LU-COC-DISTLIST" qui a notamment des droits "GenericAll" et permet de modifier le mot de passe d'un administrateur du domaine.

Cas d'utilisation

Pour corriger cette erreur de configuration, nous proposons de retirer l'utilisateur de ce groupe.

Ce faisant, nous pouvons recharger les données de notre AD modifié sur BloodHound et ainsi constater qu’il existe toujours des chemins d'attaque dus à la nature aléatoire de notre AD de test, mais ils sont moins directs dans ce cas précis.

Cas d'utilisation

Nous ne relançons pas d’analyse avec PingCastle car l’utilisateur peut encore prendre le contrôle du compte administrateur du domaine. Pour résoudre complètement le problème, il faudrait réitérer la procédure précédente pour tous les utilisateurs avec tous les groupes dans lesquels ils ne sont pas censés être.

Dans ce cas d’utilisation, PingCastle nous a permis d’identifier les problèmes de sécurité et BloodHound de visualiser les relations entre objets afin de corriger les vulnérabilités liées aux chemins d’attaque.

IV. B. RETOUR D’EXPERIENCE CLIENT

Réalisé par Quentin MICHAUD

Dans le cadre d’un audit de sécurité d’une PME européenne axé sur l’analyse de son exposition à une attaque par ransomware, nous avons pu utiliser PingCastle et BloodHound sur leur AD. Cet AD contenait environ 3500 utilisateurs et 2000 groupes.

ANALYSE PINGCASTLE

Grâce à un accès RDP et à un compte AD temporaire sur l’infrastructure du client, nous avons pu lancer facilement PingCastle et obtenir énormément d’informations très utiles en quelques heures. En comptant l’analyse des résultats, une demi-journée a été suffisante pour récupérer de nombreuses informations, les trier en fonction de l’objectif visé, et approfondir les résultats de l’analyse principale afin de pouvoir être le plus précis possible lors du retour au client.

Lors de l’analyse principale, le rapport de PingCastle mettait en évidence le fait que le SMBv1 était activé sur les 2 controleurs de domaine. Ce protocole est déprécié et cible de nombreuses attaques, dont le fameux exploit EternalBlue utilisé par WannaCry. Cette vulnérabilité critique a fait l’objet d’un patch de sécurité de Microsoft (https://docs.microsoft.com/fr-fr/security-updates/SecurityBulletins/2017/ms17-010?redirectedfrom=MSDN), et ce même pour des systèmes d’exploitation non supportés (c’est dire l’ampleur de la faille), mais de nombreux systèmes restent non patchés. A ce jour, l’utilisation du protocole SMBv1 en général est déprécié et signe d’une infrastructure potentiellement vulnérable. Ce point est donc extrêment important et sera analysé plus en détails.

Cas d'utilisation

A côté de cela, PingCastle nous signale la présence de nombreux PC avec un système d’exploitation plus supporté, une autre cible de choix pour les ransomware car ces postes ne recoivent plus de mises à jour de sécurité. C’est hélas une situation courante dans de nombreuses entreprises et autres organisations qui ne souhaitent pas ou ne peuvent pas engager les sommes nécessaires pour les licences nécessaires aux mises à jour de leurs ordinateurs. De plus, cela est en assumant que les ordinateurs en question sont suffisamment récents / puissants pour accueillir les nouveaux systèmes d’exploitation en question. Sinon, leur remplacement est nécessaire pour la mise à jour du système d’exploitation, avec un coût que très peu d’entreprises peuvent se permettre.

Si la plupart des systèmes d’exploitation relevés sont des Windows 7, on relève également quelques autres OS en nombre très limité (Windows XP et 2008) ainsi que des Windows 10 non mis à jour. C’est un autre problème qui se pose alors car les Windows 10 sont censés bénéficier des mises à jour de sécurité gratuitement et le fait que certains ne soient pas mis à jour peut poser des questions sur le fonctionnement de la gestion des mises à jour des PC de l’entreprise reliés à Active Directory, qui doivent déboucher sur des discussions avec le client.

Cas d'utilisation

D’autres points importants sont également relevés par le rapport principal de PingCastle, notamment :

Mot de passe du compte KRBTGT non changé régulièrement : possibilité de persistance avancée d’un attaquant avec un golden ticket.

Politique de mots de passe faible : plus de 100 utilisateurs ont des mots de passe qui n’expirent jamais.

Les administrateurs ne sont pas dans un groupe protégé, ce qui fait que les comptes admin peuvent être « impersonate » par des comptes de service.

La dernière sauvegarde de l’AD recensée a eu lieu il y a plus d’un mois, ce qui peut poser de sérieux problèmes en cas de ransomware.

Plus d’une centaine d’objets « inactifs » (pas d’activité depuis les 6 derniers mois) dont un Domain Controller ont été détectés. Les objets inactifs sont des portes d’entrée supplémentaires non surveillées et doivent être nettoyés.

Cette liste n’est qu’une représentation rapide des points les plus importants relevés par l’analyse PingCastle dans l’optique d’une lutte contre les ransomwares. De nombreux autres problèmes et mauvaises configurations ont été relevées, ce qui montre l’utilité de PingCastle pour ce genre d’audit où des heures voire des jours auraient été nécessaires pour vérifier fastidieusement ces règles à la main, avec une grande chance de manquer plusieurs problèmes.

En plus de l’analyse principale, PingCastle permet de cartographier les relations de l’AD entre forêts et les trusts présents afin de pouvoir mieux comprendre l’environnement autour de l’AD ciblé. En plus de cela, dans le cas d’un audit approfondi, il est possible de lancer PingCastle depuis chacun des AD ou forêt (filiales, découpage par pays…) et de visualiser rapidement les résultats via cette carte.

Enfin, PingCastle permet de faire des scans approfondis pour certains problèmes. Dans notre cas, il est possible de faire une énumération complète des serveurs enregistrés sur l’AD qui utilisent SMBv1 et quelles versions sont supportées exactement. Nous avons donc remarqué que quasiment tous les serveurs et pas uniquement les DC avaient le SMBv1 activé, augmentant donc davantage l’importance du problème.

Cas d'utilisation ANALYSE BLOODHOUND

L’analyse BloodHound a été plus complexe notamment au moment du dump : le collecteur de BloodHound, SharpHound, est présent dans la plupart des bases de données antivirus et se fera immédiatement isoler et signaler. Cela a été le cas chez le client ici (ce qui a tout de même l’avantage de

« tester » le fonctionnement de l’antivirus et du SOC). A l’instant où l’archive contenant SharpHound a été décompressée, le binaire a été isolé et une alerte envoyée. Il existe également un collecteur PowerShell, mais Microsoft est devenu encore plus draconien avec les scripts PowerShell qu’avec les exécutables étrangers dus à l’augmentation du nombre d’attaques utilisant ce moyen, je suis donc resté sur le choix de l’exécutable.

Après une demande au client il a été sorti de l’isolation mais je ne pouvais pas l’exécuter. Suite à une nouvelle demande, cette fois j’ai pu exécuter le binaire mais sans options (on peut donner des options à SharpHound pour affiner son comportement via la ligne de commande).

Je me suis donc contenté d’un dump général qui a été analysé en utilisant les requêtes pré-enregistrées ainsi qu’en s’appuyant sur l’article cité précédemment (https://posts.specterops.io/bloodhound-versus-ransomware-a-defenders-guide-28147dedb73b) qui par chance traite justement de l’usage défensif de BloodHound pour lutter conte les ransomwares.

Une possibilité intéressante non présente de base dans BloodHound est de lister les plus courts chemins des PC aux systèmes d’exploitation non supportés jusqu’à des comptes à privilège. Cela permet de se rendre compte des possibilités de prise du contrôle de domaine en s’attaquant aux ordinateurs supposés les plus vulnérables, et est faisable facilement avec l’interface de BloodHound et quelques connaissances en Cypher. BloodHound possède déjà une requête listant l’ensemble des PC avec des systèmes d’exploitation plus maintenus mais dans notre cas il y a bien trop de résultats, ce qui rend l’analyse pour le moins compliquée…

On se concentre donc sur l’analyse des PC possédent un système d’exploitation Windows XP car il s’agit des plus anciens et qu’il y en a un nombre raisonnable. Pour cela, on doit utiliser Cypher. La documentation (https://neo4j.com/docs/cypher-manual/current/) est très bien faite et il peut être très utile de s’inspirer des requêtes déjà prêtes dans BloodHound en lisant son code source (https://github.com/BloodHoundAD/BloodHound/blob/0da9efe76570bdf9403c89700e87fe4666ea1209/src/

components/SearchContainer/Tabs/PrebuiltQueries.json). On arrive donc à extraire les quelques PC possédant un système d’exploitation Windows XP :

Cas d'utilisation

On a notamment accès à tous les attributs de l’objet, et on peut relever directement des informations essentielles, notamment que le PC a été utilisé récemment et le mot de passe changé, ainsi que le système d’exploitation précis : Windows XP Professionnel SP2. Cela nous indique soit que le PC en question n’a pas forcément reçu les dernières mises à jour de sécurité disponibles pour Windows XP (https://fr.wikipedia.org/wiki/Windows_XP#Service_Packs_et_mises_%C3%A0_jour). Cela augmente l’intérêt de cette cible pour un attaquant.

Cas d'utilisation

Hélas sur les trois PC disponibles, le bouton « Reachable High Values Targets » indique zéro.

Cependant il est possible d’ajouter ses cibles personnalisées en étudiant les comptes intéressants de l’AD et travailler à atteindre ces cibles-là plutôt que les comptes Administrateur par défaut. Enfin, BloodHound nous offre la possibilité de lister les comptes qui ont des droits sur les PC en question. Cela nous permet de savoir qui a pu laisser sur ce PC des documents ou autres informations auxquels nous pourrions accéder si nous parvenions à en prendre le contrôle. Ou de lancer une attaque sur un compte se connectant à ce PC pendant que nous l'avons infecté, en volant ses identifiants par exemple. Cet exemple n’est qu’un rapide aperçu de ce que nous permet de faire BloodHound en tant qu’évaluation des risques, des escalades de privilèges et des points d’entrée d’un Active Directory.

Conclusion

V. Conclusion

Ces trois différents outils sont donc assez différents pour être adaptés à trois cas d'utilisations distincts: l'audit, le pentest et la maintenance.

Pour l'audit, PingCastle est le plus adapté grâce à son rapport HTML clair, des critères basés sur ceux de l'ANSSI et ne réalise pas de dump complet de l'AD qui serait très sensible à manipuler,

contrairement aux autres.

Pour les tests d’intrusion, BloodHound, fortement orienté "Red Team" est quant à lui le plus adapté grâce à ses requêtes permettant de prendre le contrôle d'un poste administrateur.

Pour la maintenance, Saporo, le seul s'exécutant régulièrement est le plus apte à être utilisé dans cette démarche car il permet la maintenance de la sécurité d'un Active Directory sur la durée.

Quel que soit le choix retenu, il est important de retenir que les outils présentés ici ne sont pas les seuls, ni forcément les meilleurs, qui permettent d’analyser la sécurité d’un Active Directory. Si ce livre blanc essaie de donner une base d’outils pour la plupart des cas menant à l’audit d’un AD, d’autres outils (Alsid, AD control path de l’ANSSI, BloodHound Enterprise, pour ne citer qu’eux) peuvent également se révéler être de bonnes alternatives.

Annexes

VI. Annexes

VI. A. GUIDE D’UTILISATION BLOODHOUND

Prise en main de BloodHound :

Pour lancer l’application BloodHound, il faut dans un premier temps démarrer une base de données orientée graphe sur l’outil neo4j. Ensuite, pour charger les données d’un Active Directory déjà existant, il faut réaliser un dump de celui-ci et le réinjecter dans BloodHound. Pour cela, on peut utiliser l’outil Sharpound, localisé dans le répertoire Ingestors et exécutable à l’aide de la commande : SharpHound.exe -CollectionMethod All. Un fichier ZIP est alors automatiquement généré dans le même répertoire, il ne reste plus qu’à l’injecter dans BloodHound grâce au bouton upload.

Fonctionnalités et caractéristiques techniques :

BloodHound s’appuie sur la notion de graphe qui peut être résumé en trois éléments : - Les Nodes (nœuds) : ce sont globalement les objets (utilisateur, domaine, groupe…)

- Les Edges (arêtes) : ce sont les relations entre les objets (l’appartenance à un groupe, fait d’être administrateur d’un objet...)

- Les paths (chemins) : ce sont des ensembles de Nodes connectés par des Edges (ce sont des chemins qui permettent de rejoindre un objet depuis un autre).

Sur l’interface de BloodHound, en déroulant le menu sous on trouve trois boutons principaux :

- Database Info : affiche les informations de la base de données telles que son adresse, le nombre d’utilisateurs, le nombre de postes ou encore le nombre de groupes.

- Node info : lorsque l’on sélectionne un objet, ce bouton affiche l’ID de celui-ci ainsi que d’autres paramètres tels que la date de dernière mise à jour du mot de passe, la date de la dernière connexion ou encore si le compte dispose des droits admins ou non.

- Analysis : recueil des requêtes prédéfinies. Pour lancer des requêtes personnalisées, on peut utiliser la barre de recherche “Raw Queries” en bas de l’écran.

Annexes

VI. B. GUIDE D’UTILISATION PINGCASTLE

Prise en main de PingCastle :

Le fichier se télécharge depuis le site officiel : https://www.pingcastle.com/download Il suffit de lancer la commande PingCastle.exe sur l’ordinateur client.

Fonctionnalités et caractéristiques techniques :

Lorsqu’on lance la commande PingCastle.exe, un shell nous propose différents modules :

1. Healthcheck : établit un score avec les vulnérabilités découvertes. Cette fonction est la plus utilisée.

2. Permissions : permet de savoir qui peut prendre le contrôle des comptes admins, c'est un genre de réécriture de "AD_Control_Path" en plus rapide et sans le droit ni la difficulté à mettre en place.

3. Conso : Génère un rapport condensé sans explications détaillées des vulnérabilités trouvées.

Le rapport est segmenté en plusieurs onglets, avec l'ajout de la cartographie.

4. Carto : Création automatique d'une cartographie de(s) domaine(s) de confiance avec les liens directs (peut aller jusqu’à 5 niveaux de profondeur).

5. Scanner : Ce module permet de scanner différents éléments indépendants, tels que le listing des anti-virus présent sur le domaine, SBM, les partages... Il est très intéressant pour répertorier rapidement des objets.

6. Advanced : permet de modifier certains paramétrages pour obtenir un rendu personnalisé.

Cela va ensuite générer un rapport. Ce dernier s’articule en trois parties :

La première, « Indicators », permet de visualiser les « criticités » des processus par le logiciel. Chaque processus est noté sur 100 et on peut visualiser le score à l’aide d’un compteur.

Le deuxième, « Risk model », va détailler les vulnérabilités trouvées.

La troisième, détaille chaque vulnérabilité avec un texte explicatif

Le mode carto quant à lui génère une carte représentant des annuaires actifs liés par des “trusts”. Elle peut être plus ou moins précise en fonction de la fraîcheur des informations et de la profondeur des liens de confiance.

Documents relatifs