La ciudadela crimeware kit – bajo el microscopio

James Wyke de SophosLabs
pone la Ciudadela crimeware kit
bajo el microscopio

Desde que el código fuente del kit de crimeware Zeus , también conocido como Zbot , se filtró en Internet en mayo de 2011, muchas nuevas variantes han aparecido. Estos típicamente han añadido nuevas características y mejorado en el código anterior.

Un ejemplo particularmente prevalente es Ciudadela.

En su esencia, la Ciudadela funciona como el Zbot original. Viene en un kit que incluye una herramienta de creación de malware y una colección de componentes del lado del servidor. El constructor se utiliza para crear el malware bot (un archivo EXE) que se envía a propagar la infección:

Hay varias mejoras que hacen de Ciudadela se destacan, y dar crédito a los intentos de los autores para hacer la Ciudadela kit de crimeware de elección para los ciberdelincuentes:

  • El rápido desarrollo de nuevas características, tales como la captura de vídeo y la redirección de DNS.
  • Un built-in Customer Relationship Management (CRM) para que los problemas se aborden de manera rápida y eficaz.

Citadel ha pasado por varias revisiones significativas, la más reciente de una actualización a la versión 1.3.5.1, en octubre de 2012.

En la lista de cambios de esta versión fueron dos entradas que particularmente me llamó la atención:

El algoritmo de cifrado interior ha sido completamente rediseñado. El número de ejecuciones éxito serán mucho más altas, y los robots vivan más tiempo. Para actualizar los robots a la nueva versión, realice el http://www.host.com/1351.exe user_execute comando. La clave RC4 deben coincidir.

WebInjects. Este módulo está diseñado para actualizaciones rápidas utilizando la inyección en el navegador. El módulo le permite instalar cualquier código de inyección a un ID específico bot, país o botnet sólo en unos pocos minutos, sin necesidad de editar el archivo de configuración. El módulo se controla a través de la consola de administración.

Estas entradas aseguran que ha habido mejoras importantes en los algoritmos de encriptación internos para reforzar la seguridad de la botnet, y que hay una nueva característica que permite la actualización dinámica del código que se inyecta en los navegadores web.

En primer lugar, se examinarán los cambios en los algoritmos de encriptación internos.

El Zbot original utilizado cifrado en varios lugares para que los aspectos de su operación más difícil de detectar. En particular, el archivo de configuración y la comunicación HTTP con el servidor de comando y control fueron cifrados.

Versión 2.0.8.9 de Zeus / Zbot (el que fue filtrado) llevó a cabo el mando y control de la transmisión mediante solicitudes HTTP POST.

Los datos de entrada se ha cifrado con el algoritmo RC4 con una clave compartida por el ejecutable bot y el servidor. El archivo de configuración se ha cifrado con RC4, pero también tuvo un cifrado XOR basada en la parte superior mencionado en la fuente como "visualEncrypt" ("visualDecrypt" para el descifrado) que puede ser representada así:

 for x in range (len (post_data) -1):
    byte = (post_data [x] & 0xff) ^ (post_data [x +1] & 0xff)
    post_data [x +1] = byte 

Una de las principales quejas sobre el funcionamiento del malware Zbot original era que el archivo de configuración fue fácil de agarrar.

Cuando se ejecuta, el bot envía una solicitud HTTP GET a una URL codificada. Esta solicitud GET era todo lo que necesitaba para ir a buscar el archivo de configuración de cifrado. Con la dirección y la clave de descifrado incorporado en cada variante del bot, que era fácil de extraer las direcciones URL importantes y el seguimiento de cada botnet individuo en la familia Zbot.

Citadel intenta proteger su configuración, al exigir que una solicitud especialmente diseñada HTTP POST hacerse antes de que el archivo de configuración se pueden recuperar. Estos datos POST es encriptada y ajustes varios se han hecho para el proceso de cifrado.

He aquí un resumen:

Este proceso general ha seguido siendo la misma a través de revisiones Citadel, pero los detalles de los algoritmos de cifrado han cambiado.

Por ejemplo, el proceso de la versión 1.3.3.1 ampliamente implica visualEncrypt aplicando, a continuación, RC4.

La clave RC4 se obtiene tomando el MD5 de una cadena hexadecimal incrustado (conocido como el LOGIN_KEY), cifrando el resultado con RC4 utilizando una tecla embebido RC4, y después enviar el resultado a través de la rutina estándar RC4 horario de la llave para producir la clave final RC4:

Por versión 1.3.4.5 el proceso de cifrado se ha complicado aún más.

Cada encriptación RC4 incluye ahora una operación XOR extra, utilizando el valor LOGIN_KEY. Como complicación adicional, la nueva clave RC4 fue permutado adicional basada en una sal de cuatro bytes:

En la versión 1.3.5.1 no ha habido ninguna modificación adicional de esta área, pero el proceso para descifrar el archivo de configuración ha cambiado.

Para descifrar el archivo de configuración en la versión 2.0.8.9, que descifra los datos con RC4 utilizando el incorporado RC4 clave, entonces se aplica el "visualDecrypt" algoritmo. Citadel hecho algunos cambios a este procedimiento.

Aunque RC4 sigue participando, el algoritmo principal que proporciona confidencialidad es AES. El archivo de configuración se descifra con AES y luego con "visualDecrypt". La clave AES se obtiene tomando el MD5 del LOGIN_KEY y el cifrado RC4 con el resultado, utilizando el incorporado RC4 clave:

Por versión 1.3.4.5 a la generación de claves AES tuvo una etapa adicional: un XOR final con LOGIN_KEY:

En 1.3.5.1 la generación de claves es el mismo pero un XOR extra se aplica a cada bloque después de AES se ha aplicado, utilizando una nueva, incrustado 128-bit clave:

Como podemos ver, el único cambio importante en la encriptación de la última versión es que una nueva capa XOR se ha añadido en la parte superior de la AES. (La adición de cifrado débil a fuerte en realidad no aumentar la seguridad, por lo que este desmiente denuncia de los autores que han "completamente rediseñado" el algoritmo de cifrado interno.)

La segunda gran novedad en 1.3.5.1 es la función de inyección web dinámico.

Zbot ha tenido siempre la capacidad de inyectar código en las páginas web mientras navegas. Esta característica se ha utilizado tradicionalmente para agregar campos adicionales en los formularios web, tales como pedir un PIN, junto con un número de tarjeta de crédito.

Escribir el código HTML y JavaScript para web inyecta algo de una habilidad especializada, en particular cuando se trata de orquestar las transferencias de cuentas bancarias de la víctima. De hecho, inyecta se venden con frecuencia en el metro para otros criminales de integrar en su Zbot o crimeware Ciudadela.

En el pasado, estos web inyecta tuvo que ser construida en el archivo de configuración en sí, por lo que la actualización de ellos era un proceso lento y torpe. La última versión de esta ciudadela simplifica proporcionando un aparte, fast-track proceso de actualización sólo para la web inyecta.

Esta función se implementa a través de una nueva entrada en el archivo de configuración y un nuevo comando que se emite para el bot desde el servidor.

Citadel malware (y Zeus / Zbot) informa regularmente de nuevo a su mando y servidores de control mediante una solicitud HTTP POST a una URL definida en el archivo de configuración. (Esto se conoce como la "URL Drop Zone").

La información cargada incluye todos los datos que el robot ha recogido desde la actualización anterior.

Cuando el servidor reconoce la solicitud POST, que incluye opcionalmente una lista de comandos para decirle al bot EXE qué hacer a continuación. Cada elemento de la lista de mandatos consta de un identificador de escritura de 16 bytes (esto identifica el comando), el nombre del comando, y los argumentos de comandos.

La nueva web dinámica inyectar función se activa mediante un comando llamado webinjects_update, que toma dos argumentos. El primero es "discapacitado", "sencillo" o "dual" y el segundo es un nombre de ruta. Un comando típico es el siguiente:

ciudadela-fig-10

El primer argumento dicta como se inyecta nueva web será utilizada. "Dual" significa esta web inyectar archivo debe ser usado en conjunto con cualquier web existente inyecta contenida en el archivo de configuración, "solo" significa usar esta web inyectar archivo en lugar de los datos en el fichero de configuración, y "personas con discapacidad" se convierte web inyección off. El segundo argumento es la ruta completa al archivo que contiene el servidor web inyectar código.

Cuando el robot recibe este comando emite un HTTP POST a fin de solicitar la web recién especificado inyectar archivo, el servidor responde con el archivo correspondiente. El POST y la respuesta se da formato y revueltos utilizando el sistema de cifrado se ha descrito anteriormente. Una web sencilla inyectar se ve así:

ciudadela-fig-11

Después de haber hecho una inspección más detallada de estas dos nuevas características de Ciudadela, dos conclusiones vienen a la mente:

  • El comando webinjects_update muestra que los autores Citadel continúan inventando, la mejora de la calidad general de su producto mediante la adición de la funcionalidad de que ninguno de sus competidores ofrecen.
  • Las modificaciones de cifrado son muy leves, por lo que las reclamaciones de marketing siempre debe tomarse con una pizca de sal, sobre todo cuando son hechas por los ciberdelincuentes.

Por supuesto, la mejor manera de aumentar su protección contra la Ciudadela, y de hecho en contra de todas las variantes de Zbot otros, es con la defensa en profundidad.

Manténgase al día con los parches. Cuidado con los software de fuentes no fiables. Piense antes de hacer clic en los correos electrónicos.

Y reducir la posibilidad de que los autores de crimeware para robar espacio en sus servidores.

No ponga sus servidores en línea y luego se dedicó a asegurarlos. Consiga sus defensas en primer lugar, y sólo entonces ir a vivir.