Ryuk es una de las opciones de ransomware más famosas de los últimos años. Desde que apareció por primera vez en el verano de 2018, ha recopilado
1. Información General
Este documento contiene un análisis de la variante del ransomware Ryuk, así como del cargador responsable de cargar el malware en el sistema.
El ransomware Ryuk apareció por primera vez en el verano de 2018. Una de las diferencias entre Ryuk y otros ransomware es que está dirigido a atacar entornos corporativos.
A mediados de 2019, grupos de ciberdelincuentes atacaron a un gran número de empresas españolas utilizando este ransomware.
Arroz. 1: Extracto de El Confidencial sobre el ataque del ransomware Ryuk [1]
Arroz. 2: Extracto de El País sobre un ataque realizado con el ransomware Ryuk [2]
Este año, Ryuk ha atacado a un gran número de empresas en varios países. Como puede verse en las figuras siguientes, Alemania, China, Argelia e India fueron los más afectados.
Al comparar la cantidad de ataques cibernéticos, podemos ver que Ryuk ha afectado a millones de usuarios y ha comprometido una enorme cantidad de datos, lo que ha provocado graves pérdidas económicas.
Arroz. 3: Ilustración de la actividad global de Ryuk.
Arroz. 4: 16 países más afectados por Ryuk
Arroz. 5: Número de usuarios atacados por el ransomware Ryuk (en millones)
Según el principio operativo habitual de este tipo de amenazas, este ransomware, una vez completado el 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 se introdujo por primera vez.
La variante de esta amenaza analizada en este documento fue descubierta durante un intento de ataque en enero de 2020.
Debido a su complejidad, este malware suele atribuirse a grupos organizados de ciberdelincuentes, también conocidos como grupos APT.
Parte del código Ryuk tiene una notable similitud con el código y la estructura de otro conocido ransomware, Hermes, con el que comparten varias funciones idénticas. Por este motivo, Ryuk fue vinculado inicialmente con el grupo norcoreano Lazarus, del que en aquel momento se sospechaba que estaba detrás del ransomware Hermes.
Posteriormente, el servicio Falcon X de CrowdStrike notó que Ryuk fue creado por el grupo WIZARD SPIDER [4].
Hay alguna evidencia que apoya esta suposición. En primer lugar, este ransomware se anunció en el sitio web exploit.in, que es un conocido mercado de malware ruso y que anteriormente se había asociado con algunos grupos APT rusos.
Este hecho descarta la teoría de que Ryuk podría haber sido desarrollado por el grupo Lazarus APT, porque No encaja con la forma en que opera el grupo.
Además, Ryuk fue anunciado como un ransomware que no funcionará en los sistemas rusos, ucranianos y bielorrusos. Este comportamiento está determinado por una característica que se encuentra en algunas versiones de Ryuk, donde verifica el idioma del sistema en el que se ejecuta el ransomware y detiene su ejecución si el sistema tiene un idioma ruso, ucraniano o bielorruso. Finalmente, un análisis experto de la máquina pirateada por el equipo WIZARD SPIDER reveló 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 ransomware podría haber sido desarrollado por el grupo APT CryptoTech [5].
Esto se debe al hecho de que varios meses antes de la aparición de Ryuk, este grupo publicó información en el foro del mismo sitio de que habían desarrollado una nueva versión del ransomware Hermes.
Varios usuarios del foro cuestionaron si CryptoTech realmente creó a Ryuk. Luego, el grupo se defendió y afirmó que tenía pruebas de que habían desarrollado el 100% del ransomware.
2. Características
Comenzamos con el gestor de arranque, cuya función es identificar el sistema en el que se encuentra para poder iniciar la versión "correcta" del ransomware Ryuk.
El hash del gestor de arranque es el siguiente:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
Una de las características de este descargador es que no contiene metadatos, es decir. Los creadores de este malware no han incluido ninguna información en él.
En ocasiones incluyen datos erróneos para engañar al usuario haciéndole creer que está ejecutando una aplicación legítima. Sin embargo, como veremos más adelante, si la infección no implica la interacción del usuario (como es el caso de este ransomware), los atacantes no consideran necesario utilizar metadatos.
Arroz. 6: Metadatos de muestra
El ejemplo se compiló en formato de 32 bits para que pueda ejecutarse en sistemas de 32 y 64 bits.
3. Vector de penetración
La muestra que descarga y ejecuta Ryuk ingresó a nuestro sistema a través de una conexión remota y los parámetros de acceso se obtuvieron mediante un ataque RDP preliminar.
Arroz. 7: Registro de ataque
El atacante logró iniciar sesión en el 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 de ejecutarse.
Arroz. 8: Bloqueo de patrón
Arroz. 9: Bloqueo de patrón
Cuando se bloqueó el archivo malicioso, el atacante intentó descargar una versión cifrada del archivo ejecutable, que también fue bloqueada.
Arroz. 10: Conjunto de muestras que el atacante intentó ejecutar
Finalmente, intentó descargar otro archivo malicioso a través de la consola cifrada.
PowerShell para evitar la protección antivirus. Pero también fue bloqueado.
Arroz. 11: PowerShell con contenido malicioso bloqueado
Arroz. 12: PowerShell con contenido malicioso bloqueado
4. Cargador
Cuando se ejecuta, escribe un archivo Léame en la carpeta % Temp%, que es típico de Ryuk. Este archivo es una nota de rescate que contiene una dirección de correo electrónico en el dominio protonmail, que es bastante común en esta familia de malware: [email protected]
Arroz. 13: Demanda de rescate
Mientras se ejecuta el gestor de arranque, puede ver que inicia varios archivos ejecutables con nombres aleatorios. Se almacenan en una carpeta oculta. PÚBLICO, pero si la opción no está activa en el sistema operativo "Mostrar archivos y carpetas ocultas", entonces permanecerán ocultos. Además, estos archivos son de 64 bits, a diferencia del archivo principal, que es de 32 bits.
Arroz. 14: Archivos ejecutables lanzados por la muestra.
Como puede ver en la imagen de arriba, Ryuk lanza icacls.exe, que se utilizará para modificar todas las ACL (listas de control de acceso), garantizando así el acceso y la modificación de las banderas.
Obtiene acceso completo para todos los usuarios a todos los archivos del dispositivo (/T) independientemente de los errores (/C) y sin mostrar ningún mensaje (/Q).
Arroz. 15: Parámetros de ejecución de icacls.exe iniciado por la muestra
Es importante tener en cuenta que Ryuk comprueba qué versión de Windows estás ejecutando. Por esto el
realiza una verificación de versión usando ObtenerVersiónExW, en el que comprueba el valor de la bandera. lpVersiónInformaciónindicando si la versión actual de Windows es más reciente que windows XP.
Dependiendo de si está ejecutando una versión posterior a Windows XP, el cargador de arranque escribirá en la carpeta del usuario local, en este caso en la carpeta %Público%.
Arroz. 17: Comprobar la versión del sistema operativo
El archivo que se está escribiendo es Ryuk. Luego lo ejecuta, pasando su propia dirección como parámetro.
Arroz. 18: Ejecutar Ryuk a través de ShellExecute
Lo primero que hace Ryuk es recibir los parámetros de entrada. Esta vez hay dos parámetros de entrada (el ejecutable en sí y la dirección del cuentagotas) que se utilizan para eliminar sus propios rastros.
Arroz. 19: Creando un proceso
También puedes ver que una vez que ha ejecutado sus ejecutables, se elimina a sí mismo, sin dejar rastro de su propia presencia en la carpeta donde se ejecutó.
Arroz. 20: Eliminar un archivo
5. RYUK
5.1 Presencia
Ryuk, al igual que otros programas maliciosos, intenta permanecer en el sistema el mayor tiempo posible. Como se muestra arriba, una forma de lograr este objetivo es crear y ejecutar archivos ejecutables en secreto. Para ello, la práctica más común es cambiar la clave de registro. Ejecución de la versión actual.
En este caso, puedes ver que para ello el primer archivo que se ejecuta VWjRF.exe
(el nombre del archivo se genera aleatoriamente) se inicia cmd.exe.
Arroz. 21: Ejecutando VWjRF.exe
Luego ingresa el comando CORRE Con nombre "svchos". Por lo tanto, si desea verificar las claves de registro en cualquier momento, puede pasar fácilmente por alto este cambio, dada la similitud de este nombre con svchost. Gracias a esta clave, Ryuk asegura su presencia en el sistema. Si el sistema no lo ha hecho aún no ha sido infectado, cuando reinicie el sistema, el ejecutable lo intentará nuevamente.
Arroz. 22: La muestra garantiza la presencia en la clave de registro.
También podemos ver que este ejecutable detiene dos servicios:
"constructor de puntos finales de audio", que como su nombre indica, corresponde al sistema de audio,
Arroz. 23: La muestra detiene el servicio de audio del sistema
и sam, que es un servicio de gestión de cuentas. Detener estos dos servicios es una característica de Ryuk. En este caso, si el sistema está conectado a un sistema SIEM, el ransomware intenta dejar de enviar a
Arroz. 24: Muestra detiene el servicio Samss
5.2 Privilegios
En términos generales, Ryuk comienza moviéndose lateralmente dentro de la red o es lanzado por otro malware como
Previamente, como antesala del proceso de implementación, lo vemos llevar a cabo el proceso. hacerse pasar por uno mismo, lo que significa que el contenido de seguridad del token de acceso se pasará a la secuencia, donde se recuperará inmediatamente usando Obtener hilo actual.
Arroz. 25: Llamar a hacerse pasar por uno mismo
Luego vemos que asociará un token de acceso con un hilo. También vemos que una de las banderas es Acceso Deseado, que se puede utilizar para controlar el acceso que tendrá el hilo. En este caso el valor que recibirá edx debe ser TOKEN_ALL_ACESS o de otro modo - TOKEN_WRITE.
Arroz. 26: Crear un token de flujo
Entonces él usará SeDebugPrivilege y hará una llamada para obtener permisos de depuración en el hilo, lo que resultará en PROCESO_ALL_ACCESS, podrá acceder a cualquier proceso requerido. Ahora, dado que el cifrador ya tiene un flujo preparado, todo lo que queda es pasar a la etapa final.
Arroz. 27: Llamada a SeDebugPrivilege y función de escalada de privilegios
Por un lado tenemos LookupPrivilegeValueW, que nos proporciona la información necesaria sobre los privilegios que queremos aumentar.
Arroz. 28: Solicitar información sobre privilegios para escalar privilegios
Por otro lado, tenemos Ajustar privilegios de token, lo que nos permite obtener los derechos necesarios para nuestro streaming. En este caso, lo más importante es Nuevo estado, cuya bandera otorgará privilegios.
Arroz. 29: Configurar permisos para un 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 del escalamiento, es obtener acceso a instantáneas. Para hacer esto, necesita trabajar con un hilo con derechos superiores a los del usuario local. Una vez que obtenga dichos derechos elevados, eliminará copias y realizará cambios en otros procesos para que sea imposible regresar a un punto de restauración anterior en el sistema operativo.
Como es típico en este tipo de malware, utiliza CreateToolHelp32Instantáneapor lo que toma una instantánea de los procesos actualmente en ejecución e intenta acceder a esos procesos usando Proceso abierto. Una vez que accede al proceso, también abre un token con su información para obtener los parámetros del proceso.
Arroz. 30: Recuperar procesos desde una computadora
Podemos ver dinámicamente cómo obtiene la lista de procesos en ejecución en la rutina 140002D9C usando CreateToolhelp32Snapshot. Después de recibirlos, recorre la lista, intentando abrir procesos uno por uno usando OpenProcess hasta que lo logra. En este caso, el primer proceso que pudo abrir fue "taskhost.exe".
Arroz. 31: Ejecutar dinámicamente un procedimiento para obtener un proceso
Podemos ver que posteriormente lee la información del token de proceso, por lo que llama Proceso abierto de emergencia con parámetro "20008"
Arroz. 32: leer la información del token de proceso
También comprueba que el proceso en el que se inyectará no sea csrss.exe, explorer.exe, lsaas.exe o que tiene un conjunto de derechos autoridad del Nuevo Testamento.
Arroz. 33: Procesos excluidos
Podemos ver dinámicamente cómo realiza por primera vez la verificación utilizando la información del token de proceso en 140002D9C para saber si la cuenta cuyos derechos se utilizan para ejecutar un proceso es una cuenta AUTORIDAD NT.
Arroz. 34: verificación de AUTORIDAD NT
Y después, fuera del procedimiento, comprueba que esto no es así. csrss.exe, explorador.exe o lsaas.exe.
Arroz. 35: verificación de AUTORIDAD NT
Una vez que haya tomado una instantánea de los procesos, los haya abierto y verificado que ninguno de ellos esté excluido, estará listo para escribir en la memoria los procesos que se inyectarán.
Para hacer esto, primero reserva un área en la memoria (AllocEx virtual), escribe en él (Memoria de proceso de escritura) y crea un hilo (CreateRemoteThread). Para trabajar con estas funciones utiliza los PID de los procesos seleccionados, los cuales obtuvo previamente usando CreateToolhelp32Snapshot.
Arroz. 36: código incrustado
Aquí podemos observar dinámicamente cómo utiliza el PID del proceso para llamar a la función. VirtualAllocEx.
Arroz. 37: Llamar a VirtualAllocEx
5.4 Cifrado
En esta sección, veremos la parte de cifrado de este ejemplo. En la siguiente imagen puedes ver dos subrutinas llamadas "LoadLibrary_EncodeString"Y"Codificar_Func", que son los encargados de realizar el procedimiento de cifrado.
Arroz. 38: Procedimientos de cifrado
Al principio podemos ver como carga una cadena que luego servirá para desofuscar todo lo que sea necesario: importaciones, DLL, comandos, archivos y CSP.
Arroz. 39: circuito de desofuscación
La siguiente figura muestra la primera importación que desofusca en el registro R4. LoadLibrary. Esto se utilizará más adelante 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.
Arroz. 40: desofuscación dinámica
Continúa descargando comandos que ejecutará más adelante para desactivar las copias de seguridad, los puntos de restauración y los modos de arranque seguro.
Arroz. 41: Cargando comandos
Luego carga la ubicación donde colocará 3 archivos: Windows.bat, ejecutar.sct и start.bat.
Arroz. 42: Ubicaciones de archivos
Estos 3 archivos se utilizan para comprobar los privilegios que tiene cada ubicación. Si los privilegios requeridos no están disponibles, Ryuk detiene la ejecución.
Continúa cargando las líneas correspondientes a los tres archivos. Primero, DECRYPT_INFORMACIÓN.html, contiene información necesaria para recuperar archivos. Segundo, PÚBLICO, contiene la clave pública RSA.
Arroz. 43: Línea DECRIPTAR INFORMACIÓN.html
Tercero, ÚNICO_ID_DO_NOT_REMOVE, contiene la clave cifrada que se utilizará en la siguiente rutina para realizar el cifrado.
Arroz. 44: Línea ID ÚNICA NO QUITAR
Finalmente, descarga las bibliotecas necesarias junto con las importaciones y CSP necesarios (RSA mejorado de Microsoft и Proveedor criptográfico AES).
Arroz. 45: Cargando bibliotecas
Una vez completada toda la deofuscación, se procede a realizar las acciones necesarias para el cifrado: enumerar todas las unidades lógicas, ejecutar lo cargado en la rutina anterior, fortalecer la presencia en el sistema, lanzar el archivo RyukReadMe.html, cifrar, enumerar todas las unidades de red. , transición a los dispositivos detectados y su cifrado.
Todo comienza con la carga"cmd.exe" y registros de clave pública RSA.
Arroz. 46: Preparación para el cifrado
Luego obtiene todas las unidades lógicas usando ObtenerUnidadesLógicas y desactiva todas las copias de seguridad, puntos de restauración y modos de arranque seguro.
Arroz. 47: Desactivar herramientas de recuperación
Después de eso, fortalece su presencia en el sistema, como vimos arriba, y escribe el primer archivo. RyukReadMe.html в TEMP.
Arroz. 48: Publicar un aviso de rescate
En la siguiente imagen puedes ver cómo crea un archivo, descarga el contenido y lo escribe:
Arroz. 49: Cargando y escribiendo contenidos de archivos
Para poder realizar las mismas acciones en todos los dispositivos, utiliza
"icacls.exe", como mostramos arriba.
Arroz. 50: Usando icalcls.exe
Y finalmente, comienza a cifrar archivos excepto los archivos “*.exe”, “*.dll”, archivos del sistema y otras ubicaciones especificadas en forma de lista blanca cifrada. Para hacer esto, utiliza importaciones: CriptaAcquireContextW (donde se especifica el uso de AES y RSA), CryptDeriveKey, CryptGenKey, CriptaDestruirClave etc. También intenta ampliar su alcance a los dispositivos de red descubiertos utilizando WNetEnumResourceW y luego cifrarlos.
Arroz. 51: Cifrar archivos del sistema
6. Importaciones y banderas correspondientes
A continuación se muestra una tabla que enumera las importaciones y banderas más relevantes utilizadas por la muestra:
7. COI
referencias
- usuariosPublicrun.sct
- Menú InicioProgramasIniciostart.bat AppDataRoamingMicrosoftWindowsInicio
- MenúProgramasIniciostart.bat
Los expertos del laboratorio antivirus PandaLabs han elaborado un informe técnico sobre el ransomware Ryuk.
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. “Caza mayor con Ryuk: otro ransomware dirigido a fines lucrativos”. https://www. crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Publicado el 10/01/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
Fuente: habr.com