Mimikatz est un outil de pointe de post-exploitation qui est capable de décharger les mots de passe de la mémoire, mais aussi les hash, les codes PIN et les tickets pour le protocole d'identification réseau Kerberos. Il permet également de mener d'autres types d'attaques utiles comme les attaques dites « pass-the-hash » ou « pass-the-ticket » ou de développer des tickets Golden Kerberos. Pour les attaquants, ces capacités facilitent un déplacement latéral post-exploitation au sein d'un réseau. Décrit par son auteur français Benjamin Delpy comme « un petit outil pour jouer avec la sécurité Windows », Mimikatz est en réalité un outil de sécurité offensive terriblement efficace. Il est utilisé aussi bien par les testeurs d'intrusion que par les développeurs de malwares. Le malware destructif 2017 NotPetya exploitant une faille EternalBlue connue de la NSA s'était appuyé sur Mimikatz pour faire le maximum de dégâts.

Conçu à l'origine comme un projet de recherche par Benjamin Delpy pour mieux comprendre la sécurité Windows, Mimikatz inclut également un module qui décharge le démineur de la mémoire de Windows et indique où se trouvent toutes les mines dispersées dans le champ de mines. Mimikatz n'est pas difficile à utiliser et la version v1 est disponible en tant que script Meterpreter dans Metasploit. Au moment de la rédaction de cet article, la nouvelle mise à jour Mimikatz v2 n'avait pas encore été intégrée à Metasploit. Le nom « mimikatz » vient de l'argot français « mimi » qui signifie mignon, et « katz », qui veut dire chat. (À noter que Benjamin Delpy alimente le blog de Mimikatz.)

Comment fonctionne Mimikatz ?

Mimikatz exploite la fonctionnalité Single Sign-on (SSO) de Windows pour récupérer des informations d'identification. Jusqu'à la version 10 de Windows, l'OS de Microsoft utilisait par défaut une fonction appelée WDigest pour charger les mots de passe cryptés en mémoire, mais aussi la clé secrète pour les décrypter. WDigest était utile pour authentifier les nombreux utilisateurs d'un réseau d'entreprise ou autre organisation, mais il permettait aussi à Mimikatz de vider la mémoire et d'en extraire les mots de passe. En 2013, à partir de Windows 8.1, Microsoft a permis de désactiver la fonction et celle-ci est désormais désactivée par défaut dans Windows 10. Cependant, Windows est toujours livré avec WDigest, et un attaquant qui parvient à obtenir des privilèges d'administration peut l'activer simplement et exécuter Mimikatz. Pire encore, compte tenu du nombre de vieilles machines tournant encore dans le monde avec d'anciennes versions de Windows, le pouvoir de nuisance de Mimikatz est toujours aussi élevé et ce sera probablement le cas pendant de nombreuses années encore.

Succès rapide auprès des chercheurs en sécurité

C'est en 2011 que Benjamin Delpy a découvert la faille de WDigest dans l'authentification Windows, mais Microsoft l'a supprimé après qu'il ait signalé la vulnérabilité. En réponse, il a créé Mimikatz - écrit en C - et il a diffusé son binaire sur Internet. Rapidement, l'outil a eu beaucoup de succès auprès des chercheurs en sécurité, mais aussi, et ce n'était pas prévu, auprès d'autorités gouvernementales partout dans le monde, motivant sans doute la publication du code source sur GitHub. Presque immédiatement, Mimikatz a été adopté par des attaquants soutenus par des états, le premier cas connu étant le piratage en 2011 de l'ancienne autorité de certification néerlandaise DigiNotar, qui a fait faillite à la suite de cette intrusion. Les attaquants ont émis de faux certificats au nom de Google et les ont utilisés pour espionner les comptes Gmail de plusieurs centaines de milliers d'utilisateurs iraniens. Depuis, l'outil de sécurité a été utilisé par les auteurs de malware pour automatiser la propagation de leurs vers. C'est notamment ce qui s'est passé avec l'attaque NotPetya mentionnée plus haut et l'épidémie de ransomware BadRabbit de 2017. Il est fort probable que Mimikatz restera pendant de nombreuses années un outil de sécurité offensif efficace sur les plates-formes Windows.

Se défendre contre Mimikatz

Il est difficile de se défendre quand l'outil de post-exploitation est exploité par un attaquant. Étant donné que l'attaquant a besoin d'un accès root dans Windows pour utiliser Mimikatz, il y a peu de parades possibles à ce stade. La défense consiste donc à contenir les dégâts et à limiter le carnage qui en résulterait. Il est possible d'empêcher un tant soit peu un attaquant disposant de privilèges d'administration d'accéder aux informations d'identification en mémoire à l'aide de Mimikatz. Et l'effort en vaut la peine. Le plus important consiste à limiter les privilèges d'administration aux seuls utilisateurs qui en ont réellement besoin.

Déjà, la mise à niveau vers Windows 10 ou 8.1 est un bon début et atténuera le risque qu'un attaquant utilise Mimikatz contre ces systèmes plus récents. Souvent, il n'y aura pas d'autre choix que de procéder à cette mise à jour. Une autre stratégie éprouvée pour atténuer le risque consiste à renforcer le service d'autorité locale (LSA) pour empêcher l'injection de code. La désactivation des privilèges de débogage (SeDebugPrivilege) peut également avoir une efficacité, même si elle est limitée, car Mimikatz utilise des outils de débogage intégrés à Windows pour vider la mémoire. Autre option : désactiver WDigest manuellement sur les anciennes versions non corrigées de Windows pour ralentir un attaquant pendant une minute ou deux... ce qui vaut quand même la peine.

L'usage du LSASS en mode protégé rendra Mimikatz inefficace

Malheureusement, les entreprises se limitent souvent à un seul mot de passe d'administration. Or il est important de s'assurer que chaque boîte Windows possède son propre mot de passe administrateur unique. Enfin, sous Windows 8.1 et au-delà, l'usage du Local Security Authority Subsystem Service (LSASS) en mode protégé rendra Mimikatz inefficace. La détection de la présence et de l'utilisation de Mimikatz sur un réseau d'entreprise n'est pas non plus une panacée, le taux de succès des solutions de détection automatisée actuelles n'étant pas très élevé. La meilleure défense est probablement de contrer l'outil par une bonne attaque... avec l'outil : testez régulièrement vos propres systèmes avec Mimikatz et maintenez une activité de surveillance humaine réelle sur votre réseau.