Últimamente se ha detectado otro ransomware circulando en Internet, conocido como ‘CoinVault’. Este programa malicioso posee algunos detalles interesantes, incluyendo su peculiar característica de ofrecer la descripción gratuita de uno de los archivos rehenes, firmado como en señal de buena fe.
Técnicamente, los autores de este malware han tomado muchas medidas para dificultar el análisis de su programa. Aunque ha sido diseñado con el marco de Microsoft .NET, toma algún tiempo llegar al núcleo de su aplicación maliciosa. Al abrir la muestra original en ‘IL Spy’, encontramos que el programa comienza usando una llave de cadena de caracteres que se pasa a un método de descifrado, el cual finalmente obtiene el código ejecutable.
También se pasa una matriz de bytes como un parámetro al método ‘EncryptOrDecrypt’, que junto con la llave producen una matriz de bytes final con el tan necesitado código del malware.
Implementar estas funciones en Visual Studio es tan fácil como copiar/pegar, de manera que ejecutamos los métodos obtenidos del código fuente y fijamos un punto de corte para ver lo que hace el método de descifrado. Los números ’77’, ’90’, en decimales, nos dicen que estamos en la pista correcta ya que cuando los convertimos a hexadecimales obtenemos ‘4D’, ‘5A’, que es el número mágico para archivos ejecutables DOS identificados por la cadena de caracteres ‘MZ’ de ASCII. Vaciamos todos los bytes a un archivo ejecutable en el disco para analizarlos con más detalle.
Obtuvimos un archivo llamado ‘SHIELD runner’, que sirve como una aplicación asistente ‘RunPE’. Una aplicación ‘RunPE’ sirve para ejecutar archivos en tiempo real, lo que significa que se crea un flujo de memoria desde una entrada y se ejecuta directamente sin tener que primero guardar el archivo en el disco. Esto es una ventaja para los autores del malware que no quieren dejar rastros, y como pronto veremos, no es todo lo que este archivo tiene para ofrecer.
Aunque continuaremos con nuestra investigación del código del ransomware, hay una llamativa cadena de caracteres incrustada en el ejecutable ‘SHIELD runner’: ‘d:Usersdennis…’.
De la misma manera que antes, se usa una llave de cadena de caracteres y una matriz de bytes para generar otro archivo ejecutable. Como se puede ver, los ciberdelincuentes se han esforzado para demorar el análisis y ocultar la carga maliciosa el mayor tiempo posible.
No sólo tenemos aquí las funciones normales de ‘RunPE’, sino también otros interesantes métodos adicionales que ayudan al programa malicioso a detectar herramientas de análisis y ambientes virtualizados. Buscan ‘Sandboxie’, ‘Wireshark’, ‘Winsock Packet Editor’ e incluso verifican si el nombre de la máquina es ‘MALTEST’. Afortunadamente, ninguna de estas condiciones se cumple en mi ambiente, así que podemos continuar.
Pero espera… ¡porque todavía hay más! La detección del ambiente virtualizado hace que la ejecución se detenga y que la carga maliciosa se oculte.
Usando PowerShell, vamos a verificar si el malware puede en realidad detectar nuestro ambiente. Aparentemente puede, así que tendremos que efectuar algunas modificaciones sencillas para continuar con el proceso de análisis.
Podemos fácilmente arreglar esto desde el archivo VMX de VMWare, mediante la opción ‘SMBIOS.reflectHost = TRUE’. Tras volver a realizar las verificaciones de PowerShell, obtuvimos luz verde para seguir adelante.
Repetimos el proceso de la llave de cadena de caracteres, la descripción de la matriz de bytes y el vaciado de la memoria en el momento preciso tuvo su recompensa y finalmente obtuvimos los archivos que se usan en la infección.
El ‘Locker’ de CoinVault tiene dos formas principales de Windows: la principal nos exige pagar para recuperar los archivos de la víctima y ‘frmGetFreeDecrypt’, que sirve para descifrar uno de los archivos de la víctima, como una prueba de que se podrá recuperar nuestra valiosa información si hacemos exactamente lo que nos exigen.
Sin embargo, antes del análisis de ‘Locker’, necesitamos desofuscarlo (al menos, en parte). Los autores del programa malicioso demuestran su sentido del humor aquí: si el analista ha logrado llegar hasta este punto, se siente bienvenido como parece sugerir la frase ‘Tu peor pesadilla’. Además, han tenido la astucia de dejar un banner que señala la utilidad de ofuscación que emplearon. En este caso, nos estamos enfrentando al siempre popular ‘Confuser’ en su versión 1.9.0.0.
Ciertamente, esto resulta confuso… pero podemos mejorar. Entonces, vamos de algo que se parece a un manuscrito chino a un código fuente legible.
Ahora podemos ver, entre los muchos (muchos) métodos y delegados dentro del ensamblaje, algunos códigos relevantes sobre el cifrado de archivos. Usan el espacio de nombre System.Security.Cryptography.RijndaelManaged de NET (entre otros), lo que revela una función de cifrado simétrico.
Incluso podemos ver cómo se ha implementado el PRNG y algunos detalles internos de la aplicación maliciosa.
Cuando finalmente vemos el ejecutable ‘Locker’, se realiza una conexión al dominio dinámico. Durante el análisis, aparecieron dos direcciones: ‘cvredirect.no-ip.net’ y ‘cvredirect.ddns.net’. Actualmente están deshabilitadas y descubrimos que esto dificulta el funcionamiento de ‘Locker’, pues a partir de una inspección del análisis de tráfico pudimos ver que una ID de hardware se envía al C&C para usar una contraseña de codificación de archivo dinámico. Supongo que ahora podemos entender por qué este malware busca Wireshark en el sistema. Después de todo, los ciberpiratas no quieren que nos enteremos de cómo manejan sus negocios.
En este punto, si todo marchara bien (para los ciberpiratas), nuestros documentos y archivos personales se habrían cifrado y nos exigirían un pago en menos de 24 horas, o el precio aumentaría. La dirección de bitocin que se usa, también es dinámica, lo que dificulta el rastreo de los fondos.
¿Es esta tu peor pesadilla? Si no cuentas con una solución antimalware actualizada y con (por si acaso) una copia de respaldo de tus archivos más importantes, puede que lo sea.
Kaspersky Lab detecta esta familia como ‘Trojan-Ransom.Win32.Crypmodadv.cj’. Ya hemos visto antes aplicaciones maliciosas similares (en cuanto a su funcionamiento), como ‘TorrentLocker’, y algunos programas ransomware PowerShell, pero el volumen de esfuerzo invertido en este malware para proteger el código, muestra que los ciberpiratas se están aprovechando de bibliotecas y funciones ya desarrolladas para no tener que reinventar la rueda.
Pesadilla en la calle Malware