El ransomware Maze sigue siendo una amenaza para los consumidores.


Tiempo estimado de lectura: 6 6 minutos

Maze es un ransomware recientemente destacado entre la creciente lista de familias de ransomware. El ransomware está activo desde el último año, aunque se convirtió en el centro de atención debido a su nuevo enfoque de publicación pública de datos confidenciales de clientes infectados.

El malware utiliza diferentes técnicas para obtener acceso, como el uso de kits de explotación o la suplantación de correo electrónico. Estos correos electrónicos de phishing tienen un archivo adjunto de documento de Word que contiene macros para ejecutar el malware en el sistema.

Maze utiliza el algoritmo CHA-CHA para el cifrado y su clave se cifra utilizando el algoritmo RSA. Maze puede ejecutarse con o sin mutex: utiliza algunas IP rusas para que el servidor web envíe información desde el sistema o sistemas de la víctima. Utiliza la solicitud de cifrado RSA para la comunicación CnC y no cifrará el sistema para la región específica al verificar el tipo de teclado.

Etapa – I

VBA MACRO

El archivo de documento adjunto tiene un formulario que contiene un cuadro de entrada en el que está presente la matriz de números de URL y ruta cifrados. El archivo del documento contiene un objeto ActiveX. Cuando se ejecuta, la URL y la ruta se descifran después de llamarlo URLDownloadToFileA () que descarga un ejecutable en la ubicación especificada.

Fig 1. URLDownloadToFileA () Llame con sus parámetros

La matriz de números se lee desde el cuadro de texto, luego se convierte en caracteres y se concatena para formar una URL y ruta donde se descarga el archivo. A veces también usa PowerShell para descargar el archivo. En la mayoría de los casos, el archivo se descarga en la ubicación "C: Windows temp".

Fig. 2. Caracteres almacenados en matriz de números

Etapa – II

A. CRYPTER

La primera etapa del ransomware Maze es un criptor personalizado. Este criptor es un paquete con pocas importaciones. Carga bibliotecas llamando a LoadLibrary () y GetProcAddress () desde kernel32.dll. En este criptor, los nombres de las funciones se almacenan con su suma de comprobación adler32.

El cryptor es para anti-depuración, pasa cadenas basura a la función OutputDebugStringW ().

Fig 3. Llamar a OutputDebugStringW ()

En el siguiente código, comprueba si el archivo está presente o no, si está presente, finalizará. Del mismo modo, también verifica argumentos específicos de la línea de comandos si está presente, cambiará el flujo de ejecución. Luego, el malware carga el recurso donde está presente la DLL real. El recurso cargado se cifra y la operación XOR se usa con la clave 0x41. Después del descifrado, obtenemos datos codificados en base64.

Fig 4. Xor Loop y resolución API

Después de copiar todos los datos en la pila, se forman los nombres de la API y luego se llama a la API Win32 Loadlibrary (). Luego decodifica los datos de base64 llamando a la API CryptStringToBinaryA (). El búfer descifrado se descifra nuevamente utilizando el algoritmo CHA-CHA 20, que aporta la carga útil real del ransomware Maze. Junto con la carga útil (que es una DLL de Maze), también descifra el código de shell. Al usar la API CreateThread (), ejecuta el shellcode.

Fig 5. Llamar a CreateThread ()

En este código de carga útil, primero carga la dirección base de kernel32 para PEB. El siguiente código muestra la carga de la dirección.

Fig 6. La dirección se carga desde PEB

El shellcode asigna memoria usando VirtualAlloc () y copia el archivo DLL al espacio recientemente asignado. Luego crea un hilo y ejecuta código desde DLL. Este código cambia bytes en el punto de entrada original y luego salta a OEP.

B. CARGA DE LAGUNA

En la carga útil descifrada, primero carga todas las API y luego aplica parches de dbgUiRemoteBreakin desde ntdl.dll. Es una de las técnicas anti-depuración que utiliza para evitar la conexión del depurador.

Primero llama a VirtualProtect () en dbgUiRemoteBreakin con PAGE_EXECUTE_READWRITE como nuevo flNewProtect. Luego reemplaza el byte 6A con C3 por simple instrucción mov. Entonces, si alguien intenta adjuntar un depurador, fallará.

Fig 7. Copie 0xC3 en el punto de entrada dbgUiRemoteBreakin

Fig 8. Código antes y después de parchear

Luego enumera los procesos en ejecución usando Process32First () y process32Next (). Llama a las API utilizando la instrucción 'je' y la dirección se inserta en la pila que se ejecuta después de la llamada a la API. La llamada se reemplaza con la instrucción "push" y "jz" o "je".

Fig 9. Llamar a Process32NextW () usando la instrucción jz

Después de la enumeración del proceso, ofuscará todos los nombres con su algoritmo que utiliza registros XMM. Luego calcula el hash de esta cadena ofuscada que luego se compara con algunos hashes codificados. Algunos de ellos son:

Procmon64.exe: 0x776E0635

Procexp64.exe: 0x78020640

Ida.exe: 0x33840485

Dumpcap.exe: 0x5FB805C5

X32dbg.exe: 0x5062053

Fig. 10: Comparar hashes con hashes de proceso en ejecución

Cuando cualquiera de los hash del proceso coincide, llama a TerminateProcess () y sale del proceso en ejecución.

No cifrará archivos para un tipo de teclado específico. Para obtener el tipo de teclado, llama a la función GetUserDefaultUILanguage (). Por ejemplo:

Ruso: 0x419 // NO cifrar para este valor

Ucraniano: 0x422 // NO cifrar para este valor

Serbio: 0x7C1A // NO cifrar para este valor

en_US: 0x409 // Cifrar para este valor

Fig 11. Comprobar el valor devuelto por GetUserDefaultUILanguage ()

Luego, primero se comunica con el servidor CnC donde la lista de IP está codificada, toda la IP mencionada a continuación parece pertenecer a Rusia.

91.218.114.4

91.218.114.11

91.218.114.25

91.218.114.26

91.218.114.32

91.218.114.37

91.218.114.38

Fig. 12. Lista de Ip codificada

Luego, los datos se envían a CnC en la primera solicitud: los datos que se envían son Nombre de usuario, Nombre de equipo, OsVersion.

El malware crea mutex con identificación única. La identificación única se crea usando SHA (GetComputerName () + VolumeID ()).

Para el marcador de ransomware, crea un archivo único en la raíz y en cada carpeta.

Proceso de cifrado de laberinto:

El malware selecciona archivos para el cifrado en función de la extensión. Excluye las siguientes extensiones:

· Exe

· Dll

· Sys

· Lnk

También excluye los siguientes archivos:

· Decrypt-Files.txt

· Autorun.inf

· Boot.ini

· Desktop.ini

· Temp / 000.bmp

Carpetas excluidas:

% windows%, @ gaming%,% programdata%,% tor Brower%,% Configuración local%,% appdata% etc.

Fig. 13. Verificando los nombres de las carpetas y si se encuentra el mismo, no encriptará la carpeta.

Proceso de cifrado:

Primero crea la clave y luego la exporta a la carpeta "c: programdata data1.tmp". Luego, suelta una nota de rescate en cada carpeta antes del cifrado. Más tarde, solo importará la clave de este archivo y llamará "CryptEncrypt ()".

Recupera letras de unidad y luego determina el tipo de unidad usando GetDriveType (). Además, enumera utilizando llamadas API FindFirstFileA () y FindNextFileA ().

Elimina las instantáneas creando una ruta falsa para wmic y luego llama a recuperar recuperando llamando a CreateProcessW () Cifra archivos usando el algoritmo CHA-CHA y la clave de chacha se encripta usando RSA. Para esto, utiliza las API de cifrado. Los archivos cifrados tienen un marcador al final que es "66116166".

Fig. 14. Archivo cifrado por el ransomware Maze

Crea un subproceso para cada unidad, que luego vuelve a llamar a la función Crear subproceso para cada carpeta que realiza el cifrado. El cifrado comenzará desde la raíz de C: o D: y paralelamente también accede a la unidad compartida mediante la API WNetShareEnum (). La misma función de cifrado se utiliza para cifrar archivos de unidades compartidas. La primera carpeta que se cifra es "$ Papelera de reciclaje".

CreateThread () con la siguiente función para cada carpeta. El archivo se abre de la siguiente manera. El archivo se encripta llamando a CryptEncrypt () y se renombra llamando a moveFileEx () con extensión.

Archivo encriptado:

Fig 15. Archivo después del cifrado

Maze Malware utiliza muchas tácticas para el anti-análisis:

  • Las API se resuelven en tiempo de ejecución.
  • Llamada indirecta de API y funciones utilizando instrucciones JE y JNE.
  • Parchear DbgUiRemoteTracking para evitar la conexión del depurador en tiempo de ejecución.
  • Comprobando la bandera depurada.
  • Comprobando la VM.
  • Comprueba el tamaño de RAM y hardware mediante API: GlobalMemoryStatusEx y GetDiskeSpaceW.
  • Verifique los nombres de los procesos calculando sus hashes.

Medidas de prevención para mantenerse alejado del ransomware

Los vectores de infección comunes utilizados por Maze Ransomware son correos electrónicos de phishing con archivos adjuntos de MS Office y sitios web falsos / de phishing con Kits de exploits. Por lo tanto, recomendamos a nuestros usuarios finales que tengan cuidado al manejar correos electrónicos de fuentes desconocidas, descargar archivos adjuntos de MS Office, habilitar macros y hacer clic en enlaces sospechosos.

Indicadores de compromiso

49B28F16BA496B57518005C813640EEB

BD9838D84FD77205011E8B0C2BD711E0

Experto en la materia
Preksha Saxena | Laboratorios de seguridad de curación rápida

¿Tienes algo que agregar a esta historia? Compártelo en el



Enlace a la noticia original