Active Directory, le point névralgique de l'authentification
Dans les deux premières parties, vous avez vu les attaques qui pouvaient exister sur votre système d'information et comment sécuriser l'architecture et le réseau pour mieux s'en protéger.
La protection uniquement au niveau réseau n'est pas suffisante, car certains services sont exposés par nature. C'est le cas d'Active Directory, qui est le point névralgique qui gère l'authentification sur les différents systèmes et les différentes applications. Active Directory est d'ailleurs utilisé pour gérer l'authentification au-delà du monde Microsoft ! En effet, des connecteurs LDAP ou Radius permettent de s'y référer pour authentifier les utilisateurs qui se connectent sous Linux, des équipements réseau ou encore divers progiciels et applications.
Un compte Active Directory devient alors le Sésame sur toute l'infrastructure du système d'information.
Les attaquants ne s'y sont pas trompés. Lorsqu'ils arrivent à mettre un premier pied sur le réseau, leur objectif devient de compromettre l'ensemble du domaine Active Directory. C'est ce que nous avons vu dans la première partie de ce cours en ce qui concerne les APT (Advanced Persistent Threat). La phase de propagation latérale de l'attaquant a pour but de récupérer des données d'authentification d'un compte privilégié sur le domaine, ce qui permet ensuite de compromettre un contrôleur de domaine et obtenir ainsi les données d'authentification de tous les utilisateurs.
Allez du mot de passe à son empreinte
Pour comprendre l'authentification sous Windows, deux notions sont essentielles :
le stockage du mot de passe,
l'utilisation de la donnée d'authentification pour s'authentifier localement ou à distance.
Le stockage du mot de passe
Sous Windows, les comptes sont stockés soit dans la base locale d'un poste ou d'un serveur, c'est le cas par exemple de l'administrateur local, soit dans la base de comptes du domaine. Dans les deux cas, ils ne sont pas stockés en clair, mais sous forme d'empreinte (hash). Deux formats existent, LM et NTLM :
LM est le format historique. Les mots de passe sont limités à 14 caractères, sur un alphabet restreint (pas de caractères Unicode). LM repose sur un algorithme DES ancien et faible. Le calcul de l'empreinte ne se fait même pas sur toute la longueur du mot de passe. Ce dernier est décomposé en deux portions de 7 caractères (voire une portion plus courte pour les mots de passe qui ne font pas 14 caractères), ce qui facilite le travail d'un attaquant. Bref, LM est facile à casser ! Ce format n'est plus utilisé dans les bases de comptes des Windows récent, à partir de Windows 2008, même si les empreintes LM peuvent toujours s'y retrouver en mémoire.
NTLM est un format plus récent. Même si peu d'utilisateurs vont jusque là, les mots de passe peuvent aller jusqu'à 255 caractères Unicode. L'algorithme sur lequel repose le calcul de l'empreinte NTLM est MD4 et il est plus robuste.
Dans le cas de LM, comme NTLM, il n'y a pas de « graine » (salt) dans le calcul de l'empreinte. En comparaison, sous Linux, quelques caractères sont choisis aléatoirement et ajoutés au mot de passe avant d'en calculer l'empreinte. Il en résulte qu'un même mot de passe donnera des empreintes différentes. Le fait que ce ne soit pas le cas sous Windows permet aux attaquants de créer des tables de pré-calcul, appelées aussi pour certaines des Rainbow Tables. Lorsqu'il récupère une empreinte de mot de passe, l'attaquant n'aura pas besoin de la casser par brute-force, il n'aura plus qu'à rechercher la correspondance dans la table de pré-calcul !
L'authentification à distance
4 méthodes d'authentification à distance existent sous Windows : LM, NTLM, NTLM2 et NTLMv2. Tous les 4 fonctionnent par défi-réponse.
Lorsque le client fait une demande de connexion au serveur, ce dernier lui envoie un « défi », une chaîne de caractères générée aléatoirement.
Le client prend l'empreinte du mot de passe, y concatène le défi et calcule une nouvelle empreinte. Le défi permet d'éviter le rejeu dans le cas où un attaquant intercepte l'échange réseau. Dans le cas de l'authentification à distance LM, le client prend l'empreinte de mot de passe LM. Dans le cas de l'authentification à distance NTLM, NTLM2 ou NTLMv2, il prend l'empreinte de mot de passe NTLM. Dans le cas de NTLM2 et NTLMv2, le client génère aussi un défi, ce qui renforce la protection contre le rejeu et le Man-in-the-Middle, c'est à dire quand l'attaquant se place entre le client et le serveur et intercepte ou modifie les échanges réseau.
L'empreinte du défi concaténé à l'empreinte du mot de passe donne une réponse que le client transmet au serveur. Le serveur calcule de son côté la même chose, c'est à dire l'empreinte du défi plus l'empreinte du mot de passe de l'utilisateur telle qu'il l'a consignée dans sa base de compte. Il compare le calcul côté client au calcul côté serveur et s'ils correspondent, cela prouve que le client connaît l'empreinte du mot de passe sans n'avoir jamais transmis le mot de passe en clair !
Le calcul de l'empreinte du défi plus de l'empreinte de mot de passe repose sur DES à la fois pour LM, NTLM et NTLM2. DES n'est pas très robuste. Dans le cas de NTLMv2, un algorithme plus robuste est utilisé, HMAC-MD5. Vous verrez d'ailleurs dans la partie 4 comment renforcer la sécurité des systèmes pour qu'ils n'autorisent que NTLMv2.
En résumé
Deux méthodes d'empreinte de mots de passe existent, LM et NTLM. Vous devez éviter le stockage d'empreintes LM.
La méthode d'authentificationà distance par défi-réponse permet au client de prouver qu'il dispose de l'empreinte de mot de passe sans jamais envoyer le mot de passe en clair.
NTLMv2 est la méthode la plus robuste d'authentification à distance.