Notez l’article Exploitation de la vulnérabilité Winrar :
Prérequis : Aucun
Niveau de compréhension : Débutant/Facile
Si vous faites partie des 500 millions d’utilisateurs à utiliser winrar, cet article risque de
vous intéresser . En effet, une CVE (CVE-2018-20250) a été découverte par les chercheurs de checkpoint. Elle permet l’exécution de code à distance sur votre machine.Cette vulnérabilité affecte toutes les versions du logiciel winrar commercialisées depuis 19 ans.
Qu’est-ce que WinRAR?
WinRAR est un utilitaire d’archivage de fichiers pour Windows qui permet de créer et d’afficher des archives aux formats de fichier RAR ou ZIP.
Nous allons voir dans cet article son fonctionnement, nous l’exploiterons à l’aide d’un POC( Proof of concept ) et nous verrons comment s’en protéger .
Fonctionnement de la vulnérabilité Winrar
La faille réside dans la bibliothèque tierce appelée “UNACEV2.DLL” utilisée par le logiciel winrar. Elle permet d’extraire les fichiers de type ACE, sa dernière compilation date de 2006. Dû à une vulnérabilité de type “Absolute Path Traversal” dans la librairie “UNACEV2.DLL“, un attaquant peut extraire du code malveillant, dans n’importe qu’elle dossier du système. Ce qui permet de déposer du code malveillant dans le dossier de démarrage de Windows. Il sera ensuite exécuté automatiquement au prochain redémarrage de la machine.
Il faut savoir que winrar détecte le format du fichier via son extension et non son contenu. Ainsi si vous prenez un fichier .pdf et que vous le renommez en .rar , winrar détectera que c’est une archive rar à décompresser.
Dans notre cas nous aurons une archive au format .ace, que nous renommerons en .rar.
Maintenant le fonctionnement de la CVE détaillé, passons à l’exploitation .
Exploitation de la vulnérabilité Winrar
Pour cette exploitation, j’ai généré une petite backdoor (porte dérobée) grâce au logiciel The Fat Rat disponible .
The Fat Rat est un outil permettant de générer des backdoors pour Windows Android, et Mac . L’outil compile un malware avec un payload, et permet également d’encoder le code source pour contourner la plupart des antivirus.
J’ai configuré le malware pour qu’une fois l’exécution effectuée, la victime vienne se connecter sur ma machine attaquante portant l’IP 192.168.2.98 sur le port 4444. C’est un , qui me permettra de passer à travers le firewall de Windows.
Le reverse shell (shell inversé), est une technique informatique qui permet de rediriger sur un ordinateur local l’entrée et la sortie d’un shell vers un ordinateur distant, au travers d’un service capable d’interagir entre les deux ordinateurs. L’un des avantages de cette technique est de rendre un shell local accessible depuis ce serveur distant sans être bloqué par un pare-feu.
Pour contourner la protection antivirus, le malware a été encodé grâce à plusieurs encodeurs, dont Shikata Ga Nai, le plus utilisé . Shikata Ga Nai est un encodeur inclus dans le framework Metasploit pour l’architecture x86.
Cet encodeur implémente un codeur de type XOR polymorphe, ainsi le code du malware change à chaque exécution. Cette technique permet de passer au travers des solutions antivirus.
Une fois l’exécutable prêt, on peut le récupérer dans le répertoire /home/user/TheFatRat/output/trojan.exe .
J’ai ensuite récupéré ce disponible sur github . À l’aide d’un script en python, l’on peut créer une archive ACE contenant différents fichiers, mais également un exécutable à extraire ou bon nous semble sur la machine cible.
J’ai envoyé ma backdoor sur la machine Windows en faisant attention de ne pas l’exécuter et j’ai modifié le script exp.py pour y intégrer ma porte dérobée. J’ai également modifié la ligne qui cible le dossier de décompression pour y mettre celui du démarrage de Windows.
Nous pouvons voir sur la capture d’image suivante, que le dossier cible de décompression comporte deux “C :” . Il existe une fonction filtrante dans UNACEV2.dll, nommée “CleanPath” qui vérifie que le chemin ne commence pas par “C :”. Si ce n’est pas le cas, la fonction supprime le premier “C :” avant l’appel de la deuxième fonction. Pour palier à cela, nous devons donc mettre deux “C :”.
WinRAR s’exécute par défaut avec un niveau de privilège moyen. Il peut ainsi écrire dans n’importe quels répertoires de l’utilisateur.
Lançons le script pour créer l’archive .ace déguisé en Crack_GTAV.rar.
Voilà un récapitulatif de ce que contient notre archive .
Une fois l’archive créée, j’ai démarré le logiciel RoguePE pour analyser le contenu de l’archive .rar, sans l’extraire bien évidemment. Dans la section strings, nous pouvons voir que l’archive va bien extraire un fichier world.txt, hello.txt mais également un fichier hi.exe ( notre malware) dans le dossier de démarrage de Windows. Chose intéressante l’on voit bien que ce n’est pas un fichier .rar mais ACE.
Tout est prêt, un pirate n’aurait dans ce cas plus qu’à envoyer l’archive sur un site de téléchargement de DDL ou de torrent sous le nom « nouveau crack pour le jeu GTA V», et attendre les connexions des victimes.
Nous allons maintenant décompresser l’archive. Avant cela, je vais lancer le logiciel process explorer, pour comprendre comment l’extraction fonctionne. Je vais également mettre en écoute ma machine attaquante sur le port 4444 pour recevoir mon reverse-shell.
La décompression terminée, nous pouvons voir que tous les fichiers sont bien en place .
Le fichier hi.exe est dans le dossier startup de Windows, et le reste des fichiers sont dans le dossier Crack_GTAV.
Process explorer, nous montre que winrar a bien appelé la bibliothèque vulnérable UnAceV2.dll lors de l’extraction de l’archive.
Le logiciel autoruns quant à lui nous indique que le fichier hi.exe est prêt à être exécuté au prochain redémarrage de la machine.
Pour le moment le payload n’a pas encore était exécuté . Redémarrons la machine victime.
Une fois la machine redémarrée, le payload est passé sous le radar de l’antivirus et du pare-feu .
Sur la machine attaquante, le reverse-shell en tcp est exécuté . La machine victime a ouvert son port 51126 pour venir se connecter sur le port 4444 de la machine attaquante.
Nous pouvons maintenant démarrer un keylogger, prendre des captures d’écrans, démarrer la webcam, installer d’autres malwares, mettre en place un autre système de persistance, migrer vers un autre processus Windows, désactiver l’antivirus, etc.
La machine est dorénavant corrompue .
Protection contre ce type d’attaque
Je vais maintenant vous montrer comment se protéger de ce type d’attaque.
Premièrement, ne pas extraire d’archives provenant de sources non sures !
Vous pouvez également, soit supprimer directement la librairie “UNACEV2.DLL“, ou mettre à jour winrar vers la version 5.70 beta 1.
L’équipe WinRAR ayant perdu le code source de la bibliothèque UNACEV2.dll en 2005, elle a décidé de supprimer UNACEV2.dll de son package pour résoudre le problème et a publié winrar version 5.70 beta 1 qui ne prend pas en charge le format ACE.