La siguiente publicación es una traducción y adaptación del post "The rise of TOR-based botnets", escrito por Anton Cherepanov y Aleksandr Matrosov y publicado en We Live Security.

Las botnets basadas en Tor no son un concepto totalmente nuevo, ya que se viene hablando de ellas desde el evento Defcon 18 (“Resilient Botnet Command and Control with Tor”). Sin embargo, durante el último año hemos podido confirmar algunos hechos interesantes respecto al uso de estas ideas en botnets reales. Así, a principios del 2013 este tema fue discutido en un post en el blog de Rapid7 (“Skynet, a Tor-powered botnet straight from Reddit”). Además, los primeros días de julio Dancho Danchev publicó información acerca de un Centro de Comando y Control (C&C) basado en Tor, para un rootkit en ring-3.

Hemos estado siguiendo de cerca el crecimiento de las botnets basadas en Tor estos últimos meses. En julio se detectaron dos familias de malware distintas que utilizan el protocolo de servicios ocultos que brinda Tor, para lograr una comunicación más sigilosa con el C&C. Este protocolo, si bien es especialmente bueno para organizar un canal de comunicaciones silencioso con el C&C, es muy lento para transportar grandes volúmenes de datos robados en las máquinas infectadas. Luego, la utilización de esta técnica resulta útil para los cibercriminales cuando se necesita comunicación simple con el C&C, para obtener actualizaciones en la configuración, o para descargar módulos maliciosos adicionales desde el C&C.

En julio, desde ESET detectaron dos tipos distintos de botnets basadas en Tor, variantes de Win32/Atrax y Win32/Agent.PTA respectivamente. Ambas botnets tienen funcionalidades para capturar datos de formularios web, posibilitando la realización de fraudes. En particular, la botnet Atrax es más compleja e interesante, por lo que será analizada en mayor detalle en este post.

Win32/Atrax.A

Win32/Atrax.A es un caso interesante de una familia de malware de tipo backdoor basada en Tor, la cual es instalada mediante un simple downloader, detectado por ESET NOD32 Antivirus como Win32/TrojanDownloader.Tiny.NIR. En la siguiente imagen se observa el resultado de descompilar la rutina principal de este downloader:

Lo más importante que se puede observar es el hecho de que aparece un nombre de dominio directamente incluido en el código, correspondiente a “kundenservice-paypal.com”. Este nombre de dominio fue registrado el 12 de junio de 2013, y pretende hacerse pasar por el servicio al cliente de PayPal.

Todos los componentes del troyano, así como el ejecutable del downloader, fueron compilados en julio, de acuerdo con la información extraída del encabezado PE:

Luego de que el dropper principal es descargado y ejecutado, comienza la rutina de descompresión para 3 módulos PE: el cliente de Tor, el módulo DLL para plataformas x86 y el módulo DLL para x64. Para llevar a cabo esta tarea de descompresión, se utiliza la función RtlDecompressBuffer() de la API de Windows. El código fuente de la función que lleva a cabo la descompresión se expone a continuación:

Antes de llevar a cabo la instalación, el dropper realiza unas verificaciones para detectar si está siendo ejecutado dentro de una máquina virtual, o depurado con algún debugger. El número de ID que se le asigna al bot se corresponde con un valor de MD5, calculado a partir de las claves de registro DigitalProductID y MachineGuid, cuyos valores son únicos. A continuación se observa un gráfico con las llamadas, para la rutina que infecta la máquina:

Durante las últimas fases de ejecución, esta rutina realiza una búsqueda para encontrar la inicialización de plugins encriptados con el algoritmo AES, en el directorio %APPDATA%. Dichos plugins tienen nombres que se adecúan al siguiente patrón: %APPDATA%CC250462B0857727*. Además, son desencriptados durante el proceso de inicialización del bot, donde la clave de cifrado depende de la máquina infectada. Este enfoque de cifrado de plugins dificulta la extracción de información durante el proceso forense.

El cliente de Tor se encuentra embebido dentro del ejecutable del dropper y se almacena en el directorio %APPDATA%, cifrado con AES. La inicialización de la conexión Tor ocurre luego de que se encuentra un proceso activo de algún navegador y se le inyecta el código del cliente mediante la llamada a NtSetContextThread(). Win32/Atrax.A soporta técnicas de inyección de código para procesos de plataformas x86 y x64:

Todas las comunicaciones entre el bot y el C&C se llevan a cabo mediante una llamada a función que realiza una solicitud HTTP especial. El prototipo de dicha función es el siguiente:

Cuando el segundo parámetro, request_via_tor, toma el valor TRUE, todas las comunicaciones serán inicializadas con el cliente de Tor. Estas comunicaciones siguen el siguiente grafo:

Luego de la ejecución se crea un nuevo hilo con el cliente de Tor, con los siguientes parámetros:

  • AUTHENTICATE: contiene la contraseña para la autenticación.
  • SIGNAL NEWNYM: cambia la cadena de nodos proxy.

Cuando se realiza la primera conexión con el C&C, Atrax.A envía la información recopilada en el sistema infectado a una dirección dentro de la red Tor:

Si bien no es posible asegurar cuál es la dirección IP o dominio original en una conexión a través de Tor, sí es posible utilizar la dirección generada dentro de la red Tor para el análisis. Así, luego de realizar algunas pruebas y jugar un poco con esa dirección interna a la red de Tor, se encontró el siguiente panel para ingresar al C&C:

Se observa “Atrax” en esta pantalla, razón por la cual se le ha dado el nombre de Win32/Atrax.A a esta detección en los productos de ESET. Win32/Atrax.A soporta la ejecución de comandos en forma remota, para determinar el comportamiento del bot en la máquina infectada. La rutina principal que reconoce y ejecuta estos comandos se muestra en la siguiente imagen:

La lista de comandos remotos soportados es la siguiente:

  • dlexec: descargar y ejecutar un archivo.
  • dlrunmem: descargar un archivo e inyectarlo en el navegador.
  • dltorexec: descargar y ejecutar un archivo ejecutable de Tor.
  • dltorrunmem: descargar un archivo ejecutable de Tor e inyectarlo en el navegador.
  • update: actualizar el bot.
  • install: descargar archivo, encriptarlo con el algoritmo AES y guardarlo en %APPDATA%.
  • installexec: igual que install, pero además ejecuta el archivo.
  • kill: terminar la ejecución de todos los hilos propios.

Luego de reconstruir la estructura de los comandos remotos y el algoritmo de ejecución, intentamos jugar con el protocolo de comunicación con el C&C. Para esto se envió un mensaje de estado al C&C, confirmando la instalación exitosa de un plugin, con la fortuna de que se obtuvo como respuesta la ruta hasta el próximo plugin:

Se descargaron dos tipos distintos de plugin: el primero intercepta el envío de formularios web y obtiene los datos ingresados, mientras que el segundo roba contraseñas. Todos los módulos descargados fueron compilados en julio, según se puede observar. Aquí la captura para el primer módulo:

Y aquí la captura para el segundo módulo:

Win32/Atrax.A es un ejemplo interesante de botnet basada en Tor con cifrado AES para los plugins adicionales y una clave de cifrado única, que depende de parámetros en la máquina infectada para su generación. Actualmente seguimos rastreando la actividad de esta botnet.

Win32/Agent.PTA

Otra familia detectada en julio que utiliza un protocolo de comunicación basado en Tor es Win32/Agent.PTA. La familia en sí misma no es nueva, y ha sido seguida por ESET desde el 2012. Sin embargo, la utilización de Tor es una nueva funcionalidad detectada durante los últimos meses. Este troyano también utiliza el protocolo de servicios ocultos de Tor para comunicarse con el Centro de Comando y Control. Agent.PTA contiene la información de configuración embebida, cifrada con RC4 y cuyo C&C contiene direcciones que se encuentran dentro de la red Tor. La información no cifrada se ve así:

Win32/Agent.PTA es un troyano con funciones sencillas para interceptar datos de formularios web y la habilidad para descargar funciones adicionales. Además, el troyano puede activar un proxy por SOCKS5 al recibir un comando especial desde el C&C.

Conclusión

A lo largo de este año ya se habían detectado botnets basadas en Tor, pero durante estos últimos meses se ha observado un crecimiento en la cantidad de familias de malware que empiezan a utilizar comunicaciones basadas en el uso de Tor. Este tipo de botnets hacen que sea muy difícil la investigación y la posibilidad de rastrear la ubicación del C&C. Sin embargo, se ha podido demostrar con la botnet Win32/Atrax.A que la forma de analizar los protocolos de comunicación no ha cambiado, y los viejos trucos del análisis de malware funcionan dentro de las redes Tor también.

Traducido y adaptado por Matías Porolli
Especialista de Awareness & Research