Sodinokibi: Nuevo ataque en Chile
Autor: Hugo Galilea
El ransomware se ha vuelto nuclear (descarga nuestra infografía ransomware), aún cuando ha bajado su volumen de ataques global, mantiene el puesto número 1 como nivel de amenaza, siendo la más peligrosa y costosa para empresas y personas naturales. Han disminuido el número de ataques, pero no debemos descuidar nuestras instituciones ya que los ciberciminales están enfocándose cada vez más en ataques más dirigidos y donde empresas y personas tengan una mayor capacidad de pago por sus datos secuestrados.
En abril del año 2019, el equipo de Cybereason Nocturnus (Kepler representa Cybereason en Chile, un EDR con capacidad de respuesta y Hacker Hunting), detectó y analizó por primera vez a Sodinokibi, un ransomware bastante evasivo, que toma medidas para evitar su detección por software antivirus.
Sodinokibi es un RAAS, Ransomware as a Service, código malicioso que se comercializa de forma personalizada, ajustándose a las necesidades de los «clientes».
No es claro quien es el autor de dicho código, pero se asocia al mismo equipo que desarrolló GrandCrab, al ser una evolución de este. GrandCrab es responsable por el 40% de todas las infecciones de ransomware a nivel global. Comparten código fuente, estructura de funcionamiento, modelo de actualización y versionado, así como vectores de propagación.
Vectores de Propagación
La propagación de este ransomware a través del mundo, teniendo un fuerte foco inicial en Asia, luego Europa y sólo recientemente Latinoamérica son:
- Phishing, mediante campañas de spam (91% de los ataques exitosos son a través de correos electrónicos maliciosos)
- La publicidad maliciosa o malvertising, es decir código malicioso presente en los anuncios que aparecen durante la navegación web, tanto para ser ejecutado directamente en el equipo, como para redirigir a servidores donde se descargan otros ejecutables.
- Ataques de fuerza bruta sobre el protocolo Remote Desktop Protocol (RDP).
- Explotación de vulnerabilidad CVE-2019-2725 que afecta a sistemas Oracle (parche disponible desde el 26 de abril de 2019).
Medidas de Mitigación
- No descargar archivos de sitios sospechosos o hacer clic en links sospechosos.
- Realiza respaldos online y onsite. Te podemos ayudar con esto.
- Activa Powershell prevention en la solución de Cybereason (nosotros lo distribuimos).
- Activa nuestra solución anti-ransomware de Cybereason.
Análisis del Ataque
El archivo ejecutable se empaqueta de forma personalizada, empaquetando todas las cadenas de texto, nombres de librerías y archivos DLL mediante el algoritmo criptográfico RC4, empleando una clave aleatoria diferente y de longitud variable para cada uno de los elementos cifrados. De esta forma, las cadenas de texto, las tablas API y las referencias a librerías en las que se basa habitualmente el software antivirus para detectar código malicioso resultan ineficaces en su identificación.
La información para su carga se descifra en tiempo de ejecución, utilizando el hash de la cadena en lugar de la propia cadena, lo cual incrementa aún más la dificultad de detección. Además, en su estructura de datos tampoco es posible reconocer el tamaño de las claves ni los datos, lo que hace muy difícil su descifrado por medios automatizados mediante herramientas y métodos convencionales. Pero vamos paso a paso…
Los archivos encontrados para iniciar el ataque son archivos adjuntos o descargables desde un correo electrónico en formato ZIP. Su detección según VirusTotal es muy bajo, lo que indica que la mayoría de los antivirus no lo detectan.
Imagen Virustotal
El zip contiene un JavaScritp ofuscado, al hacerle doble clic se ejecuta un WScript
– Imagen de la primera etapa del árbol de proceso visto en nuestra solución de Cybereason –
El JavaScript se desofusca al reorganizar los caracteres de una lista llamada «eiculwo«, que se encuentra en el archivo JavaScript.
La primera mitad del archivo JavaScript ofuscado.
La variable vhtsxspmssj, localizada en el JavaScript, es un script Powershell ofuscado que será desofuscado por los atacantes más adelante.
– El archivo JavaScript desofuscado –
El archivo JavaScript desofusca la variable vhtsxspmssj, mencionada anteriormente como el script de PowerShell, y la guarda en el directorio temp con el nombre jurhtcbvj.tmp.
Nota: Hemos encontrado variantes del malware donde el script descarga la payload secundaria en lugar de incrustarlo dentro del script inicial.
El archivo jurhtcbvj.tmp es un script de PowerShell lleno de múltiples signos de exclamación innecesarios, probablemente para ofuscar más. El archivo JavaScript lanza un comando de PowerShell para eliminar los signos de exclamación y ejecutar el script de PowerShell.
– El contenido del script de PowerShell ofuscado jurhtcbvj.tmp –
– El comando para reemplazar los signos de exclamación y ejecutar el script de PowerShell –
El script de PowerShell decodifica un script adicional que está codificado en Base64 y lo ejecuta. El script decodificado contiene un módulo .NET también codificado con Base64, que posteriormente se decodifica y carga en la memoria del proceso de PowerShell. Una vez cargado, ejecuta la función Install1.
– El script decodificado descifra y carga el módulo test.dll en la memoria –
El módulo test.dll es una de las muchas capas de este proceso de delivery. La función Install1 contiene otro módulo codificado con Base64. La función decodifica el módulo y lo carga en la memoria.
– Módulo codificado en Base64 Install1 –
– Cargando el módulo Install1 en memoria –
Si el malware no logra obtener los suficientes privilegios, intentará un User Access Control bypass.
Cargador Fase uno: El bypass UAC
El módulo cargado en la memoria funciona como cargador para la siguiente fase del malware. El módulo utiliza CheckTokenMembership para confirmar los privilegios de los procesos. Si los privilegios de los procesos son insuficientes, intenta eludir el Control de acceso de Usuario (UAC). Para evitar el UAC, el malware se escribe a sí mismo en la clave de registro Software \ Classes \ mscfile \ shell \ open \ command \ y lanza una nueva instancia de explorer.exe para ejecutar CompMgmtLauncher.exe.
– Creando la clave de registro y ejecutando CompMgmtLauncher.exe –
Cuando se ejecuta CompMgmtLauncher.exe, ejecuta todo lo configurado en la clave de registro Software \ Classes \ mscfile \ shell \ open \ command \. En este caso, está ejecutando el mismo comando de PowerShell ejecutado anteriormente para reemplazar los signos de exclamación y ejecutar el script de PowerShell, pero con mayores privilegios.
– La creación de la clave de registro para omitir UAC –
El ataque ahora está siendo ejecutado con los más altos privilegios, el ataque continua.
– El árbol de procesos después del bypass de UAC como se ve en la solución Cybereason –
El módulo cargador se carga en la memoria y comprueba nuevamente los privilegios. Esta vez, tiene suficientes privilegios y continúa el ataque. Dentro de los recursos del módulo cargador hay un ejecutable portátil cifrado xor.
– El xor cifrado PE –
El cargador carga el ejecutable portátil del recurso en la memoria, lo desencripta en la memoria usando la clave 7B y luego lo ejecuta.
– El ejecutable portátil en la memoria antes del descifrado xor –
– El ejecutable portátil en la memoria después del descifrado xor –
Cargador Fase dos: Injection a AHNLAB
El ejecutable portátil en la memoria es el segundo módulo cargador que se utilizará para el payload final. En esta fase, el malware intenta inyectar le payload del ransomware en un proceso antivirus de Ahnlab.
Para hacerlo, el segundo cargador verifica si el antivirus Ahnlab está instalado en la máquina de destino. Si existe el servicio de software Ahnlab V3 Lite V3 Service, verifica si el archivo autoup.exe está disponible. autoup.exe es parte de Ahnlab Updater y es vulnerable a ataques.
Se ha reportado que los autores de GandCrab están resentidos con Ahnlab. Dado esto, es interesante notar que Sodinokibi busca específicamente Ahnlab e intenta usarlo para el ataque.
– Buscando el antivirus Ahnlab –
Si el malware puede encontrar el servicio y el ejecutable de Ahnlab, el cargador inicia automáticamente el proceso autoup.exe en un estado suspendido e intenta inyectar el payload de Sodinokibi en este mediante el proceso de vaciado.
Si el antivirus Ahnlab no está instalado en la máquina, el cargador lanzará una instancia separada del proceso actual de PowerShell en un estado suspendido e intentará inyectar el payload de Sodinokibi a través del proceso de vaciado.
El Payload se almacena en los recursos del módulo como un ejecutable portátil encriptado xor con la clave 7B.
– El ejecutable portátil xor cifrado –
El Payload Sodinokibi
El malware almacena datos de configuración cifrados con encriptación RC4 en el .grrr El nombre puede diferir según versión de malware.
– Las secciones de payload de Sodinokibi –
El archivo de configuración contiene información sobre qué carpetas, archivos y extensiones de archivo excluir del cifrado. También contiene información sobre qué procesos cerrar, qué servicios eliminar, cómo escalar privilegios con CVE-2018-8453, cómo comunicarse con C2 y una nota de rescate para mostrar.
– El archivo de configuración para Sodinokibi –
Sodinokibi identifica qué idiomas de teclado se configuran mediante GetKeyboardLayoutList. Comprueba la identificación del idioma principal con una caja de interruptor. Si se configura uno de los idiomas elegidos, el malware se apaga. Los autores de malware no quieren rescatar archivos del conjunto específico de países que se ven en el switch case a continuación. En esta variante de Sodinikobi, se agregó una verificación para sirio, junto con nuevas verificaciones para el idioma del sistema utilizando GetSystemDefaultUILanguage y GetUserDefaultUILanguage.
– El switch case para el ID de idioma principal –
Una vez que pasan las comprobaciones de idioma, el malware continúa su ejecución. Elimina las instantáneas de la máquina con vssadmin.exe para dificultar la recuperación de archivos.
– Se elimina Shadow copy con vssadmin.exe –
Para cifrar, emplea varios algoritmos criptográficos y genera localmente varias claves, tanto asimétricas (par clave privada-pública) como simétricas (clave única), haciendo uso del protocolo de curva elíptica Diffie-Hellman (ECDH) para su generación.
- Cifrado simétrico con AES:
- Utilizado para el cifrado de la clave privada de un par de claves que se genera localmente en el propio equipo sobre el que se ejecuta este ransomware, y cuya clave pública será utilizada en el cifrado de los ficheros.
- Utilizado para cifrar los datos que intercambia el equipo atacado con la consola de comando y control, si se produce la comunicación con este componente.
- Cifrado simétrico con Salsa20:
- Utilizado para el cifrado de los archivos objeto del secuestro, a partir de la clave pública generada previamente y una clave privada generada para cada fichero.
El ransomware recorre todas las carpetas de la máquina, cifra todos los archivos y deja una nota de rescate en cada carpeta. Una vez que ha finalizado el cifrado, cambia el fondo de escritorio para ayudar a informar al usuario del ataque.
– Nuevo fondo de pantalla después de encriptar los archivos –
– La nota de rescate del ransomware –
Después de que el malware encripta los archivos en la máquina de destino, intenta establecer comunicación con un servidor C2. Para generar la URL para el C2, recorre una lista de dominios configurados en el archivo de configuración previamente decodificado.
– Lista de dominios desde el archivo de configuración –
El malware crea varias URL aleatorias utilizando los dominios con una combinación de cadenas codificadas y generadas aleatoriamente. Un informe reciente de Tesorion cubre las similitudes en la forma en que Sodinokibi y GandCrab generan URL aleatorias, lo que refuerza aún más las sospechas de un posible autor común.
– Strings hard coded para la generación de URL aleatorio –
Una vez que se generan las URL, el malware envía información de la máquina cifrada a cada uno de los dominios, incluidos los nombres de usuario, el nombre de la máquina, el nombre de dominio, el idioma de la máquina, el tipo de sistema operativo y la arquitectura de la CPU.
– Información enviada al servidor C2 antes del cifrado –
Cuando el usuario hace clic en la nota de rescate e ingresa una llave, una página muestra la lista de precios que debe pagar en bitcoins para rescatar sus archivos.
– La nota de rescate –
La solución anti-ransomware de Cybereason identifica la amenaza y mitiga el incidente antes de que cualquier daño haya ocurrido
– La solución anti-ransomware Cybereason detecta y previene el ransomware Sodinokibi –
Persistencia
Sodinokibi está diseñado para poder mantener persistencia en el sistema atacado, ya que incluye código para ello. Cuando esta opción está activada en su configuración, se incluirá en el registro de Windows alguna clave a tal fin, como pueden ser las que se muestran a continuación:
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\[codigo]
- HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\[codigo]
En donde [código] se corresponde con un identificador que dependerá de la compilación del ransomware.
Conclusiones
Aún cuando los métodos de ofuscación utilizados por los autores es simple, son altamente efectivos. Logran su cometido y tienen una muy baja tasa de detección con antivirus tradicionales.
Una vez que el ataque se lleva a cabo con éxito, a día de hoy hay que descartar cualquier intento de descifrado alternativo, ya que actualmente no existe ningún método efectivo. Sin embargo, seguir las instrucciones indicadas por los atacantes nunca es una alternativa recomendable, ya que realizar el pago no ofrece ninguna garantía de que ellos cumplan con su parte y faciliten una opción válida de recuperación. Además, tampoco hay ninguna seguridad de que el equipo deje de estar infectado, ni de que no utilizarán la información obtenida durante el ataque para realizar chantajes u otros ataques adicionales.
También hay que tener en cuenta que el atacante no es el autor del ransomware, ya que este puede conseguirse por distintas vías y es posible que ni siquiera disponga de las claves de recuperación. Asimismo, se debe considerar que la compra de bitcoins no es algo que se pueda realizar inmediatamente, y esto puede impedir el cumplimiento con los plazos establecidos por los secuestradores.
INDICADORES DE COMPROMISO
Java Script
MD5 – 3e974b7347d347ae31c1b11c05a667e2
SHA1 – 2cc597d6bffda9ef6b42fed84f7a20f6f52c4756
Jurhrtcbvj.tmp
MD5 – e402d34e8d0f14037769294a15060508
SHA1 – b751d0d722d3c602bcc33be1d62b1ba2b0910e03
Test.dll
MD5 – 8ea320dff9ef835269c0355ca6850b33
SHA1 – f9df190a616653e2e1869d82abd4f212320e9f4b
sodinokibi_loader_1.dll
MD5 – 7d4c2211f3279201599f9138d6b61162
SHA1 – ee410f1d10edc70f8de3b27907fc10fa341f620a
sodinokibi_loader_2.dll
MD5 – 613dc98a6cf34b20528183fbcc78a8ee
SHA1 – 5cd8eadcd70b89f6963cbd852c056195a17d0ce2
sodinokibi_payload.exe
MD5 – b488bdeeaeda94a273e4746db0082841
SHA1 – 5dac89d5ecc2794b3fc084416a78c965c2be0d2a
Fuentes:
Este documento es una recolección de información desde dos fuentes:
Incibe-Cert: https://www.incibe-cert.es/blog/sodinokibi-caracteristicas-y-funcionamiento
Cyberason: https://www.cybereason.com/blog/the-sodinokibi-ransomware-attack
Paso a paso que es y que hace Sodinokibi el nuevo Ransomware de GrandCrab