Il y a quelque temps Orange Cyber Defense a mis à disposition une excellente mindmap 1 qui propose un inventaire hyper large des techniques utilisables lors d’un pentest Active Directory (merci !) .
Dans cet article (il y en aura sûrement d’autres), nous allons nous intéresser aux premières étapes indispensables dans un test d’intrusion Active Directory ou un test d’intrusion interne en boîte noire : la reconnaissance et l’accès initial.
Et pour les courageux & courageuses, en fin d’article, on vous partage 4 techniques d’accès initial que nous utilisons lors de nos tests.
Qu’est-ce que la reconnaissance dans un test d’intrusion ?
Les méthodologies de tests d’intrusion sont unanimes, tout bon test d’intrusion commence d’abord par une phase de reconnaissance.
C’est une phase primordiale qui permet à l’auditeur, au cours de son premier contact avec la cible, d’obtenir le plus d’informations possible pour assurer la réussite des phases suivantes.
L’objectif de la phase de reconnaissance en test d’intrusion est donc d’identifier clairement :
- la cible;
- ses composants;
- ses contraintes;
- ses versions;
- les IPs, ports;
- les vulnérabilités potentielles associées à chaque service et chaque version;
- les champs et / ou vecteurs d’entrée.
En bref, en sortie de reconnaissance, on connaît la cible, et on a une idée plus claire des vulnérabilités potentielles
On pourra donc choisir intelligemment les priorités pour la phase d’exploitation.
Comment faire une bonne reconnaissance Active Directory pendant un test d’intrusion ?
Dans ce processus, il faut être en mesure de reconnaître rapidement l’ensemble des serveurs membres du domaine Active Directory et les services qu’ils fournissent.
Les rôles et services identifiables d’une forêt AD
Le service principal d’une forêt AD est le service de domaine Active Directory (Active Directory Domain Services, AD DS), le serveur qui stocke une copie de l’annuaire global du domaine
Autre service notable, le service Active Directory Certificate Server, le rôle/serveur qui fait office d’autorité de certification et de fournisseur de certificats pour les membres.
On trouvera aussi souvent dans une entreprise des serveurs de partage de fichiers, de serveurs d’impressions, des Terminals Servers ( bureau à distance), des serveurs de fédération .
Les ports et protocoles spécifiques à l’Active Directory
Voici les ports notables communément identifiés :
Proto/port(s) | Service | Commentaire |
tcp/3268 TCP/389 tcp/636 | LDAP | Serveur d’annuaire LDAP (AD DS) |
tcp/88 | Kerberos | AD-DS |
tcp 3268 tcp/3269 | Global Catalog | AD-DS |
udp/138 tcp/139 tcp/udp/137 | Netbios | |
tcp/445 | SMB | |
tcp/3389 | RDP | |
udp/123 | NTP |
Sur un serveur de certificat, on trouvera aussi les ports 80 et 443 ouverts.
On pourra parfois trouver des ports spécifiques comme le port TCP/49443 sur un serveur ADFS…
Quelques outils utilisés pour la reconnaissances durant nos audits
Pour une bonne reconnaissance (active), on commencera par un scan du réseau et des ports.
Nmap, hping, Rustscan
Arrivent ensuite les tools utilisés pour scanner des services.
On pourrait, bien sûr, utiliser les scripts NSE de Nmap, mais on vous propose ici des outils spécifiques.
NBtscan
qui va effectuer un scan via netbios pour identifier les hôtes disponibles, leurs noms, domaines, versions etc…
Netexec ou Crackmapexec
Comment parler de compromission Active Directory sans mentionner Crackmapexec et son successeur NetExec ?
Ces outils sont des couteaux suisses qui regroupent tout un tas de fonctions utiles (merci Impacket)
Dig ou nslookup
Eh oui dans un AD, il y un DNS…. et il y a surtout certains noms de domaine prévisibles2 :
Entrée DNS | Description |
_ldap._tcp.gc._msdcs.NomDeDomaine | Global Catalogue |
_kerberos._tcp.NomDeDomaine | kerberos (DC) |
_gc._tcp.NomDeSite._sites.NomDeDomaine | Global Catalogue |
La reconnaissance accomplie, tentons maintenant d’obtenir un accès initial.
Pentest Active Directory : obtenir un accès initial
Dans un test d’intrusion en boîte noire, obtenir un premier niveau d’accès dans une forêt AD est la première tâche et la plus importante.
En effet, sans accès (même à faibles privilèges), il sera quasi impossible d’aller obtenir le « Holy Grail » : les privilèges Administrateurs du domaine.
Mais avant, de nous lancer, petit point définition :).
Dans un environnement AD, les condensats ou hash de mot de passe ont quasiment la même valeur qu’un mot de passe en clair. C’est pourquoi il faut savoir les reconnaître pour les (ré)utiliser dans le bon contexte.
Hash nt, lm, ntlm, ntlm v2 ?
D’abord un premier point NTLM (New Technology Lan Manager) est un protocole utilisé pour l’authentification en environnement Microsoft.
Bien que son utilisation ne soit plus recommandée, on le rencontre encore souvent.
NTLM permet une authentification sans transfert de connaissance, et s‘appuie pour cela sur des condensats ou hash.
NTHash
Souvent appelé hash NTLM, ce condensat est le format de stockage des mots de passe dans la base SAM, et dans la base NTDS.
Contrairement à ce que le “nom” indique, le format est le suivant :
HashLM : Hash NT
En pratique, sur une machine récente, seul le hash NT nous intéressera.
Net-NTLMv1
Le hash au format net-ntlm-v1 parfois appelé net-ntlm ou encore par abus de langage hash ntlmv1 sont le résultat de l’authentification réseau en 3 étapes par le protocole NTLM.
Un challenge est envoyé en clair du serveur vers le client. La réponse est le challenge chiffre avec la hash NT de l’utilisateur qui tente de s’authentifier.
Le chiffrement étant « faible », il est possible de retrouver de hash NT original, et donc tente le Pass The Hash..
Net-NTLMv2
Cette fois, c’est la seconde version du protocole disponible depuis Window 2000 qui est utilisé.
Cette version corrige les erreurs de la version 1 en utilisant une HMAC MD5 plutôt que DES rendant le crack plus complexe.
Plus important, les nouvelles sécurités du protocole empêchent les attaques de type Pass The Hash sur le hash Net-NTLMv2.
Quelques techniques pour obtenir un accès initial
Dans un AD, les chemins de compromissions sont nombreux et complexes (comme le montre la mind-map).
Sans chercher à être exhaustif, voici quelques techniques pour obtenir ses premiers credentials, et donc, un accès initial durant vos tests d’intrusion Active Directory.
Null Session , compte invité, accès non authentifié
Il arrive parfois que certain domaine/forêt/serveur autorise les Null Session, les connexions sans authentification.
C’est un mécanisme de Microsoft tout à fait légitime dont un auditeur pourra abuser pour obtenir des informations, voir des accès.
Dans la même idée, je classe également les services SMB publiques ou sans authentification. On les retrouve souvent pour pallier des incompatibilités logicielles avec des équipements ou services non compatibles AD ou avec les chiffrements récents.
Pas de compte à proprement parler ici, mais souvent des données, des infos, et, selon les Rules Of Engagement, de quoi tendre des pièges via ingénierie sociale.
Man in the Middle
On va utiliser ici des faiblesses dans la protection des flux et protection réseau pour obtenir des accès.
Souvent en entreprise, les applications tierces utilisent la base Active Directory pour limiter les duplications de comptes pour les utilisateurs. Pour cela, les administrateurs/dev s’appuient souvent sur… LDAP.
L’utilisation de LDAP et non LDAP-S fait transiter en clair les flux sur le réseau.
Lors d’un test d’intrusion, on peut obtenir des credentials en redirigeant et écoutant le trafic.
Sans rentrer dans les détails, plusieurs options existent :
- ARP Poisonning
- ARP Flooding
- IPv6 RA
- DNS/DHCP spoofing
Empoisonnement LLMNR (LLMNR Poisonning)
LLMNR pour Link Local Multicast Network Resolution est un protocole dont le rôle initial est de remplacer DNS dans les environnements sans DNS.
Il fonctionne (comme son nom l’indique) en multicast, en demandant à ses voisins s’ils connaissent l’IP associée à un nom de domaine.
En empoisonnant les réponses, on peut obtenir du client qu’il s’authentifie auprès d’un serveur piégé (le nôtre) et nous transmette des condensats de mots de passe.
La technique peut être combinée avec d’autres pour augmenter sa portée et ses impacts
On obtient donc selon les cas :
- des accès via des hash Net-NTLMv1;
- des hash Net-NTLMv2 à cracker (si possible);
- des authentifications en clair pour des services annexes.
SMB Relay
Autre technique, le relai SMB consiste à rejouer des échanges SMB afin d’obtenir des accès sans avoir à connaitre les mots de passe initiaux.
Par diverses techniques, on va réaliser des empoisonnements qui vont nous permettre de nous placer en relais des échanges (légitimes) entre un client SMB et un serveur de fichier.
On va simplement se « glisser derrière » ses requêtes afin d’obtenir un accès aux fichiers, voir, si le compte victime est administrateur du poste, obtenir un dump de la base SAM et parfois LSA présente sur le serveur.
Conclusion
Difficile d’être exhaustif ou même synthétique sur un sujet aussi large.
Mais vous avez ici des informations, des techniques, des outils essentiels et indispensables pour vos pentest Active Directory.
Vu le nombre de bonnes ressources pour approfondir les techniques de test d’intrusion AD, on ne va pas se lancer dans une énumération…
Dans la seconde partie, on explorera des chemins de compromissions et l’escalade de privilèges vers des rôles Admin de l’entreprise ou du domaine.
D’ici là, si vous avez des commentaires, des remarques, des compléments… n’hésitez pas à nous en faire part.