¿Cómo funciona Ryuk ransomware que ataca a las empresas?



Ryuk es una de las opciones de ransomware más conocidas en los últimos años. Desde que apareció por primera vez en el verano de 2018, ha compilado una impresionante lista de víctimas , especialmente en el entorno empresarial, que es el objetivo principal de sus ataques.

1. Información General


Este documento contiene un análisis de la opción de ransomware Ryuk, así como del gestor de arranque responsable de descargar el malware al sistema.

El ransomware Ryuk apareció por primera vez en el verano de 2018. Una de las diferencias entre Ryuk y otros ransomware es que tiene como objetivo atacar entornos corporativos.

A mediados de 2019, los grupos de delitos cibernéticos atacaron a una gran cantidad de empresas españolas con la ayuda de este criptor.


Higo.


Figura
1: Extracto de El Confidencial sobre el ataque del ransomware Ryuk [1] 2: Extracto de El País sobre un ataque de ransomware Ryuk [2]
Este año, Ryuk atacó a un gran número de empresas en diferentes países. Como puede ver en las siguientes figuras, Alemania, China, Argelia e India fueron las que más sufrieron.

Al comparar la cantidad de ataques cibernéticos, podemos ver que millones de usuarios se vieron afectados por Ryuk y la gran cantidad de datos se vio comprometida, lo que resultó en un grave daño económico.


Higo. 3: Ilustración de la actividad global de Ryuk.


Higo. 4: 16 países más afectados por Ryuk


Fig. 5: El número de usuarios atacados por el ransomware Ryuk (en millones)

De acuerdo con el principio habitual del funcionamiento de tales amenazas, este ransomware después del cifrado muestra a la víctima una notificación de rescate que debe pagarse en bitcoins a la dirección especificada para restaurar el acceso a los archivos cifrados.

Este malware ha cambiado desde que apareció por primera vez.
Se descubrió una variante de esta amenaza analizada en este documento durante un intento de lanzar un ataque en enero de 2020.

Debido a su complejidad, este malware a menudo se atribuye a los cibercriminales organizados, también conocidos como grupos APT.

Parte del código de Ryuk tiene una notable semejanza con el código y la estructura de otro conocido criptógrafo de Hermes, con el que tienen varias funciones idénticas. Es por eso que Ryuk se asoció inicialmente con el grupo norcoreano Lazarus, que en ese momento se sospechaba que estaba detrás del ransomware Hermes.

Posteriormente, el Halcón X de CrowdStrike señaló que Ryuk fue creado por WIZARD SPIDER [4].

Hay alguna evidencia para apoyar esta suposición. En primer lugar, este ransomware se promocionó en el sitio web exploit.in, que es un conocido mercado ruso de malware y que anteriormente estaba asociado con algunos grupos APT rusos.
Este hecho excluye la teoría de que Ryuk podría ser desarrollado por el grupo APT Lazarus, como esto no coincide con la forma en que actúa el grupo.

Además, Ryuk fue promocionado como un encriptador que no funcionará en sistemas rusos, ucranianos y bielorrusos. Este comportamiento está determinado por la función que se encuentra en algunas versiones de Ryuk, donde comprueba el idioma del sistema en el que se ejecuta este cifrador y detiene su funcionamiento si el sistema tiene ruso, ucraniano o bielorruso. Finalmente, al realizar un análisis experto de una máquina que fue pirateada por el grupo WIZARD SPIDER, se descubrieron varios "artefactos" que supuestamente se utilizaron en el desarrollo de Ryuk como una variante del ransomware Hermes.

Por otro lado, los expertos Gabriela Nicolao y Luciano Martins sugirieron que el criptógrafo podría haber sido desarrollado por el equipo CryptoTech APT [5].
Esto se desprende del hecho de que unos meses antes de la aparición de Ryuk, este grupo publicó información en el foro del mismo sitio donde habían desarrollado una nueva versión del ransomware Hermes.

Varios usuarios del foro se han preguntado si CryptoTech realmente creó Ryuk. Después de eso, este grupo se defendió y declaró que tenía evidencia de que habían desarrollado el 100% de este encriptador.

2. Características


Comenzamos con el gestor de arranque, cuya tarea es identificar el sistema en el que se encuentra, para que pueda ejecutar la versión "correcta" del encriptador Ryuk.
El hash del gestor de arranque es el siguiente:

MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469

Una de las características de este gestor de arranque es que no contiene ningún dato. Los creadores de este malware no incluyeron ninguna información.

A veces incluyen datos erróneos para que el usuario piense que supuestamente está lanzando una aplicación legítima. Sin embargo, como veremos más adelante, en el caso de que la infección no implique interacción con el usuario (como es el caso con este encriptador), los atacantes no consideran necesario utilizar metadatos.


Higo. 6: metadatos de muestra La muestra

se compiló en formato de 32 bits para que pueda ejecutarse tanto en sistemas de 32 bits como de 64 bits.

3. Vector de penetración


La muestra que descarga y lanza Ryuk ingresó a nuestro sistema a través de una conexión remota, y los parámetros de acceso se obtuvieron gracias a un ataque RDP preliminar.


Higo. 7: Registro de ataques Un

atacante logró iniciar sesión en un sistema de forma remota. Después de eso, creó un archivo ejecutable con nuestra muestra.
Este archivo ejecutable fue bloqueado por una solución antivirus antes del lanzamiento.


Higo. 8: Bloqueo de la muestra



Fig. 9: Bloqueo de muestra

Cuando se bloqueó un archivo malicioso, el atacante intentó descargar una versión cifrada del archivo ejecutable, que también fue bloqueado.


Higo. 10: Un conjunto de muestras que un atacante intentó ejecutar

Finalmente, intentó descargar otro archivo malicioso a través de una consola encriptada
PowerShell para evitar la protección antivirus. Pero también fue bloqueado.


Higo. 11: PowerShell con el contenido malicioso bloqueado


Fig. 12: PowerShell con contenido malicioso bloqueado

4. Cargador de arranque


Cuando se ejecuta, escribe el archivo Léame en la carpeta % temp% , que es típico de Ryuk. Este archivo - una demanda de rescate, que contiene la dirección de correo electrónico del dominio protonmail, que es bastante común en esta familia de malware: msifelabem1981@protonmail.com




Fig. 13: Requisito de canje

Durante la ejecución del gestor de arranque, puede ver que lanza varios archivos ejecutables con nombres aleatorios. Se almacenan en una carpeta PÚBLICA oculta , pero si la opción "Mostrar archivos y carpetas ocultos" no está activa en el sistema operativo , permanecerán ocultos. Además, estos archivos son de 64 bits a diferencia del archivo principal, que es de 32 bits.




Higo. 14: Archivos ejecutables lanzados por la muestra

Como puede ver en la figura anterior, Ryuk lanza icacls.exe, que se utilizará para modificar todas las ACL (lista de control de acceso), garantizando así el acceso y el cambio de banderas.

Todos los usuarios obtienen acceso completo a todos los archivos del dispositivo (/ T) independientemente de los errores (/ C) y sin mostrar ningún mensaje (/ Q).


Higo. Figura 15: Opciones de ejecución para icacls.exe iniciadas por la muestra.

Es importante tener en cuenta que Ryuk verifica qué versión de Windows se está ejecutando. Para hacer esto,
verifica la versión usando GetVersionExW , en el cual verifica el valor del indicador lpVersionInformationmostrando si la versión actual de Windows es posterior a Windows XP .





Dependiendo de si está ejecutando una versión posterior a Windows XP, el gestor de arranque escribirá en la carpeta de usuario local, en este caso, la carpeta % Public% .


Higo. 17: Verificación de la versión del sistema operativo El

archivo grabado es Ryuk. Luego lo inicia, pasando su propia dirección como parámetro.


Higo. 18: Ejecutar Ryuk a través de ShellExecute

Lo primero que hace Ryuk es obtener los parámetros de entrada. Esta vez hay dos parámetros de entrada (el archivo ejecutable en sí y la dirección del cuentagotas), que se utilizan para eliminar sus propios rastros.




Higo. 19: Crear un proceso

También puede ver que tan pronto como lanzó sus archivos ejecutables, se elimina a sí mismo, sin dejar rastro de su presencia en la carpeta donde fue ejecutado.


Higo. 20: eliminación de archivos

5. RYUK


5.1 Presencia
Ryuk, como otro malware, intenta permanecer en el sistema el mayor tiempo posible. Como se muestra arriba, una forma de lograr este objetivo es crear y ejecutar secretamente archivos ejecutables. Para esto, la práctica más común es modificar la clave de registro CurrentVersion \ Run .
En este caso, puede ver que para este propósito, el primer archivo ejecutable VWjRF.exe
(el nombre del archivo se genera aleatoriamente) inicia cmd.exe .




Higo. 21: Ejecutando el archivo VWjRF.exe

Luego se ingresa un comando RUN con el nombre " svchos ""Por lo tanto, si desea verificar las claves de registro en cualquier momento, no puede notar fácilmente este cambio, dada la similitud de este nombre con svchost. Gracias a esta clave, Ryuk asegura su presencia en el sistema. Si el sistema aún no ha sido infectado luego, cuando reinicie el sistema, el ejecutable volverá a intentarlo


Fig. 22: La muestra asegura la presencia de la clave de registro

También podemos ver que este ejecutable detiene los dos servicios:
" audioendpointbuilder ", que, como su nombre lo indica, coincide con el sistema audio,


Figura 23: La muestra detiene el audio del sistema

y el servicio samss, que es un servicio de administración de cuentas. Detener estos dos servicios es una característica de Ryuk. En este caso, si el sistema está conectado al sistema SIEM, el encriptador intenta dejar de enviar advertencias a SIEM . Por lo tanto, defiende sus próximos pasos, ya que algunos servicios de SAM no podrán comenzar su trabajo correctamente después de que se ejecute Ryuk.


Higo. 24: La muestra detiene el servicio Samss.

5.2 Privilegios

En términos generales, Ryuk comienza con un movimiento horizontal dentro de la red o es lanzado por otro programa malicioso, como Emotet o Trickbot , que en caso de escalada de privilegios transfiere estos derechos elevados al encriptador.

De antemano, como preludio del proceso de implementación, vemos que ejecuta el proceso ImpersonateSelf , lo que significa que el contenido de seguridad del token de acceso se transferirá a la secuencia, donde se recibirá inmediatamente usando GetCurrentThread .


Higo. 25: Llamar a ImpersonateSelf

Luego vemos que asociará el token de acceso con la secuencia. También vemos que uno de los indicadores es DesiredAccess , que se puede usar para controlar el acceso que tendrá la transmisión. En este caso, el valor que recibirá edx debe ser TOKEN_ALL_ACESS o TOKEN_WRITE .




Higo. 26: Crear un token de flujo

Luego usaráSeDebugPrivilege también realizará una llamada para obtener los derechos de depuración de depuración en relación con la secuencia, como resultado de lo cual, al especificar PROCESS_ALL_ACCESS , podrá acceder a cualquier proceso requerido. Ahora, dado que el encriptador ya tiene una secuencia preparada, solo queda pasar a la etapa final.


Higo. 27: Llamar a SeDebugPrivilege y la función de escalar derechos

Por un lado, tenemos LookupPrivilegeValueW, que nos proporciona la información necesaria sobre los privilegios que queremos aumentar.


Higo. 28: Solicitud de información sobre privilegios para su escalado.

Por otro lado, tenemos AdjustTokenPrivileges , que nos permite obtener los derechos necesarios para nuestra transmisión. En este caso, lo más importante es NewState.cuya bandera otorgará privilegios.




Higo. Figura 29: Establecer derechos para el token

5.3 Implementación

En esta sección, mostraremos cómo la muestra realiza el proceso de implementación mencionado anteriormente en este informe.

El objetivo principal del proceso de implementación, así como la escalada, es obtener acceso a las instantáneas . Para hacer esto, necesita trabajar con la transmisión con privilegios más altos que los del usuario local. Tan pronto como obtenga esos derechos más altos, eliminará las copias y realizará cambios en otros procesos para que sea imposible regresar a un punto de restauración anterior en el sistema operativo.

Como suele ser el caso con este tipo de malware, utiliza CreateToolHelp32Snapshot para completar la implementación, por lo que toma una instantánea de los procesos que se están ejecutando actualmente e intenta acceder a estos procesos utilizando OpenProcess . Tan pronto como tiene acceso al proceso, también abre un token con su información para obtener los parámetros del proceso.


Higo.

Figura 30: Recepción de procesos desde una computadora Podemos ver dinámicamente cómo recibe una lista de procesos en ejecución en la rutina 140002D9C usando CreateToolhelp32Snapshot. Después de recibirlos, revisa la lista e intenta abrir los procesos uno por uno usando OpenProcess hasta que pueda hacerlo. En este caso, el primer proceso que pudo abrir fue "taskhost.exe" .


Higo. 31: Ejecución dinámica de un procedimiento para obtener un proceso.

Podemos ver que posteriormente lee el token del proceso, por lo que es OpenProcessToken con la " 20008 "


Fig. 32: Leer la información del token del proceso

También verifica que el proceso en el que se incrustará no sea csrss.exe , explorer.exe, lsaas.exe o que tenga un conjunto de permisos de autoridad NT .


Higo. Figura 33: Procesos excluidos.

Podemos ver dinámicamente cómo se verifica primero usando la información de token de proceso en 140002D9C para averiguar si la cuenta cuyos derechos se utilizan para ejecutar el proceso es una cuenta NT AUTHORITY .


Higo. 34: Verificación de NT AUTHORITY

Y luego, fuera del procedimiento, verifica que no sea csrss.exe, explorer.exe o lsaas.exe .


Higo. 35: Verificación de la AUTORIDAD DE NT

Después de tomar una instantánea de los procesos, abrir los procesos y verificar que ninguno de ellos esté excluido, está listo para anotar los procesos que se implementarán en la memoria.

Para hacer esto, primero reserva una región en memoria ( VirtualAllocEx ), le escribe ( WriteProcessmemory ) y crea una secuencia ( CreateRemoteThread ). Para trabajar con estas funciones, utiliza los PID de los procesos seleccionados, que obtuvo previamente con CreateToolhelp32Snapshot .


Higo. 36: Incrustar código

Aquí podemos observar dinámicamente cómo utiliza el PID del proceso para llamar a la función VirtualAllocEx.


Higo. Figura 37: Invocación de VirtualAllocEx

5.4 Cifrado
En esta sección, veremos parte de esta muestra relacionada con el cifrado. En la siguiente figura, puede ver dos rutinas llamadas " LoadLibrary_EncodeString " y " Encode_Func ", que son responsables de realizar el procedimiento de cifrado.


Higo. 38: Procedimientos de encriptación

Al principio podemos ver cómo carga una cadena que luego se usará para desofuscar todo lo que se necesita: importaciones, DLL, comandos, archivos y CSP.


Higo. 39: Cadena de desofuscación

La siguiente figura muestra la primera importación que se desofusca en el registro R4, LoadLibrary . Esto se usará más tarde para cargar las DLL necesarias. También podemos ver otra línea en el registro R12, que se utiliza junto con la línea anterior para realizar la desofuscación.


Higo. 40: Desofuscación dinámica.

Continúa cargando comandos que ejecutará más tarde para deshabilitar las copias de seguridad, los puntos de restauración y los modos de arranque seguro.


Higo. 41: Descarga de comandos

Luego carga la ubicación donde soltará 3 archivos: Windows.bat, run.sct y start.bat .








Higo. 42: Ubicaciones de archivos

Estos 3 archivos se utilizan para verificar los privilegios que tiene cada ubicación. Si los privilegios requeridos no están disponibles, Ryuk detiene la ejecución.

Continúa cargando líneas correspondientes a tres archivos. El primero, DECRYPT_INFORMATION.html , contiene la información necesaria para restaurar archivos. El segundo, PUBLIC , contiene la clave pública RSA.


Higo. 43: String DECRYPT INFORMATION.html

Tercero, UNIQUE_ID_DO_NOT_REMOVE , contiene la clave cifrada que se usará en la próxima rutina para realizar el cifrado.


Higo. 44: ID ÚNICO NO RETIRE Cadena

Finalmente, carga las bibliotecas requeridas junto con las importaciones requeridas y CSP ( Microsoft Enhanced RSAy proveedor criptográfico AES ).


Higo. 45: Descarga de bibliotecas

Después de completar toda la desofuscación, procede a realizar las acciones necesarias para el cifrado: iterar sobre todas las unidades lógicas, realizar lo que se cargó en la subrutina anterior, fortalecer la presencia en el sistema, soltar el archivo RyukReadMe.html, cifrar, iterar todas las unidades de red, cambiando a dispositivos descubiertos y su encriptación.
Todo comienza con la descarga de " cmd.exe " y la escritura de la clave pública RSA.


Higo. 46: Preparación para el cifrado

Luego, recupera todas las unidades lógicas utilizando GetLogicalDrives y deshabilita todas las copias de seguridad, puntos de recuperación y modos de arranque seguro.


Higo. 47: Desactivar las herramientas de recuperación

Después de eso, él fortalece su presencia en el sistema, como vimos anteriormente, y escribe el primer archivo RyukReadMe.html en TEMP .


Higo.

Figura 48: Publicación de una notificación de recompra En la siguiente figura, puede ver cómo crea un archivo, descarga el contenido y lo escribe:


Figura. Figura 49: Descargar y grabar el contenido de un archivo.

Para poder realizar las mismas acciones en todos los dispositivos, utiliza
" icacls.exe " como mostramos anteriormente.


Higo. 50: Uso de icalcls.exe

Y finalmente, comienza a encriptar archivos con la excepción de los archivos "* .exe", "* .dll", archivos del sistema y otras ubicaciones especificadas como una lista blanca encriptada. Para esto, utiliza las importaciones: CryptAcquireContextW (donde se indica el uso de AES y RSA), CryptDeriveKey, CryptGenKey , CryptDestroyKey , etc. También se está intentando expandir su efecto en los dispositivos de red detectados usando WNetEnumResourceW y luego encriptarlos.


Higo. 51: Cifrado de archivos del sistema

6. Importaciones y banderas relacionadas


La siguiente es una tabla que enumera las importaciones y los indicadores más relevantes utilizados por la muestra:



7. COI




Referencias
  • usuarios \ Public \ run.sct
  • Menú Inicio \ Programas \ Inicio \ start.bat AppData \ Roaming \ Microsoft \ Windows \ Start
  • Menú \ Programas Inicio \ inicio.bat




Informe técnico de Ryuk ransomware compilado por expertos en laboratorios antivirus de PandaLabs.

8. Referencias


1. "Everis y Prisa Radio sufren un grave ciberataque que secuestra sus sistemas". Https: // www. elconfidencial.com/tecnologia/2019-11-04/ everis-la-ser-ciberataque-ransomware-15_2312019 /, Publicada el 04/11/2019.

2. “Un virus de origen ruso ataca a importantes empresas españolas”. Https: //elpais.com/ tecnologia / 2019/11/04 / actualidad / 1572897654_ 251312.html, Publicada el 04/11/2019.

3. “Documento VB2019: La venganza de Shinigami: la larga cola del malware Ryuk”. Https://securelist.com/ story-of-the-year-2019-cities-under-ransomware-siege / 95456 /, Publicada el 11 /

12/2019 4. "Big Game Hunting con Ryuk: otro ransomware basado en Lucrative". Https: // www. crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, publicado el 01/10/2019.

5. “Documento VB2019: la venganza de Shinigami: la larga cola del malware Ryuk”. Https: // www. virusbulletin.com/virusbulletin/2019/10/ vb2019-paper-shinigamis-revenge-long-tail-r

All Articles