Thomas le moteur du hack à vitesse maximale sur les pistes de l'IPT
Vendredi 31 mai, nous avons été invités à un atelier Active Directory au Bureau Veritas Cybersecurity. Dans ce billet, nous allons parler de notre expérience et de ce que nous avons appris.
L'atelier a été donné par Max Rozendaal et Thomas "the hacking engine" Oldengram. Ils ont commencé par une courte présentation, après quoi nous avons été plongés dans le bain.
Active Directory ? Qu'est-ce que c'est ?
Active Directory (AD) est un service développé par Microsoft qui vous permet de gérer l'accès aux comptes et aux appareils sur un réseau. Il utilise des contrôleurs de domaine (DC) pour gérer cette fonctionnalité. Un contrôleur de domaine est un serveur qui répond aux demandes d'authentification de sécurité au sein du réseau, telles que la connexion, l'accès aux ressources et la validation des autorisations.
Dans l'environnement Active Directory, les domaines possèdent une collection d'objets Active Directory, tels que des utilisateurs, des groupes, des ordinateurs et d'autres ressources. Un groupe de domaines dans un tel environnement est appelé un arbre, et un ensemble d'arbres est appelé une forêt.
Laconfiance est un mécanisme permettant aux utilisateurs d'accéder aux ressources d'un autre domaine. La confiance peut être établie de trois manières :
- confiance unidirectionnelle
- Confiance bilatérale (par défaut)
- La confiance transitive, qui étend la confiance à d'autres domaines.
Configuration du laboratoire
L'atelier de piratage s'est articulé autour d'un "Game Of Active Directory" (GOAD), développé par Mayfly277 et disponible ici : https://github.com/Orange-Cyberdefense/GOAD
Nous avons été informés de l'existence de deux domaines pertinents :
- DC01 : 192.168.56.10 (sevenkingdoms.local)
- DC02 : 192.168.56.11 (winterfell.north.sevenkingdoms.local)
Notre jumpserver était 13.94.204.183, auquel nous avons pu accéder via SSH.
Ce billet contient des spoilers pour certains des défis "Game Of Active Directory" développés par Mayfly277.
Entrer dans le royaume d'Active Directory : NULL sessions !
Pour le premier défi, nous devions compromettre autant de comptes que possible en pulvérisant les mots de passe des comptes présents dans notre environnement Active Directory. Pour ce faire, nous avons essayé de déterminer quels comptes étaient associés aux domaines. On nous a demandé de commencer par le domaine winterfell.north.sevenkingdoms.local. Nous pouvons nous connecter avec une session NULL (une session sans nom d'utilisateur ni mot de passe) et énumérer les utilisateurs du domaine.
Comme nous pouvons le voir, Samwell Tarly a dans sa description le mot de passe "Heartbane", donc nous allons faire une pulvérisation de mot de passe en utilisant ce mot de passe.
Nous commençons par créer une liste des utilisateurs à l'aide de la commande suivante :
nxc smb 192.168.56.11 -u '' -p '' --users | awk '{ print $5 }' users.txt
Nous utilisons ensuite cette liste pour pulvériser le mot de passe :
Nous constatons que nous obtenons bien un login pour l'utilisateur Samwell Tarley. Il arrive que plusieurs utilisateurs du domaine utilisent le même mot de passe. Malheureusement, Samwell Tarley est le seul à utiliser le mot de passe Heartbane, ce n'est donc pas le cas pour nous.
Mais ce n'est pas tout ! Max et Thomas nous ont informés que des mots de passe peu sûrs sont souvent utilisés pour les comptes. Les mots de passe les plus courants sont la saison avec l'année, le nom de l'entreprise ou le nom du compte. Nous avons donc procédé à une vérification des mots de passe des utilisateurs du domaine susmentionné en utilisant le mot de passe de leur nom d'utilisateur comme mot de passe. Et nous avons réussi à obtenir une correspondance pour l'utilisateur hodor.
Terreur des certificats
Le deuxième défi consistait à devenir administrateur de domaine en demandant un certificat pour un tel compte. Nous avons déjà trouvé deux comptes pour winterfell.north.sevenkingdoms.local, mais pour gagner du temps, on nous a également donné un compte pour le domaine sevenkingdoms.local: Renly.Baratheon:lorastyrell.
Nous avons utilisé la commande suivante pour trouver les configurations vulnérables des services de certificats Active Directory en utilisant les identifiants de renly.baratheon :
user@ubuntu-jumpbox:~$ certipy find -vulnerable -u renly.baratheon -p lorastyrell -dc-ip 192.168.56.10 -stdout
Dans la sortie de cette commande, nous avons obtenu le nom du modèle et l'autorité de certification :
Nom du modèle : ESC1 Nom d'affichage : ESC1 Autorités de certification : SEVENKINGDOMS-CA
L'étape suivante consiste à demander un certificat pour le compte ADMINISTRATOR, qui est un compte du domaine SEVENKINGDOMS.LOCAL que nous avons trouvé à l'aide de bloodhound.
user@ubuntu-jumpbox:~$ certipy req -u renly.baratheon @SEVENKINGDOMS.LOCAL -p lorastyrell -target-ip 192.168.56.10 -ca SEVENKINGDOMS-CA -template ESC1 -upn ADMINISTRATOR@SEVENKINGDOMS.LOCAL Certipy v4.8.2 - par Oliver Lyak (ly4k) [*] Requesting certificate via RPC [*] Successfully requested certificate [*] Request ID is 22 [*] Got certificate with UPN 'ADMINISTRATOR@SEVENKINGDOMS.LOCAL' [*] Certificate has no object SID [*] Saved certificate and private key to 'administrator.pfx'
Ensuite, nous obtenons le hachage du mot de passe pour le compte administrateur.
Et nous y sommes ! Yeey !
Dernières réflexions
Nous tenons à remercier Max et Thomas pour cet atelier extraordinaire. C'était génial d'entendre de leur bouche comment ils utilisent les attaques Active Directory pour s'introduire dans les serveurs de leurs clients. Il était particulièrement intéressant d'entendre de leur bouche comment la Red Team utilise les comptes AD pour faire beaucoup plus de dégâts que ce que nous pensions possible auparavant. Par exemple, ils ont parlé de la façon dont les mots de passe AD sont parfois utilisés en dehors d'un environnement AD, ce qui leur permet de prendre le contrôle d'autres services qui, à première vue, semblent déconnectés de leur réseau.
Dans l'ensemble, nous avons passé un très bon moment et nous espérons participer à un autre atelier prochainement.
Lisanne et Michel