IceRat evade el antivirus al ejecutar PHP en Java VM

IceRat mantiene bajas tasas de detección durante semanas mediante el uso de una implementación de lenguaje inusual: JPHP. Pero hay más razones que la elección del compilador. Este artículo explora IceRat y explica una forma de analizar el malware JPHP.

Descubrimiento de IceRat

El usuario McMcbrad de los foros de Malwaretips.com descubrió las primeras muestras de IceRat [5] [7]. El malware captó su interés debido a las bajas tasas de detección en Virus Total para la mayoría de las muestras relacionadas. En el momento del descubrimiento, solo 2 o 3 motores mostraron detección a pesar de que las muestras tenían un mes de antigüedad.

El análisis estático revela que la mayoría de los componentes de IceRat están escritos en JPHP . Esta es una implementación de PHP que se ejecuta en Java VM. Esta implementación usa archivos. phb en lugar de archivos .class de Java, un tipo de archivo que, como sospecho, no es comúnmente compatible con los productos antivirus. Hasta ahora no he escuchado ni encontrado ningún otro malware que use JPHP, lo que explica parcialmente las bajas tasas de detección en Virus Total.

El nombre IceRat se basa en el nombre del módulo de una muestra anterior [11] que encontró McMcbrad. .

Descompilación de JPHP

No parece haber ninguna herramienta para descompilar el código JPHP todavía. Pero JPHP tiene que producir código de bytes Java para ejecutarse en la máquina virtual Java. Por tanto, es posible la descompilación en código Java.

Al descomprimir el ejecutable [5] con 7zip se revela la siguiente estructura.

Como noté después de mirar varias muestras de JPHP, el punto de entrada para el código JPHP principal está en syste \application.conf (vea la imagen a continuación). Entonces, para nuestro ejemplo de klient.exe [5], el código principal reside en app \forms \rqfdeqwf.phb .

Los archivos .phb contienen los bytes mágicos 0xCAFEBABE para los archivos .class de Java en algún lugar más abajo. La eliminación de la primera parte del archivo excluyendo los bytes mágicos hace posible descompilar estos archivos en código Java con, por ejemplo, Fernflower. El lado derecho de la siguiente imagen muestra cómo debería verse el archivo después de la modificación.

El código descompilado todavía es difícil de leer. Como primer paso restauré las cuerdas. Todos ellos están en una matriz llamada $ MEM . Reemplazar el acceso a la matriz $ MEM [X] con el valor real en la matriz mejorará la legibilidad del código. Logré esto con un fragmento de Python.

Como segundo paso, reemplacé métodos como asignar y concatizar con operadores. Por ejemplo, esto se puede hacer usando expresiones regulares y grupos de captura. Consulte la tabla a continuación para ver los reemplazos. El reemplazo de un operador debe realizarse varias veces hasta que se reemplacen todas las llamadas anidadas. Debe conservarse el orden.

Todas las muestras de JPHP analizadas en este artículo se pueden descompilar en Java de la misma manera.

Todavía hay margen de mejora, pero después de los reemplazos, el código resultante se puede leer sin problemas.


Código de klient.exe [5] antes de la desofuscación

Cadena de infección y componentes

IceRat consta de varios componentes pequeños en lugar de poner todas las funciones en un solo archivo. Como resultado, es posible que la mayoría de estos archivos no atraigan la atención si falta su contexto. Por ejemplo, un descargador solo es malicioso si el archivo descargado es malware. Si falta información sobre el archivo descargado y no se puede inferir, no hay razón para detectar el descargador como malware.

La cadena de infección y los archivos relacionados se muestran en el siguiente gráfico. Los cuadros blancos muestran archivos no maliciosos. Al menos cuatro de estos archivos son archivos JPHP EXE, a saber,cheats.exe [4] , 1.exe [12] , klient.exe [5] y klip.exe [7] . El componente principal de IceRat es klient.exe [5] .


Cadena de infección y componentes de IceRat

Según McMcbrad, la primera muestra de IceRat provino de un documento malicioso para el que no mantuvo un hash o un archivo. La primera parte de la cadena que pude encontrar es Browes.exe [1] que puede haber sido distribuida como descarga de software troyano para CryptoTab. Browes.exe es un archivo WinRAR autoextraíble que coloca y ejecuta el archivo Windows Cabinet 1.exe [2] .

El archivo Windows Cabinet también es un cuentagotas para dos archivos más, a saber, una configuración no maliciosa [3] para el software CryptoTab y un descargador de malware llamado cheats.exe [4] . CryptoTab es un navegador con funciones de minería, pero su instalación no es silenciosa. El usuario afectado verá la ventana de configuración del navegador (ver imagen a continuación), por lo que supongo que CryptoTab se proporciona como un señuelo. Para resumir: la cadena de infección comienza con un descargador en un cuentagotas troyano en un cuentagotas.

El archivo JPHP cheats.exe [4] tiene el nombre de proyectodroper (sic). Accede al servidor principal de IceRat para descargar el backdoor klient.exe [5] . Elige al azar uno de los siguientes nombres de una lista:

  1. Sistema
  2. Jawas
  3. WindowsShell
  4. explorador
  5. antiDrw
  6. antiSsl
  7. ADB
  8. Microsoft
  9. sistema

Luego, escribirá el archivo en las siguientes ubicaciones:

  1. % APPDATA% \ Microsoft \ Windows \ Menú Inicio \ Programas \ Inicio \. <nombre> .exe
  2. c: \ Windows \ Temp \. <nombre> .exe
  3. d: \ Windows \ Temp \ <nombre> .exe

Este archivo, klient.exe, es el componente principal que será controlado por el servidor.

Comando y control

Aunque el nombre IceRat indica un troyano de acceso remoto, el malware actual se describe mejor como una puerta trasera. Faltan funciones para el control remoto real, por ejemplo, mover el mouse o teclear el teclado.

El comando y control se realiza mediante la verificación periódica del contenido de ciertos archivos en el servidor de malware. Por ejemplo, klient.exe [5] comprobará el contenido del archivo hxxp: //malina1306.zzz.com.ua/ dow_stil.txt . Si ese archivo contiene una línea que coincide con la cadena <MAC>: <OS>: <RAM>: <procesador>: <nombredeusuario> para el sistema infectado (ver imagen a continuación), klient.exe descargará el ladrón [6] de hxxp:
//malina1306.zzz.com.ua/ stel.exe y guárdelo en c: \ Windows \ Temp \ .Browser.exe. //malina1306.zzz.com.ua/ stel.exe y guárdelo en c: \ Windows \ Temp \ .Browser.exe.

De manera similar, se obtendrá un descargador de coinminer [7] si hxxp: //malina1306.zzz.com.ua/ dow_klip.txt tiene una línea correspondiente para el sistema infectado. Se descargará de hxxp://malina1306.zzz.com.ua/ klip.exe a c: \ Windows \ Temp \ .Chrome.exe.

El archivo 1.exe [12] se descarga de hxxp: //malina1306.zzz.com.ua/ 1.exe o hxxp: //bests.zzz.com.ua/ 1.exe y se guarda con un nombre generado aleatoriamente por creando un número aleatorio entre 10000 y 1000000. La ubicación del archivo resultante es c: \ Windows \ Temp \. <10000-1000000> .exe . Este componente se comunica a través de Telegram con el operador de malware.

Se hace referencia a dos archivos más en klient.exe pero ya no existen : hxxp: //malina1306.zzz.com.ua/ min.exe se descargaría en c: \ Windows \ Temp \ .Jawaw Se binar.exe . hxxp://malina1306.zzz.com.ua/ klog.exe se descargaría en c: \ Windows \ Temp \ .WindowsPush.exe. Según los nombres de los archivos, uno asumiría que min.exe debería ser el coinminer, mientras que klip.exe suena como un clipbanker. Pero eso no fue proporcionado por el servidor. klog.exe podría haber sido un keylogger.


Listado de clientes infectados, formato: <MAC>: <OS>: <RAM>: <procesador<nombreusuario>. Nosotros ocultamos la dirección MAC.

Listado de clientes infectados, formato: <MAC>: <OS>: <RAM>: <procesador>: <nombre de usuario>. Nosotros ocultamos la dirección MAC.L

Ladrón y minero

A diferencia de otros componentes de IceRat, el stealer [6] está escrito en Python 3 y fue compilado con PyInstaller en un archivo EXE. Roba credenciales de los siguientes navegadores:

  1. Firefox
  2. Yandex
  3. Filezilla
  4. Cromo
  5. Amigo
  6. kometa
  7. Orbitum
  8. Cromo
  9. K-Melón

El descargador de coinminer obtiene el archivo de configuración MMMMMM.MMMM [8] , el controlador WinRing0x64.sys [10] de OpenLibSys.org, así como el coinminer Winlogin.exe [9] de hxxp: //malina1306.zzz.com.ua /pag/. La configuración muestra al usuario dimargo2003@gmail.com .

En el momento de escribir este artículo, el ladrón y el minero de monedas están bien detectados con más de 40 detecciones en Virustotal. Este es un contraste notable con las bajas tasas de detección de los componentes de JPHP.


La tasa de detección del comunicador de Telegram [12] (arriba) es mucho más baja que la del minador de monedas [9] (abajo), aunque el minador de monedas se escaneó hace 1,5 semanas

Dominio de alojamiento

El host de malware y el servidor CnC hxxp: //malina1306.zzz (.) Com.ua también proporciona un sitio web ruso con dos botones y un campo de texto. El campo parece requerir un nombre de usuario porque el texto está traducido a “Ingresar usuario”. Los botones dicen “Descargar minero (v1)” y “Descargar minero (v2)”.

Severidad y regiones objetivo

IceRat ha pasado desapercibido durante más tiempo de lo habitual. Atribuyo esto principalmente a la elección de usar JPHP, así como a la fragmentación de las características del malware en muchos archivos pequeños. “Pequeño” no significa el tamaño de los archivos aquí. Estos son comparativamente grandes porque llevan consigo el tiempo de ejecución de JPHP. “Pequeño” se refiere más bien a la cantidad de funciones que tienen o la capacidad del código. Si un archivo hace poco por sí solo, no mostrará un comportamiento malicioso a un sistema de análisis automatizado. De esa forma no se detecta.

Los archivos de registro que se utilizan para comunicarse con el servidor contienen más de 200 entradas con diferentes sistemas. Muchos nombres de usuario de los sistemas infectados son kyrillic, lo que indica que la mayoría de las regiones de Europa del Este y Rusia están afectadas.

Los motores antivirus pueden tener que actualizar sus motores para admitir archivos .phb, así como adoptar un enfoque holístico para que los sistemas de análisis automatizados detectan malware fragmentado.

Indicadores de compromiso