Ransomware Maori: Nueva ola de ataques

¿Qué ha estado sucediendo Maori?

En el transcurso del presente año, el día 22 de marzo, se suscitó un incidente de seguridad, en donde se encontraba involucrado un nuevo ransomware, denominado “MAORI”, desplegado por un grupo del mismo nombre. En dicho incidente, se vieron involucrados la totalidad de los archivos de una base de datos “PostgreSQL” en producción, la cual estaba operando bajo un sistema operativo UNIX, Ubuntu 22.04. Los actores de amenaza realizaron un ataque de fuerza bruta al servidor y, debido a las credenciales débiles con las que contaba la autenticación, se obtuvo el acceso al mismo, elevando privilegios para ejecutar el malware en cuestión de segundos, cifrando todos los archivos al interior de la base de datos.

Análisis técnico de la amenaza 🔎 

Para comenzar, es importante tener presente qué es a lo que nos estamos enfrentando, entender qué es un ransomware. 

Un ransomware es un tipo de software malicioso (malware) que tiene como objetivo denegar a un usuario u organización el acceso a los archivos en sus computadoras. Por medio del cifrado de los archivos, los actores de amenaza solicitan un pago para brindar la clave de descifrado y prometiendo tener acceso nuevamente a los archivos, sin embargo, también existe una variante de este ataque que, además de llevar a cabo el cifrado en el equipo objetivo, también roba toda la información cifrada, lo que pone a las víctimas en una posición tentadora para realizar el rescate por sus datos. 

Desde la pandemia por COVID-19, ha habido un notable incremento en los ciberataques por ransomware, debido a la necesidad que han tenido las organizaciones por cambiar su forma de trabajo de presencial a en línea.

Por otro lado, un ataque de fuerza bruta es un método utilizado por agentes de amenaza para intentar descubrir una contraseña o clave secreta mediante la prueba sistemática de todas las posibles combinaciones. En este tipo de ataque, un agente de amenaza intenta probar todas las combinaciones posibles de caracteres, números o símbolos hasta encontrar la contraseña correcta. Este método suele ser efectivo si el objetivo cuenta con credenciales débiles o hacen uso de patrones fácilmente reconocibles; como el nombre de la organización a la que pertenecen, tal como llega a suceder en muchas ocasiones al no contar con buenas prácticas y políticas de contraseñas

¿Qué sucede cuando se consigue realizar este ataque con éxito?

Particularmente, el ransomware Maori comenzó a ser detectado mediante un IDS (Intrusion Detection System) al visualizar las firmasET POLICY Suspicious inbound to postgreSQL port 5432y “ET POLICY Executable and linking format (ELF) file download”, recordando que una firma es un patrón o conjunto de patrones de tráfico de red o actividad del sistema y que indican una presencia de amenaza o comportamiento inusual o malicioso). Al observar dichas firmas, se tiene comportamiento asociado con la intrusión a una base de datos PostgreSQL y a una transmisión de un archivo ejecutable tipo “ELF” (Executable and Linkable Format).

La actividad mostrada desde la interfaz brindada por un IDS se presentó como sospechosa para el equipo de respuesta a incidentes de Global Cybersec debido a que una dirección IP pública estableció una conexión TCP directamente al puerto 5432, tal como se muestra en el análisis de tráfico realizado para este evento:

Posteriormente, se detectó una petición hacia la base de datos PostgreSQL, por lo que, examinando el paquete, el campo “Type” se encuentra establecido con el valor “SSL request”, lo que hace referencia a una solicitud para establecer una conexión segura y cifrada mediante el protocolo SSL (Secure Sockets Layer), con la finalidad de ocultar las acciones realizadas en el servidor.

Siguiendo la traza de la misma dirección IP pública, se observa que el servidor afectado realiza una conexión TCP al puerto 80 de la dirección IP pública.

Por medio de los datos brindados en las cabeceras HTTP, se puede visualizar el dato “User-Agent”, el cual es la aplicación que se utiliza para realizar la petición, indicando que se realizó mediante un sistema Linux a través de la utilidad “wget”, así mismo, se observa que se realiza una petición GET para obtener un archivo con extensión “.out”.

La respuesta del servidor ante la petición GET que se obtuvo un código de estado “200 OK”, el cual es obtenido cuando la petición fue realizada correctamente, también indicando que se tiene una conexión abierta (Connection: Keep-Alive) y la fecha en que se realizó la petición. 

De manera similar, realizando un análisis a los primeros bytes que se visualizan en el tráfico de red involucrado, se visualiza la leyenda correspondiente con “ELF” en sus bytes identificadores, o números mágicos, en los valores hexadecimales “45 4C 46”, los cuales están directamente asociados con un tipo de archivo ejecutable que funciona bajo sistemas operativos con arquitecturas Linux. 

Si se realiza la extracción del archivo desde la captura del tráfico de red, utilizando un sistema operativo Windows, se puede visualizar que Windows Defender lo detecta como un potencial archivo malicioso, a pesar de que este tipo de ransomware está diseñado para afectar principalmente a sistemas Linux.

Una vez teniendo un pequeño panorama sobre este evento, al observar los logs del servidor, se visualizan los intentos de acceso mediante fuerza bruta.

Mediante la verificación de las variables de entorno configuradas en el sistema mediante el archivo .env ubicado en el directorio /var/www/salt/api/, se puede visualizar la variable de entorno PG_CONECTION_STRING, la cual permite establecer una conexión hacia la base de datos de PostgreSQL. 

Primeramente, se indica el tipo de base de datos que se está utilizando, seguido de las credenciales de autenticación hacia la base de datos, siendo muy fáciles de corromper para un atacante y sale de las buenas prácticas de seguridad el no tener aplicadas las políticas correctas de seguridad en contraseñas. Después, se indica la dirección IP de conexión a la base así como el puerto por el que se establece y el nombre de la base de datos “salt” 

Posteriormente, se observa que en efecto, el servidor realiza una petición GET hacia una dirección IP pública, solicitando en archivo ejecutable “maori.out”, mismo que fue transmitido con éxito, siendo alojado en el directorio “/tmp”, mismo que es comúnmente utilizado por malware, debido a que este directorio tiene permisos de lectura, escritura y ejecución para todos los usuarios.

Por tanto, en cuanto el administrador del servidor note que se produce alguna falla en el funcionamiento de los servicios que ofrece, como fallas en las consultas SQL o peticiones web, haciendo que sea necesario diagnosticar el problema. Por ejemplo, al intentar realizar una conexión mediante la utilidad NetCat

Una vez se ingresa al servidor, lo primero que se nota es un archivo README en todos los directorios con archivos cifrados, el cual contiene el siguiente mensaje: 

Notificandonos que la información ha sido cifrada, solicitándonos ponernos en contacto con los creadores de este ransomware, sin embargo, el método de comunicación es peculiar, ya que, estos ciberdelincuentes se encuentran en la mensajería TOX, un protocolo de comunicación que proporciona un canal de transmisión seguro y privado que no es indexado mediante los motores de búsqueda usuales, por lo que una de las formas de acceder es mediante su enlace .onion.

Por lo tanto, una vez completado este ataque, los archivos de la base de datos del servidor se encuentran cifrados, siendo imposible su visualización, así mismo, se observa que los mismos contienen la extensión “.maori”.

Al intentar conectarse al servidor desde donde se realizó la descarga del malware una vez que el actor de amenaza logró ingresar al servidor, no se pudo establecer una conexión para realizar la recolección de evidencia directa.

De manera similar, se intentó realizar al analizar IPs del mismo segmento

Esta nueva variante de ransomware cuando fue detectada, era completamente desconocida por todos los motores de detección de malware, siendo complicado su análisis, por lo que el equipo de respuesta a incidentes de Global Cybersec mantuvo contacto con el aparente creador de este ransomware, utilizando el protocolo de mensajería TOX, y manteniendo las respectivas medidas de seguridad, se obtuvo la siguiente información:

Como primera observación, al parecer se trata de un grupo de ciberdelincuentes que busca crecer su comunidad, con la finalidad de perjudicar a terceros. 

Posteriormente, una cuestión que causaba bastante interés en saber era deducir en qué lenguaje de programación se desarrolló este ransomware, obteniendo como respuesta el lenguaje de programación GO, por lo que en este punto, aumenta significativamente la dificultad de análisis del archivo binario ya obtenido anteriormente.

Desde la llegada de ChatGPT, la inteligencia artificial ha sido altamente utilizada por los grupos de cibercriminales para realizar su labor, así mismo, este grupo hace uso de múltiples técnicas, como phishing, 0-day, vulnerando servicios como SSH, RDP, bases de datos, servicios web, etc. 

Por lo que es de suma importancia implementar configuraciones de seguridad en los servicios utilizados, así como no caer en técnicas de ingeniería social.

Recordando que este ransomware se obtuvo desde una dirección IP pública, al realizar trabajo de Threat Intelligence, no se obtuvo información comprometedora sobre la misma, es en este punto donde se deduce que este grupo de cibercriminales probablemente utilizaron una técnica de C&C (Comando y Control), mediante una dirección IP pública ya atacada.

Análisis mediante herramientas online

Como ya ha sido mencionado anteriormente, cuando se detectó este ransomware aún no se tenía conocimiento del mismo en la comunidad, sin embargo, poco a poco ha comenzado a ser alertado por diferentes compañías de seguridad, así mismo, comenzó a ser detectado por algunas herramientas de análisis de malware, entre ellas, Hybrid Analysis, una herramienta online para analizar archivos maliciosos, por lo que, al hacer uso de ella se obtuvieron los siguientes resultados. 

Se observa que se han encontrado hallazgos, detectando como un archivo altamente peligroso, que busca robar información de bases de datos PostgreSQL, para posteriormente, solicitar al usuario un rescate sobre los mismos.

¿Qué técnicas utiliza este ransomware?

Las técnicas utilizadas por este ransomware, fueron detectadas en base al marco MITRE ATT&CK, siendo este una matriz que describe las tácticas y técnicas utilizadas por los actores de amenaza, por lo que haciendo uso de esta herramienta, se arrojaron las siguientes técnicas utilizadas para este incidente:

Extracción de strings del archivo binario

La extracción de cadenas de texto de un archivo binario se lleva a cabo con la finalidad de detectar IoC (Indicadores de compromiso) que pudieran ser de utilidad para detectar este tipo de ransomware, desarrollando reglas de detección más precisas.

Utilizando la herramienta “strings” en Linux, se puede llevar a cabo este proceso de extracción de cadenas de texto que pudiera ser de utilidad para los analistas en seguridad informática.

Teniendo conocimiento, de que esta variante de ransomware está desarrollada en el lenguaje de programación GO, se filtra la salida del comando para que devuelva cadenas de texto que contengan la extensión “.go”, obteniendo algunos resultados relevantes como:

Tecnologías para la detección/prevención y recomendaciones de seguridad

El equipo de respuesta a incidentes de Global Cybersec recomienda llevar a cabo las siguientes recomendaciones, con el fin de proteger a las organizaciones ante este tipo de ataques, para así salvaguardar los activos de las mismas.

  1. Entre las mejores pŕacticas se incluye que, bajo ningún motivo se pague el rescate solicitado por los ciberdelincuentes, debido a que es muy poco probable que envíen la contraseña de descifrado. En el peor de los casos los actores malintencionados solicitarán más pagos, exprimiendo al máximo a la víctima.
  2. Se recomienda ampliamente llevar a cabo las configuraciones de seguridad adecuadas en los servicios de la organización, entre ellas se encuentra la implementación de políticas para la creación de contraseñas que cumplan con los estándares adecuados con el fin de proporcionar y asegurar que la autenticación sea mucho más complicada para los atacantes.
  3. Copias de seguridad (backups) de manera periódica. Debido a que, por definición, la recuperación de información que secuestra un ransomware sólo se puede recuperar con la clave que tiene únicamente el actor de amenaza, es crucial que la información está protegida mediante copias de seguridad que permitan recuperar dicha información con la menor cantidad de pérdida sin tener que pagar al secuestrador
  4. Se recomienda filtrar el tráfico entrante a la red mediante reglas de firewall o ACL (Listas de control de acceso), con la finalidad de bloquear cualquier comunicación no permitida.
  5. Implementación de IDS, IPS y tecnologías de detección de malware que mantengan a raya posibles amenazas, manteniendo las reglas lo más actualizadas posibles para estar al día con las nuevas reglas que se vayan actualizando y saliendo, para este caso, el uso de reglas SNORT/SURICATA es sumamente útil para detectar patrones anómalos en la red, así como la transmisión de archivos ejecutables.

Sin embargo, para analizar archivos ejecutables en busca de patrones anómalos, la herramienta estrella es la implementación de reglas YARA, siendo significativamente poderosas para la detección de malware.

Ejemplo de regla YARA:

Utilizando las cadenas de texto obtenidas anteriormente, podemos crear reglas que detecten a nivel de bytes este tipo de ransomware. La sintaxis básica de una regla YARA consta de 3 apartados:

  • Metadata: En esta sección se define información adicional sobre la regla, en este ejemplo, se define una breve descripción sobre el funcionamiento de la regla, así mismo, se define un autor o creador de la regla, y por último, una fecha de creación. Esta sección se define con la palabra reservada meta, así mismo, contiene pares de identificador/valor
  • Strings: En esta sección se definen los strings a detectar dentro del archivo ejecutable. Existen 3 tipo de strings: cadenas hexadecimales, cadenas de texto y expresiones regulares.

Para este ejemplo, se utilizan cadenas de texto, declarando dos variables, $string1, la cual contiene la cadena internal/cpu/cpu.go. Posteriormente, se declara la variable $string2, la cual contiene la cadena runtime/cgo_mmap.go.

  • Condition: En esta sección se define la parte lógica de la regla, haciendo uso de expresiones booleanas como en cualquier lenguaje de programación, en este ejemplo se especifica que tanto la variable $string1 y $string2 deben coincidir en el archivo ejecutable.

Finalmente, se realiza el escaneo del archivo en busca de los patrones declarados anteriormente, por lo que al llevar a cabo esta acción tenemos que:

Obteniendo como salida las columnas “maori” y “maori.out”, la primera columna indica el nombre de la regla que encontró una coincidencia, la segunda columna indica el archivo que cumple con la condición de la regla. 

En este repositorio, el equipo de respuesta a incidentes de Global Cybersec se dió a la tarea de crear reglas YARA específicas para detectar la presencia de esta variante de ransomware, así mismo, se creó de igual forma una regla SNORT, para detectar patrones que indiquen la presencia de este ransomware dentro de la red.

https://github.com/ferhs343/Detecting-MAORI-Ransomware

Finalmente, es importante tomar en cuenta las principales consideraciones de prevención con el fin de evitar cualquier acceso no autorizado y, como consecuencia, alguna infección no deseada en el servidor. Principalmente, se debe contemplar la implementación de servicios de monitoreo que faciliten un análisis de lo que sucede a través de la red y permita responder a incidentes de manera rápida y eficaz, dando prioridad a tener actualizadas las reglas que se están utilizando. Además, siempre se debe mantener actualizada la copia de seguridad, para llevar a cabo una limpieza y restauración en el servidor en caso de que haya algún malware instalado que ponga en peligro la integridad de la información.

Referencias

<em>Luis Herrera</em>
Luis Herrera

Analista Blue Team en Global Cybersec