POC CVE-2022-30190 - Follina
Dates des modifications : | Intervenants : | Modifications apportées : |
---|---|---|
- | Matthieu BILLAUX @_euzebius |
Nhammmber One Mentor ! |
Lundi 6 Juin 2022 | Mudsor MASOOD mudpak |
Finalisation du document (v0.0.4) |
Dimanche 5 Juin 2022 | Philippe SEGRET Pich |
Tests et reconstruction du Lab (v0.0.3) |
Samedi 4 Juin 2022 | Pich | Mise en place du Lab (v0.0.2) |
Samedi 4 Juin 2022 | mudpak | Création du document (v0.0.1) |
0. Avant-propos
Ce document a pour objectifs de
- Faire une démonstration de l’exploitation de la CVE 2022-30190, aussi appelée « Follina ».
- Donner une vision Red Team (équipe Offensive) et une vision Blue Team (équipe Défensive) de la CVE.
- De mettre en place la solution temporaire proposée par Microsoft et tester son efficacité face à l’attaque.
Avertissement Légal
Tous les auteurs de la CVE, des sources citées et du document ne pourront en aucun cas être tenus responsables des usages illégaux de la CVE.
L’exploitation de cette vulnérabilité en dehors d’un cadre légal peut conduire à des poursuites judiciaires quelque-soit votre emplacement géographique.
1. Prérequis
Pour mettre en place le POC nous allons avoir besoin des éléments suivants :
- Avoir une solution de virtualisation / hyperviseur : dans notre cas nous allons utiliser VMWare Worksation
- Accès à internet
- Avoir les droits administrateur / root sur les machines
- Un système Windows
- Pour simuler un poste victime
- 7-zip pour extraire le document Word et explorer l’arborescence
- Microsoft Office sur le poste victime : Office 2019 ou Office 365
- Un système Linux type Parrot ou Kali
- Pour simuler l’attaquant
- Une autre distribution peut également être utilisée
Remarque
Pour les besoins du POC nous utiliserons des machines préinstallées.
Si vous souhaitez réaliser des POC ou d’autres tests il est recommandé de faire vos propres installations pour avoir un environnement le plus adapté à vos besoins.
2. MSDT – Microsoft Support Diagnostic Tool
Avant d’entrer dans les détails, parlant de « MSDT » et de la vulnérabilité par laquelle il est impacté.
2.1 Présentation de l’outil
C’est un outil sous Windows (postes clients et serveurs) qui collecte et envoie les données au support Microsoft.
Ce qui leur permet d’analyser les informations recueillies et de trouver des solutions aux problèmes qui peuvent impacter l’expérience utilisateur.
2.2 Vulnérabilité
La vulnérabilité (CVE-2022-30190 ou Follina) est présente dans l’outil MSDT lorsqu’une application telle que Microsoft Word fait appel à MSDT via une URL.
Comme nous le verrons par la suite, un document Microsoft Office est certes perçu à nos yeux comme un seul fichier, en réalité en l’ouvrant avec un gestionnaire d’archives comme 7-Zip nous pouvons constater que le document est composé de plusieurs fichiers :
Le fichier qui va nous intéresser se trouve dans le dossier « word » puisque dans le cas présent il s’agit d’un document Word :
La vulnérabilité est exploitée dans ce fichier au paramètre « target », au lieu de laisser un lien avec un fichier XML, l’attaquant va le modifier et insérer un lien faisant appel à une charge malveillante distante.
Et lorsque le document sera ouvert par un utilisateur, même si les macros sont désactivées, l’action sera exécutée par la machine.
Voici une configuration « par défaut » du fichier :
Et voici une configuration avec une référence à un lien externe (ligne 7) :
Le même contenu mis en forme pour plus de lisibilité, dans le cas présent l’attaquant va faire appel à un fichier distant qui contient la charge malveillante :
Voici un exemple de contenu du fichier « index.html » qui contient la payload :
2.3 Impacts
Un acteur malveillant pouvant exploiter cette vulnérabilité peut par exemple :
- Exécuter du code à distance / exécuter du code arbitraire (RCE)
- Installer des programmes
- Consulter, modifier et supprimer des données
- Créer de nouveaux comptes pour les persistances
- . . . globalement faire tous types d’actions qui auront des conséquences plus ou moins graves selon les droits utilisateurs accordés au compte compromis
2.4 Métriques Microsoft
Voici les informations fournies par Microsoft, nous pouvons constater que c’est bien une vulnérabilité « élevée » :
- Attack Complexity : l’attaque est très simple à réaliser
- Privileges Required : il n’y a pas besoin d’utiliser un compte spécifique pour conduire l’attaque
- User Interaction : il y a besoin d’une interaction utilisateur mais même un utilisateur très précautionneux ne peut pas éviter cette attaque à moins de consulter les fichiers de configurations avec 7-Zip par exemple
- CIA : les trois critères de sécurité sont impactés à un niveau élevé, car une exploitation avec succès de la vulnérabilité peut conduire
- Au vol de données
- Aux modifications des données
- A la destruction des données
3. Mise en place du Lab
Nous allons avoir besoin d’un certain nombre d’éléments, dans ce chapitre nous allons détailler leur obtention et leur mise en place avant de parler à proprement de la CVE.
3.1 Windows 11
3.1.1 Récupération de l’image Windows 11 pour développeurs
Pour ne pas avoir à installer une machine depuis le début, Microsoft propose des images préinstallées (normalement destinées aux développeurs), nous allons télécharger une image adaptée à notre architecture de virtualisation et l’importer.
Se rendre à l’adresse suivante pour télécharger une image préinstallée de Windows :
3.1.2 Télécharger une machine virtuelle
Les images sont présentes pour différents Hyperviseurs, dans notre cas nous allons utiliser la version pour « WMWare ».
Remarque
Vous pouvez constater que cette version de Windows expire dans un mois et elle contient déjà un certain nombre d’outils préinstallés.
Le téléchargement peut prendre un certain temps selon la vitesse de votre connexion internet :
Une pensée pour les personnes avec un débit internet très faible ;)
3.1.3 File hashes
Pour des raisons de sécurité et vérification d’intégrité, Microsoft fournit des hashes pour s’assurer que durant le téléchargement le fichier n’a pas été corrompu.
3.1.4 Extraction de l’archive
Lorsque le téléchargement est terminé il faut extraire l’archive pour importer l’imagine de la machine :
Cette étape peut prendre un certain temps car le fichier est volumineux :
3.1.5 Import de la machine
Ouvrir VMWare Workstation et cliquer sur
- Open a Virtual Machine
Via l’explorateur de fichiers sélectionner l’image de la machine :
Remplir les champs suivants :
- Name for the new virtual machine : par le nom que vous souhaitez faire afficher à la machine
- Storage path for the new virtual machine : par l’emplacement de stockage des fichiers de la machine
Cliquer sur
- Import
Ce processus peut prendre un certain temps :
3.1.6 Clavier et Affichage en Français
La machine étant préinstallée en Anglais tous les éléments sont donc dans cette langue (Clavier + Affichage), nous allons voir comment basculer en français.
Dans la barre des tâches, cliquer sur le logo de Windows 11
Dans la zone de recherche saisir « lang » et cliquer sur
- Edit language and keyboard options
Cliquer sur
- Add a language
Dans la zone de recherche saisir « french » en cliquer sur
- Français (France)
Cliquer sur
- Next
Cocher la case
- Set as my Windows display language
Cliquer sur
- Install
Le téléchargement commence :
Lorsque le téléchargement et installation de la langue sont terminés voici un exemple d’aperçu qu’on obtient :
Pour prendre en compte les changements il faut se déconnecter en cliquant sur
- Sign out
Lors de la prochaine connexion, nous pouvons voir dans la barre des tâches que la langue française a bien été appliquée :
La machine “victime” est fonctionnelle, désormais nous allons nous concentrer sur l’obtention et installation de Microsoft Office sur ce poste.
3.2 Microsoft Office
Nous allons utiliser une version d’essai de la suite Microsoft Office 2019.
Pour ne pas télécharger une version vérolée de la suite, nous allons la récupérer via un outil qui télécharge directement depuis les serveurs Microsoft.
3.2.1 HeiDoc
Se rendre à l’adresse suivante :
Une page similaire à ci-dessous devrait s’afficher :
3.2.2 Windows ISO Downloader
Cliquer sur
- Microsoft Windows and Office ISO Download Tool
Cliquer sur
- Windows-ISO-Downloader.exe
Le téléchargement est relativement rapide au vu du poids du fichier :
3.2.3 Microsoft Office 2019
Double-cliquer sur l’exécutable récemment téléchargé :
Dans la partie supérieur droite de la fenêtre, cliquer sur
- Office
Sélectionner la version de Office souhaitée :
Sélectionner l’édition exacte, comme vous pouvez le constater nous pouvons soit télécharger une version complète soit une application uniquement :
Sélectionner la langue souhaitée :
3.2.4 Téléchargement de Office 2019
Cliquer sur
- Télécharger
Le téléchargement du fichier commence :
3.2.5 Installation de Office 2019
Il est désormais possible de « monter » un fichier image dans Windows sans passer par un logiciel tiers, ce qui nous facilite le travail pour la suite.
Effectuer un clique-doit sur le fichier, cliquer sur
- Monter
Cliquer sur
- Ouvrir
Nous pouvons voir que l’image est bien montée dans le lecteur « E : »
Ouvrir le lecteur, à ce stade nous pouvons installer Office en cliquant sur « Setup », mais pour être certain qu’il installe la version adaptée à notre architecture nous allons aller dans le dossier :
- Office
Cliquer sur l’architecture de votre machine :
Cliquer sur
- Oui
La fenêtre de préparation s’affiche :
L’installation de Office commence, elle peut prendre un certain temps :
Lorsque l’installation est terminée vous pouvez cliquer sur
- Fermer
Nous pouvons vérifier que la suite Office est bien installée en ouvrant le menu démarrer :
3.2.6 Première ouverture Word
Nous allons faire la première ouverture de Word après l’installation :
3.2.6.1 Entrez la clé de produit
Il nous est demandé de saisir la clé de licence du produit, nous n’allons pas le faire car nous allons utiliser le produit pour le POC seulement.
3.2.6.2 Acceptation du contrat de licence
Il faut accepter le contrat de licence pour utiliser le produit, cliquer sur
- Accepter
3.2.6.3 Votre vie privée est importante
Vous pouvez modifier les paramètres de protection de votre vie privée mais pour les besoins du POC nous allons simplement cliquer sur
- Fermer
3.2.6.4 Types de fichiers par défaut
Cocher
- Formats Office Open XML
Cliquer sur
- OK
3.2.6.5 Date d’expiration des fonctionnalités
Puisque nous utilisons le produit en période d’essai, les fonctionnalités seront désactivées très rapidement :
3.2.6.6 Informations sur le produit
Voici quelques détails sur la version exacte installée :
Nous pouvons confirmer via les programmes installés la version de Office 2016 :
Puisque l’installation et la première ouverture sont terminés, nous pouvons éjecter l’image précédemment montée en cliquant sur
- Éjecter
3.3 7-Zip
3.3.1 Téléchargement
Se rendre à l’adresse suivante :
L’architecture de notre machine est x64 donc nous allons choisir le premier exécutable :
Le téléchargement est très rapide :
3.3.2 Installation
Cliquer sur l’exécutable :
Cliquer sur
- Oui
Cliquer sur
- Install
Lorsque l’installation est terminée, cliquer sur
- Close
3.4 Parrot OS
Tout comme l’image préinstallée de Windows 11, nous allons voir comment télécharger et importer l’image de ParrotSecurity dans VMWare.
3.4.1 Téléchargement du VMDK
Se rendre à l’adresse suivante :
Repérer la version la plus récente de la distribution, dans le cas présent « 5.0 », dans l’onglet « WMare »
Cliquer sur
- Download
Le téléchargement peut prendre un certain temps :
Les informations de la machine (id/ mdp / disposition clavier) sont disponibles dans l’onglet « Info » :
3.4.2 Extraction de l’archive
Extraire l’archive précédemment téléchargée.
3.4.3 Création de la machine
Pour la VM de Microsoft, l’importation est rapide et automatique mais pour la Parrot il faut effectuer quelques étapes manuelles.
Nous allons créer une nouvelle machine, pour à la fin lui attribuer le disque existant précédemment téléchargé.
Cliquer sur
- Create a New Virtual Machine
Cliquer sur
- Next >
Sélectionner
- I will install the operating system later
Cliquer sur
- Next >
Sélectionner
- Linux
- Ubuntu 64-bit
Cliquer sur
- Next >
Remplir les champs suivants
- Virtual machine name : par le nom d’affichage de la machine
- Location : par l’emplacement où sera enregistrée la machine
Cliquer sur
- Next >
La taille de disque importe peu, car le but est de créer la machine et lui attribuer un autre disque, cliquer sur
- Next >
Cliquer sur
- Finish
3.4.4 Ajout du disque existant
Cliquer sur
- Edit virtual machine settings
Cliquer sur
- Add. . .
Sélectionner
- Hard Disk
Cliquer sur
- Next >
Cliquer sur
- Next >
Sélectionner
- Use an existing virtual disk
Cliquer sur
- Next >
Sélectionner le disque précédemment téléchargé et extrait, cliquer sur
- Finish
Cliquer sur
- Keep Existing Format
Nous pouvons voir que le disque importé est bien présent :
Remarque
Si vous rencontrez des difficultés au démarrage de la machine, vous pouvez supprimer le disque généré lors de la création de la machine :
3.4.5 Configuration du Clavier
Par défaut la disposition du clavier est en Anglais, nous allons voir ensemble comment le modifier pour ajouter le clavier Français.
Dans le coin inférieur gauche de la fenêtre, cliquer sur
- Menu
Dans la zone de recherche, saisir « keyboard » et cliquer sur le premier résultat :
Dans l’onglet “Layout” nous pouvons voir que le clavier Anglais est déjà présent :
Cliquer sur
- +Add. . .
Dans les listes déroulantes choisir
- France
- French
Cliquer sur
- +Add
Le clavier Français a bien été ajouté mais pas encore appliqué :
Sélectionner “French” et cliquer sur
- Move Up
Le clavier Français est désormais appliqué :
A ce stade nos machines Windows 11 et Parrot sont prêtes pour enfin passer à la partie pratique du POC.
4. Red Team
Dans ce chapitre nous allons voir comment un acteur malveillant pourrait faire pour exploiter la vulnérabilité.
4.1 MS-MSDT « Follina » Attack Vector
Nous allons utiliser le POC de John HAMMOND pour la suite.
4.1.1 GitHub
Se rendre à l’adresse suivante :
Cliquer sur
- Code
- Copier
4.1.2 Git Clone
Dans le terminal saisir la commande suivante :
1 |
|
Une copie du répertoire sera faite localement :
Nous pouvons voir le dossier crée en saisissant la commande « ls -al », le répertoire se nomme « msdt-follina » :
Pour la suite des opérations tout va se dérouler dans ce répertoire, pour nous déplacer nous allons utiliser la commande « cd msdt-follina » :
4.1.3 Contenu du répertoire
Pour voir tous les éléments présents, saisir la commande « ls -al » :
1 2 3 4 5 6 |
|
4.1.4 Commandes possibles
Avant d’utiliser le script nous allons afficher les différentes options possibles en saisissant la commande « ./follina.py - - help » :
-
Pour spécifier la commande à exécuter
1 2
Option 1 : --command Option 2 : -c
-
Pour spécifier le fichier de sortie
1 2
Option 1 : --output Option 2 : -o
-
Pour spécifier l’interface à utiliser pour héberger le serveur web
1 2
Option 1 : --interface Option 2 : -i
-
Pour spécifier le port à utiliser pour le serveur web
1 2
Option 1 : --port Option 2 : -p
-
Pour spécifier le port pour le reverse shell
1 2
Option 1 : --reverse Option 2 : -r
4.2 Sans Windows Defender et avec UAC
Pour information
Dans les scénarios suivants, la protection en temps réel de l’antivirus Windows Defender a été désactivée.
Cependant la configuration de l’UAC reste par défaut.
4.2.1 Désactivation de la protection en temps réel
Dans la barre des tâches, cliquer sur l’icône de l’antivirus Windows Defender :
Cliquer sur
- Protection contre les virus et menaces
Dans la partie « Paramètres de protection contre les virus et menaces » cliquer sur
- Gérer les paramètres
Dans la partie « Protection en temps réel », cliquer sur
- Activé
Cliquer sur
- Oui
La protection en temps réel est désormais désactivée :
4.2.2 Calc.exe
Pour lancer un simple « calc.exe » (calculatrice) nous pouvons simplement saisir « python3 follina.py » et le fichier sera généré, mais pour des raisons de clarté je vais utiliser différents paramètres.
Saisir la commande suivante :
1 |
|
Détails de la commande :
1 2 3 4 5 6 7 8 9 10 |
|
Cette commande aura pour conséquences :
- La création d’un fichier Word avec le nom souhaité
- L’activation d’une page web qui contient la charge malveillante à exécuter sur le poste, dans le cas présent le fichier Word une fois ouvert fera appel au serveur sur le port 8000 pour récupérer la payload
Généralement un attaquant va envoyer le fichier par email, dans le cas présent nous allons simplement transférer le fichier sur le poste victime et l’ouvrir.
Sur le poste Parrot nous allons activer un serveur web sur le port « 1234 », pour cela saisir la commande suivante :
1 |
|
Détails de la commande :
1 2 3 4 5 6 7 8 |
|
Sur le poste victime via un navigateur nous allons récupérer le fichier généré, ici « follina-calc.doc » :
Lorsque le fichier a été téléchargé nous pouvons l’ouvrir :
En parallèle à cela nous avons confirmation de notre serveur web python que le fichier a bien été récupéré par le poste victime :
Lorsque le fichier s’ouvre il ne se passe rien, il n’y a pas de macros à activer et il est ouvert en mode « lecture seule ».
Nous allons cliquer sur
- Activer la modification
Aussitôt après avoir cliqué sur « activer la modification », la fenêtre de l’utilitaire de Microsoft s’ouvre :
La fenêtre précédente se ferme pour laisser place à la fenêtre ci-dessous :
Et enfin la calculatrice Windows s’ouvre, l’attaque est un succès :
Du côté de la machine Parrot, nous pouvons observer que lors de l’activation de modification du document Word, il y a eu de nombreuses interactions et le fichier « index.html » a bien été appelé, c’est lui qui a transmis le code à exécuter pour ouvrir la calculatrice.
4.2.3 Notepad.exe
En utilisant le même procédé que pour la calculatrice, nous pouvons générer un fichier pour ouvrir un autre programme comme « Notepad » (= bloc-notes) :
Depuis le poste Windows nous récupérons le fichier généré :
En ouvrant et activant la modification du fichier, notepad s’ouvre :
4.2.4 Reverse Shell
Jusqu’ici nous avons vu des exemples simples, maintenant voyons comment un attaquant pourrait prendre le contrôle du poste via un reverse shell.
Pour générer le fichier saisir la commande suivante :
1 |
|
Détails de la commande :
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Nous pouvons observer qu’après avoir généré le fichier, ouvert le serveur web sur le port 8000, notre machine s’est mise en écoute sur le port 9001 :
Nous allons récupérer le nouveau fichier depuis la machine cible :
En ouvrant et activant la modification des fichiers, l’utilitaire Microsoft s’ouvre :
Très rapidement la fenêtre de « Résolution des problèmes » s’affiche, et c’est exactement à ce moment-là que nous récupérons le shell du poste cible sur notre Parrot :
Ici nous avons la confirmation que nous sommes bien connectés sur la machine Windows :
Nous pouvons exécuter les commandes, par exemple ci-dessous certaines commandes ont été exécutées :
- whoami : pour afficher le nom de l’utilisateur
- hostname : pour afficher le nom du poste
- dir : pour afficher le contenu du répertoire (=ls sous linux)
A noter :
Arrivé à ce stade un attaquant peut commencer à avoir un shell plus stable, car le shell actuel est issue d’un autre processus qui peut être fermé à tout moment par l’utilisateur.
L’attaquant peut également tenter de créer une connexion persistante via différents outils déjà présents sur le poste, ou simplement commencer à récupérer les informations.
De manière plus « graphique », voici un exemple de répertoire dans lequel s’ouvre le shell :
Dès lors que vous voyez la fenêtre ci-dessous, cela signifie que l’attaquant a quitté le shell précédemment ouvert.
Remarque
Cela ne signifie pas forcément qu’il n’est plus présent sur votre poste, car il peut très bien avoir basculé vers un autre shell.
Puisqu’il y a eu un reverse shell, l’attaque ajoute un exécutable « nc » dans le répertoire ci-dessous :
4.3 Avec Windows Defender et avec UAC
Dans les scénarios suivants, Windows Defender est actif et avec sa configuration par défaut tout comme l’UAC.
4.3.1 Trojan:Win32/Mesdetty.A
Sans grandes surprises, à l’heure actuelle l’antivirus bloque les payloads.
Dans le cas présent Defender a simplement mis fin à la commande :
4.3.2 Trojan:Win32/Mesdetty.A
Dans le cas présent Defender a simplement mis fin à la commande :
4.3.3 Behavior:Win32/MesdettyLaunch.A!blk
Dans le cas present Defender a mis fin au processus qui a lancé msdt.
4.3.4 Behavior:Win32/MesdettyLaunch.A!blk
5. Blue Team
Dans ce chapitre nous allons voir ce qu’un membre de l’équipe défensive peut tenter de comprendre et se préparer au mieux face à cette attaque.
5.1 MS-MSDT “Attack Vector”
Avant de voir le contenu généré lors des précédentes attaques, nous allons parler du script et des éléments qu’il génère.
5.1.1 Fichier « follina.doc »
Si aucun paramètre de sortie n’est précisé au script alors celui-ci nomme le fichier malveillant « follina.doc ».
Voici le contenu du fichier « document.xml.rels », nous pouvons voir clairement la référence à un contenu externe, ici surligné en vert clair :
Dans le paramètre « Target » nous pouvons constater que la fin de l’adresse contient un point d’exclamation, c’est important de le noter pour la suite :
En effet lorsque nous essayons de consulter le lien tel quel, voici l’erreur affichée :
En enlevant le point d’exclamation de l’URL et en visitant la source de la page nous obtenons la payload :
Ci-dessous la même payload (l'indentation n’est pas respectée pour afficher un maximum de contenu) :
5.1.2 Stager
5.1.2.1 Répertoire d’enregistrement
La charge malveillante se trouve sur la machine de l’attaquant dans le répertoire « tmp », le répertoire final est nommé de manière aléatoire :
5.1.2.2 Architecture du répertoire Stager
Voici l’architecture du répertoire, d’un côté nous avons le fichier Word, d’un autre côté nous avons un serveur web contenant la page « index.html » qui elle contient la charge malveillante.
En d’autres termes le fichier Word contient un paramètre qui fera appel au fichier externe et ce fichier externe (index.html) qui contient les commandes à exécuter sur le poste.
5.1.2.3 Composition du fichier « index.html »
Voici un exemple de contenu du fichier « index.html » :
Les éléments les plus importants se trouvent au début du script, ici surlignés en vert clair :
Le texte surligné en vert clair ci-dessous, est un simple encodage en base 64 de « calc » :
Voici un exemple avec l’outil CyberChef :
5.2 Windows Defender
Comme vu précédemment, Windows Defender bloque dans une certaine mesure l’exploitation de la vulnérabilité, pour que cela soit le plus effectif possible il faut que le moteur de l’antivirus soit à la version « 1.367.851.0 » ou plus récent.
Voici les différents codes sous lesquels l’exploitation de la vulnérabilité a été bloquée :
5.3 Dépôt « nc »
Il peut être pertinent de surveiller ce répertoire car il n’est pas fait pour stocker ce type d’élément :
5.4 Calc.exe
Comme nous l’avons vu précédemment, le nom du programme a exécuter est simplement encodé en base 64, ici l’exemple avec « calc.exe » :
5.5 Notepad.exe
Comme le cas précédent ici l’exemple avec « notepad.exe » :
5.6 Reverse Shell
Comme les deux exemples précédents, il y a bien de l’encodage en base 64 utilisé, mais puisqu’il s’agit d’un reverse shell, la commande est logiquement beaucoup plus longue :
Ici le passage en commande en clair, nous pouvons voir que
- Le netcat est récupéré depuis le github de John HAMMOND
- Enregistré dans le répertorie « C:\Windows\Tasks »
- Le revershell est exécuté en cmd vers le poste de l’attaquant qui est en écoute sur le port 9001 :
5.7 Solutions temporaires
En attendant la correction de la vulnérabilité, Microsoft propose des solutions temporaires, nous allons les mettre en place et tester leur efficacité.
5.7.1 Désactivation du protocole URL via le registre Windows
Cette solution consiste à supprimer une valeur dans le registre Windows.
5.7.1.1 Menu démarrer
Effectuer un clique-droit sur le logo Windows, cliquer sur
- Exécuter
5.7.1.2 Exécuter
Saisir
- cmd
Cliquer sur
- OK
5.7.1.3 Sauvegarde du registre
Pour sauvegarder la clé, saisir la commande suivante :
1 |
|
Détails de la commande :
1 2 3 4 5 6 7 8 |
|
La sauvegarde s’est effectuée avec succès :
Le fichier est bien présent :
Voici les paramètres avant suppression de la clé :
5.7.1.4 Suppression de la clé
Pour supprimer la clé, saisir la commande suivante :
1 |
|
Détails de la commande :
1 2 3 4 5 6 7 8 |
|
5.7.1.5 Test du fonctionnement de la solution
Maintenant que la solution temporaire a été appliquée, nous allons tester les précédentes « attaques » pour confirmer de l’efficacité de la mesure.
Dans le cas présent nous allons générer un fichier pour ouvrir l’application calc :
L’ouverture du document est beaucoup plus lente cette fois et nous avons même le temps de voir les différentes étapes :
Ici nous voyons que la machine tente de joindre la machine de l’attaquant, mais le document s’ouvre et même en activant la modification aucune des attaques n’a fonctionnée.
Après avoir testé les trois attaques qui avaient précédemment fonctionnées, cette fois-ci aucune des trois n’a été concluantes, la solution temporaire est donc efficace.
Pour pouvoir tester les autres solutions, nous allons rétablir la configuration du registre via la sauvegarde précédente, saisir la commande suivante :
1 |
|
5.7.2 Désactivation de l’outil de diagnostic via Éditeur de stratégie de groupe locale / GPO
Dans cette solution nous allons désactiver l’ouverture de l’outil via l’éditeur de stratégie de groupe locale ou via GPO si vous êtes dans un contexte AD.
Avant d’appliquer la mesure de sécurité nous allons exécuter l’outil pour voir s’il est bien fonctionnel :
L’outil se lance bien comme prévu :
Nous allons désormais appliquer la mesure, pour cela ouvrir l’éditeur de stratégie de groupe local :
Aller dans
- Configuration ordinateur
- Modèles d’administration
- Système
- Dépannage à base de script
La mesure qui nous intéresse se nomme « Dépannage : autoriser les utilisateurs à exécuter les Assistants Dépannage », par défaut elle est « Non configuré » :
Cocher
- Désactivé
Cliquer sur
- Appliquer
- OK
Le paramètre que nous avons modifié est appliqué, nous allons le tester dans un premier temps manuellement :
Ouvrir à nouveau l’outil via « Exécuter » et nous pouvons observer qu’une erreur s’affiche :
En cliquant sur « Afficher les détails de l’erreur » nous obtenons la fenêtre suivante, qui nous informe que l’outil a été désactivé par la stratégie de groupe :
5.7.2.1 Test du fonctionnement de la solution
Cette solution est fonctionnelle, car l’exécution de l’outil via un document malveillant ne fonctionne pas et via une ouverture manuelle comme exécutée récemment ne fonctionne plus puisqu’il a été désactivé.
Nous allons rétablir la configuration d’origine du paramètre à « Non configuré » pour mettre en place la dernière mesure et la tester.
5.7.3 Désactivation de l’aperçu dans l’explorateur de fichiers
Selon la configuration de l’explorateur de fichiers Windows, il est possible d’avoir un aperçu avant d’ouvrir un élément (document, image . . .).
Par défaut il est désactivé comme le cas ci-dessous :
Nous allons l’activer manuellement pour voir un exemple de résultat qui peut se produire, pour cela cliquer sur
- Afficher
- Afficher
- Volet de visualisation
Désormais lorsque nous consultons un document, le volet de visualisation permet d’avoir un aperçu :
Pour désactiver cet aperçu il faut faire l’opération inverse, cliquer sur
- Afficher
- Afficher
- Volet de visualisation
5.7.3.1 Test du fonctionnement de la solution
La solution est fonctionnelle car le document n’est pas prévisualisé par l’utilisateur.
6. Conclusion
Comme vous avez pu le constater pour exploiter cette vulnérabilité :
- Nous n’avons pas besoin d’activer des macros
- Nous n’avons pas non plus besoin d’être un expert technique
- L’attaque est simple et efficace
A noter :
L’UAC est certes une barrière de sécurité, mais dans le cas présent il n’a pas été d’une grande utilité.
En attendant la correction de la vulnérabilité par Microsoft, il existe différentes solutions temporaires.
7. Erreurs courantes
Voici les différentes erreurs que j’ai rencontrées lors de la mise en place et utilisation du lab.
7.1 Importation impossible VMDK Parrot
L’image VMDK de la Parrot ne peut pas être importée directement dans VMWare, pour pallier à cela il faut créer une machine virtuelle et ensuite ajouter le disque manuellement.
7.2 Interface non reconnue par le script de POC
Par défaut le script utilise l’interface « eth0 », si votre interface porte un nom différent une erreur semblable à ci-dessous s’affiche :
Pour identifier l’interface, saisir la commande « ifconfig », dans notre cas l’interface à utiliser se nomme « ens160 » :
Nous pouvons désormais spécifier l’interface à utiliser au script et cette fois le POC est bien fonctionnel :
7.3 POC non fonctionnel
Il se peut que vous ayez réalisé toutes les étapes mais qu’au moment de l’ouverture du document Word sur le poste victime rien ne se produise (pas d’ouverture de logiciel, pas de reverse shell. . .).
Il est très probable que simplement Windows Defender soit actif et ait mis en quarantaine ou supprimé votre payload :
Pour éviter cela vous pouvez simplement désactiver Windows Defender ou utiliser différentes méthodes d’encodage / d’obfuscation.
8. Sources
Voici les différentes sources utilisées tout au long du document :
-
nao_sec
-
DoublePulsar :
-
Guidance for CVE-2022-30190 Microsoft Support Diagnostic Tool Vulnerability :
-
Download a Microsoft virtual machine :
-
Memes
- 9gag.com
- imgflip.com
- tenor.com
-
Heidoc :
-
osboxes.org :
-
MS-MSDT “Follina” Attack Vector :
-
CyberChef :
-
Netskope :
Désolé pour la qualité des captures :")