En febrero de 2016 Internet se vio sacudido por la epidemia del nuevo troyano cifrador Locky (detectado por Kaspersky Lab como Trojan-Ransom.Win32.Locky). La intensa propagación de este malware no cesa hasta hoy: los productos de Kaspersky Lab registraron que este troyano intentó infectar equipos de usuarios en 114 países en todo el mundo.
El análisis de los ejemplares capturados mostró que se trata de un representante de una nueva clase de extorsionadores, escrito desde cero.
Pero, ¿qué es Locky y cómo protegerse de él?
Propagación
Para propagar el troyano, los maleantes hacen envíos masivos de spam con descargadores de malware adjuntos.
Al principio, los mensajes de spam maliciosos contenían un archivo doc adjunto con un macro que descargaba y ejecutaba el troyano Locky desde un servidor remoto.
Mensaje de los primeros envíos con un malicioso documento adjunto
Fragmento del macro malicioso
Los productos de Kaspersky Lab detectan los archivos con macros maliciosos como Trojan-Downloader.MSWord.Agent y HEUR: Trojan-Downloader.Script.Generic.
Merece la pena destacar que en las últimas versiones de MS Office, por razones de seguridad, está prohibida la ejecución automática de macros. Sin embargo, la experiencia ha demostrado que los usuarios a menudo activan los macros de forma manual, incluso en los documentos de origen desconocido, lo que acarrea consecuencias negativas.
En la actualidad, continúa el envío de spam malicioso, pero los mensajes ya no vienen con archivos doc, sino con archivos zip, que contienen uno o más scripts ofuscados en el idioma JavaScript. El idioma de la mayoría de los mensajes es el inglés, pero también hay versiones bilingües.
Mensaje en inglés con un archivo adjunto
Mensaje en alemán e inglés con un archivo adjunto
A la víctima se le propone ejecutar el script de forma manual.
Contenido del archivo adjunto al mensaje
Fragmento del script del archivo
Una vez lanzado, el script descarga y ejecuta el troyano Locky desde un servidor remoto.
Los productos de Kaspersky Lab detectan estos descargadores de scripts como Trojan-Downloader.JS.Agent y HEUR: Trojan-Downloader.Script.Generic.
Territorios de los ataques
Según KSN, se reportaron ataques de Locky en 114 países.
TOP 10 países
País | Cantidad de usuarios atacados |
Francia | 469 |
Alemania | 340 |
India | 267 |
EEUU | 224 |
República Sudafricana | 182 |
Italia | 171 |
México | 159 |
Brasil | 156 |
China | 126 |
Vietnám | 107 |
Tenga en cuenta que la presente estadística sólo incluye las detecciones del troyano en sí, y que no toma en cuenta las detecciones de etapas más tempranas del ataque (spam malicioso y descargadores).
Geografía de Trojan-Ransom.Win32.Locky (número de usuarios atacados)
Como podemos ver, el troyano lanza ataques en casi todas las regiones. Podemos hacer suposiciones sobre cuáles fueron los países a los que los delincuentes apuntaron en primer lugar basándonos en la lista de idiomas presente en la página de pago del rescate (que veremos más adelante).
Esquema de funcionamiento del troyano:
El troyano Locky es un archivo ejecutable de aproximadamente 100 kb. Está escrito en C++ utilizando STL y compilado en MS Visual Studio. Después de iniciarse, se copia a la carpeta% TEMP% \svchost.exe y elimina de su copia el flujo NTFS Zone.Identifier (esto se hace para que cuando se ejecute el archivo, Windows no muestre en pantalla ninguna advertencia de que el archivo se descargó de Internet y representa un potencial peligro). A continuación, el troyano se ejecuta desde el directorio % TEMP%.
Al ejecutarse, el troyano comprueba la existencia y el contenido de las claves del registro enumeradas a continuación.
Ruta | Tipo | Valor |
HKEY_CURRENT_USER\Software\Locky\id | REG_SZ | Identificador de infección |
HKEY_CURRENT_USER\Software\Locky\pubkey | REG_BINARY | Clave pública RSA en formato MSBLOB |
HKEY_CURRENT_USER\Software\Locky\paytext | REG_BINARY | Texto que se muestra a la víctima |
HKEY_CURRENT_USER\Software\Locky\completed | REG_DWORD | Estado (si se completó o no el cifrado) |
Si en las claves de registro ya hay datos (por ejemplo, si ya se inició el malware en otra ocasión, pero su funcionamiento fue interrumpido), Locky las leerá y seguirá ejecutando la infección.
Pero si se trata de la primera ejecución, el troyano realiza las siguientes acciones:
- Se conecta con el servidor de administración y envía un informe sobre la infección;
- Recibe del servidor la llave abierta RSA-2048 y el ID de la infección, y los almacena en el registro;
- Envía al servidor información sobre el idioma del sistema operativo infectado, recibe el texto con las exigencias de los atacantes, que más tarde se mostrará a la víctima, y los almacena en el registro;
- En los discos locales, busca y cifra los archivos con determinadas extensiones;
- Elimina las instantáneas (“shadow copies”) de los archivos;
- Se inscribe en la lista de ejecución automática (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run);
- En las unidades de red (entre ellas, en los directorios de red que no tienen asignada una letra de unidad), busca y cifra los archivos con determinadas extensiones;
- Muestra a la víctima las exigencias de los delincuentes;
- Termina su proceso y se borra a sí mismo.
Fragmento de código que extrae información sobre el idioma del sistema
Cifrado de los archivos
El malware utiliza una lista de extensiones para buscar archivos y cifrarlos.
Lista de extensiones de los archivos para cifrar
Para cada archivo encontrado, Locky genera una nueva clave de 128 bits y cifra el contenido del archivo con el algoritmo AES-128 en modo CTR. El archivo cifrado recibe un nombre tipo <ID 16 caracteres hex> <16 caracteres hex aleatorios> .locky. Al final del archivo se coloca la siguiente estructura:
La estructura que Locky pone al final del archivo cifrado
En la sintaxis del lenguaje C esta estructura se puede describir de esta forma:
1 2 3 4 5 6 7 8 9 10 |
struct file_data { uint32_t start_marker; // Firma del inicio de la estructura = 0x8956FE93 char id[16]; //ID de la infección uint8_t aes_key [256]; // Clave AES, cifrada con RSA-2048 uint32_t name_marker; //Firma AES cifrada de inicio del nombre (= 0xD41BA12A después de la decodificación) uint8_t nombre_original [520]; // Nombre del archivo original cifrado con AES WIN32_FILE_ATTRIBUTE_DATA attr; // Atributos de archivo cifrados con AES }; |
Descripción de la estructura agregada en la sintaxis del lenguaje C
Exigencias de los delincuentes
Una vez que los archivos están cifrados, el malware muestra a la víctima un texto con las exigencias de los delincuentes.
Exigencias de los delincuentes en inglés
Exigencias de los delincuentes en alemán
El mensaje contiene la dirección del “servidor secreto” de los criminales, donde se publica la información sobre el rescate, con la exigencia de pagar por un programa para descifrar los archivos. Los cuatro enlaces del mensaje llevan al mismo sitio en la red Tor.
Durante la primera ola de propagación de Locky la página de pago del rescate lucía así:
Página de Locky con los términos y condiciones de pago del programa de descifrado (primera versión)
En esta página los atacantes proponían pagar con Bitcoins por el programa para descifrar los archivos cifrados en el equipo de la víctima. Y daban recomendaciones sobre dónde y cómo obtener la criptomoneda.
Posteriormente, cambiaron el diseño y el contenido de la página. Hoy en día admite más de dos docenas de idiomas (en la lista desplegable) y tiene el siguiente aspecto:
Página de pago de rescate de Locky (versión moderna)
Si nos fijamos en el código fuente de esta página, veremos una lista completa de los idiomas admitidos. Obviamente, los países donde se hablan estos idiomas son el blanco al que los delincuentes apuntan con el troyano extorsionador. Es curioso que en la lista no estén presente ni Rusia, ni los países de la Comunidad de Estados Independientes. Al parecer, por alguna razón, los atacantes no buscan atacar a las víctimas en estos países, como lo confirman las estadísticas KSN.
Lista de los idiomas admitidos en la página de pago de rescate de Locky
Comunicación con el servidor de administración
El código del troyano contiene de una a tres direcciones IP de servidores de administración. Además, el programa malicioso cuenta con un algoritmo para generar nuevas direcciones de servidores de administración (DGA, domain generation algorithm), según el día, el mes y el año. Con este algoritmo se generan 6 direcciones de servidores de administración (C&C) por día. En la siguiente figura se muestra el pseudocódigo que ilustra el algoritmo DGA de Locky.
Seudocódigo del algoritmo de generación de direcciones de servidores de administración de Locky
La interacción con el servidor de administración se realiza mediante HTTP. El troyano envía una solicitud POST a una dirección tipo http: // <cnc_url> /main.php. Los datos se cifran con un algoritmo simétrico simple.
Veamos los posibles tipos de parámetros que se transmiten.
-
Notificación sobre la infección y solicitud de envío de clave.
id = <id de la infección>
&act=getkey&affid=<id del asociado, incluido en el cuerpo del troyano>
&lang = <idioma del sistema>
&corp=<sistema operativo corporativo>
&serv=<¿es corporativo el sistema operativo?>
&os=<versión del sistema operativo>
&sp=<versión del service pack del sistema operativo>
&x64=<bits del sistema operativo>A juzgar por el parámetro affid, Locky se propaga mediante un programa de afiliados.
-
Envío de la lista de rutas cifradas.
id = <id de la infección>
&act=report&data=<lista de rutas>Por cada disco procesado, el troyano envía al servidor una lista de todas las rutas de acceso a todos los archivos cifrados.
-
Envío de estadísticas de cada disco procesado.
id = <id de la infección>
&act=stats&path=<ruta>
&encrypted=<número de archivos cifrados>
&failed=<número de errores>
&length=<tamaño total de los archivos cifrados>
Vale decir que el malware recopila estadísticas muy detalladas de cada infección. Las otras familias de malware extorsionador que analizamos anteriormente no eran tan escrupulosas.
Contramedidas
Los productos de Kaspersky Lab brindan protección contra el troyano extorsionista Locky en todas las etapas del ataque:
- El módulo antispam detecta los mensajes enviados por los distribuidores del troyano;
- Los descargadores de scripts los detectan las firmas estáticas y heurísticas del antivirus de correo electrónico y de archivos, asignándoles el veredicto de Trojan-Downloader.MSWord.Agent, Trojan-Downloader.JS.Agent, HEUR: Trojan-Downloader.Script.Generic;
- El archivo ejecutable del troyano lo detectan las firmas del antivirus de archivos, asignándole el veredicto de Trojan-Ransom.Win32.Locky;
- Las muestras desconocidas de Locky las detecta de forma proactiva el módulo System Watcher (Supervisión del sistema) con el veredicto PDM:Troyan.Win32.Generic.
Cómo prevenir la infección
Locky es un típico troyano extorsionista, que por su estructura interna y principios de operación no se diferencia mucho de las demás familias de codificadores. Pero lo que atrajo la atención de los investigadores fue la propagación tan activa y generalizada de este programa malicioso. Según los datos de KSN, los productos Kaspersky Lab repelieron ataques de Locky en más de 100 países de todo el mundo. Hasta ahora ningún otro troyano extorsionista había atacado tantos países al mismo tiempo.
Para evitar convertirse en una víctima de este troyano cifrador, hay que tomar las siguientes medidas preventivas:
- No abrir los adjuntos de correo electrónico en mensajes de remitentes desconocidos;
- Hacer copias de seguridad de sus archivos a intervalos regulares y almacenarlos fuera del equipo en memorias extraíbles, o en repositorios en la nube;
- Actualizar oportunamente las bases antivirus, el sistema operativo y demás programas en el equipo;
- Mediante el control de acceso a las carpetas compartidas de red, crear una carpeta de red aparte para cada usuario.
Para obtener más información sobre la protección contra troyanos cifradores, visite este enlace.
Locky, un troyano cifrador de alcance mundial
Valentin Cornejo
Estimados yo estoy teniendo problemas con el RSA4096 Ijnunvkgnnui.exe
podrían decirme cual es la solución a este virus que cifra los archivos.
Saludos.-