Antes que nada quiero aclarar que no me refiero a un análisis profundo de un malware, a lo que me refiero es a ver las actividades que realiza, adonde intenta conectarse y que modifica en el sistema, a fin de que podamos tomar medidas para evitar la infección y facilitar la desinfección en caso de que uno de nuestros usuarios haya decidido ejecutar el malware antes de llamarnos, como usualmente pasa. Usare algunas herramientas, tanto locales como online, que nos ayudan a conocer un poco las intensiones del malware en cuestión y como intenta hacer la infección del equipo que lo ejecute. Teniendo esto claro, podemos continuar :) . En estos días recibí un correo SPAM que decía venir de un scanner HP, y como es normal en este tipo de mensajes traía consigo un archivo anexo ZIP, la diferencia con los que generalmente llegan es que este en lugar de contener un ejecutable contenía un archivo HTML, a continuación el mensaje:
El archivo anexo se veía así al abrirlo con WinRAR:
Lo primero que hice fue crear una regla en el mail server para bloquear este mensaje especifico (por "subject", por "from", etc.) para tratar de evitar que llegue a otros usuarios. Luego subí mi maquina virtual con XP que tengo como conejillo de indias. Configure la red de la maquina virtual (que en lo adelante llamare "la víctima") en modo "Bridge", la configure en el mismo rango IP de mi computadora host. La IP de mi maquina virtual sera 192.168.137.2 y la del host es 192.168.137.1, se necesita que tengan conexion entre si para poder utilizar el equipo host como proxy para la maquina virtual (como se vera mas adelante). Luego abrí con "notepad" el archivo para ver el contenido sin ejecutarlo:
No se mucho de programación o html, pero no hace falta ser un experto para darse cuenta que esta pagina ejecuta un script y que esta aparentemente codificado. Haciendo una breve búsqueda en Google con la primera linea de este script encontre este enlace a Pastebin, de donde aparentemente viene el código. Luego encontré también este site que permite decodificarlo. Bueno, es hora entonces de verlo en acción, hice doble clic en el archivo HTML para que se ejecutara en mi maquina virtual, abrió con Internet Explorer 6 (que es el que tengo en mi maquina para pruebas) y presento el siguiente mensaje:
El navegador me indica que este archivo esta intentando ejecutar cierto tipo de contenido que esta bloqueado, y que si quiero habilitarlo debo hacer clic en OK, hacer clic en la franja amarilla y seleccionar "Allow Bloked Content". Es posible que esta advertencia evite que algunos usuarios ejecuten este script, pero es seguro que la mayoría dará clic sin leer en "OK" y luego ejecutaran el código. Como mi intención es probar el script procedí a permitir que este se ejecutara, lo que hizo que el navegador me diera otra alerta mas sobre el contenido:
Cualquiera pensaría que con tantas alertas los usuarios no ejecutarian este tipo de código, pero como todos sabemos los usuarios aman los botones "YES" y ciegamente hacen clic sobre ellos, así que muchos usuarios volaran esta advertencia y ejecutaran el código, que es lo que hice para esta prueba. Al hacer clic en "Yes" e ignorar la advertencia me devolvió el siguiente error:
Si se fijan en la barra de estado del navegador, vemos que aunque se presenta el mensaje diciendo que se aborto la operación, Internet Explorer esta abriendo una pagina en un dominio de Rusia al puerto 8080 de ese servidor. En ese momento ejecute en una ventana de comandos el comando "netstat -na" para ver las conexiones que estaba haciendo mi maquina "víctima" hacia afuera:
Ahora necesitamos ver la conversación entre ese servidor y nuestra PC víctima, para esto configuraremos Internet Explorer en la maquina virtual para que utilice un proxy que correremos en el equipo Host, asi capturaremos los "Request" hacia el servidor en Internet y tambien las respuestas de este. Podríamos utilizar también un sniffer como Wireshark en nuestro Host y capturar todo el trafico entrante y saliente a nuestra maquina virtual, pero en este caso con el proxy es suficiente (y mas facil).
- Monitoreando las conexiones a Internet con Burp Suite Free
"Burp Suite"es un proxy que permite entre otras cosas el ver las peticiones y respuestas a Web servers, podemos también modificarlas on line. Pueden descargarlo de este link. Esta hecho en Java, por lo cual requeriran tener instalado el RunTime. Una vez lo hayan descargado, lo ejecutan y se mueven al tab "proxy", y aquí al tab "options". En este tab le indicamos en que interface y en que puerto escuchara las peticiones, debe verse de esta manera:
Deben quitar la selección de la opción "Listen on loopback interface only" para que el programa escuche en todas las interfaces, en mi caso elegi el puerto 8080. En esta misma ventana deben también seleccionar la opción "intercept if" debajo de la sección "intercept server responses", para poder capturar también las respuestas de los servidores Web. Ya teniendo el proxy preparado para capturar, configuramos el navegador en nuestra maquina virtual para que lo utilice, en el caso de mi maquina virtual utilizo Internet Explorer 6 (lo se, un poco viejo, pero esa es la idea). Por si no saben como hacerlo, abren el Internet Explorer, luego hacen clic en Tools--> Internet Options --> Connections --> Lan Settings. En el caso de mi configuracion se veria de esta forma:
Ahora, volvemos a ejecutar de nuevo el archivo HTML y esperamos a recibir la solicitud de conexion al proxy en nuestro equipo. Cada conexion (http o https) que intente hacer nuestro equipo virtual a Internet pasara por Burp donde podremos revisar cada solicitud antes de aprobar que salga a su destino, en este caso el dominio ".ru". Al ejecutar el archivo podemos ver la primera solicitud que hace:
Como vemos hemos capturado la primera solicitud la hace al sitio "http://uzindexation.ru:8080" y esta solicitando la pagina "/forum/showthread.php?page...". Para que esta solicitud pueda llegar al servidor debemos dar clic en esta ventana en el boton "Forward", y esperamos entonces por la respuesta del servidor, que llegara en unos segundos y verán algo como lo siguiente:
El servidor responde con otro script, aparentemente también codifcado. Podemos copiar todo este código, guardarlo en un documento html y subirlo a este site que les mencione al principio, aqui podemos decodificarlo y ver que es lo que esta transfiriéndole ese servidor a nuestro equipo. Pero para seguir observando el Malware, hacemos clic en "Forward" en esta ventana para permitir que este paquete llegue a nuestra maquina virtual. Al hacer esto veremos pronto otra solicitud que hace la maquina al servidor del atacante:
Ahora nuestro equipo víctima hace otra solicitud al servidor "malicioso", solicita la ejecución de un archivo PHP (/forum/data/ap2.php), hacemos clic nuevamente en "Forward" para permitir esta solicitud y esperar la respuesta del servidor. Como se puede ver en los headers, en esta ocasión el servidor le envía a la maquina víctima un archivo PDF, es muy posible que sea un archivo "especialmente manipulado" que explote alguna vulnerabilidad en Acrobat Reader y se use para descargar/ejecutar codigo malicioso en el equipo víctima y continuar la infección del equipo. La ventaja de usar un proxy en el medio de la conexion entre la víctima y el atacante es que podemos facilmente reconstruir el archivo que envía el servidor y salvarlo en nuestro equipo. Para esto solo tenemos que hacer clic derecho en el cuerpo del reply del servidor, como se ve en el gráfico siguiente, y seleccionar "copy to file" e indicarle donde queremos guardar el archivo y con que nombre. En mi caso, lo nombre "pdf-bad.pdf".
- Analizando el Archivo en Virus Total
Teniendo ya grabado nuestro PDF de dudosa reputación, podemos subirlo a Virus Total para analizarlo contra los motores de las principales casas antivirus. Por si no lo conocían, VirusTotal es un servicio gratuito que permite analizar tanto archivos como direcciones Web y como les dije los analiza con las versiones actuales de los principales motores antivirus. Es muy utilizada tanto para comprobar archivos sospechosos como nuestro PDF, como para comprobar que tan detectable seria ante los antivirus un ejecutable que hayamos creado. Como verán el PDF es detectado en 6 de los 42 motores antivirus contra los que VirusTotal lo evaluó, lo cual nos confirma que este PDF se trae algo entre manos, y que aparentemente es una explota alguna vulnerabilidad reciente ya que pocos motores antivirus lo reconocen (a la fecha en que hice la evaluacion), como se ve en el siguiente gráfico:
Hasta ahora sabemos que el archivo HTML que llego por correo contiene un script (codificado) que envía al navegador a un sitio web desde donde se ejecuta un archivo PHP que descarga a la maquina víctima un archivo PDF especialmente modificado que aparentemente explota una vulnerabilidad en Acrobat Reader. La versión que tengo instalada en la maquina virtual es la version 9.3 y esta es evidentemente vulnerable al exploit que contiene este PDF, ya que al permitir que llegue a la maquina victima, Internet Explorer llama a Acrobat Reader para abrir el archivo malicioso y al ejecutarlo (en background) realizara esta otra petición:
Aquí la maquina víctima solicita otra pagina PHP, a lo que el servidor responde con el archivo que se ve en el gráfico siguiente. Nuestro amigo en Rusia envía a nuestra victima un archivo ejecutable (contacts.exe), el nombre de este archivo varía, en otras ocasiones el servidor enviar "calc.exe". Al igual que hicimos con el archivo PDF, podemos copiar todo este contenido, guardarlo en un archivo en nuestra computadora, y subirlo a VirusTotal para ver como lo reconocen los motores antivirus.
Al momento en que subí este ejecutable a Virus Total, solo era reconocido por 4 casas antivirus, lo que quiere decir que es muy probable que si uno de los usuarios lo hubiese ejecutado, el antivirus no lo hubiese detectado. A esta altura ya tenemos el archivo ejecutable que se descarga del servidor del atacante, ahora queremos saber que como se comportaria este ejecutable, una forma seria usando la misma descripción que dan las casa antivirus que lo detectan, pero en el caso de este ejecutable las pocas que lo detectan lo describen de forma genérica. A continuacion veremos una forma sencilla de saber las actividades que realizaria este ejecutable en nuestro equipo sin tener que ejecutarlo nosotros.
- Utilizando un Sandbox para analizar el Ejecutable
En esta parte utilizaremos el site GFI Threat Track, este sitio nos permite subir una muestra de un archivo para su análisis, luego nos envían un elegante reporte con todas las actividades que realiza el archivo que subimos, los archivos que crea, las conexiones que intenta hacer y hacia adonde, las claves del registro que modifica, etc., lo que nos economiza tener que seguirle nosotros mismo el rastro a este malware en el equipo virtual de prueba que tenemos, y lo mejor, el servicio es gratuito! Luego de unos minutos de haber subido el archivo, recibiremos un correo con el reporte anexo de todas las actividades que detectaron realiza nuestro archivo, el reporte es bien detallado y tiene varias paginas, nos servirá de ayuda para detectar este malware en otros equipos posiblemente infectados y evitar la infección de otros. En el siguiente gráfico se muestran algunas partes del reporte, porque como les dije tiene varias paginas. En esta gráfica se muestra en resumen algunas de las actividades que realiza este ejecutable:
Como pueden ver, nuestro amigo crea archivo ocultos, crea mutaciones de el mismo y borra el archivo original que descarga, hace conexiones de red, etc. Mas adelante en el reporte veremos los archivos que crea o modifica este ejecutable, las claves del registro modificadas y hacia adonde intenta conectarse, lo cual nos servirá para bloquear esta IP en nuestro Firewall:
Resumiendo, podemos decir que el atacante envía masivamente correos con un archivo HTML comprimido en un ZIP haciendo creer que el mismo es enviado por un Scanner en la red. El archivo HTML posee un script camuflajeado que solicita la descarga de un archivo PDF manipulado que explota cierta vulnerabilidad en Acrobat Reader (aparentemente en la versión 9.3), el codigo que se ejecuta tras explotar la vulnerabilidad descarga y ejecuta un archivo "EXE". Una vez este archivo se ejecuta, periódicamente nuestro equipo infectado envia informacion hacia varios servidores (intenta varios servidores en caso de que no pueda conectarse al primero de donde descargo el malware). La información que transmite el equipo infectado es aparentemente encriptada. Bueno, los mas avanzados dirán que esto no es nada nuevo, que es la forma tradicional en la que trabajan los malwares hoy en día, eso es cierto, pero creo que es interesante que nosotros mismos podamos ver por lo menos por arriba como se realizan estas actividades.
A continuación algunas recomendaciones que entiendo nos pueden ayudar a evitar que este tipo de malware infecte a nuestros usuarios:
- Educar a los usuarios para que reconozcan este tipo de amenazas y entiendan el riesgo que estos traen consigo, enseñarlos a no abrir o ejecutar ningún archivo anexo que venga en un correo no solicitado o que no reconozcan la dirección o el remitente, y claro, a contenerse las ganas de hacer clic en todos los "OK" que se les presenten.
- Mantener los sistemas operativos y aplicaciones actualizadas, el PDF que descarga el archivo HTML no ejecuta el código que descarga el ejecutable si se abre con versiones recientes de Acrobat Reader.
- Filtrar el trafico de salida lo mas que se pueda, en el caso de este malware, intenta hacer conexiones a un puerto no standar (8080), muy pocas aplicaciones que utilicemos utilizaran este puerto, para las que lo usen podemos permitirlo, pero para la mayoría del trafico solo se debería permitir la conexion a traves de proxy y a los puertos standar (80 para HTTP y 443 para HTTPS).
- Restringir en lo posible el acceso a Internet de los usuarios, en el caso de que un usuario reciba y ejecute un archivo como este, si solo tiene permiso a navegar en ciertos sitios, este malware no se ejecutaria ya que no podría descargar ni el PDF ni el Ejecutable.
- Por ultimo tener un antivirus y mantenerlo actualizado, tanto en los clientes como en nuestro servidor de correo. Lo dejo de ultimo porque como pudimos ver en este ejemplo muy pocos antivirus (solo 4 de 42) pudieron detectar el archivo malicioso, por lo que no podemos apostar toda la seguridad de nuestro sistema a los antivirus.
Bueno, espero como siempre que esto les haya parecido interesante y sobre todo que les haya servido de ayuda.
Hasta el Próximo!