ring z3ro labs
>
Threat Hunting

HijackLoader apunta a los hoteles: un análisis técnico

Borja Merino Febrero
,
__wf_reserved_heredar

Durante los últimos meses, el equipo de búsqueda de seguridad de Alpine ha observado varias campañas de malware contra varias cadenas hoteleras de Andorra que utilizan HijackLoader como principal arma de ataque. Detallado y analizado recientemente por ThreatLabz, HijackLoader es un nuevo cargador de malware que se utiliza para cargar diferentes familias de malware como Danabot, Sistema BC y RedLine Stealer. Este malware se caracteriza por utilizar un diseño modular e implementar varias capas de técnicas de ofuscación, antianálisis y evasión (DLL Stomping, llamadas directas al sistema, migración de procesos, etc.) para ejecutar el código de la forma más sigilosa posible.

En las campañas observadas, los atacantes establecen contacto por correo electrónico con los hoteles para reservar una habitación y, con el pretexto de padecer alergias alimentarias, envían un enlace de descarga que contiene un archivo comprimido con el binario malicioso. Los enlaces suelen apuntar a un servicio con buena reputación (dropbox.com, drive.google.com, etc.)

En esta otra campaña, los atacantes contactan a través de Booking con el hotel con una disculpa muy similar; informan sobre ciertas contraindicaciones que el hotel debe tener en cuenta para evitar ciertos problemas de alergia descritos en una receta médica adjunta. El archivo adjunto en este caso proviene de la CDN de Discord (hxxps: //cdn.discordapp [.] com/attachments/1146064438449946687/1146072433867116564/my_contraindications.zip)

El presente análisis muestra la clasificación realizada en un determinado binario tras una alerta en uno de nuestros clientes, en la que se invocaba el proceso legítimo «ftp.exe» (SysWOW64) desde un binario sospechoso creado recientemente (que antes no se había observado en la empresa).

El binario analizado,»mi contraindications.exe», tiene un tamaño de 1.538.816 bytes (1,5 MB), está desarrollado en C++ para arquitecturas de 32 bits (subsistema GUI de Windows) e intenta hacerse pasar por un binario legítimo de McAfe, incluso incorporando un certificado de dicha empresa de AV. La marca de tiempo del encabezado del archivo refleja «2021—06-10 06:57:08».

La ejecución del código dañino comienza desde _vcrt_initialize () función (que forma parte de la biblioteca de tiempo de ejecución de Microsoft Visual C++) en la que han insertado un enlace o una llamada a la función desde la que se inicia el proceso de infección. Por lo tanto, el hilo principal del proceso comenzará sus acciones dañinas antes de llegar a WinMain ().

El código recorrerá la estructura PEB_LDR_DATA desde PEB con el objetivo de recuperar la dirección base del Kernel32 y recorrer su EAT para recuperar los símbolos.

El código malicioso también cargará «winhttp.dll» para llevar a cabo las comunicaciones de red. Una de estas conexiones es al «dominio legítimo»doi.org». El código, en bucle, esperará a que se comunique con él para continuar con las acciones de infección.

El cargador realiza algunas llamadas directas al sistema para eludir ciertas soluciones de seguridad; en la imagen de abajo, Ejecución de NT Delay (que se utiliza de forma recurrente durante la cadena de infección).

HijackLoader recuperará una imagen PNG de diferentes servicios de alojamiento de imágenes con el objetivo de recuperar la siguiente etapa junto con la familia de malware correspondiente. Los URI cifrados se enumeran a continuación:

hxxxs: //i.ibb [.] co/mmdnckd/alcocain.pnghxxxs: //i.imgur [.] com/tgbx8nn.pnghxxxs: //files.catbox [.] moe/0qiisg.png

Las imágenes se recuperarán mediante WinHttpReadData. La siguiente imagen muestra, ya en memoria, el PNG de «i.imgur [.] com/tGBX8NN.png»

La forma en que el cargador recupera la carga útil es la siguiente:

  1. Identifica una determinada ETIQUETA DWORD en la imagen (0xC6A579EA). Este TAG servirá como punto de partida para reconstruir la carga útil de Xor'ed.
  2. Recupera y concatena fragmentos de bytes separados por otro ID (0x49444154).
  3. Descifre, mediante XOR, el conjunto de bytes previamente concatenados utilizando el DWORD ubicado justo después del TAG como CLAVE.
  4. Tras aplicar el XOR, el búfer resultante se descomprimirá (LZNT1) mediante Búfer de descompresión RTL (FORMATO_DE_COMPRESIÓN_LZNT1). Los bytes que acompañan a la CLAVE XOR determinarán el tamaño del búfer comprimido y su tamaño sin comprimir.

La siguiente imagen muestra el búfer con el encabezado en el que se encuentran el TAG y la clave XOR. En la parte inferior puedes ver la rutina encargada de aplicar el cifrado mediante la CLAVE (en el ejemplo: 0xC5A2B15F).

Finalmente, después de aplicar el descifrado, la carga útil incrustada y comprimida en la imagen se recuperará utilizando Búfer de descompresión RTL.

El siguiente secuencia de comandos se hizo para automatizar la extracción de las cargas útiles de las diferentes imágenes durante el análisis.

El búfer sin comprimir contiene el archivo de configuración, algunos de los Módulos de HijackLoader descrito por Nikolaos Pantazopoulos y cierto código de shell que orquestará el proceso de infección hasta que se ejecute la carga útil final.

Por ejemplo, la DLL resaltada en la configuración («C:\Windows\SysWOW64\mshtml.dll») se usa para hacer DLL Stomping, donde se copia la siguiente etapa. Tras cargar esta DLL, se invocará VirtualProtect función para modificar la sección .text a los permisos RWX (PAGE_EXECUTE_READWRITE). Posteriormente, procederá a copiar y escribir la siguiente etapa (uno de los módulos incrustados en el búfer anterior).

Tras escribir el shellcode, los permisos se restablecerán a RX y se pasará a la nueva etapa (»llama a esi» en la siguiente imagen). La lógica descrita anteriormente se muestra a continuación.

La nueva etapa creará un nuevo proceso a partir del «binario legítimo»C:\Windows\Syswow64\ftp.exe» en modo oculto (indicador CREATE_NO_WINDOW) para inyectar la siguiente etapa.

El código dañino obligará a cargar la DLL «mshtml.dll» en el espacio de direcciones del proceso «ftp.exe» recién creado y modificará su .texto sección nuevamente para reemplazarla por la última etapa que activará la ejecución de la carga útil final. Por último, tras su copia, modificará el contexto de su hilo principal para que apunte a la nueva carga útil mediante Hilo NTSetContext.

La carga útil final se está analizando actualmente. Yara se comparte a continuación para la muestra descrita.

rule HijackLoader {meta: description = «HijackLoader (Andorra Hotel campaign)» author = "@BorjaMerino (Alpine Security)» version = «1.0" date = «2023-09-18" strings: $x1 = {4? ¿39? ¿89? ¿74? ¿DE B6? ?? ¿18 30? ?? ¿4? ¿83? ?? ¿B? ¿0 0 0 74? ¿89? ¿WEB?} x2 $ = {64 8B?? 30 00 0 0 8 B? 0 X 83?? 0C} $x3 = {90 90 0F B7?? ¿01? ¿0B 7? ¿83 CM? ¿02 66 85? ¿74?} $x4 = {39?? 74 14 8D?? 10 8B?? ¿24 X 8B? ¿24 39? ?? ¿01 89? 75 EA} x5 $ = {90 90 31?? ?? ¿83 CM? ¿04 39? 72 f6} condición: uint16 (0) == 0x5A4D y uint16 (uint32 (0x3C) +0x18) == 0x010B y (pe.number_of_signatures > 0) y (tamaño de archivo > 1 MB y tamaño de archivo < 5 MB) y 2 de ($x*)}

Referencias

Robar más que toallas: la nueva campaña de InfoStealer llega a hoteles y agencias de viajes

Análisis técnico de HijackLoader

compartir este post

__wf_reserved_heredar
Borja Merino Febrero