Hace poco detallamos el proceso de infección del ransomware Locky. Desde ese entonces, los creadores del downloader Nemucod (el código malicioso responsable de descargar y ejecutar diversos tipos de malware, entre los que se encuentra Locky) han estado trabajando arduamente para perfeccionar su código.
Los autores de Nemucod mejoraron su downloader para lograr más ejecuciones sin detección
Una de las versiones más recientes de Nemucod muestra algunos cambios notables con respecto a las primeras versiones. En el pasado, el proceso era bastante simple: el usuario abre el archivo malicioso → el archivo descarga el payload → el payload se ejecuta. Sin embargo, en las versiones más recientes, el proceso no es tan sencillo.
A continuación, analizaremos el funcionamiento del código con más detalle. Para que sea más fácil de leer, se descifró el código para despojarlo de su formato original, que estaba fuertemente ofuscado.
Paso 1: elección del método correcto de conexión
Las versiones anteriores de Nemucod utilizaban un solo método para conectarse a Internet. Sin embargo, en ciertos casos, la conexión fallaba por las distintas configuraciones de la infraestructura (la versión de Windows, los servidores proxy, etc.).
Para proporcionar una mayor compatibilidad, los autores de Nemucod crearon una función que intenta conectarse usando múltiples métodos:
El primer método de conexión que funcione es el que se emplea.
Paso 2: descarga desde distintos sitios
Hasta ahora, Nemucod incluía una sola dirección (por lo general, la de un servidor web infectado) desde donde intentaba descargar su payload. Esto era un problema, ya que, si se eliminaba el payload, fallaba el ataque. Probablemente para aumentar sus posibilidades de éxito, las versiones recientes incluyen múltiples direcciones de descarga, como se ve en estos ejemplos:
El código va probando los sitios de la lista en forma cíclica hasta que logra descargar el archivo correctamente:
Paso 3: primera etapa de descifrado
En el pasado, los payloads descargados por Nemucod eran archivos binarios tradicionales con extensión ".exe". Una vez descargados, se ejecutaban directamente. Sin embargo, la descarga de archivos ".exe" implica que los dispositivos con firewall, IDS o UTM pueden interceptar el payload para llevar a cabo un análisis de seguridad, e incluso rechazar el adjunto.
Para evitar este tipo de posibles inconvenientes, la última versión de Nemucod descarga un archivo ofuscado. En primer lugar, descarga el archivo en el directorio %TEMP% de la víctima:
Después de guardar el payload ofuscado, esta función pasa el contenido del archivo a otra función que se encarga de realizar la primera etapa de descifrado:
Resulta que esta primera etapa es un simple descifrado por sustitución. Todos los caracteres en el archivo se convierten a sus valores decimales. Si el valor decimal de un carácter es mayor que 127, el carácter se sustituye con el valor que le corresponde según una matriz predefinida de caracteres. De lo contrario, permanece intacto:
Paso 4: segunda etapa de descifrado
Una vez finalizada la primera etapa de descifrado, el contenido del archivo se pasa a otra función que realiza una segunda ronda de descifrado. Esta nueva etapa consta de tres pasos:
- Quitar los cuatro últimos caracteres del contenido del archivo
- Aplicar una operación XOR a cada carácter con el carácter "s" (0x73)
- Invertir el contenido del archivo
Paso 5: comprobación de la validez del archivo
En este punto se realiza una comprobación rudimentaria para verificar si el contenido del archivo resultante es un payload válido. Por lo tanto, comprueba si el tamaño del archivo es de entre 174.080 y 189.440 bytes y si el archivo comienza con "MZ" (0x4D5A): los "bytes mágicos" correspondientes a un archivo ejecutable portable (PE).
Si falla alguna de estas comprobaciones, salta de nuevo al paso dos y trata de descargar un payload desde el sitio de descarga que sigue:
Paso 6: última etapa de descifrado
Si todas las verificaciones son correctas, el archivo se guarda en la carpeta %TEMP% del usuario:
La función denominada deobRound3 durante el proceso de descifrado somete el contenido del archivo a otra nueva ronda de sustitución de caracteres, similar a la del tercer paso. Es muy probable que estas rondas de sustitución de caracteres se ejecuten para evitar problemas de "caracteres anchos" durante la segunda etapa de descifrado.
Por último, todos los caracteres se vuelven a convertir desde su valor decimal, y el contenido del archivo resultante debe ser un archivo ejecutable de Windows válido:
Paso 7: ejecución
Ahora que el payload está listo, tiene que ejecutarse. En lugar de ejecutar el archivo ".exe" directamente, las versiones más recientes de Nemucod crean un archivo ".bat" que inicia el ejecutable. A continuación, ejecuta el archivo ".bat":
Si "todo va bien", el usuario quedará infectado.
Conclusión
Como se puede ver, los autores de Nemucod han estado ocupados mejorando su downloader para incrementar las probabilidades de ejecución de su payload sin que sea detectado. Con todas estas nuevas características, incluso se puede especular que están trabajando arduamente para mejorar su tasa de éxito en entornos corporativos, donde probablemente los servidores proxy y las puertas de enlace UTM ya han bloqueado sus payloads en el pasado.
Archivos investigados
customers 366.wsf (JS/TrojanDownloader.Nemucod.ABI trojan)
MD5: 4DEDF4085E6D2F74CB879AD2E9680AFB
SHA1: EF2A9C6A61E98091A952328592D45214F6E44178
cstomers 9679.js (JS/TrojanDownloader.Nemucod.ABI trojan)
MD5: 42D054143A67DE14EE10F7B8C91D8A1A
SHA1: D3DC6E3D066BFA8E1F4408DE471BC95B001D0D25
Yhnpl47OMCLJm.exe (una variante de Win32/Kryptik.EYIB trojan)
MD5: C1F95ADBCAF520BF182F9014970D33E5
SHA1: 80B96F0207B9C5D1DAA3A6E6CF646F5AFA7BBA2C
Donny Maasland
Jefe de Servicios de Investigación y Ciberseguridad
ESET Holanda