Overpass-the-hash est en réalité une combinaison de deux autres attaques, à savoir les attaques pass-the-hash et pass-the-ticket. Les trois techniques relèvent de la catégorie Mitre « Exploitation of remote services » (exploitation des services distants).
Lors d’une attaque overpass-the-hash, un adversaire tire profit du hachage NTLM d’un compte d’utilisateur pour obtenir un ticket Kerberos qui lui permet d’accéder aux ressources réseau. Si vous avez besoin d’une authentification Kerberos pour atteindre votre objectif et que vous n’arrivez pas à vous procurer un mot de passe d’un compte en texte en clair, cette technique peut s’avérer pratique. Elle permet de réaliser des actions sur des serveurs locaux ou distants. Les outils les plus courants pour mener ce type d’attaque sont Mimikatz et Rubeus.
Sélection de contenu connexe :
Comment fonctionne une attaque overpass-the-hash
Étape 1. Obtenez le hachage du mot de passe d’un compte d’utilisateur.
La première étape est identique à celle d’une attaque pass-the-hash : il s’agit d’obtenir le hachage NTLM du mot de passe (hachage NT) du compte d’utilisateur que vous souhaitez compromettre. Pour cela, nous utiliserons l’outil Mimikatz :
Privilege::debug Sekurlsa::logonpasswords
Étape 2. Réalisez une attaque overpass-the-hash.
À l’aide du hachage NTLM, nous pouvons mener une attaque overpass-the-hash :
Sekurlsa::pth /user:[USER] /domain:[DOMAIN] /ntlm:[NTLM HASH]
Une fois dépassé le stade de l’obtention du hachage du mot de passe de l’utilisateur, le hachage NTLM a été ajouté au package d’authentification Kerberos grâce à la clé de chiffrement RC4. Cela est rendu possible par la possibilité qu’offre Microsoft de créer des jetons Kerberos dont le chiffrement RC4/HMAC-MD5 est basé sur le hachage NTLM. Il s’agit d’une fonctionnalité prise en charge principalement pour des raisons de compatibilité descendante, mais qui peut être également exploitée. Vous avez uniquement besoin du hachage NTLM d’un compte d’utilisateur pour créer un ticket Kerberos dont le niveau de sécurité est minimal. Pour plus d’informations, consultez le billet de blog de Benjamin Delpy.
Options alternatives pour réaliser une attaque overpass-the-hash
Il est également possible de créer des tickets Kerberos en utilisant d’autres informations à propos d’un utilisateur, notamment ses clés AES. Mimikatz vous permet de les extraire de deux manières différentes. La commande DCSync retourne ces informations pour n’importe quel utilisateur du domaine si vous disposez des autorisations nécessaires dans l’Active Directory. Sinon, vous pouvez également utiliser la commande sekurlsa::ekeys sur votre système local.
Lsadump::dcsync /user:[USER] /domain:[DOMAIN]
Une fois l’accès aux clés AES de l’utilisateur obtenu, nous pouvons en faire une utilisation malveillante sans élévation de privilèges.
Nous pouvons ensuite exécuter une commande pass-the-hash pour permettre l’injection de la clé AES dans le ticket Kerberos. Ce qui rend la détection plus difficile en raison de l’utilisation de clés de chiffrement plus sécurisées et plus couramment utilisées.
Sekurlsa::pth /user:[USER] /domain:[DOMAIN] /aes256:[AES256 KEY]
Nous pouvons maintenant nous authentifier en utilisant ce compte d’utilisateur. Si nous exécutons la commande klist, nous devrions voir les tickets Kerberos et le chiffrement AES256 qu’ils utilisent pour l’authentification :
Comment détecter une attaque overpass-the-hash
Grâce aux techniques de détection pass-the-hash
La manière la plus efficace de détecter une attaque pirate overpass-the-hash reste d’appliquer la même stratégie que pour la détection d’une attaque pass-the-hash. Vérifiez le journal des événements et la signature suivante dans chaque point de terminaison d’authentification :
- ID d’événement 4624 (type d’ouverture de session = 9), Package d’authentification = Négocier, et Processus d’ouverture de session = Seclogo
- Accès au processus LSASS, ID d’événement 10 System Monitor (Sysmon)
Si vous observez la présence de ces deux événements en même temps, il s’agit soit d’une attaque pass-the-hash soit d’une attaque overpass-the-hash. En effet, le processus d’injection d’informations d’authentification NTLM et de tickets Kerberos dans une nouvelle session est une caractéristique commune aux deux attaques. En revanche, il n’existe aucune manière d’identifier dans les points de terminaison les informations qui ont été ajoutées à la commande pass-the-hash à partir des journaux des événements.
Comment les administrateurs peuvent-ils donc faire la différence entre les deux attaques ? L’activité d’authentification sur le contrôleur de domaine est essentiellement ce qui permet de détecter une attaque overpass-the-hash : le journal des événements affiche les entrées liées à l’authentification Kerberos, et n’inclut aucune activité d’authentification NTLM. Comparons le journal des événements respectif de chaque attaque (les différences sont en gras) :
Journal d’activité d’une attaque Pass-the-hash
Hôte Source | Hôte Cible | Contrôleur De Domaine |
---|---|---|
4648 — Tentative d’ouverture de session en utilisant des informations d’identification explicites. | 4624 — L’ouverture de session d’un compte s’est correctement déroulée.
Type d’ouverture de session : 3, NTLM |
4776 — L’ordinateur a tenté de valider les informations d’identification d’un compte. |
4624 — L’ouverture de session d’un compte s’est correctement déroulée. (Type d’ouverture de session = 9, Processus d’ouverture de session = Seclogo) | 4672 — Privilèges spéciaux assignés à la nouvelle session. | |
4672 — Privilèges spéciaux assignés à la nouvelle session. (Utilisateur connecté, dont l’identité n’est pas empruntée) |
Journal d’activité d’une attaque overpass-the-hash
Hôte Source | Target Host | Domain Controller |
---|---|---|
4648 — Tentative d’ouverture de session en utilisant des informations d’identification explicites | 4624 — L’ouverture de session d’un compte s’est correctement déroulée. (Type d’ouverture de session = 3, Processus d’ouverture de session = Kerberos, Package d’authentification = Kerberos) | 4768 — Un ticket d’authentification Kerberos (TGT) a été demandé. (Type de chiffrement : RC4/AES128/AES256) |
4624 — L’ouverture de session d’un compte s’est correctement déroulée. (Type d’ouverture de session = 9, Processus d’ouverture de session = Seclogo) | 4672 — Privilèges spéciaux assignés à la nouvelle session | 4769 — Un ticket de service Kerberos a été demandé. (Type de chiffrement : RC4/AES128/AES256) |
4672 — Privilèges spéciaux assignés à la nouvelle session. (Utilisateur connecté, dont l’identité n’est pas empruntée) |
Il est intéressant d’observer la présence du type de chiffrement des tickets sur le contrôleur de domaine : 0x17 (RC4), 0x11 (AES128) et 0x12 (AES256). Toutefois, comme nous l’avons vu précédemment, cette technique de détection n’est pas fiable puisque lorsqu’un attaquant crée un ticket, il peut tout à fait spécifier une partie ou l’ensemble de ces paramètres.
En résumé, la meilleure méthode de détection consiste à vérifier l’ID d’événement 4624 des points de terminaison (type d’ouverture de session = 9) et l’ID d’événement 10 System Monitor (Sysmon). Nous pouvons ensuite contrôler les journaux d’activité du contrôleur de domaine et chercher l’ID d’événement 4776 correspondant à l’utilisateur (pass-the-hash) ou les ID d’événements 4768/4769 (overpass-the-hash).
Utilisation des techniques de détection pass-the-ticket
La méthode de détection présentée dans notre tutoriel sur l’attaque pass-the-ticket se révèle également utile dans ce cas précis. Il s’agit de contrôler les sessions d’utilisateurs et les tickets Kerberos leur étant liés. Si un ticket existe et ne correspond pas à l’utilisateur de la session active, nous avons affaire à une attaque par injection.
L’avantage avec une attaque overpass-the-hash, c’est que l’événement 4624 est généré sur le point de terminaison dont la valeur correspondant au type d’ouverture de session est égale à 9 : c’est ici que se trouve l’ID de session de la nouvelle session:
Nous observons qu’il existe une nouvelle ouverture de session pour l’utilisateur Michael. Nous pouvons exécuter la commande klist -li pour vérifier tous les tickets Kerberos associés à cet ID d’ouverture de session. Cela nous permet dans ce cas d’afficher les tickets de l’utilisateur compromis :
Conclusion
Les stratégies que nous avons détaillées ci-dessus ne sont que quelques méthodes parmi d’autres pour détecter les attaques overpass-the-hash et les techniques de mouvement latéral au sein de votre réseau. Elles nécessitent en général la collecte et le contrôle des journaux d’événements, ainsi que l’exécution de scripts de diagnostic sur chaque point de terminaison et contrôleur de domaine. Pour une stratégie complète de détection, de prévention et de réponse aux attaques de l’Active Directory, jetez un coup d’œil à notre solution de Sécurité Active Directory de Netwrix.
FAQ
Qu’est-ce qu’une attaque overpass-the-hash ?
Overpass-the-hash est une attaque qui permet à un adversaire de passer le hachage NTLM d’un compte d’utilisateur dans le package d’authentification Kerberos. Il s’agit d’une combinaison de deux techniques, pass-the-hash et pass-the-ticket.
Comment détecter les attaques overpass-the-hash ?
La meilleure méthode pour détecter cette attaque consiste à vérifier l’ID d’événement 4624 des points de terminaison (type d’ouverture de session = 9). Contrôler l’ID d’événement 10 System Monitor (Sysmon) réduira également le nombre de faux positifs.
Qu’est-ce qu’un hachage de mot de passe NTLM ?
Le protocole d’authentification NTLM est basé sur le hachage de mot de passe, une fonction qui permet de créer une chaîne de texte à partir d’un mot de passe en texte en clair. C’est ce qu’on appelle le hachage de mot de passe NTLM.