RagnarLocker Ransomware amenaza con divulgar información confidencial


RESUMEN EJECUTIVO

El ransomware RagnarLocker apareció por primera vez en la naturaleza a fines de diciembre de 2019 como parte de una campaña contra redes comprometidas a las que apuntan sus operadores.

El código de ransomware es pequeño (solo 48kb después de que se elimina la protección en su empaquetador personalizado) y está codificado en un lenguaje de programación alto (C / C ++). Como todo ransomware, el El objetivo de este malware es cifrar todos los archivos que puede y solicitar un rescate por descifrarlos.

Los operadores de RagnarLocker, como hemos visto recientemente con otros actores malos, amenazan con publicar la información que obtienen de las máquinas comprometidas si no se pagan los rescates.

Después de realizar el reconocimiento, los operadores de ransomware ingresan a la red de la víctima y, en algunas etapas previas a la implementación, roban información antes de soltar finalmente el ransomware que cifrará todos los archivos en las máquinas de la víctima.

El ataque más notable de RagnarLocker hasta la fecha vio este malware desplegado en una gran compañía donde los operadores de malware luego solicitaron un rescate de cerca de $ 11 millones de dólares a cambio de no filtrar información robada de la compañía. En este informe hablaremos sobre la muestra utilizada en este ataque.

Al momento de escribir, no hay descifradores gratuitos para RagnarLocker.

Sin embargo, ciertos productos de McAfee, incluidos antivirus personal, punto final y puerta de enlace, pueden proteger a nuestros clientes contra las amenazas de las que hablamos en este informe.

DESCRIPCIÓN GENERAL DE RAGNARLOCKER

El malware descomprimido es un archivo binario de 32 bits que se puede encontrar como un archivo EXE.

FIGURA 1. INFORMACIÓN SOBRE EL MALWARE

Como se puede ver en la captura de pantalla anterior, esta muestra se compiló el 6 de abril de 2020. El ataque mencionado anteriormente tuvo lugar algunos días después, pero esta muestra se preparó para la víctima, como explicaremos más adelante.

Nombre malware.exe
Talla 48,460 bytes desempaquetados (pueden cambiar entre muestras), empaquetado puede ser variable
Tipo de archivo EXE 32 bits (puede cambiar entre muestras)
SHA 256 7af61ce420051640c50b0e73e718dd8c55dddfcb58917a3bead9d3ece2f3e929
SHA 1 60747604d54a18c4e4dc1a2c209e77a793e64dde
Tiempo de compilación 06-04-2020 (puede cambiar entre muestras)

DETALLES TÉCNICOS

Como a menudo vemos con ransomware, RagnarLocker comienza a preparar algunas cadenas de idiomas para los países de la CEI que están incrustados en su propio código (en Unicode).

FIGURA 2. LAS CADENAS DE IDIOMA INCORPORADAS EN EL CÓDIGO EN LA PILA

Los idiomas que están codificados son:

georgiano
ruso
ucranio
moldavo
Bielorruso
Azerbaiyano
Turcomanos
Kirguís
Kazajo
Uzbeko
Tayiko

Después de preparar estas cadenas, el malware utiliza la función "GetLocaleInfoW" para obtener el lenguaje LOCALE_SYSTEM_DEFAULT como una cadena. Una vez obtenido, verificará el idioma del sistema con los idiomas en la lista negra y, si alguno de ellos coincide, terminará con la función "TerminateProcess" y con un código de resultado de error de 0x29A (como hemos visto antes con muchas muestras de malware diferentes )

FIGURA 3. COMPROBACIÓN DEL LENGUAJE CONTRA LA LISTA NEGRA

La comprobación de LOCALE_SYSTEM_DEFAULT es evitar que un usuario instale un idioma que de otro modo no usaría como medio para evitar la infección. La verificación se realiza contra el idioma seleccionado en Windows. Por supuesto, no todos en estos países usarán un lenguaje CIS en Windows, por lo que el inglés también está bien. Al igual que con otras familias de ransomware, no hay garantía de que se evite la infección si se seleccionan otros idiomas como predeterminados.

Después de esto, el malware obtendrá el nombre de la computadora infectada con la función "GetComputerNameW" y el nombre de usuario de quien esté usando la máquina activamente en ese momento con la función "GetUserNameW".

FIGURA 4. OBTENGA EL NOMBRE DE LA COMPUTADORA Y EL NOMBRE DE USUARIO

Después de esto, el malware leerá dos claves de registro:

  • HKLM SOFTWARE Microsoft Cryptography y la subclave MachineGuid para obtener el GUID de la máquina víctima.
  • HKLM SOFTWARE Microsoft Windows NT CurrentVersion y la subclave "ProductName" para obtener el nombre del sistema operativo.

Para esto, el malware utiliza las funciones "RegOpenKeyExW", "RegQueryValueExW" y "RegCloseKey" en la sección HKEY_LOCAL_MACHINE. Esta colmena se puede leer sin derechos de administrador.

FIGURA 5. LEA DEL REGISTRO EL NOMBRE DEL SISTEMA OPERATIVO Y GUÍA

A continuación, RagnarLocker preparará la primera cadena en la pila con la función "lstrcpyW" y luego comenzará a unir las cadenas con la función "lstrcatW".

La secuencia es primero el GUID de la máquina, luego el nombre del sistema operativo Windows, el usuario que inició sesión en la máquina y, finalmente, el nombre de la máquina víctima.

FIGURA 6. OBTENGA INFORMACIÓN DEL USUARIO Y DE LA MÁQUINA Y ÚNASE A TODAS LAS CUERDAS

En la captura de pantalla se modificaron algunos valores para proteger mi máquina virtual. Después de obtener esta información y preparar la cadena, el malware crea un hash personalizado con cada uno.

Para esto, el malware reservará algo de memoria con "VirtualAlloc" y obtendrá el tamaño de la cadena y calculará el hash en un bucle muy pequeño. Después de esto formateará el hash con la función "wsprintfW" para tenerlo como una cadena Unicode.

FIGURA 7. HAGA EL HASH Y EL FORMATO PERSONALIZADOS COMO UNA CADENA DE UNICODE

Los hashes se realizan en el siguiente orden:

  • Nombre de la máquina (g. 0xf843256f *)
  • Nombre del usuario que inició sesión en la máquina (por ejemplo, 0x56ef3218 *)
  • GUID de la máquina infectada (por ejemplo, 0x78ef216f *)
  • Nombre del sistema operativo (por ejemplo, 0x91fffe45 *)
  • Finalmente, la cadena completa con todas las cadenas unidas (por ejemplo, 0xe35d68fe *)

* Los valores anteriores se han cambiado para proteger mi máquina.

Después de esto, usará la función "wsprintfW", con la cadena de plantilla "% s-% s-% s-% s-% s", para formatear los hashes personalizados junto con guiones entre ellos, pero en este caso los hashes son en este orden:

  • GUID
  • Nombre del sistema operativo
  • Nombre del usuario conectado
  • Nombre de la máquina infectada.
  • Cadena completa con todas las demás cuerdas unidas

FIGURA 8. CREE HASH PERSONALIZADO DE LAS CUERDAS Y FORMATEE LA CADENA FINAL EN UNA ORDEN ESPECIAL

El malware obtendrá la línea de comando de este proceso de lanzamiento y comprobará si tiene más de un argumento (el primer argumento siempre está en C / C ++) con las funciones "GetCommandLineW", para obtener la línea de comando completa con argumentos si existe. y "CommandLineToArgvW" para obtener los argumentos si existen.

Si hay más de un argumento, el malware evitará el siguiente procedimiento. Para mantener el flujo normal en la sección de detalles técnicos, pondremos lo que sucede si solo existe un argumento. En este caso, el malware intentará crear un evento de Windows con el nombre de la cadena formateada con todos los hashes, como se explicó anteriormente (en nuestro caso de ejemplo anterior, 78ef216f-91fffe45-56ef3218-f843256f-e35d68fe).

Después de intentar crear el evento, el malware verificará el último error con la función "GetLastError" y lo comparará con ERROR_ALREADY_EXISTS (0xB7). Si el evento ya existe, el malware verificará un contador con el valor 0x8000 (32768) y, si no es este valor, aumentará el contador en uno e intentará nuevamente hacer el evento, verificará el último error, etc. , hasta que finalmente pueda realizar el evento, alcanzar el valor del contador o alcanzar el valor máximo en el contador (64233). Si no se puede crear el evento, el malware obtendrá el pseudohandle para su propio proceso con la función "GetCurrentProcess" y lo terminará con la función "TerminateProcess" con el código de salida 0x29A.

FIGURA 9. CREAR LAZO DE EVENTOS DESPUÉS DE VERIFICAR HAY SOLO UN ARGUMENTO EN LA LÍNEA DE MANDO

Esto se hace por varias razones:

  • El evento se crea para evitar relanzar otra instancia del malware al mismo tiempo.
  • La comprobación del contador se realiza si se inicia otra instancia del malware, para esperar a que finalice la anterior antes de continuar el proceso (esto evita algunos problemas con el malware que busca archivos cifrados).
  • La comprobación del argumento, como explicaremos más adelante, se puede utilizar para evitar el comportamiento del evento, por lo que el malware siempre intentará cifrar los archivos. Es una de las razones por las cuales una vacuna contra este malware es inútil si el operador del malware ejecuta el malware con un argumento tan simple como "1".

Después de esto, el malware intentará acceder en modo bruto a todas las unidades conectadas a la máquina víctima de forma física, preparando la cadena "\. PHYSICALDRIVE% d". Esta cadena se formateará con la función "wsprintfW", comenzando con la primera unidad que es 0 hasta un máximo de 16 en un bucle. Después del formato, el malware usará "CreateFileW" y comprobará que no devuelve el error "ERROR_INVALID_HANDLE" (eso significa que no se puede acceder a la unidad o que no existe). Si se devuelve este error, aumentará el contador y formateará la cadena con el nuevo valor del contador. Si puede abrir el asa de la unidad en modo sin formato, enviará dos comandos utilizando la función "DeviceIoControl".

Los comandos son:

  • 0x7C0F4 -> IOCTL_DISK_SET_DISK_ATTRIBUTES con los atributos de: DISK_ATTRIBUTE_READ_ONLY y DISK_ATTRIBUTE_OFFLINE.
  • 0x70140 -> IOCTL_DISK_UPDATE_PROPERTIES que harán que la unidad actualice su tabla de particiones. A medida que se actualizan los atributos, se puede acceder al malware en modo compartido en el disco.

FIGURA 10. CONTROLAR EL DISCO FÍSICO PARA TENER ACCESO

La siguiente acción del ransomware es verificar las unidades que existen y a las que se puede acceder sin ningún problema. Esto se puede hacer de dos maneras, la primera de las cuales es usar las funciones "FindFirstVolumeA", "FindNextVolumeA" y "FindVolumeClose".

FIGURA 11. OBTENGA CARTA DE VOLUMEN E INFORMACIÓN PARA VERIFICAR QUE EXISTE Y SE PUEDE ACCEDER

Las dos primeras funciones devuelven el volumen y el valor interno especial asociado a él. Esta información proviene de Windows, por lo que el malware debe traducirla a la letra de unidad lógica asociada a este volumen. Esto se hace con la función "GetVolumePathNamesForVolumeNameA" que devolverá la letra lógica asociada al volumen inspeccionado.

Con esta letra, la función "GetVolumeInformationA" se utiliza para obtener información del volumen si existe y está habilitado. Si el volumen no existe o no se puede verificar, la función fallará y el volumen se ignorará, y el proceso pasará al siguiente volumen en la máquina.

Se realiza otra verificación utilizando la función "GetLogicalDrives" que devolverá una estructura y, al verificar un byte, el malware sabrá si la unidad existe o no.

Después de esto, el malware preparará las claves que luego se necesitarán para cifrar los archivos. Para hacerlos, obtendrá el contexto de cifrado con la función "CryptAquireContextW" que generará datos aleatorios con "CryptGenRandom" y se preparará para permutar este valor con el algoritmo SHA-512. Estos valores son la clave y el nonce del algoritmo Salsa20 que se utilizará más adelante para cifrar archivos.

FIGURA 12. ADQUIERA EL CONTEXTO DE CRIPTO Y GENERE ALGUNOS DATOS Y PREPÁRESE CON SHA-512

El malware continúa descifrando algunas cadenas usando dos pasos, uno en una función grande para la primera capa y el otro que se usa más tarde para la segunda capa y la cadena final del servicio. Los servicios detenidos son:

vss
sql
memtas -> asociado con MailEnable
mepocs -> asociado con MailEnable
Sophos -> asociado con Sophos Antivirus
Veeam -> asociado con un programa para hacer copias de seguridad y guardar en la nube
Copia de seguridad -> asociado con Asus WebStorage
Pulseway -> asociado con software de control remoto para departamentos de TI
Logme -> asociado con el software de control remoto
Logmein -> asociado con un software de control remoto
Conectwise -> asociado con un software de control remoto
Splastop -> asociado con un software de control remoto
Mysql -> asociado a un programa de bases de datos
Dfs -> asociado con el Sistema de distribución de archivos (Microsoft)

Tenga en cuenta: La lista de servicios puede cambiar entre muestras.

Después de descifrar las cadenas, el malware accede al SCManager con la función "OpenSCManagerA". Si no desea acceder, ignorará todos los servicios y continuará con el siguiente paso.

Si puede abrir un identificador, obtendrá el estado del servicio con la función "EnumServicesStatusA" y si el servicio ya está detenido, pasará al siguiente. El malware llama a esta función dos veces, en primer lugar para obtener el tamaño correcto necesario para esta función, y el último error se verifica con ¨GetLastError¨ contra el valor 0xEA (ERROR_MORE_DATA) (eso significa que la aplicación necesita más memoria para llenar toda la información que la función da).

FIGURA 13. ABRIR EL GERENTE DE SERVICIO Y ENUMSERVICESTATUS

Esta memoria está reservada y la función vuelve a llamarse más tarde, en este caso para obtener el estado real y, si no se detiene, el malware abrirá el servicio con la función "OpenServiceA" y consultará el estado del servicio con la función "QueryServiceStatusEx" . Si el servicio no se detiene, obtendrá todas las dependencias del servicio con "EnumDependentServicesA" y finalmente controlará el servicio para detenerlo con la función "ControlService".

FIGURA 14. ABRIR LOS SERVICIOS Y CONTROLARLOS

Después de esto, el malware descifra una lista de los procesos que intentará terminar si los encuentra en la máquina infectada. Para este descifrado, el malware utiliza una cadena que se convierte en un entero y utiliza este entero como un valor crítico para descifrar la lista.

Para esta tarea, el malware creará una instantánea de todos los procesos en el sistema según esta lista negra:

sql
mysql
veeam
oráculo
ocssd
dbsnmp
tiempo de sincronización
agntsvc
isqlpussvc
xfssvccon
mydesktopqos
ocomm
dbeng50
sqbcoreservice
sobresalir
infopath
msaccess
mspub
una nota
panorama
powerpnt
vapor
el murciélago
Thunderbird
visio
Wordpad
winword
EduLink2SIMS
bengine
Benetns
servidor
pvlsvr
beremote
VxLockdownServer
postgres
fdhost
WSSADMIN
wsstracing
OWSTIMER
dfssvc.exe
swc_service.exe
sophos
SAVAdminService
SavService.exe

Tenga en cuenta: La lista de procesos puede cambiar entre muestras.

Después de hacer la instantánea, enumerará todos los procesos con las funciones "Process32FirstW" y "Process32NextW" y para cada proceso encontrado llamará a la función "WideCharToMultyByte" para obtener el tamaño necesario para convertir el nombre del proceso devuelto en Unicode a Ascii. Más tarde, reserva memoria para el nombre y llama a la misma función para realizar la conversión de cadena.

FIGURA 15. OBTENGA TODOS LOS PROCESOS DEL SISTEMA

Si el malware, después de la comparación con la función "StrStrIA", detecta algunos de los procesos en la lista negra, abrirá el proceso con la función "OpenProcess" y lo terminará con la función "TerminateProcess" y con el código de salida de 0x29A.

FIGURA 16. ABRIR EL PROCESO Y TERMINARLO SI ESTÁ EN LA LISTA NEGRA

El malware verificará todos los procesos en la lista negra, utilizando parte de la cadena en lugar del nombre exacto. No usar la extensión permite una mayor ofuscación, pero conlleva el riesgo de que algunos procesos puedan cerrarse por accidente si comparten esa cadena.

Después de esto, el malware verificará si el sistema operativo es de 64 bits o no con la función "GetNativeSystemInfo" contra el valor 9 (eso significa que el sistema operativo es de 64 bits).

Si el sistema operativo es de 64 bits, obtendrá, usando "LoadLibraryW" y "GetProcAddress", la función "Woe64EnableWow64FsRedirection" para eliminar la redirección que de manera predeterminada se encuentra en los sistemas operativos de 64 bits. Esta llamada se realiza de forma dinámica, pero el malware no verifica que la función se haya recuperado con éxito; generalmente lo será, pero no es 100% seguro y podría producirse un bloqueo que llame a un puntero nulo.

FIGURA 17. COMPRUEBE EL SISTEMA OPERATIVO Y DESACTIVE LA REDIRECCIÓN SI ES NECESARIO

Después de esto, el malware preparará una cadena en Unicode incrustada en el código con la cadena "wmic.exe shadowcopy delete" y la llamará con la función "CreateProcessW". Después de la llamada, esperará hasta una cantidad infinita de tiempo utilizando la función "WaitForSingleObject" para que el proceso "wmic.exe" pueda finalizar, independientemente del tamaño y la cantidad de volúmenes de sombra, recursos disponibles de la máquina, etc.

Por supuesto, el malware también utilizará el programa típico de "vssadmin" para eliminar los volúmenes de sombra con el comando "vssadmin delete shadows / all / quiet", así como con la función "CreateProcessW". Después de eso, esperará nuevamente con "WaitForSingleObject" para el final del nuevo proceso.

Cuando termine, el malware volverá a verificar si el sistema operativo es de 64 bits y, si lo es, usará "LoadLibraryW" y "GetProcAddress" para obtener la función "Wo64EnableWow64FsRedirection" para dejar el sistema como antes con la redirección. Una vez más, el malware no comprueba que la función se resuelva con éxito y lo llama directamente de forma dinámica.

FIGURA 18. DESTRUYA LOS VOLUMENES DE LA SOMBRA Y VUELVA A HABILITAR LA REDIRECCIÓN

Si bien parece ser un error destruir los volúmenes sombra nuevamente, no lo es, ya que RagnarLocker tiene soporte para Windows XP y las clases WMIC no existen en ese sistema operativo, de ahí la necesidad de usar el antiguo programa "vssadmin" que existe en Sistemas operativos nuevos y antiguos.

El malware continúa con el descifrado de un bloque PEM codificado en base64 y la nota de rescate está preparada para el objetivo en la memoria.

FIGURA 19. DESCRIPCIÓN DEL BLOQUE DE PEM Y LA NOTA DE RANGO

A continuación se puede ver un ejemplo de la nota de rescate, con la información confidencial eliminada:

FIGURA 20. EJEMPLO NOTA DE RANGO REDACTADO

Después de preparar ambas cosas, el malware decodifica el bloque PEM de la base64 como un objeto, obteniendo una clave que se utilizará para proteger las claves utilizadas en el proceso de cifrado (por supuesto, este procedimiento puede cambiar en muestras futuras a medida que el malware evoluciona) del Algoritmo RSA. Es importante señalar aquí que esta clave RSA cambia por muestra.

FIGURA 21. DECODIFICAR DESDE BASE64 Y DECODIFICAR EL OBJETO E IMPORTARLO PARA USARLO MÁS TARDE

Con esta clave, cifrará las dos claves aleatorias generadas previamente para protegerlas en la memoria. Después de eso, la criptografía liberará la memoria.

Más tarde, obtendrá el nombre de la máquina infectada nuevamente, obtendrá el tamaño del nombre y calculará el hash personalizado con el mismo algoritmo que antes.

FIGURA 22. CRIPTAR LOS VALORES GENERADOS ANTERIORMENTE Y OBTENER EL NOMBRE DE LA COMPUTADORA

Con este hash preparará una cadena con esta estructura:

  • RGNR_
  • hash del nombre de la máquina víctima
  • la extensión .txt
  • un carácter de barra diagonal inversa al comienzo de la cadena

Se realiza con la función "lstrcatW".

FIGURA 23. CREACIÓN DEL NOMBRE DE NOTA DE RANSOM

Con esta cadena obtendrá la carpeta de "Mis documentos" para todos los usuarios con la función "SHGetSpecialFolderPathW" (esta función, basada en el sistema operativo, obtendrá diferentes rutas para los documentos). Esta cadena con la ruta de las carpetas se unirá con la cadena del nombre de la nota de rescate y luego formará la ruta final para crear el archivo.

FIGURA 24. OBTENGA LA CARPETA DE DOCUMENTOS PARA DESPUÉS ESCRIBIR LA NOTA DE RESCATE

Después de esto, codificará en base64 la información crítica para descifrar los archivos con la función "CryptBinaryToStringA". El malware usa la función la primera vez para obtener el tamaño necesario y reservar memoria y luego la usa nuevamente para codificar los datos. Después de codificar los datos, crea el archivo de la nota de rescate en la ruta de los documentos con la cadena unida previamente con la ruta con la función "CreateFileW" y escribirá el contenido de la nota de rescate que se ha preparado en la memoria. Más tarde, formateará una cadena especial con algunos caracteres codificados con "—REGENAR SECRETO—" como inicio de bloque y final de bloque y, entre, formateará la cadena de codificación en base64 y escribirá en la nota de rescate.

FIGURA 25. CREACIÓN DE LA NOTA DE RANSOM Y PONER EL SECRETO RAGNAR AL FINAL

Más tarde, el malware creará una nueva cadena con las cadenas:

  • .ragnar_
  • hash del nombre de la máquina víctima

Esta cadena se usará más tarde como la nueva extensión en los archivos cifrados. Después de esto, el malware enumerará nuevamente las unidades lógicas del sistema con la función "GetLogicalDrivesW" y, para verificar si la unidad es correcta, utilizará la función "GetVolumeInformationW" y verificará el tipo de unidad y evitará el tipo de CD- ROM. Para cada unidad lógica, enumerará todos los archivos y carpetas e iniciará el proceso de cifrado.

FIGURA 26. OBTENGA TODAS LAS UNIDADES LÓGICAS Y REVISE

Antes de comenzar el proceso de cifrado, el malware intentará escribir la nota de rescate en la raíz de cada unidad que se encuentre como objetivo.

El malware ignorará las carpetas con estos nombres:

Ventanas
Windows.old
explorador de Internet
Google
Ópera
Software de Opera
Mozilla
Mozilla Firefox
$ Recycle.Bin
ProgramData
Todos los usuarios

La nota de rescate se escribirá en todas las carpetas afectadas y, al igual que con otros ransomware, utilizará las funciones "FindFirstFileW" y "FindNextFileW" para enumerar todo el contenido de cada carpeta.

FIGURA 27. VERIFICACIÓN DE LOS NOMBRES DE CARPETA EN LISTA NEGRA

RagnarLocker también evita cifrar ciertos archivos:

autorun.inf
boot.ini
bootfont.bin
bootsect.bak
bootmgr
botmgr.efi
bootmgfw.efi
desktop.ini
iconcache.db
ntldr
ntuser.dat
ntuser.dat.log
ntuser.ini
thumbs.db
RGNR_.TXT

FIGURA 28. COMPROBACIÓN DE NOMBRES DE ARCHIVOS EN LISTA NEGRA

Si un archivo tiene uno de estos nombres, se ignorará y, si tiene otro nombre, el malware evitará cualquier archivo que tenga estas extensiones:

.db
.sys
.dll
.lnk
.msi
.drv
.exe

FIGURA 29. COMPROBACIÓN DE LAS EXTENSIONES EN LISTA NEGRA

Estas verificaciones están en su lugar para evitar que el ransomware destruya el sistema operativo, ya que la víctima necesita tener acceso a la máquina para pagar el rescate.

Para cada archivo que pase todos los controles, se creará un hilo que lo cifrará. Después de crear todos los hilos, el malware esperará hasta un tiempo infinito con la función "WaitForMultipleObjects".

En el proceso de cifrado, en los hilos, el malware verificará si el archivo tiene la marca "_RAGNAR_" al final con la función "SetFilePointerEx" y al leer 9 bytes y verificar si son esta cadena. Si tiene esta marca, el archivo se ignorará en el proceso de cifrado y se le cambiará el nombre nuevamente (con un nombre de extensión basado en el nombre actual de la máquina).

FIGURA 30. COMPROBACIÓN DE LA MARCA DE CRIPTO EN EL ARCHIVO

En otros casos, el malware cifrará el archivo y al final escribirá el bloque cifrado de la clave, utilizado en un bloque de 256 bytes, y el nonce utilizado en otro bloque de 256 bytes y, finalmente, la marca "_RAGNAR_ ", Junto con un byte como NULL para finalizar la cadena (que hace 9 bytes). La clave y el nonce utilizados en el algoritmo Salsa20 están encriptados por la clave pública RSA integrada en el malware. Esto garantiza que solo los desarrolladores de malware puedan tener la clave privada RSA que pertenece a la clave pública utilizada para descifrar la clave y nonce y, por lo tanto, descifrar los archivos en el sistema.

Antes de escribir esta información, el malware utilizará la función "LockFile" y, cuando finalice el proceso de escritura de la función, "UnlockFile" para liberar el archivo ya cifrado. Esto se hace para evitar que el archivo se cambie o elimine durante el proceso de cifrado.

FIGURA 31. ESCRIBA EL NUEVO CONTENIDO AL FINAL DEL ARCHIVO

Después del cifrado, o si el archivo ya está cifrado, el malware cambiará la extensión a una nueva, como ".ragnar_45EF5632".

FIGURA 32. CAMBIO DE LA EXTENSIÓN DEL ARCHIVO CRIPTADO

Después de todos los subprocesos de criptografía, el malware intenta obtener la sesión de Terminal Services o la sesión del usuario que inició sesión en la máquina local con la función "WTSGetActiveConsoleSessionId". Con esta sesión obtiene el proceso actual del malware con la función "GetCurrentProcess" y el token de este proceso con la función "OpenProcessToken". Con la sesión que se obtuvo anteriormente, intenta duplicar el token con la función "DuplicateTokenEx" y establece este token con la función "SetTokenInformation". Después de esto, obtendrá el directorio del sistema con la función "GetSystemDirectoryW" y une a esta ruta la cadena " notepad.exe".

FIGURA 33. OBTENGA LA SESIÓN DEL USUARIO LOCAL O SERVICIOS TERMINALES Y ADMINISTRE LOS TOKENS

Con esto preparado, el malware ejecuta el Bloc de notas y, como argumento, la nota de rescate para mostrar al usuario lo que sucedió en la máquina. La función utilizada en este caso es "CreateProcessAsUserW" para suplantar al usuario que tuvo la sesión anteriormente. Por supuesto, esta función se llama con el escritorio como "WinSta0 Default".

FIGURA 34. CREAR UN PROCESO DE LA NOTEPAD PARA MOSTRAR LA NOTA DE RANGO

Después de esto, el malware termina con la función "ExitProcess" y un código de salida de 0.

VACUNA

RagnarLocker puede tener una vacuna si se hace un programa que pueda hacer el evento, como se explica en la parte técnica de este blog. Si este evento existe, el malware no crea nada en el sistema, pero es probable que este tipo de vacuna no ofrezca una solución a largo plazo por varias razones:

  • La forma en que se realiza el evento, los desarrolladores de malware pueden cambiar el algoritmo, o el orden del nombre del evento, o hacer un mutex en lugar de un evento y la vacuna dejará de funcionar.
  • El algoritmo tiene un valor codificado. Si se cambia este valor, el hash final será diferente y la vacuna se volverá inútil.
  • El malware se desarrolla de tal manera que si tiene al menos dos argumentos, el evento no se crea, por lo que si los operadores desean ejecutar con seguridad, solo necesitan ejecutar con un argumento, por ejemplo " 1 ".
  • El malware puede evolucionar con el tiempo, por lo que la vacuna puede ser muy frágil y limitada.

Por estas razones, creemos que una vacuna que use este sistema no es útil a largo plazo.

CONCLUSIÓN

RagnarLocker es un simple ransomware, muy parecido a otros que existen en el mercado criminal. Debido a su pequeño tamaño, el comportamiento agresivo de su operador y el conocimiento que parecen tener que les permite ingresar a las redes de empresas, así como la amenaza de filtrar información si no se paga el rescate, RagnarLocker podría convertirse en una gran amenaza en el futuro. El tiempo dirá si RagnarLocker se convierte en una amenaza grave o si desaparece en un contexto de otro ransomware con más recursos. El código es de calidad media.

COBERTURA

McAfee puede proteger contra esta amenaza en todos sus productos, incluidos antivirus personal, punto final y puerta de enlace.

Los nombres que puede tener son:

Además, aprenda cómo Enhanced Remediation, una nueva capacidad en ENS 10.7, puede deshacer automáticamente los cambios realizados por procesos que exhiben un comportamiento malicioso.

MITRE ATT Y CK COBERTURA

  • Comando y control: protocolo de capa de aplicación estándar
  • Evasión de defensa: deshabilitar herramientas de seguridad
  • Descubrimiento: descubrimiento de software de seguridad
  • Descubrimiento: descubrimiento de software
  • Descubrimiento: descubrimiento de información del sistema
  • Descubrimiento: descubrimiento del servicio del sistema
  • Descubrimiento: descubrimiento de tiempo del sistema
  • Descubrimiento: registro de consultas
  • Ejecución: interfaz de línea de comandos
  • Ejecución: Ejecución a través de API
  • Exfiltración: datos cifrados
  • Impact: datos cifrados para Impact
  • Impacto: parada de servicio

REGLAS DE YARA

regla RagnarLocker

/ *

Esta regla de YARA detecta el ransomware RagnarLocker en memoria o desempaquetado en disco para la muestra con hash SHA1 97f45184770693a91054075f8a45290d4d1fc06f y quizás otras muestras

* /

meta:

autor = "Equipo McAfee ATR"

description = "Regla para detectar la muestra desempaquetada de RagnarLocker"

versión = "1.0"

instrumentos de cuerda:

$ a = 42 81 F1 3C FF 01 AB 03 F1 8B C6 C1 C0 0D 2B F0 3B D7

condición:

$ a

importar "pe"

regla ragnarlocker_ransomware

Equipo McAfee ATR "

referencia = "https://www.bleepingcomputer.com/news/security/ragnar-locker-ransomware-targets-msp-enterprise-support-tools/"

fecha = "2020-04-15"

hash1 = “63096f288f49b25d50f4aea52dc1fc00871b3927fa2a81fa0b0d752b261a3059”

hash2 = "9bdd7f965d1c67396afb0a84c78b4d12118ff377db7efdca4a1340933120f376"

hash3 = "ec35c76ad2c8192f09c02eca1f263b406163470ca8438d054db7adcf5bfc0597"

hash4 = “9706a97ffa43a0258571def8912dc2b8bf1ee207676052ad1b9c16ca9953fc2c”

instrumentos de cuerda:

// – SECRETO RAGNAR—

$ s1 = 2D 2D 2D 52 41 47 4E 41 52 20 53 45 43 52 45 54 2D 2D 2D

$ s2 = 66 ?? ?? ?? ?? ?? ?? 66 ?? ?? ?? B8 ?? ?? ?? ?? 0F 44

$ s3 = 5? 8B ?? 5? 5? 8B ?? ?? 8B ?? 85 ?? 0F 84

$ s4 = FF 1? ?? ?? ?? ?? 3D ?? ?? ?? ?? 0F 85

$ s5 = 8D ?? ?? ?? ?? ?? 5? FF 7? ?? E8 ?? ?? ?? ?? 85 ?? 0F 85

$ op1 = 0f 11 85 70 ff ff ff 8b b5 74 ff ff ff 0f 10 41

$ p0 = 72 eb fe ff 55 8b ec 81 ec 00 01 00 00 53 56 57

$ p1 = 60 be 00 00 41 00 8d be 00 10 ff ff 57 eb 0b 90

$ bp0 = e8 b7 d2 ff ff ff b6 84

$ bp1 = c7 85 7c ff ff ff 24 d2 00 00 8b 8d 7c ff ff ff

$ bp2 = 8d 85 7c ff ff ff 89 85 64 ff ff ff 8d 4d 84 89

condición:

uint16 (0) == 0x5a4d y

tamaño de archivo <100 KB y

(4 de ($ s *) y $ op1) o

todos ($ p *) y pe.imphash () == “9f611945f0fe0109fe728f39aad47024” o

todos ($ bp *) y pe.imphash () == “489a2424d7a14a26bfcfb006de3cd226”

COI

SHA256 7af61ce420051640c50b0e73e718dd8c55dddfcb58917a3bead9d3ece2f3e929
SHA256 c2bd70495630ed8279de0713a010e5e55f3da29323b59ef71401b12942ba52f6
SHA256 dd5d4cf9422b6e4514d49a3ec542cffb682be8a24079010cda689afbb44ac0f4
SHA256 63096f288f49b25d50f4aea52dc1fc00871b3927fa2a81fa0b0d752b261a3059
SHA256 b670441066ff868d06c682e5167b9dbc85b5323f3acfbbc044cabc0e5a594186
SHA256 68eb2d2d7866775d6bf106a914281491d23769a9eda88fc078328150b8432bb3
SHA256 1bf68d3d1b89e4f225c947442dc71a4793a3100465c95ae85ce6f7d987100ee1
SHA256 30dcc7a8ae98e52ee5547379048ca1fc90925e09a2a81c055021ba225c1d064c

UTILIZANDO MVISION EDR PARA DETECTAR RAGNARLOCKER

Gracias a Mo Cashman y Filippo Sitzia.

Descargamos una muestra RagnarLocker de Virus Total para probar la capacidad de detección mediante MVISION Endpoint Detection and Response (EDR). Probamos primero con la muestra original que era conocida por la mayoría de los motores de detección en este momento. Luego cambiamos los hash del archivo para probar la detección con una muestra desconocida. En ambos casos, MVISION EDR identificó los comportamientos sospechosos y generó alertas. La muestra original se detectó como de ALTO Riesgo porque el archivo tenía una reputación maliciosa conocida en McAfee Global Threat Intelligence, que está integrado con MVISION EDR. Las muestras desconocidas se detectaron como de riesgo medio y muy probablemente habrían provocado una inspección adicional por parte de un analista de seguridad.

Muestra de envío de TV

2020-05-30 13:30:55, Tamaño de archivo: 48.50 KB, Tipo de archivo Win32 EXE, Nombre de archivo: omniga.exe, Detecciones de TV: 51/73

Entorno de prueba

OS Win10, ENS 10.7 Protección contra amenazas desactivada, Protección adaptativa contra amenazas desactivada, MVISION EDR

Ejecución con HASH original – 3bc8ce79ee7043c9ad70698e3fc2013806244dc5112c8c8d465e96757b57b1e1

Para probar aún más la efectividad de MVISION EDR, modificamos ligeramente el archivo hash:

Ejecución con HASH cambiado: 63F5B6ED99C559341CF1AD081BAF55B4EACAD8E46D056764531BD316BF3C3EE3

Resultados de alerta para ambas muestras





Enlace a la noticia original