C’est la rentrée pour les vulnérabilités Zero-day, avec une faille dans le moteur de rendu HTML de Microsoft. Le point sur la vulnérabilité critique CVE-2021-40444, avec l’équipe Stormshield Customer Security Lab.
Le contexte de la vulnérabilité Microsoft CVE-2021-40444
Microsoft a communiqué ce mardi 7 septembre autour d'une vulnérabilité Zero-day critique permettant l’exécution de code arbitraire à distance (CVE-2021-40444, score CVSS 8.8) concernant son moteur de rendu internet MSHTML, utilisé par des programmes comme Internet Explorer. Même si ce navigateur a été majoritairement remplacé par Microsoft Edge, il reste encore présent sur les systèmes modernes et quelques programmes continuent de l’utiliser.
Puisque la vulnérabilité Microsoft Zero-day se situe dans le module MSHTML qui peut être utilisé par n’importe quelle application souhaitant faire un affichage de page Web, elle peut être exploitée par un document Office (Excel, PowerPoint, Word…) malveillant comportant une référence sur une page Web. Certains groupes de cyber-criminels utilisent déjà cette vulnérabilité pour propager des ransomwares.
Le vecteur initial de la vulnérabilité Microsoft CVE-2021-40444
L’attaque est réalisée grâce à une référence sur une page Web dissimulée dans un document Office (par exemple .docx), propagé généralement par e-mail. La vulnérabilité, exploitée lorsque l’utilisateur ouvre le document, permet d’exécuter du code arbitraire.
Pour ouvrir le document, Microsoft Word doit télécharger la page Web distante référencée dans le document. Une fois le document ouvert, le contenu Web est instancié et exécuté au sein d’un composant ActiveX MSHTML dans Microsoft Word. Un comportement normal et légitime jusqu’ici. Le code Javascript télécharge alors la charge virale (généralement un ransomware) sous forme d’un fichier CAB contenant un fichier DLL, puis déclenche sa décompression grâce à un composant HTML « <object> ». Le script exploite ensuite la vulnérabilité CVE-2021-40444 en changeant l’URL du composant MSHTML sur une chaine très particulière qui permet in-fine le chargement du fichier DLL dans « rundll32.exe ».
Le fichier DLL se retrouve exécuté avec les privilèges de l’utilisateur local et la machine est alors compromise. À ce stade, nos équipes ne constatent pas d’élévation de privilèges au cours de l’attaque.
La vulnérabilité Microsoft concerne 42 versions de Windows, de Windows 7 SP1 (32 ou 64 bits) à Windows 10 (1809).
Les détails techniques de la vulnérabilité Microsoft CVE-2021-40444
Fonctionnement de l’exploitation de la vulnérabilité CVE-2021-40444
Dans le principe d’attaque global, l’attaquant envoie un e-mail contenant le document malveillant à sa cible en espérant que l’utilisateur l’ouvre dans la suite Microsoft Office. Dans l’exemple, nous partirons du principe que c’est Microsoft Word 2007+ qui ouvre le document.
L’exploitation, dans le cas du malware en cours d’utilisation, se déroule ainsi :
-
- Microsoft Word précharge le document et constate que le document contient une référence vers un fichier .html sur un serveur Web. Word instancie un composant ActiveX de rendu Web « MSHTML » et lui demande de pointer sur l’URL cible.
- Word, au travers du composant ActiveX, télécharge le document HTML.
- Le serveur Web cible est contrôlé par l’attaquant et ne fait que délivrer une ressource HTML. Cette page Web contient du code Javascript obfusqué qui s’exécute au sein du composant ActiveX de Word. Ce code instancie N composants ActiveX MSHTML au sein de la page Web.
- Il demande le téléchargement du payload final sous forme de fichier CAB via XmlHttpRequest. Ceci est possible car le moteur d’Internet Explorer ne prend pas en charge les restrictions Cross-Origin.
- Le serveur Web délivre un fichier CAB contenant le payload final au format DLL. Le nom du fichier est « inf». L’extension n’est pas « .DLL » afin de ne pas alerter les EDR et le CAB précise que le fichier se trouve dans un répertoire « .. ». Ce détail a son importance pour la suite car les éléments sont stockés en cache dans un sous répertoire aléatoire non maitrisé par l’attaquant. La référence relative « .. » permettra de revenir au répertoire parent et s’affranchir de ce caractère non maitrisé.
- Le code Javascript poursuit son exécution en instanciant un élément HTML « object » en lui donnant en référence le fichier CAB, ce qui provoque son extraction dans « ../championship.inf». Ceci est un comportement légitime qui était largement utilisé du temps de Flash Player dans les années 2000. À noter que comme le fichier CAB a été précédemment téléchargé, il se trouve dans le cache local.
- Le code Javascript se sert des N composants ActiveX précédemment instanciés et positionne leur « document.URL » sur cette URL : « .cpl :123». Ceci ne sert pas mais on constate déjà à ce moment que le composant ActiveX, ne sachant pas ouvrir les fichiers « .cpl », transfère le contrôle au programme associé : « exe » :
Le programme « control.exe » a la particularité de se comporter en passe-plat sur « rundll32.exe » et on retrouve cette ligne de commande : « "C:\WINDOWS\system32\rundll32.exe" Shell32.dll,Control_RunDLL ".cpl:123" » :
Une autre particularité est que « rundll32.exe », avec cette chaine en paramètre, est capable de charger le fichier « 123 ».
Ce principe est ensuite largement exploité par le code Javascript puisqu’il utilise ses N composants ActiveX précédemment instanciés pour les envoyer sur les URL suivantes :
Cela provoque N tentatives de chargement du fichier DLL à divers emplacements possibles, en espérant qu’au moins un sera le bon.
Ce fonctionnement aboutit au lancement du fichier et à la compromission du poste.
IoC de la vulnérabilité CVE-2021-40444
Nom de domaine :
- Hidusi[.]com
- joxinu[.]com
- dodefoh[.]com
- pawevi[.]com
- sagoge[.]com
- comecal[.]com
- rexagi[.]com
- macuwuf[.]com
URI :
- /e8c76295a5f9acb7
- /e273caf2ca371919
- /94cc140dcee6068a
- /e32c8df2cf6b7a16
Header http :
- ETag: "18f1-5caee365a20d1"
- ETag: "20b060-5caee369535c1"
Hash de fichiers .docx :
- d0e1f97dbe2d0af9342e64d460527b088d85f96d38b1d1d4aa610c0987dca745
- a5f55361eff96ff070818640d417d2c822f9ae1cdd7e8fa0db943f37f6494db9
- 199b9e9a7533431731fbb08ff19d437de1de6533f3ebbffc1e13eeffaa4fd455
- 938545f7bbe40738908a95da8cdeabb2a11ce2ca36b0f6a74deda9378d380a52
- 3bddb2e1a85a9e06b9f9021ad301fdcde33e197225ae1676b8c6d0b416193ecf
- 5b85dbe49b8bc1e65e01414a0508329dc41dc13c92c08a4f14c71e3044b06185
- 1fb13a158aff3d258b8f62fe211fabeed03f0763b2acadbccad9e8e39969ea00
Dlls (beacon Cobalstrike) :
- 6eedf45cb91f6762de4e35e36bcb03e5ad60ce9ac5a08caeb7eda035cd74762b
Autres :
- Letter before court 4.docx
- html
- cab
- inf
Les moyens de protection fournis par Stormshield face à la vulnérabilité Microsoft CVE-2021-40444
Protection avec Stormshield Network Security
Les protections SNS sont réalisées via l’IPS et trois nouvelles signatures :
- http:client:header.214 détecte les tentatives de connexions vers les différents C2 en fonctions des Hosts et des URLs fournis à ce jour dans les IOCs ;
- http:server:header.46 et http:server.6détectent et bloquent le téléchargement des fichiers cab connus à ce jour.
Indice de confiance de la protection proposée par Stormshield
Indice de confiance de l’absence de faux positif
Protection avec Stormshield Endpoint Security
Les solutions SES (7.2 et Evolution) proposent deux règles permettant de protéger de l’exploitation de la vulnérabilité CVE-2021-40444 :
- La première agit sur la création du processus control.exe par la suite Office (Word, Excel, PowerPoint, WordPad) ;
- La seconde restreint les capacités de chargement ou d’accès aux DLL jscript*.dll par la suite Office ce qui permet de bloquer le schéma d’attaque correspondant à la vulnérabilité.
Indice de confiance de la protection proposée par Stormshield
Indice de confiance de l’absence de faux positif
Recommandations face à la vulnérabilité Microsoft CVE-2021-40444
Voici ci-dessous les recommandations qui ne concernent pas les produits Stormshield :
- Désactivez l’exécution d’ActiveX par la suite Office via les GPO ;
- Désactivez la prévisualisation dans Microsoft Explorer (Shell Preview).