Qu’est-ce que Zerologon ?

Zerologon est :

Une vulnérabilité dans la cryptographie du processus Netlogon de Microsoft qui permet aux pirates informatiques d'attaquer les contrôleurs de domaine Microsoft Active Directory, et ainsi de se faire passer pour un autre ordinateur, y compris le contrôleur de domaine racine.

Zerologon

Zerologon est le nom qui a été donné à une vulnérabilité identifiée dans CVE-2020-1472. Elle tire son nom de la faille dans le processus de connexion, à cause de laquelle le vecteur d’initialisation (IV) est défini sur des zéros en permanence, alors qu’il devrait toujours être un chiffre aléatoire.

La gravité de cette dangereuse vulnérabilité a été notée 10 sur 10 (CVSS v3.1) par le Common Vulnerability Scoring System (CVSS). Il existe des exploits de preuve de concept (POC) actifs connus. Il est très probable que nous assistions bientôt à des attaques dans le monde réel.

La Cybersecurity and Infrastructure Security Agency a émis une directive d’urgence, ordonnant aux agences fédérales civiles de créer immédiatement un correctif ou de désactiver tous les serveurs Windows affectés, et a indiqué aux organisations non gouvernementales d’en faire de même.

Microsoft a publié un premier correctif en août 2020, qui doit être appliqué à tous les contrôleurs de domaine.

Cette vulnérabilité exploite un défaut cryptographique dans le protocole Active Directory Netlogon Remote Protocol de Microsoft (MS-NRPC), qui permet aux utilisateurs de se connecter à des serveurs qui utilisent NTLM (NT LAN Manager). Le principal problème avec cette vulnérabilité est que le MS-NRPC est également utilisé pour transmettre certaines modifications de compte, comme les mots de passe de compte de service informatique. Si l’on repense à cette origine, on peut voir la logique qui sous-tend l’ajout de cette fonction, mais l’absence de validation dans la source de la demande de modification de ces mots de passe est devenue un problème de sécurité important.

Il y a pire encore. Le chiffrement qui a été ajouté au MS-NRPC n’a pas été choisi judicieusement. En 1883, Auguste Kerckhoffs, cryptologue néerlandais, a publié deux essais intitulés  La Cryptographie Militaire, qui expose les six principes essentiels liés à la conception de systèmes cryptographiques. Le plus connu d’entre eux, le principe de Kerckhoffs, indique que nous devons garder le secret sur notre clé cryptographique, mais que nous ne devons pas nous appuyer sur le caractère secret de l’algorithme pour protéger nos données. En d'autres termes, dans notre monde actuel, nous devons utiliser des algorithmes connus, testés et éprouvés.

L’algorithme utilisé à l’origine pour chiffrer le processus de connexion dans Windows NT était 2DES, dont nous savons à présent qu'il comporte des problèmes. Aujourd'hui, le MS-NRPC utilise l’Advanced Encryption Standard (AES), considéré comme la référence du chiffrement. En plus de choisir un algorithme solide et éprouvé, il convient de sélectionner d'autres paramètres pour assurer la résistance adéquate. Le MS-NRPC utilise un paramètre obscur nommé AES-CFB8 (Advanced Encryption Standard – Cipher Feed Back 8 bit). L’AES-CFB8 est obscur, car il n’est pas bien connu ni bien testé. L’utilisation de l’AES-CFB8 avec le MS-NRPC comporte un problème au niveau du vecteur d’initialisation, qui doit être un nombre aléatoire, mais que le MS-NRPC a fixé à une valeur de 16 octets de zéros. Cette valeur est tout sauf aléatoire. Elle est prévisible. La prévisibilité est souvent nuisible en cryptographie.

Comment nous connaissons cette vulnérabilité

Cette vulnérabilité a été annoncée en septembre 2020 par Tom Tervoort, un chercheur néerlandais travaillant pour Secura. Un correctif a été publié pour corriger la vulnérabilité en août, mais ce n’est que lorsque le chercheur a publié son rapport en septembre que nous avons commencé à voir des POC et autres activités, après les détails du document de M. Tervoort sur sa découverte et le processus qui y a mené. Au cours de ses recherches, il a remarqué un manque important d’informations sur le MS-NRPC. Intrigué, M. Tervoort a cherché d'autres informations. 

Il cherchait initialement une attaque de l'homme du milieu, mais a finalement découvert une autre vulnérabilité détaillée dans le CVE-2020-1424. En poursuivant ses recherches, il a identifié ce que l’on connaît désormais sous le nom de Zerologon. La partie essentielle de sa découverte est que Microsoft a mis en place une variante de cryptographie unique, qui est différente de tous les autres protocoles RPC. À l’époque de Windows NT, les comptes attribués à un ordinateur n’étaient pas identifiés en tant que principal de première classe. Microsoft ne pouvait donc pas utiliser le protocole Kerberos ou NTLM standardisé pour authentifier des comptes d’ordinateur ou de machine. Les développeurs ont donc créé une alternative. Il est extrêmement difficile de créer du code et des protocoles de chiffrement indéchiffrables. Le délai avant que les failles ne soient découvertes est même incroyablement long, comme dans le cas présent.

Comment l'attaque fonctionne

Cette vulnérabilité permet à un pirate informatique de prendre le contrôle d’un contrôle de domaine (DC), comprenant le DC racine.  Pour cela, il modifie ou supprime le mot de passe d’un compte de service sur le contrôleur. Le pirate peut ensuite causer simplement un déni de service ou s’emparer de la totalité du réseau.

Pour pouvoir exploiter cette vulnérabilité, les attaquants doivent être en mesure de configurer une session TCP dans un DC.  S’ils sont physiquement à l’intérieur du réseau, ils peuvent être au bureau d’un utilisateur ou connectés à un port ouvert, dans une salle de conférence par exemple. Ces exploits sont qualifiés d’attaques d’initié, les plus chères pour une entreprise actuellement. Ils peuvent être établis depuis l’extérieur du réseau. Il leur suffit d’avoir un point d’entrée, quel qu’il soit, pour établir la session TCP avec le contrôleur.

En utilisant l’AES-CFB8 avec un IV fixe de 16 octets de zéros, Tervoort a découvert qu’il existait une probabilité qu’une clé sur 256 crée du texte chiffré ne comportant que des zéros. Cette probabilité est bien trop élevée face à un attaquant qui essaie de chiffrer du texte ne comportant que des zéros. L'ordinateur du pirate informatique n’aurait besoin que de 2 à 3 secondes, au maximum, pour y parvenir. 

Alors, pourquoi est-ce important ?

Si la machine qui communique avec un DC appartient à un utilisateur qui se livre à ses activités habituelles, aucun problème ne se pose. Le texte chiffré est mal conçu, mais le processus d’authentification réseau fonctionne. Le problème ne survient que lorsqu’un pirate informatique essaie d’exploiter le système.

Dans l’attaque prouvée par M. Tervoort, le pirate informatique doit d'abord usurper les informations d’authentification, ou le mot de passe, d’un client sur le réseau. En raison de la mauvaise implémentation de l’IV dans le MS-NRPC, il ne faut qu’environ 256 tentatives pour réussir. En général, le compte d’un utilisateur se verrouille après trois tentatives de saisie de mot de passe, mais cela n’est pas le cas pour le compte d’un ordinateur ou d'une machine. Lorsqu’un ordinateur se connecte, aucune limite n’est définie sur le nombre de tentatives de saisie de mot de passe, ce qui permet d’effectuer une salve de tentatives en continu sur une courte durée, pour permettre aux pirates d’entrer. Ils doivent trouver l’une des clés qui produit un texte de chiffrement composé uniquement de zéros.

Que peuvent faire les pirates une fois qu’ils ont usurpé l’identité d’un ordinateur sur le réseau ? Une fois cette première étape d’usurpation d’une identité accomplie, l’attaquant ne connaît pas la clé de chiffrement réelle de la session. Les attaquants n’ont pu usurper leur identité qu’en tombant sur l’une des 256 clés qui produit un texte de chiffrement composé uniquement de zéros. L'étape suivante consiste à désactiver le « signing et sealing ».

Le signing et sealing RPC est le mécanisme utilisé pour transporter le chiffrement dans le MS-NRPC. Le processus paraît logique, car nous devons chiffrer davantage de nos données en transit, mais dans le MS-NRPC, cette fonction est optionnelle ; pour la désactiver, il suffit de ne pas définir d’indicateur dans l’en-tête d’un message. Une fois le signing et sealing désactivé, les messages sont envoyés en clair. Les pirates peuvent ainsi agir comme ils le souhaitent, notamment en supprimant un mot de passe ou en modifiant sa valeur. Microsoft publiera un correctif en février 2021 pour rendre le signing et sealing obligatoire.

La troisième étape consiste à modifier le mot de passe du compte victime de l’usurpation. L'appareil le plus efficace à usurper serait un serveur AD, de préférence le serveur AD racine. Pour modifier le mot de passe, les attaquants utilisent le message NetServerPasswordSet2 dans MS-NRPC. Il est possible de modifier un mot de passe en envoyant simplement le cadre avec le nouveau mot de passe préféré. L'approche la plus simple consiste à supprimer le mot de passe ou à lui attribuer une valeur vide :  le pirate peut alors se connecter grâce à un processus normal. 

Si l'attaque cible un ordinateur aléatoire sur le réseau, cet ordinateur ne peut pas se connecter. La première conséquence de cette attaque est donc simplement une attaque par déni de service contre cet ordinateur.

Impact global

Aujourd’hui, plusieurs exploits PoC publics sont disponibles. Si les serveurs AD n’ont pas reçu de correctif, les entreprises peuvent subir des dégâts importants, car l’attaque peut être utilisée pour injecter des ransomwares dans un réseau. 

Des outils permettent de vérifier si vos serveurs sont à risque. M. Tervoort et Secura ont publié un outil sur GitHub permettant de vérifier que vos contrôleurs de domaine sont dotés de correctifs, ou de déterminer s’ils sont vulnérables.

Le correctif pour CVE-2020-1472

En août 2020, Microsoft a publié un correctif pour le CVE-2020-1472 (Zerologon). Tous les serveurs AD (2008 R2 et versions supérieures) doivent être dotés de correctifs dès que possible. Mais le délai moyen entre la publication d'un correctif et son déploiement reste trop long. Selon les chercheurs, dans une organisation moyenne, il faut entre 60 et 150 jours (environ 5 mois) après la publication d’un correctif pour qu'il soit enfin installé. C’est ce que l’on appelle le délai moyen d'application de correctif, ou Mean Time to Patch (MTTP). 

De plus, malheureusement, le nouveau correctif ne corrige que la moitié du problème. Microsoft publiera la deuxième phase du correctif, qui comprendra la phase de mise en œuvre, le 9 février 2021. Tous les appareils devront utiliser le mode de canal sécurisé ; dans le cas contraire, l'accès leur sera refusé. Les éventuels appareils non conformes plus anciens devront être ajoutés manuellement à une politique de groupe, qui autorise explicitement l'accès à des appareils non conformes.

Correctifs virtuels

Le correctif publié n'apportant qu’une partie de la solution, d'autres étapes intermédiaires doivent être suivies afin de protéger votre réseau, vos appareils et vos données. L’une de ces mesures de protection consiste à confirmer que la vulnérabilité existe. Il existe trois outils de ce type, l’un étant fourni par Secura et M. Tervoort, déjà disponible pour détecter les vulnérabilités Zerologon sur des serveurs AD.

Il convient toujours d'appliquer des mesures de sécurité traditionnelles pour surveiller les comptes et les réseaux compromis, le trafic malveillant, et d'autres indicateurs de compromission. Les systèmes de détection et de prévention des intrusions et les logiciels antimalware pour les appareils du réseau et hôtes (tous les endpoints), permettant de surveiller les ransomware, les virus et autres menaces, sont essentiels. Les journaux doivent être collectés, centralisés et analysés par un SIEM (Security Information & Event Manager). Une fois les journaux analysés, des personnes et processus doivent être en place pour réagir aux indicateurs de compromission (IoC). Puis, une équipe de réaction aux incidents possédant des procédures et connaissances solides doit prendre la relève, pour déterminer l'étendue de la compromission et la résoudre.

On trouve également l’idée plus récente de l'application de correctifs virtuels : une mesure de sécurité contre les menaces qui exploitent les vulnérabilités connues et inconnues. Le programme Zero Day Initiative (ZDI) de Trend Micro permet de protéger les clients 81 jours avant même la publication d’un correctif, grâce à la mise en œuvre de couches de politiques et de règles de sécurité qui évitent et interceptent les vulnérabilités telles que Zerologon. 

Sujets sur Zerologon