Análisis de malware

RansomExx: el malware que ataca el sistema operativo Linux

e enero de por Pedro Tavares

RansomExx es el nuevo malware utilizado por los delincuentes para atacar entornos tanto Windows como Linux. Dado que las empresas utilizan un entorno mixto de servidores Windows y Linux, los delincuentes sintieron la necesidad de expandir sus operaciones de ransomware a sistemas Linux, ya que estos sistemas se están convirtiendo en una pieza importante dentro de las redes empresariales. Este artículo ofrece detalles específicos sobre RansomExx y cómo funciona este malware, y proporciona algunas líneas sobre cómo prevenir ataques de ransomware en general.

Según una publicación de Kaspersky, se ha demostrado que los delincuentes han actualizado el ransomware Exx (también conocido como Defrat777) para dañar los servidores Linux. RansomExx ha sido destacado debido a ataques en estado salvaje contra las redes del gobierno brasileño y ataques previos contra el Departamento de Transporte de Texas (TxDOT), Konica Minolta, IPG Photonics y Tyler Technologies.

¡Conviértete en un ingeniero inverso certificado!

Obtenga capacitación práctica en vivo sobre análisis de malware desde cualquier lugar y conviértase en un analista certificado de ingeniería inversa. Comienza a aprender

Este ransomware es un binario ELF de 64 bits compilado con GCC. Como se presenta en el gráfico de PortEx a continuación, no se detectaron técnicas de ofuscación ni secciones empaquetadas durante el análisis estático de malware.

1: RansomExx : gráfico de PortEx (no se detectaron sesiones empaquetadas).

Un hallazgo curioso observado durante el análisis de malware es que el malware ha codificado algunas cadenas de depuración y archivos utilizados por los operadores de ransomware durante su desarrollo.

2: Información de depuración encontrada durante el análisis estático de malware.

Profundizando en los detalles del ransomware

Este ransomware (escrito en C) se compone de varias funciones principales, que incluyen:

main() Función de punto de entrada del ransomware.GeneratePreData() Se utiliza para generar claves criptográficas a través de la biblioteca mbedtls .EnumFiles() Obtiene la ruta completa de los archivos que se dañarán.list_dir() Se utiliza para enumerar todos los directorios de la máquina de destino.encrypt_worker() La función que crea un único hilo por archivo durante el proceso de cifrado. Ejecuta las funciones: CryptOneFile() y CryptOneBlock().CryptOneFile() Accede al archivo de destino a dañar y prepara el proceso de cifrado.CryptOneBlock() Cifra el archivo por bloques.ReadMeStoreForDir() Crea la nota de rescate en cada carpeta a la que se accede.

función principal

Como se observa en el pseudocódigo a continuación, esta llamada es responsable de llamar a la función GeneratePreData() que genera una clave de 256 bits y la usa para cifrar todos los archivos pertenecientes a la víctima a los que puede acceder utilizando el cifrado de bloque AES en ECB. modo.

La clave AES está cifrada mediante una clave pública RSA-4096 integrada en el cuerpo del ransomware y adjunta a cada archivo cifrado. La ruta para cifrar se pasa a través de la matriz argv[] dentro de un flujo while(). A continuación, la función EnumFiles() se utiliza para enumerar los archivos dentro de la carpeta e inicia el proceso de cifrado.

3: Diagrama de flujo de trabajo de RansomEx y pseudocódigo: función main().

Función GenerarPreData()

Esta función utiliza la biblioteca mbedtls de código abierto responsable de generar la clave de cifrado AES que se utilizará para cifrar los archivos de destino. Obtiene la marca de tiempo actual del sistema para generar semillas aleatorias (líneas 31 y 32 en la 4) y, finalmente, la llamada mbedtls_ctr_drbg_random (línea 44) para crear una clave criptográfica AES de 256 bits.

4: Pseudocódigo de la función GeneratePreData(): RansomExx.

Una pieza importante a destacar es la función pthread_mutex_lock y pthread_mutex_unlock , un mutex utilizado por el ransomware para controlar el flujo de cifrado.

Como se mencionó anteriormente, cada archivo dañado tiene almacenada en su interior una única clave AES-256 que inicialmente se cifra mediante el uso de una clave pública 4086 RSA codificada. El resultado es un texto cifrado (la clave AES) que luego se almacena dentro del archivo dañado. Sólo los delincuentes pueden recuperar la clave AES descifrada simétrica descifrándola con la clave RSA privada.

5: Clave RSA codificada dentro del malware.

Funciones EnumFiles(), list_dir() y encrypt_worker()

La función EnumFiles() es responsable de crear varios subprocesos que invocan encrypt_worker() (7, línea 19), una llamada que cifrará los archivos de destino. Esa función se llama dentro de la rutina init_workers() ; consulte la línea 9 en la 6.

6: Función de pseudocódigo RansomExx EnumFiles().

7: RansomExx – pseudocódigo init_workers().

En detalle, la función EnumFiles() también invoca la llamada list_dir() (6, línea 14) que ejecutará la rutina “ ReadMeStoreForDir() ” para colocar la nota de ransomware “ !NEWS_FOR_EIGSI!.txt ” dentro de cada carpeta.

8: RansomExx : pseudocódigo list_dir() y flujo de caída de notas de ransomware.

Función ReadMeStoreForDir()

Esta función se llama dentro de la llamada list_dir() (8, línea 14) y utiliza otra función popular llamada fwrite() para crear y completar (escribir) la nota de ransomware en cada carpeta a la que se accede durante el proceso de cifrado.

9: RansomExx: ransomware eliminado mediante una llamada fwrite.

Funciones CryptOneFile() y CryptOneBlock()

Finalmente, estas funciones son llamadas y son responsables de realizar el flujo de cifrado de datos.

El primero se invoca (en la 7, línea 19) dentro de la función init_workers() como se mencionó anteriormente.

10: Parte de la llamada encrypt_work_function() donde se invoca la función responsable de cifrar los archivos de destino: CryptOneFile(), línea 33.

En detalle, la clave AES es generada por otro hilo concurrente al que se accede como se describe en la función GeneratePreData() usando las llamadas mbedtls_aes_init y mbedtls_aes_setkey_enc.

A continuación, el archivo de destino se cifra por bloques mediante la ejecución de las funciones CryptOneBlock a través del modo de cifrado AES-ECB.

La extensión de los archivos cifrados se reemplaza por ” .31gs1 ” en la muestra analizada, la extensión del archivo codificada dentro del ransomware.

11: Extensión de archivo utilizada por RansomExx.

Al ejecutar el malware en un entorno de prueba, es posible observar que los archivos vacíos no se abren ni se les cambia el nombre (de hecho, son basura) y todo lo demás está dañado. Durante el proceso, la nota de rescate se coloca dentro de las carpetas de destino.

12: Ejecución del ransomware RansomExx en una máquina Linux.

Similitudes con las versiones de Windows de RansomEXX

Al comparar las versiones de Windows y Linux de este ransomware, también es posible encontrar similitudes obvias en el código a pesar de los cambios realizados por los compiladores durante el proceso de creación de los archivos binarios maliciosos.

13: Similitudes de código entre las compilaciones de Windows y Linux.

Algunas organizaciones se han visto afectadas en todo el mundo por esta reciente amenaza. Una de las últimas organizaciones fue el Tribunal Superior de Justicia (también conocido como STJ) de Brasil:

“Se explotó una cuenta de Domain Admin que permitió al hacker tener acceso a nuestros servidores, entrar en grupos de administración del entorno virtual y, finalmente, cifrar buena parte de nuestras máquinas virtuales”, explicó a O Bastidor uno de los técnicos informáticos . .

14: Nota de ransomware del ataque STJ.

Según los autores del ransomware, si la víctima paga el rescate, recibirá un ejecutable de Linux y Windows con la correspondiente clave privada RSA-4096 para recuperar los archivos dañados.

Pensamientos finales

Los delincuentes comprometen las redes de las víctimas y extraen documentos confidenciales mientras se mueven lateralmente en la infraestructura. Debido a la desaparición de usuarios de Linux en los últimos años, esos sistemas juegan un papel importante dentro de las redes corporativas. De esta manera, los delincuentes ven el desarrollo de malware para atacar máquinas basadas en Unix como una necesidad de adaptación.

En una etapa posterior, cuando el controlador de dominio se ve comprometido, los delincuentes propagan el ransomware por toda la infraestructura para finalizar la cadena de infección e implementar las compilaciones de RansomExx para Windows y Linux para cifrar todos los dispositivos registrados en Active Directory y otros activos valiosos disponibles en la red.

Monitorear el uso de soluciones de seguridad endpoint, antivirus actualizados y el uso cada vez mayor de archivos canary son algunos mecanismos que podrían evitar la difusión de este tipo de amenazas a través de una red enteramente corporativa.

Fuentes