Wibimo: una nueva botnet modular con tecnología fast-flux

Introducción

Joe Stewart, director de investigación de malware en el SecureWorks Counter Threat Unit de Dell, presentó en la última Conferencia de seguridad RSA de EE.UU. una nueva botnet llamada "Wibimo" que utiliza tecnología fast-flux.

Fast-flux o tecnología de flujo rápido fue utilizada por primera vez en el año 2007 por Storm y consiste en rotar rápidamente los registros DNS utilizando un conjunto de direcciones IP, por lo que si uno de ellos es desmantelado, el hostname no se queda sin conexión.

Cada infección de Wibimo actúa como un servidor proxy y puede alojar un sitio de spam pharma, que hace difícil para los investigadores y los grupos anti-spam cerrarlas, especialmente si los dominios fueron registrados con un registrador que no responde a los informes de abuso.

Además de spam de pharma, la botnet es también parte de un plan de pago por instalación, donde otros delincuentes cibernéticos pagan sus autores para distribuir su malware.

Las víctimas infectan sus equipos con Wibimo visitando enlaces maliciosos propagados a través de correo electrónico. Wibimo se presenta primero como un dropper, una DLL primaria o principal y luego un número de módulos descargables que podrían venderse por separado en el mercado underground: un proxy troyano, un proxy DNS, un proxy inverso-HTTP y un componente de recopilación de información del sistema.

Según Stewart, los datos recolectados hasta ahora conducen a un autor ruso y uno que no puede ser considerado mediocre a la hora de escribir malware. "Fast-flux es más difícil de realizar... tienes que estar en un nivel superior de programación", dijo el investigador.

El dropper

Cuando las víctimas ejecutan el dropper (socks.exe, MD5 df215759717c7b0fc0a8ca62b2f63aae) lo primero que hace el malware es chequear la versión de Windows utilizada:

Windows XP y anteriores:

Con un usuario con permisos de administrador:
- Genera una DLL con un nombre aleatorio de 8 caracteres con el prefijo "ms"
- Descifra la librería principal embebida y la copia a la carpeta del sistema
- Añade el nombre de la DLL principal a la clave de registro SecurityProviders
- Añade rundll32.exe como aplicación autorizada en la clave de registro FirewallPolicy
- Añade el puerto TCP 80 como puerto global abierto en la clave de registro FirewallPolicy

Con un usuario sin permisos de administrador:
- Genera una DLL con un nombre aleatorio de 8 caracteres con el prefijo "ms"
- Descifra la librería principal embebida y la copia a la carpeta "Application Data" del usuario
- Añade el nombre de la DLL principal a la clave de registro "Run" del usuario actual
- Añade rundll32.exe como aplicación autorizada en la clave de registro FirewallPolicy
- Añade el puerto TCP 80 como puerto global abierto en la clave de registro FirewallPolicy

Windows Vista y posteriores:

Con un usuario con permisos de administrador:
- Genera una DLL con un nombre aleatorio de 8 caracteres con el prefijo "ms"
- Descifra la librería principal embebida y la copia a la carpeta del sistema
- Añade el nombre de la DLL principal a la clave de registro SecurityProviders
- Añade rundll32.exe como aplicación autorizada usando la herramienta "advfirewall"
- Añade el puerto TCP 80 como puerto global abierto usando la herramienta "advfirewall"

Con un usuario sin permisos de administrador (bypass UAC):
- Inyecta el exploit sysprep.exe para evadir UAC
- Descifra la librería principal embebida y la copia a la carpeta "Application Data" del usuario
- Añade el nombre de la DLL principal a la clave de registro "Run" del usuario actual
- Añade el nombre de la DLL principal a la clave de registro SecurityProviders
- Añade rundll32.exe como aplicación autorizada usando la herramienta "advfirewall"
- Añade el puerto TCP 80 como puerto global abierto usando la herramienta "advfirewall"

Finalmente, si la instalación falla, Wibimo ejecuta rundll32.exe con la DLL payload como argumento.

DLL principal

Inicialización

La función de la DLL principal (ms[seis caracteres aleatorios].dll, MD5 e5341d5e99d4b0794e440ce3a1e94391) es establecer contacto con el servidor C&C y localizar y descargar los módulos adicionales que proveen las funciones necesarias para la operación de la botnet fast-flux.

La fase inicial utiliza registros DNS TXT para obtener la localización de la URL con el payload. El código realiza los siguiente pasos:

- Envía una petición DNS TXT a cada dominio de los C&C dentro de una lista embebida hasta que recibe una respuesta TXT válida indicando un C&C correcto
- Envía una segunda petición TXT para obtener el nombre de host del C&C
- Descifra la respuesta TXT para conseguir la URL con el payload
- Descarga y descifra el payload desde la URL, verificando la integridad del payload con un checksum
- Carga manualmente el módulo dentro de la memoria, resolviendo las funciones importadas de la API y saltando la funcionalidad "LoadLibrary" de Windows
- Crea un nuevo hilo al principio de la función DllRegisterServer del módulo cargado

Cifrado

Wibimo utiliza RC4 con 10 pasadas para todos sus cifrados, incluyendo las strings del dropper inicial, la comunicación por medio de los registros DNS TXT y el payload del fichero.

El formato de la comunicación del registro DNS TXT es un codificación hexadecimal del los datos cifrados con RC4 (10-round), donde los primeros 4 bytes de la respuesta son la passphrase RC4 utilizada para generar la clave RC4 de 2048 bits.

A continuación mostramos un ejemplo de una comunicación DNS de una sesión de Wibimo:

Petición 1

Cliente: TXT? txt.domaincheker.name.
Servidor: TXT "F23869D5B1BC8CF03654797497C0C2B10DDC1C4E"
Descifrado: "domaincheker"

Petición 2

Cliente: TXT? txt-1.domaincheker.biz.
Servidor: TXT "151D2321133A42D427183BE76127FFC7364DA7F6714FAA7ABDCE6AE34A4E312753C826E8402B159029
5C70B63A0AE384340DAEE5754FE177B69472BE574E323753D033F844221DDA74073CFD2872AA8D6C13"
Descifrado: "2|6|6|sites.google.com/site/alabama88888/Home/ftheend77.ttf?attredirects=0"

Los módulos tiene 8 bytes adicionales, que corresponden a la longitud de 32 bits del payload seguidos por los 32 bits de su checksum. Estos datos son utilizados para verificar la integridad del módulo antes de cargarlo en memoria y ejecutar su función principal.

Módulos

En la versión analizada, la librería DLL principal dio instrucciones para descargar los módulos desde un sitio de Google público, donde los adjuntos fueron subidos por el dueño de la botnet:


Un análisis de los adjuntos del sitio revela la funcionalidad provista por cada módulo:

- ftheend7.ttf: HTTP proxy inverso que utiliza el puerto 80/TCP del sistema infectado
- qwe.ttf: proxy connect-back (protocolos HTTP y SOCKS) para anonimizar el spam y el tráfico web del dueño de la botnet
- really.ttf: proxy DNS que contesta a la peticiones de los dominios hospedados de la botnet, redirigiendo la peticiones a un controlador backend a través del puerto 25/TCP
- siska.ttf: recoge la información del sistema y la transmite al dueño de la botnet

Además algunos ficheros del sitio de Google contienen algunas cadenas que pueden ser leídas:

00000000  52 43 34 21 10 00 00 00  02 01 14 12 00 70 6c 61  |RC4!.........pla|
00000010 79 77 69 74 68 6d 65 2d 31 31 30 30 61 64 2e 72 |ywithme-1100ad.r|
00000020 75 00 52 00 0d 38 37 2e 32 32 36 2e 31 37 2e 31 |u.R..87.226.17.1|
00000030 30 34 00 2f 00 02 01 14 12 00 70 65 72 66 65 63 |04./......perfec|
00000040 74 6f 6e 6c 69 6e 65 67 61 6d 65 2e 72 75 00 52 |tonlinegame.ru.R|
00000050 00 0d 38 37 2e 32 32 36 2e 31 37 2e 31 30 34 00 |..87.226.17.104.|
00000060 2f 00 02 01 10 12 00 70 65 72 66 65 63 74 63 68 |/......perfectch|
00000070 61 6e 63 65 2e 72 75 00 01 20 0d 38 38 2e 31 39 |ance.ru.. .88.19|
00000080 38 2e 34 36 2e 31 35 31 00 2f 00 02 01 0f 12 00 |8.46.151./......|
00000090 6d 6f 6e 65 79 6c 69 6b 65 79 6f 75 2e 72 75 00 |moneylikeyou.ru.|
000000a0 01 20 0d 38 38 2e 31 39 38 2e 34 36 2e 31 35 31 |. .88.198.46.151|
000000b0 00 2f 00 02 01 10 12 00 6c 75 63 6b 79 64 61 79 |./......luckyday|
000000c0 74 6f 64 61 79 2e 72 75 00 01 20 0d 38 38 2e 31 |today.ru.. .88.1|
000000d0 39 38 2e 34 36 2e 31 35 31 00 2f 00 02 01 0e 12 |98.46.151./.....|
000000e0 00 69 6d 76 65 72 79 6c 75 63 6b 79 2e 72 75 00 |.imverylucky.ru.|
000000f0 01 20 0d 38 38 2e 31 39 38 2e 34 36 2e 31 35 31 |. .88.198.46.151|
00000100 00 2f 00 02 01 11 12 00 69 6c 69 6b 65 79 6f 75 |./......ilikeyou|
00000110 72 6d 6f 6e 65 79 2e 72 75 00 ff 1f 0d 38 38 2e |rmoney.ru....88.|
00000120 31 39 38 2e 34 36 2e 31 35 31 00 2f 00 02 01 0c |198.46.151./....|
00000130 12 00 68 61 76 79 6d 6f 6e 65 79 2e 72 75 00 01 |..havymoney.ru..|
00000140 20 0d 38 38 2e 31 39 38 2e 34 36 2e 31 35 31 00 | .88.198.46.151.|
00000150 2f 00 02 01 12 12 00 67 6f 6f 64 77 6f 72 6c 64 |/......goodworld|
00000160 6f 6e 6c 69 6e 65 2e 72 75 00 52 00 0d 38 37 2e |online.ru.R..87.|
00000170 32 32 36 2e 31 37 2e 31 30 34 00 2f 00 02 01 0c |226.17.104./....|
00000180 12 00 66 69 6e 65 6c 75 63 6b 79 2e 72 75 00 01 |..finelucky.ru..|
00000190 20 0d 38 38 2e 31 39 38 2e 34 36 2e 31 35 31 00 | .88.198.46.151.|
000001a0 2f 00 02 01 13 12 00 66 69 6e 65 62 72 6f 77 73 |/......finebrows|
000001b0 65 72 77 6f 72 6c 64 2e 72 75 00 52 00 0d 38 37 |erworld.ru.R..87|
000001c0 2e 32 32 36 2e 31 37 2e 31 30 34 00 2f 00 02 01 |.226.17.104./...|
000001d0 0f 12 00 63 61 73 69 6e 6f 77 6c 75 63 6b 79 2e |...casinowlucky.|
000001e0 72 75 00 01 20 0d 38 38 2e 31 39 38 2e 34 36 2e |ru.. .88.198.46.|
000001f0 31 35 31 00 2f 00 02 01 11 12 00 63 61 73 69 6e |151./......casin|
00000200 6f 6c 75 63 6b 79 64 61 79 2e 72 75 00 01 20 0d |oluckyday.ru.. .|
00000210 38 38 2e 31 39 38 2e 34 36 2e 31 35 31 00 2f 00 |88.198.46.151./.|
00000220 02 01 15 12 00 62 65 73 74 6f 6e 6c 69 6e 65 67 |.....bestonlineg|
00000230 61 6d 65 32 30 31 31 2e 72 75 00 52 00 0d 38 37 |ame2011.ru.R..87|
00000240 2e 32 32 36 2e 31 37 2e 31 30 34 00 2f 00 02 01 |.226.17.104./...|
00000250 0e 12 00 61 6d 61 7a 69 6e 67 62 65 73 74 2e 72 |...amazingbest.r|
00000260 75 00 01 20 0d 38 38 2e 31 39 38 2e 34 36 2e 31 |u.. .88.198.46.1|
00000270 35 31 00 2f 00 01 04 00 11 00 00 68 74 74 70 3a |51./.......http:|
00000280 2f 2f 67 6f 6f 67 6c 65 2e 63 6f 6d 00 |//google.com.|

El fichero de configuración contiene las direcciones IP de backend donde Wibimo proxificará el tráfico para cada petición de cada dominio de la botnet. Un servidor en segundo plano realizará un seguimiento de los sistemas infectados y distribuirá las IPs para cada petición DNS, en una rotación similar a la utilizada en las botnets fast-flux. En el caso de Wibimo, se observa una lista de 10 IPs para cada respuesta DNS, con un time-to-live de 10 segundos de duración.

Contramedidas

Aunque Wibimo puede ser fácilmente eliminado borrando la librería DLL principal y las claves de registro asociadas, el vector de instalación observado indica que Wibimo introduce normalmente varias familias de malware al mismo tiempo, algunas de ellas probablemente más persistentes que el propio Wibimo. Por esta razón, lo mejor es reinstalar el sistema operativo de la máquina infectada.

Fuentes
- Dell SecureWorks CTU research team (Threat ID: 510)
- Softpedia

Comentarios