El siguiente post es una traducción de la publicación Malicious Apache module used for content injection: Linux/Chapro.A escrita por nuestro colega e investigador Pierre-Marc Bureau y publicada en el blog de ESET Norteamérica.

Más de la mitad de los servidores web de Internet utilizan Apache, por lo tanto, nos pareció alarmante descubrir un módulo malicioso in the wild (Chapro) diseñado para inyectar código en sitios alojados en servidores Apache comprometidos. Dicha preocupación aumentó más cuando descubrimos que este malware estaba siendo utilizado como parte de un esquema de robo de credenciales bancarias.

En una primera instancia nos preguntamos si esta amenaza estaba relacionada de alguna forma con Linux/Snakso.A, un rootkit diseñado para inyectar Iframe en servidores web, sin embargo, pudimos determinar que se trata de una amenaza completamente distinta. El módulo malicioso para Apache que analizamos es detectado por los productos de ESET como Linux/Chapro.A. El principal objetivo de Chapro es inyectar código dentro de sitios web alojados en un servidor comprometido. En la siguiente imagen es posible apreciar la inyección de código (puede ser JavaScript u otro tipo):Esquema funcionamiento inyección Iframe

Pese a que este módulo puede inyectar cualquier tipo de código, en este caso descubrimos que estaba siendo utilizado para infectar computadoras con una variante del troyano Win32/Zbot a través de la inyección de etiquetas Iframe. Asimismo, descubrimos algunas características de este malware diseñadas para ocultar su presencia en el sistema y de ese modo, disminuir la posibilidad de que un administrador encuentre la infección. Nuestro análisis incluyó tanto el módulo malicioso para Apache como la amenaza que estaba siendo propagada. A continuación explicaremos el funcionamiento de Chapro, el kit de exploit utilizado para instalar el malware y el payload (comportamiento) de la variante de Zbot asociada a este caso.

Características de Linux/Chapro.A

Chapro es un módulo malicioso para Apache que consta de un binario de Linux de 64 bit. Este malware utiliza una técnica de ofuscación que consiste en un bucle XOR con una llave de 12 bit de longitud que se utiliza para cifrar la mayoría de las string. La amenaza posee varias características para evadir la detección por parte de los administradores de sistemas. Antes de que se inyecte código en un sitio, Chapro comprueba múltiples elementos. Primero determina el user agent y lo compara con otros con el objetivo de evitar inyectar código si este pertenece a algún rastreador web (crawler) o navegador web que no sea vulnerable. La siguiente captura muestra algunas palabras claves que intenta evitar:

User agent que comprueba Chapro

Linux/Chapro.A también inspecciona todas las sesiones SSH activas del sistema Linux en el cual se está ejecutado. Esto lo hace con el fin de poder determinar las direcciones IP que están siendo utilizadas por dichos sistemas. Si un usuario visita algún sitio comprometido y la IP de este coincide con alguna dirección obtenida en la etapa anterior, se evita inyectar código. Esto dificulta que algún administrador, desarrollador web u otros que trabajen en dichos equipos, se den cuenta de la infección. Chapro también mantiene una lista de direcciones IP que han sido utilizadas para propagar contenido malicioso. Si un usuario visita un sitio comprometido en más de una ocasión desde la misma IP, recibirá el contenido malicioso solo una vez. Esto dificulta aún más el descubrimiento de esta amenaza.

Contenido inyectado

El principal objetivo de Chapro es inyectar etiquetas Iframe dentro de los sitios que están alojados en el servidor Apache comprometido.  Para lograr este propósito envía una petición HTTP Post al Centro de Comando y Control (C&C) cada diez minutos.  A continuación se muestra una imagen con una petición HTTP Post que envía este malware:

Petición HTTP Post

Al momento del análisis, el C&C estaba siendo alojado en Alemania, sin embargo, ya no está disponible. Como puede verse la petición es sencilla, solo incluye la versión del malware y del sistema operativo en el que se está ejecutando. Una vez que envía esta información, el C&C responde a la solicitud con el Iframe que inyectará el módulo malicioso para Apache. La etiqueta Iframe está cifrada utilizando base64 y XOR. Si la potencial víctima no cumple algunos de los requisitos que este código malicioso impone para evitar la infección,  se procede a la inyección del Iframe obtenido del Centro de Comando y Control. La captura que se expone a continuación muestra el código HTML que inyecta Chapro. La etiqueta Iframe es posicionada fuera del rango de visión del navegador web para que el usuario no note nada extraño.

Kit de exploit

Basados en nuestro análisis estamos seguros que la etiqueta Iframe que inyecta Linux/Chapro.A apunta al sitio del kit de exploitSweet Orange”. Al momento del análisis el kit de exploit estaba siendo alojado en Lituania. El pack intenta explotar las siguientes vulnerabilidades encontradas en algunos navegadores y plugin modernos:

Si el kit de exploit logra explotar una de esas vulnerabilidades, el payload final es ejecutado.

Payload de ataque

El objetivo final de todo este esquema de ataque es instalar una variante de Win32/Zbot también conocida como ZeuS. Este troyano ha sido utilizado por cibercriminales durante años para robar información bancaria. En este caso, el malware estaba robando información perteneciente a entidades financieras de Europa y Rusia. La siguiente imagen muestra un formulario que despliega un banco para que los usuarios puedan manejar sus cuentas en línea:

Entidad financiera y advertencia sobre casos de malware

Aparentemente este banco está consciente de que los cibercriminales están intentando obtener de los clientes los códigos PIN, CVC y CVV. De hecho, la institución financiera muestra una advertencia específica en el formulario, sin embargo, cuando este mismo sitio es visitado desde una computadora infectada, esta advertencia es removida por el malware como se puede apreciar a continuación:

Entidad financiera y advertencia ocultada por Zbot

Una vez que el usuario ha iniciado sesión en su cuenta, Zbot inyecta código para mostrar un pop-up que le solicita al usuario ingresar su código CVV. Cabe destacar que la advertencia del banco describe exactamente este comportamiento malicioso (la petición del código CVV por parte de ciberdelincuentes).

Conclusiones

El esquema de ataque utilizado por Linux/Chapro.A ha sido documentado solo una vez en el pasado. Por otro lado, nuestro sistema de estadísticas no ha reportado otra instalación in the wild de este módulo malicioso para Apache. Pese a que el objetivo de Chapro es el mismo que de Snakso, es decir, inyectar etiquetas Iframe en sitios web, pudimos concluir que ambas son amenazas pertenecientes a familias completamente distintas.

Pese a que no hemos observado otros casos de Chapro in the wild , notamos miles de usuarios accediendo al kit de exploit Sweet Orange antes de que bloqueáramos el acceso a este servidor en nuestros productos. No obstante cabe destacar que ESET bloqueó los intentos de explotación mediante una firma genérica incluso antes de que impidiéramos el acceso al sitio malicioso. El ataque descrito en el presente análisis demuestra el aumento en la complejidad de los códigos maliciosos. Esta operación delictual se propagó a través de tres países y las víctimas pertenecían a una cuarta nación, lo que dificulta el actuar de las autoridades frente a estos delitos. Desconocemos con exactitud si son los mismos ciberdelincuentes los responsables de toda esta operación, o si múltiples grupos de cibercriminales intervinieron en todo el proceso. Quizá hubo algún grupo encargado de dirigir a las víctimas hacia el kit de exploit para luego vender las computadoras infectadas a otros ciberdelincuentes que estaban utilizando Zbot.

Agradecimientos

Les damos las gracias a los siguientes investigadores por haber colaborado en este análisis: Jean-Ian Boutin, François Chagnon, Sébastien Duquette y Aleksander Matrosov.

Actualización (21/12/2012): ESET Norteamérica ha publicado un post aclaratorio en donde se explican algunos aspectos de este código malicioso diseñado para afectar servidores web Apache. En la publicación Malicious Apache Module: a clarification se dilucidan temas como el hecho de que desconocemos con exactitud si Chapro logró ingresar al servidor comprometido a través de la explotación de una vulnerabilidad de Apache. También aprovechamos de mencionar que es poco probable que este malware haya sido propagado a través de una distribución de Linux debido a que el número de servidores infectados sería mucho mayor. Más antecedentes pueden ser consultados en el enlace citado anteriormente.

Traducido y adaptado por André Goujon
Especialista de Awareness & Research