Actualitat

HijackLoader, els hotels d’Andorra esdevenen els objectius d’atac – Una anàlisi tècnica

NOTÍCIES

20/09/2023

Durant els darrers mesos, l’Equip d’Alpine Security Hunting ha observat diverses campanyes de programari maliciós contra diferents cadenes hoteleres a Andorra, utilitzant HijackLoader com a principal arma d’atac. Recentment, aquest malware ha estat detalladament analitzat per ThreatLabz.

Segons s’ha estudidat, HijackLoader és un nou carregador de malware que s’utilitza per carregar diferents famílies de malware com Danabot, SystemBC i RedLine Stealer. Aquest programari maliciós es caracteritza per emprar un disseny modular i implementar diverses capes d’ofuscació, tècniques d’antianàlisi i d’evasió (DLL Stomping, Direct syscalls, migració de processos, etc.) per executar el codi de la manera més discreta possible.

En les campanyes observades, els atacants establien contacte per correu electrònic amb els hotels per fer una reserva d’una habitació i, sota el pretext de patir al·lèrgies alimentàries, enviaven un enllaç de descàrrega amb un fitxer comprimit que contenia un codi binari maliciós. Aquests enllaços solien fer referència a serveis amb bona reputació com ara dropbox.com, drive.google.com, etc.

En aquesta altra campanya, els atacants contacten amb l’hotel a través del lloc web de Booking amb una premissa molt similar; informen sobre certes contraindicacions que l’hotel hauria de tenir en compte per evitar problemes d’al·lèrgies descrites en una prescripció mèdica adjunta. L’arxiu adjunt en aquest cas prové del CDN de Discord

hxxps://cdn.discordapp[.]com/attachments/1146064438449946687/1146072433867116564/my_contraindications.zip

La present anàlisi mostra el triatge realitzat sobre un determinat binari arran d’una alerta en un dels clients, on el procés legítim “ftp.exe” (SysWOW64) era invocat des d’un binari sospitós de recent creació (no observat prèviament en l’empresa).

El binari analitzat, “my contraindications.exe”, té una mida de 1.538.816 bytes (1,5 MB), està desenvolupat en C++ per arquitectures de 32 bits (Subsistema GUI de Windows) i intenta fer-se passar per un binari legítim de McAffe, fins i tot incloent un certificat de l’empresa d’antivirus esmentada. El registre de la capçalera del fitxer reflecteix la data 10-06-2021 a les 06:57:08.

L’execució del codi maliciós comença des de la funció “_vcrt_initialize()” (que forma part de Microsoft Visual C++ Runtime Library) on han inserit una trucada amb cert ganxo a la funció des de la qual comença el procés d’infecció. Així, el fil principal del procés iniciarà, per tant, les seves accions malicioses abans d’arribar a WinMain().

El codi recorrerà l’estructura PEB_LDR_DATA des de PEB amb l’objectiu de recuperar l’adreça base de Kernel32 i travessar la seva EAT per recuperar símbols.

El codi maliciós també carregarà “winhttp.dll” per realitzar comunicacions a la xarxa. Una d’aquestes connexions és amb el domini legítim “doi.org”. El codi, en un bucle, esperarà la comunicació amb aquest per procedir amb les accions d’infecció.

El carregador fa algunes convocatòries directes al sistema per evitar determinades solucions de seguretat; a la imatge següent es mostra NtDelayExecution (que es fa servir de manera recurrent durant la cadena d’infecció).

HijackLoader recuperarà una imatge PNG de diferents serveis d’allotjament d’imatges amb l’objectiu de recuperar la següent etapa juntament amb la família de programari maliciós corresponent. Els URI xifrats es llisten a continuació:

  • hxxxs://i.ibb[.]co/MMdnckd/alcocain.png
  • hxxxs://i.imgur[.]com/tGBX8NN.png
  • hxxxs://files.catbox[.]moe/0qiisg.png

Les imatges es recuperaran mitjançant WinHTTPReadData. La següent imatge mostra, ja en memòria, el PNG de “i.imgur[.]com/tGBX8NN.png”.

La forma com el carregador recupera la càrrega en qüestió és la següent:

  1. Identifica una certa DWORD TAG dins de la imatge (0xC6A579EA). Aquesta TAG servirà com a punt de partida per reconstruir la càrrega XOR.
  2. Recupera i concatena trossos de bytes separats per una altra ID (0x49444154).
  3. Desxifra, mitjançant XOR, el conjunt de bytes prèviament concatenats utilitzant la DWORD situada just després de la TAG com a CLAU.
  4. Després d’aplicar el XOR, el búfer resultant es descomprimirà (LZNT1) mitjançant RtlDecompressBuffer (COMPRESSION_FORMAT_LZNT1). Els bytes que acompanyen la CLAU XOR determinaran la mida del búfer comprimit i la seva mida sense comprimir.
  5. La següent imatge mostra el búfer amb la capçalera en què es troben la TAG i la CLAU XOR. A la part inferior podeu veure la rutina encarregada d’aplicar l’encriptació fent servir la CLAU (en aquest exemple: 0xC5A2B15F).

Finalment, després d’aplicar el desxifratge, es recuperarà la càrrega incrustada i comprimida a la imatge usant RtlDecompressBuffer.

El següent script s’ha creat per automatitzar l’extracció de les càrregues de les diferents imatges durant l’anàlisi.

El búfer sense comprimir conté el fitxer de configuració, alguns dels mòduls de HijackLoader descrits per Nikolaos Pantazopoulos i un codi shell que orquestrarà el procés d’infecció fins que s’executi la càrrega final.

Per exemple, la DLL destacada a la configuració (“C:\Windows\SysWOW64\mshtml.dll”) s’utilitza per fer DLL Stomping, on es copia l’etapa següent. Després de carregar aquesta DLL, s’apel·la a la funció VirtualProtect per tal de modificar la secció .text a esdevenir permisos RWX (PAGE_EXECUTE_READWRITE). Posteriorment, es procedirà a copiar i escriure l’etapa següent (un dels mòduls incrustats al búfer anterior).

Després d’escriure el codi shell, es restabliran els permisos a RX i es farà un salt a la nova etapa (“call esi” a la següent imatge). La lògica anteriorment descrita es mostra a continuació.

La nova etapa crearà un nou procés a partir del codi binari legítim “C:\Windows\Syswow64\ftp.exe” en mode ocult (bandera CREATE_NO_WINDOW) per poder injectar l’etapa següent.

El codi maliciós farà que la DLL “mshtml.dll” es carregui a l’espai d’adreces del nou procés creat de “ftp.exe” i modificarà la seva secció .text novament per reemplaçar-la amb l’última etapa que desencadenarà l’execució de la càrrega final.

Finalment, després de la seva còpia, es modificarà el context del fil principal per apuntar a la nova càrrega mitjançant NtSetContextThread.

Ara per ara, podem afegir que s’està analitzant la càrrega final. Per a la mostra descrita, a continuació, es comparteix en el llenguatge de computació de tipus Yara.

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 ?? 0F B6 ?? ?? 18 30 ?? ?? 4? 83 ?? ?? B? 00 00 00 00 74 ?? 89 ?? EB ??}
$x2 = {64 8B ?? 30 00 00 00 8B ?? 0C 83 ?? 0C}
$x3 = {90 90 0F B7 ?? 01 ?? 0F B7 ?? 83 C? 02 66 85 ?? 74 ??}
$x4 = {39 ?? 74 14 8D ?? 01 8B ?? 24 0C 8B ?? 24 39 ?? ?? 01 89 ?? 75 EA}
$x5 = {90 90 31 ?? ?? 83 C? 04 39 ?? 72 f6}
condition:
uint16(0) == 0x5A4D
and uint16(uint32(0x3C)+0x18) == 0x010B
and (pe.number_of_signatures > 0)
and (filesize > 1MB and filesize < 5MB)
and 2 of ($x*)
}
Llegiu la notícia original al seu lloc web oficial fent clic en aquest mateix enllaç