Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Sodinokibi: características y funcionamiento

Fecha de publicación 06/04/2020
Autor
INCIBE (INCIBE)
Sodinokibi

Durante los últimos años, el ransomware se ha convertido en la amenaza más relevante  para consumidores y empresas. A pesar de que el número de ataques ha disminuido respecto al año anterior, las víctimas siguen siendo elevadas y continúan suponiendo una importante fuente de ingresos para los ciberdelincuentes, causando un gran daño y pérdidas financieras significativas.

Este tipo de ataque ha experimentado una gran evolución desde sus inicios, pudiendo identificar una gran cantidad de familias diferentes en la actualidad, dirigidas tanto a ciudadanos como a entidades públicas y privadas. Sin embargo, parece que la tendencia es poner el foco en objetivos mucho más concretos, en busca del mayor beneficio, es decir, en grandes empresas que sean capaces de hacer frente a las exigencias de mayores sumas de dinero a cambio de sus datos.

Esto supone un mayor esfuerzo para los ciberdelincuentes, ya que requiere de técnicas más avanzadas y de una mayor complejidad, lo cual se traduce en un incremento en la sofisticación, propagación y persistencia del malware. Un ejemplo de ello es Sodinokibi, también conocido como Revil, Bluebackground o Sodin, que, en muy poco tiempo, ha logrado afectar a ordenadores de todo el mundo.

Sodinokibi

Sodinokibi es un ransomware para sistemas Windows cuya propagación sigue el modelo RaaS (Ramsonware as a Service), es decir, código malicioso que se comercializa de forma personalizada, ajustándose a las necesidades de cada uno de los suscriptores.

Algunas fuentes asocian su autoría al mismo equipo que desarrolló el malware GandCrab, siendo una evolución de este último. Esta afirmación se sustenta en la similitud del código fuente, tanto en estructura como en funcionamiento, además de presentar el mismo modelo de actualización y versionado, así como unos vectores de propagación muy similares.

Para infectar los sistemas, recurre a diferentes técnicas de ofuscación, principalmente basadas en criptografía, para dificultar su análisis e identificación de sus firmas por parte de otros programas de seguridad, como antivirus o sistemas de detección de intrusión (IDS), esta característica lo hace extremadamente peligroso ya que pasa desapercibido ante controles de este tipo.

Funcionamiento

Esquema de funcionamiento

- Funcionamiento Sodinokibi. Fuente McAfee -

Vectores de propagación

La propagación de este ransomware se ha producido a nivel mundial, siendo Asia la región más afectada. Los principales vectores son:

  • El envío de correos maliciosos, mediante campañas de spam.
  • 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).

Ejecución

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.

Una vez que el código malicioso se ejecuta en el sistema de la víctima, gracias a alguno de los diferentes vectores de ataque vistos anteriormente, su primera acción es generar un identificador o mutex, para evitar que entre más de un proceso a la vez en la sección crítica. De esta forma, previene fallos de funcionamiento y dificulta su detección.
El siguiente paso es descifrar la configuración incrustada en su código en formato JSON, que dictará las operaciones que llevará a cabo en función de los parámetros que haya seleccionado el suscriptor del servicio malicioso, por lo que podrán variar de unos a otros.

Escalada de privilegios

Posteriormente intenta la escalada de privilegios en el sistema. Mediante la explotación de la vulnerabilidad CVE-2018-8453, ejecutará el correspondiente exploit tras comprobar si el sistema es vulnerable, lo que normalmente averigua comparando la fecha de creación del archivo %system32%win32k.sys con la de un sistema debidamente actualizado.

Si el equipo esta parcheado, lo vuelve a intentar mediante la función ejecutar como (RunAS) para forzar la ejecución con privilegios elevados y esquivar el sistema UAC, Control de Cuentas de Usuario, de las plataformas Windows que previene la ejecución de cambios no autorizados en el sistema.

Si no obtiene estos privilegios, el programa finaliza y el ataque fracasa, en caso contrario, el programa recopila datos de configuración del sistema y de sesión, también comprueba el idioma del interfaz o del teclado y si coincide con alguno de los excluidos en la configuración, el programa finaliza.

Si no se confirma la exclusión por el idioma, su ejecución continúa con la inutilización de las opciones de restauración del sistema Shadow Copy de Windows, desactivando el proceso vssadmin y utilizando bcdedit, para desactivar las copias de seguridad y borrar todas las instantáneas y copias de seguridad almacenadas.

Antes de proceder al cifrado de los archivos propiamente dicho, este código malicioso también comprueba si se está ejecutando con privilegios de “SYSTEM”. Si fuera así, Sodinokibi buscará el proceso “explorer.exe” para obtener el token de sesión del usuario que está utilizando el equipo, y, mediante la función ImpersonateLoggedOnUser, disminuir los privilegios del código malicioso, evitando de esta forma que el entorno de usuario de “SYSTEM” se vea afectado en la operación de cifrado de los archivos.

Cifrado de archivos

Una vez hecho esto, comienza el cifrado de los archivos, tanto de las unidades locales como de las unidades de red conectadas al mismo, a excepción de algunas carpetas y extensiones del sistema operativo que permita el mínimo funcionamiento del equipo, así como aquellos archivos que se hayan indicado en los parámetros de configuración.

Para ello, 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.

Sodinokibi se entrega con dos claves públicas diferentes: una clave, como parte de la configuración JSON, comentada anteriormente y que se corresponde con el parámetro pk, y otra clave está integrada en el binario, que según variación puede estar embebida en distintas direcciones del ejecutable.

Estas claves públicas son utilizadas para cifrar el par de claves pública-privada que se genera localmente. La presencia de dos claves públicas en el binario es interpretada por los analistas, como la capacidad que se reservan los autores de Sodinokibi de poder descifrar los archivos secuestrados por sus suscriptores.

Aviso a la víctima con instrucciones para el pago de la extorsión

El proceso de cifrado concluye renombrando todos archivos modificados, con una extensión que dependerá de la configuración, por ejemplo, si la extensión asignada fuera ".686l0tek69", cuando Sodinokibi cifra el archivo “imagen.jpg”, al listarlo aparecerá como "imagen.jpg.686l0tek69". También creará un archivo de texto “[extensión]-how-to-decrypt.txt” en cada directorio donde se hayan cifrado archivos, en cuyo interior se detallan las instrucciones que deben seguirse para el rescate de los mismos. También se avisa a la víctima mediante mensajes adicionales por pantalla o modificando el fondo del escritorio.

escritorio atacado

- Detalle aviso de secuestro. Fuente: Cybereason -

Todos estos mensajes conducen a una web donde se proporciona un descifrador de prueba que permite recuperar hasta 3 archivos como muestra de “garantía” y las instrucciones detalladas para la compra de bitcoins y la realización del pago mediante criptomonedas.

Debido a las características del cifrado, actualmente no hay disponible ninguna utilidad o método diferente a la ofrecida en dichas instrucciones que permita descifrar los archivos. Una vez confirmado el pago, el sitio web ofrecerá un enlace de descarga a un programa ad hoc que supuestamente podrá descifrar los archivos secuestrados, solamente válido para descifrar un identificador de Sodinokibi concreto.

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:

  • HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun[codigo]
  • HKCUSOFTWAREMicrosoftWindowsCurrentVersionRun[codigo]

En donde [código] se corresponde con un identificador que dependerá de la compilación del ransomware.

Conclusiones

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.

No te pierdas nuestra próxima entrada de blog, en la que hablaremos de las fases de prevención, identificación y respuesta en caso de verse afectados por este malware.