Vous avez maintenant connaissance des machines présentes sur le parc informatique, des services proposés par ces différentes machines, et potentiellement des vulnérabilités que vous pourrez exploiter pour commencer votre phase de compromission. Pour compléter cette reconnaissance, il est primordial de découvrir l’environnement Active Directory.
Identifiez le domaine Active Directory
Active Directory est une solution proposée par Microsoft pour la gestion d’un système d’information. Il est primordial d’analyser comment cette solution a été implémentée et configurée, pour préparer votre plan d’attaque. Active Directory évolue avec le temps, donc déterminer la version utilisée vous permet de connaître les fonctionnalités et mécanismes de sécurité présents dans la version implémentée dans l’entreprise.
L’utilitaire ldapsearch (page du manuel Idapsearch) permet d’effectuer des requêtes vers un serveur LDAP, et dans votre cas, il permet de demander anonymement à un contrôleur de domaine des informations sur le domaine.
$ ldapsearch -x -H ldap://dc01.medic.ex -s base -LLL
domainFunctionality: 7
forestFunctionality: 7
domainControllerFunctionality: 7
rootDomainNamingContext: DC=medic,DC=ex
[...]
subschemaSubentry: CN=Aggregate,CN=Schema,CN=Configuration,DC=medic,DC=ex
dnsHostName: DC01.medic.ex
[...]
Il est possible de fournir l’adresse IP d’un contrôleur de domaine plutôt que le nom de machine dans la ligne de commande.
Beaucoup d’informations sont retournées par le contrôleur de domaine, notamment le niveau fonctionnel du domaine (domainFunctionality), de la forêt (forestFunctionality) et du contrôleur de domaine (domainControllerFunctionality). Voici la table de correspondance permettant de savoir à quelle version d’Active Directory vous avez affaire.
Vous connaissez également le nom du contrôleur de domaine que vous avez sollicité grâce à l’entrée dnsHostName, DC01 dans cet exemple.
Enfin, l’entrée rootDomainNamingContext vous indique le nom du domaine racine de la forêt. Il se peut qu’il soit similaire au domaine que vous auditez, ce qui signifie que vous êtes dans le domaine racine. Il y a de grandes chances pour que ce soit alors le seul domaine de la forêt.
Découvrez les serveurs clés
Toujours dans la phase de découverte d’informations, énumérer les serveurs clés vous sera très utile pour préparer vos attaques. En effet, ces serveurs sont des cibles idéales puisqu’ils contiennent des données sensibles ou confidentielles, et que leur compromission vous permettra de bien avancer dans votre attaque.
Ainsi, les serveurs que vous allez tenter d’inventorier sont les contrôleurs de domaine, les autorités racine de certification ou encore les serveurs DNS.
Pour énumérer l’ensemble des contrôleurs de domaine, l’utilitaire nslookup sera d’une grande aide. Vous allez chercher les enregistrements DNS ayant en sous-domaine _kerberos._tcp
, qui est propre aux contrôleurs de domaine.
$ nslookup -type=SRV _kerberos._tcp.medic.ex
Server: 10.10.10.2
Address: 10.10.10.2#53
_kerberos._tcp.medic.ex service = 0 100 88 dc01.medic.ex.
Dans votre environnement, il y a un contrôleur de domaine, DC01.
Si vous n’avez pas connaissance du nom de domaine, vous pouvez effectuer un scan nmap pour découvrir les serveurs avec le port 88 ouvert. Ce port est spécifique à Kerberos, donc aux contrôleurs de domaine.
nmap -p 88 10.10.10.0/24
En ce qui concerne les autorités de certification racine, vous pouvez les énumérer avec l’outil Certipy de la manière suivante :
$ certipy find 'medic.ex/pixis:P4ssw0rd@dc01.medic.ex'
Enfin, pour les serveurs DNS, l’utilitaire nslookup peut à nouveau être utilisé. Le nom du domaine est passé en paramètre, et l’outil retournera le nom des serveurs DNS qui font autorité :
$ nslookup medic.ex
Server: 10.10.10.2
Address: 10.10.10.2#53
Name: medic.ex
Address: 10.10.10.2
Ces commandes vous permettent de répertorier ces serveurs structurant dans un Active Directory. Avoir cette liste vous permettra de faciliter les phases d’exploitation. Pensez à bien les consigner dans vos notes ! Croyez-moi, c’est du temps gagné, parce que chercher les noms ou les adresses IP des contrôleurs de domaine à chaque fois qu’une commande doit être passée, c’est très chronophage !
Découvrez les serveurs d’intérêt
Les serveurs clés sont ceux qui permettent à un environnement Active Directory de fonctionner dans de bonnes conditions. Sur ce socle, il peut y avoir beaucoup d’autres services utilisés par les entreprises. Parmi ces services, certains vous intéressent plus particulièrement.
Je vais vous présenter ceux que je recherche lors de mes tests d’intrusion pendant ma phase d’inventaire, car leur compromission permet très régulièrement de récolter des informations sensibles, ou de pivoter sur d’autres réseaux ou serveurs du domaine.
Serveurs d’impression
Les premiers serveurs d’intérêt sont les serveurs d’impression. D’une part, tout ce qui est imprimé peut être intéressant pour vous, donc si l’imprimante contient un historique des impressions, elle sera une cible de choix. D’autre part, une imprimante est très souvent enregistrée auprès de l’Active Directory afin d’avoir connaissance de l’ensemble des collaborateurs. Si vous la compromettez, vous aurez de grandes chances de découvrir les informations d’authentification de l’imprimante.
Pour chercher les imprimantes sur le réseau, l’outil nmap peut être utilisé en scannant les ports classiques propres aux imprimantes.
nmap -p 9100,515,631 10.10.10.0/24
Serveurs SCCM
SCCM (System Center Configuration Manager) est une solution proposée par Microsoft, qui permet notamment de gérer les applications et mises à jour d’un parc. Parmi ses nombreuses fonctionnalités, SCCM permet de déployer des applications, des mises à jour, des configurations d’applications ou de services, et permet aussi d’avoir un inventaire du parc informatique. Pour que cela soit possible, SCCM doit avoir également une vue dégagée du réseau, et possède souvent des droits privilégiés sur les machines administrées. Si vous arrivez à prendre la main sur un serveur SCCM, vous pourrez découvrir de nouveaux sous-réseaux, et potentiellement compromettre de nouveaux postes.
L’outil python SCCMHunter peut être utilisé lors d’un pentest pour découvrir la présence de serveurs SCCM à l’aide de la commande find.
python sccmhunter.py find -u pixis -p P4ssw0rd -d medic.ex
Serveurs WSUS
Les serveurs WSUS (Windows Server Update Services) permettent aux administrateurs de déployer des mises à jour Microsoft sur l’ensemble des machines du parc. De par leur rôle, ces serveurs ont très souvent une visibilité complète sur l’ensemble du réseau. Compromettre un serveur WSUS vous permettra alors de rebondir sur le reste du réseau aisément.
Cartographiez les partages réseau
Un autre élément que je vous conseille de cartographier, ce sont les partages réseau. Ils contiennent très souvent des informations extrêmement sensibles pour l’entreprise. C’est très souvent via ces partages que l’ensemble des collaborateurs échangent des documents.
Vous pouvez y trouver des secrets commerciaux, des informations personnelles, des données précises sur les projets de l’entreprise, ou encore des identifiants d’utilisateurs. Ces données vous seront très utiles pour les phases suivantes de votre plan d’attaque.
Les partages réseau sous Windows utilisent le protocole SMB pour les échanges de fichiers. Ce service est en écoute sur le port 445. Ainsi, pour trouver les partages sur le réseau, vous pouvez scanner le port 445 sur les différentes machines que vous avez déjà découvertes. L’outil CrackMapExec est un outil open source qui vous permet d'interagir de nombreuses manières avec vos cibles, en utilisant entre autres le protocole SMB. Cet outil permet notamment de faire cette recherche de partages réseau. Il s’utilise de la manière suivante :
$ cme smb 10.10.10.0/24 -u pixis -p P4ssw0rd -d medic.ex --shares
SMB 10.10.10.2 445 DC01 [*] Windows 10.0 Build 20348 x64 (name:DC01) (domain:medic.ex) (signing:False) (SMBv1:False)
SMB 10.10.10.2 445 DC01 [+] medic.ex\pixis:P4ssw0rd
SMB 10.10.10.2 445 DC01 [*] Enumerated shares
SMB 10.10.10.2 445 DC01 Share Permissions Remark
SMB 10.10.10.2 445 DC01 ----- ----------- ------
SMB 10.10.10.2 445 DC01 ADMIN$ Administration à distance
SMB 10.10.10.2 445 DC01 C$ Partage par défaut
SMB 10.10.10.2 445 DC01 IPC$ READ IPC distant
SMB 10.10.10.2 445 DC01 IT
SMB 10.10.10.2 445 DC01 NETLOGON READ Partage de serveur d'accŠs
SMB 10.10.10.2 445 DC01 Privé
SMB 10.10.10.2 445 DC01 Production
SMB 10.10.10.2 445 DC01 Publique READ
SMB 10.10.10.2 445 DC01 Recherche et Développement
SMB 10.10.10.2 445 DC01 SYSVOL READ Partage de serveur d'accŠs
Vous recevez ainsi la liste des partages réseau ouverts, et vous savez si vous y avez accès en lecture et/ou écriture, grâce à la colonne “Permissions”.
En résumé
Des informations sur le domaine peuvent être récoltées sans identifiants préalables.
Les serveurs clés de l’entreprise peuvent être identifiés pour mieux maîtriser l’environnement :
les contrôleurs de domaine ;
les serveurs DNS ;
les autorités de certification racine.
Des serveurs d’intérêt peuvent présenter des points d’entrée ou des rebonds intéressants :
serveurs d’impression ;
serveurs SCCM ;
serveurs WSUS ;
serveurs SCOM.
La cartographie des partages réseau permettra de chercher des informations sensibles ou confidentielles.
Ces premières informations vous permettent d’avoir une vision un peu plus claire sur les machines qui vous entourent et les points d’entrée potentiels. Vous pouvez maintenant aller plus loin et découvrir l’environnement Active Directory.