Win32/Napolar – Un nuevo bot en el vecindario

El siguiente artículo es una traducción y adaptación del post publicado originalmente en el blog internacional de ESET por nuestro compañero Pierre-Marc Bureau.

Hay un nuevo bot en el barrio, identificado por ESET como Win32/Napolar, aunque su autor prefiere llamarlo Solarbot. Este ejemplar de malware nos llamó la atención a mediados de agosto debido a sus interesantes técnicas antidepuración y de inyección de código. También atrajo mucha atención cuando fue analizado en varios foros de ingeniería inversa.

Este malware puede servir para múltiples propósitos. Los tres principales son realizar ataques de denegación de servicio, actuar como un servidor proxy SOCKS y robar información de los sistemas infectados. El malware es capaz de anclarse a varios navegadores y robar la información que se envía en formularios web.

Hemos descubierto muchos detalles sobre este bot desde que se activó a finales de julio, y hemos detectado infecciones desde mediados de agosto. Hemos recibido informes de miles de infecciones, muchos de ellos en Sudamérica. Los países con el mayor número de infecciones son Perú, Ecuador y Colombia. Se puede encontrar más información acerca de la distribución geográfica de esta amenaza en virusradar.

El autor de Win32/Napolar utiliza un sitio web para promocionarlo. Esta web tiene un aspecto muy profesional y contiene información detallada sobre el bot, incluyendo su coste (200 $ por cada versión) e incluso un completo informe de cambios de la evolución del código.

A pesar de que no hemos visto directamente la distribución de Win 32/Napolar, parece que esta amenaza se ha estado distribuyendo a través de Facebook. Debido a que el malware tiene la habilidad de robar las credenciales de Facebook, su operador puede reutilizar estas credenciales para enviar mensajes desde cuentas comprometidas y tratar de infectar a los amigos de la víctima. A continuación mostramos un listado de los nombres de archivos que se han utilizado en esta familia de malware:

  • Photo_032.JPG_www.facebook.com.exe
  • Photo_012-WWW.FACEBOOK.COM.exe
  • Photo_014-WWW.FACEBOOK.COM.exe

Curiosamente, esta amenaza utiliza el viejo truco de utilizar una doble extensión para ocultar la verdadera (*.JPG.EXE, *.TXT.EXE y similares), algo que se remonta a tiempos de Windows 95 pero que sigue utilizándose. Lo divertido sobre este uso de la doble extensión es que el autor de Win32/Napolar no parece darse cuenta de que .COM es una extensión válida, aunque algo vieja, para ficheros ejecutables y que este nombre del fichero hubiera permitido su ejecución sin añadir la extensión .EXE. Un post reciente de nuestros compañeros de AVAST confirma que ellos han visto vectores de infección similares.

En este artículo mostraremos algunos de los trucos antidepuración utilizados por Win32/Napolar. Estos trucos fueron observados en versiones tempranas de esta familia de malware. Las variantes más recientes también utilizan packers de terceros para evadir la detección antivirus y ralentizar la ingeniería inversa manual.

Seguidamente explicaremos el protocolo de mando y control (C&C) utilizado por Win32/Napolar. Finalmente, mostraremos parte de la información que fue recopilada de la web promocional antes de que fuera eliminada.

Técnicas Antidebugging

Cuando analizamos los binarios de Win32/Napolar, la primera cosa de la que nos dimos cuenta fue que no existían puntos de entrada válidos en la cabecera PE, tal y como se muestra en la imagen a continuación:

01_original_entrypoint_to_0

Las primeras instrucciones que se ejecutan cuando se inicia el binario se guardan en las funciones Thread Local Storage (TLS). Hay dos funciones TLS registradas, la primera de las cuales no hace nada. La segunda función descifra más código utilizando el algoritmo de cifrado RC4 y la clave 0xDEADBEEF. El código descifrado se registra como una tercera función TLS antes del retorno de la segunda función, tal y como se muestra en el extracto de código a continuación.

02_inserting_third_tls

La tercera función TLS descifra el resto del código antes de llamar al cuerpo principal del malware. Este código malicioso utiliza otros trucos para hacer más difícil su análisis:

  • Todos los imports se resuelven en el tiempo de ejecución utilizando hashes en lugar de nombres de import.
  • Las interacciones con el sistema operativo se realizan de forma mayoritaria llamando directamente a funciones indocumentadas de la librería NTDLL en lugar de utilizar las API estándar.
  • Todo el código es independiente de la posición en la que se encuentra.

Para encontrar el offset de su propio código que será descifrado, Win32/Napolar busca en su memoria el opcode 0×55. Este opcode representa a “push ebp”, la primera instrucción de la función actual en el lenguaje ensamblador. Si esta instrucción es reemplazada por 0xCC, el opcode para un software breakpoint, el descifrado del código no funcionará. Esta es una manera inteligente de alterar el comportamiento del malware si está siendo analizado con un depurador y si se coloca un software breakpoint en la primera instrucción del TLS.

Win32/Napolar dispone de más trucos antidepuración. Para hacer más complicado el análisis dinámico, Win32/Napolar generará un subproceso de sí mismo y lo depurará con una nueva instancia. La imagen a continuación muestra la llamada a CreateProcess.

05_create_process_debug_only

La técnica de protección del software de la autodepuración ha sido vista con anterioridad, pero en el caso de Win32/Napolar, esto ocurre en el cuerpo principal del malware, no en el packer.

Una vez que ha empezado el proceso de depuración, Win32/Napolar entrará en un bucle que controla los eventos de depuración devueltos por la función WaitForDebugEvent. A continuación se presenta el pseudocódigo del manejo del bucle de eventos de depuración:

04_pseudo_code_debug_loop

El primer evento manejado por este código es  CREATE_PROCESS_DEBUG_EVENT. Este evento tiene lugar cuando el proceso depurado se inicia. En este caso, el proceso principal analizará las cabeceras MZ y PE del proceso depurado para poder recuperar el offset y el tamaño del código independiente de la posición. A continuación reservará otra área de memoria en el proceso depurado, en el cual inyectará el código. Esto genera dos copias del mismo código en el mismo proceso.

El siguiente evento es EXCEPTION_DEBUG_EVENT. En este segundo evento, el proceso principal sobrescribe la primera función TLS del binario para redirigir la ejecución al principio del ejecutable, utilizando una instrucción push – ret. Esto, de nuevo, descifra el cuerpo principal del malware y permite ejecutarlo en el proceso hijo. Es el código del proceso hijo el que procede a inyectarse a sí mismo en todos los procesos que ejecuten subprocesos y anclándose a varias funciones para ocultar su presencia en el sistema y capturar la información deseada.

Finalmente, el proceso principal recibe el evento EXIT_PROCESS_DEBUG_EVENT. Detiene la depuración llamando a la función DebugActiveProcessStop y finaliza su propio proceso utilizando NtTerminateProcess.

chart

Una de las principales características de Win32/Napolar es su habilidad para robar información cuando un usuario rellena un formulario web en un navegador. La protección del navegador de Trusteer probablemente sea capaz de evitar que el malware capture esta información. Este es el motivo por el cual el malware revisa el sistema en búsqueda de productos de Trusteer. Irá pasando por todos los procesos en ejecución y detendrá específicamente cualquier proceso que contenga la cadena “trusteer” en él. No realizamos ninguna prueba para confirmar si este intento de deshabilitar los productos Trusteer funcionaba o no.

Comportamiento de la red

Cuando se comunica con el servidor y centro de mando y control, Win32/Napolar utiliza el protocolo HTTP. La primera búsqueda enviada por el bot al C&C contiene la siguiente información:

  • Versión del bot
  • Nombre del usuario de Windows del usuario infectado
  • Nombre del ordenador
  • Un identificador único del bot
  • Versión del sistema operativo
  • Tipo del sistema, de 32 o 64 bits. De hecho, este bot soporta ambos tipos de arquitectura.

El servidor responde a continuación con comandos que el bot debe ejecutar. Estos comandos están cifrados utilizando RC4, el identificador único del bot se utiliza como clave de cifrado. El bot soporta una variedad de comandos, desde el robo de información y el proxy de SOCKS, a la denegación de servicio, descarga, ejecución y actualización. Cada comando tiene un identificador único almacenado como un único byte y la información que sigue a este byte contiene los parámetros del comando. La siguiente imagen muestra un volcado del tráfico de comunicación entre un sistema infectado por Win32/Napolar y su centro de mando y control.

06_napolar_POST

La siguiente imagen muestra la descripción de este comando usando la clave adecuada. El primer byte del contenido recibido es 0xC, y esto le indica al bot que debe ponerse en modo reposo. El parámetro es una cadena, “600”, que representa el número de segundos que el bot estará en modo reposo.

07_decrypted_cnc_nop

Hemos visto al menos siete centros de mando y control diferentes utilizados por Win32/Napolar. La mayoría de ellos solo permanecieron online durante un par de días antes de que el operador los moviera a otra red. Esto podría indicar que este bot estaba siendo usado activamente. A continuación mostramos una lista de nombres de dominio donde hemos observado servidores de mando y control recientemente:

  • dabakhost.be
  • terra-araucania.cl
  • xyz25.com
  • yandafia.com
  • elzbthfntr.com
  • alfadente.com.br

Existen algunas referencias a la red TOR en el código del malware. Más precisamente, algunas líneas de configuración y referencias al fichero de configuración de TOR. Durante nuestro análisis del malware no se apreció que estuviese haciendo ningún uso de estos datos. Podría tratarse de una característica latente que no estuviese activada en las muestras que hemos analizado.

Sitio web promocional

El autor de Win32/Napolar parece ir muy en serio cuando se trata de vender su Nuevo malware. Para ello ha preparado una web con un aspecto muy profesional donde anuncia su bot como “un bot basado en una shellcode profesional”, referiéndose al hecho de que el malware es independiente de la posición.

08_solar_website1

Este sitio web también proporciona información útil para clientes potenciales. Por ejemplo, el código completo para el servidor de mando y control puede encontrarse aquí, un script en php ejecutándose con una base de datos SQL como backend. El código del servidor de mando y control confirma nuestro análisis del protocolo de red utilizado por el malware Win32/Napolar.

El sitio web promocional también proporciona múltiples ejemplos de complementos que pueden ser utilizados por los operadores del malware. Estos complementos deben haberse escrito utilizando el lenguaje de programación Delphi. Los complementos de ejemplo muestran cómo se puede mostrar un mensaje en un sistema infectado, averiguar qué versión del antivirus hay instalada en el sistema de la víctima e incluso cómo robar monederos Bitcoin.

Finalmente, el sitio web presenta incluso un completo registro de los cambios realizados al código fuente del bot, incluyendo información sobre nuevas características y fallos solucionados. La web muestra la primera entrada en el registro de cambios el 14 de julio. Esto cuadra con nuestra línea temporal ya que observamos las primeras muestras de este bot siendo propagadas a principios de agosto. La fecha de registro del nombre de dominio donde el contenido se encuentra alojado es el primer día de agosto, otro indicio de que el inicio de esta propagación es reciente.

09_solar_website2

Conclusiones

Win32/Napolar es un nuevo bot que apareció en escena en julio y empezó a observarse siendo propagado en agosto. Utiliza técnicas interesantes para contrarrestar la ingeniería inversa. El punto más destacable sobre este malware es cómo se está promocionando abiertamente por su creador utilizando un sitio web. Este anuncio es probablemente el mismo que fue identificado por Dancho Danchev en webroot en julio.

Hemos visto muchos mensajes en varios foros promocionando este bot, como complemento a la existencia de un sitio web accesible públicamente. Tal y como se discutió previamente en el caso Foxxy este es otro buen ejemplo de especialización de las operaciones cibercriminales donde, claramente, tenemos creadores de malware que lo venden a otras bandas para que ellos lo utilicen.

A pesar de que este bot cuenta con funcionalidades similares a las de otras familias como Zeus o SpyEye, podría ganar popularidad porque su autor se encuentra manteniéndolo de forma activa, y también por su facilidad de uso y simplicidad con la que los complementos pueden ser creados.

Ficheros analizados

A continuación mostramos los hashes MD5 de los ficheros analizados:

  • 85e5a0951182de95827f1135721f73ad0828b6bc
  • 9c159f00292a22b7b609e1e8b1cf960e8a4fa795
  • a86e4bd51c15b17f89544f94105c397d64a060bb
  • ce24ae6d55c008e7a75fb78cfe033576d8416940
  • dacfa9d0c4b37f1966441075b6ef34ec8adc1aa6

Agradecimientos

Gracias a Lubomir Trebula y Joan Calvet por su ayuda mientras analizábamos este malware.

Josep Albors

Hacking de vehículos no tripulados. ¿Ficción o realidad?