by Bhabesh Raj Rai, Security Research
Le 27 mai 2022, un expert en sécurité a mis en évidence un document malveillant soumis à VirusTotal depuis la Biélorussie. Le document utilisait la fonctionnalité ‘remote template’ de Microsoft Office pour télécharger un fichier HTML à distance, puis le charger, ce qui exécutait une charge virale PowerShell via le MSDT (Microsoft Support Diagnostic Tool). Les adversaires capables d’exploiter la vulnérabilité avec succès peuvent exécuter du code arbitraire avec les privilèges de l’application appelante. Microsoft était déjà informé de l’utilisation de la faille sur le terrain en avril dernier mais ne considérait pas cette faille comme un véritable problème de sécurité.
L’analyse du document malveillant a révélé une vulnérabilité « zero-day », surnommée Follina, dans le protocole URL MSDT de Windows. Les applications Office peuvent exécuter virtuellement du code PowerShell par proxy via le schéma d’URL ms-msdt. Un schéma d’URL est une spécification qui relie des URL à des applications spécifiques. Par exemple, un utilisateur qui clique sur un schéma d’URL (par exemple, slack://) ouvrira l’application correspondante (Slack).
Trois jours plus tard, Microsoft a publié la faille CVE-2022-30190, avec un score CVSS de 7,8 sur 10, et a émis les conseils correspondants. La vulnérabilité est similaire à une autre RCE zero-day (CVE-2021-40444) dans Microsoft MSHTML. Les experts en sécurité ont découvert que l’exploit était utilisé depuis avril dernier.
Les administrateurs doivent garder à l’esprit que cette vulnérabilité ne repose pas sur des macros, de sorte que son exploitation ne dépend pas de la désactivation ou non de ces dernières.
La vulnérabilité est véritablement dangereuse car un adversaire peut simplement utiliser sa version RTF pour contourner ‘Protected View’ et ‘Application Guard pour Office’ car Windows ouvre automatiquement le fichier RTF via le volet de prévisualisation de l’Explorateur Windows.
Plusieurs PoC fonctionnels sont accessibles au public. Les experts en sécurité ont découvert que les versions RTF fonctionnaient même sur la dernière version d’Office 365. Dans un cas, l’adversaire a utilisé Follina pour diffuser une charge virale Cobalt Strike.
Follina en bref
- Microsoft n’a publié aucun correctif pour traiter cette faille zero-day.
- Microsoft Support Diagnostic Tool (MSDT) existe sur chaque installation Windows par défaut.
- La faille se trouve dans MSDT, et il existe d’autres méthodes que Microsoft Office pour l’exploiter.
- La version RTF contourne ‘Protected View’ et ‘Application Guard pour Office’.
- L’une des meilleures méthodes de mitigation consiste à désactiver le volet de prévisualisation dans l’Explorateur Windows.
Sources de log nécessaires
- Windows
Détecter l’exploitation avec Logpoint
Les analystes doivent rechercher la génération du processus MSDT par les applications Office. Pour réduire les faux positifs (le cas échéant), nous pouvons rechercher de manière plus approfondie l’utilisation du schéma ms-msdt, comme indiqué ci-dessous.
label="Process" label=Create
parent_process IN ["*\winword.exe", "*\excel.exe", "*\outlook.exe"]
"process"="*\msdt.exe" command IN ["* ms-msdt:/id *", "* ms-msdt:-id *"] command="*IT_RebrowseForFile=*IT_BrowseForFile=*"
| chart count() by host, user, parent_process, "process", command, parent_command
Recherche d’artefacts Follina dans les événements de création de processus
Microsoft Defender a une règle de réduction de la surface d’attaque (ASR : Attack Surface Reduction) qui empêche les applications Office de générer des processus enfants. Si les administrateurs ont activé la règle ASR, ils peuvent rechercher les déclencheurs de la règle ASR spécifique.
norm_id=WinServer label=Attack label=Surface label=Reduce
involved_file="*IT_RebrowseForFile=*IT_BrowseForFile=*"
rule_id IN ["D4F940AB-401B-4EFC-AADC-AD5F3C50688A", "26190899-1602-49e8-8b27-eb1d0a1ce869"]
| process eval("rule=if(rule_id == 'D4F940AB-401B-4EFC-AADC-AD5F3C50688A')
{ return 'Block all Office applications from creating child processes'}")
| process eval("rule=if(rule_id == '26190899-1602-49E8-8B27-EB1D0A1CE869')
{ return 'Block Office communication application from creating child processes'}")
| chart count() by host, user, rule, "process", involved_file, path
Recherche d’artefacts Follina dans les événements déclencheurs de l’ASR de Microsoft Defender
MMicrosoft a publié des signatures pour Defender afin de détecter Follina. Les administrateurs doivent s’assurer qu’ils transmettent bien les événements de Defender (Microsoft-Windows-Windows Defender/Operational) à Logpoint.
norm_id=WinServer label=Threat label=Detect
threat IN "Trojan:Win32/Mesdetty.A", "Trojan:Win32/Mesdetty.B", "Behavior:Win32/MesdettyLaunch.A", "Behavior:Win32/MesdettyLaunch.B", "Behavior:Win32/MesdettyLaunch.C"
MSDT utilise sdiagnhost.exe (Scripted Diagnostics Native Host) pour diriger les exécutions. Nous conseillons aux analystes de surveiller les processus enfants suspects de sdiagnhost.exe. Pour réduire les faux positifs, ils peuvent avoir besoin de mettre certains processus légitimes dans la liste d’autorisation.
label="Process" label=Create parent_process="*\sdiagnhost.exe"
"process" IN ["*\cmd.exe", "*\powershell.exe", "*\powershell_ise.exe", "*\wscript.exe", "*\cscript.exe", "*\rundll32.exe", "*\regsvr32.exe"]
| chart count() by host, user, "process", parent_command, command
Recherche de processus enfants suspects de sdiagnhost.exe
Côté réseau, les analystes peuvent traquer la récupération de fichiers HTML par les applications Office en recherchant la présence de leur user-agent dans les événements réseau.
device_category IN [Firewall, ProxyServer, IDS] url="*.html"
user_agent="*; ms-office; *" request_method=GET
Recherche des user-agents de l’application Office dans les événements HTTP
Mitigations pour empêcher l’exploitation de Follina
Étant donné qu’aucun correctif n’est disponible, nous conseillons vivement aux administrateurs d’évaluer et de mettre en place les mesures de mitigation suivantes pour empêcher l’exploitation de Follina :
- Désactivez le protocole URL MSDT via le registre.
- Désactivez le volet de prévisualisation dans l’Explorateur Windows.
- Configurez la règle ASR pour empêcher les applications office de générer des processus.
- Désactivez l’utilisation des Assistants Diagnostic (Troubleshooting Wizards) de Windows via les Objets de Stratégie de Groupe (GPO).
MSDT crée le fichier PCW.debugreport.xml dans les répertoires %LOCALAPPDATA%\Diagnostics et %LOCALAPPDATA%\ElevatedDiagnostics une fois que l’utilisateur a fermé la fenêtre diagnostic (troubleshooting). Le fichier contient des artefacts Follina qui peuvent aider lors de la réponse aux incidents.
Jusqu’à présent, Microsoft est silencieux concernant un timing de déploiement d’un correctif. Nous savons bien que beaucoup d’entreprises utilisent encore d’anciennes versions de Microsoft Office. Il est maintenant temps pour les administrateurs d’évaluer les versions d’Office utilisées dans l’entreprise et de créer un processus de correction. Bien que les fonctionnalités de protection d’Office (‘Protected View’ et ‘Application Guard pour Office’) ne bloquent pas entièrement l’exploitation de Follina, nous conseillons aux administrateurs de s’assurer qu’elles soient bien activées et de ne pas se fier entièrement à ces dernières.