Mise à jour
Cette recherche couvre une mise à jour de l'étape 2 de GHOSTPULSE, initialement divulguée par Elastic Security Labs en octobre 2023.
Principaux points abordés dans cet article
- GHOSTPULSE est passé de l'utilisation de la partie IDAT des fichiers PNG à l'intégration de sa configuration cryptée et de sa charge utile dans la structure des pixels.
- Les campagnes récentes consistent à piéger les victimes à l'aide de techniques d'ingénierie sociale créatives, telles que les validations CAPTCHA qui déclenchent des commandes malveillantes par le biais de raccourcis clavier Windows.
- Elastic Security a amélioré ses règles YARA et mis à jour l'outil d'extraction de configuration afin de détecter et d'analyser les anciennes et les nouvelles versions de GHOSTPULSE.
Préambule
La famille de logiciels malveillants GHOSTPULSE (également connue sous le nom de HIJACKLOADER ou IDATLOADER) n'a cessé d'évoluer depuis sa découverte en 2023, échappant à la détection grâce à des techniques de plus en plus élaborées.
Dans ses premières versions, GHOSTPULSE utilisait la partie IDAT des fichiers PNG pour dissimuler des charges utiles malveillantes, comme l'explique en détail un article précédent d'Elastic Security Labs. Toutefois, une analyse récente a mis en évidence une modification importante de son algorithme. Au lieu d'extraire la charge utile du bloc IDAT, la dernière version de GHOSTPULSE analyse désormais les pixels de l'image pour en extraire la configuration et la charge utile. Cette nouvelle approche consiste à intégrer des données malveillantes directement dans la structure des pixels.
Dans cette publication de recherche, nous explorerons ce nouvel algorithme basé sur les pixels et nous le comparerons à la technique précédente de l'IDAT chunk avec des règles de détection mises à jour.
Introduction
Récemment, nous avons observé plusieurs campagnes impliquant LUMMA STEALER utilisant GHOSTPULSE comme chargeur, un sujet également exploré par HarfangLab. Ces campagnes se distinguent par la créativité de leurs tactiques d'ingénierie sociale. Les victimes sont amenées à valider un CAPTCHA, mais le site web leur demande d'exécuter une série de raccourcis clavier Windows au lieu de la procédure habituelle. Ces raccourcis déclenchent une commande copiée dans le presse-papiers par un JavaScript malveillant. Cela conduit à l'exécution d'un script PowerShell, qui initie la chaîne d'infection en téléchargeant et en exécutant une charge utile GHOSTPULSE.
Dans les versions précédentes de GHOSTPULSE, il était livré dans le cadre d'un paquet de plusieurs fichiers. Ce paquet contient généralement un exécutable bénin, une DLL infectée chargée par l'exécutable et un fichier PNG stockant la configuration chiffrée.
Cependant, dans sa dernière version, GHOSTPULSE a rationalisé son déploiement. Désormais, l'ensemble du paquet se compose d'un seul fichier, un exécutable bénin mais compromis qui inclut le fichier PNG dans sa section de ressources.
Analyse technique
La deuxième phase actualisée du logiciel malveillant conserve une grande partie de sa structure antérieure, y compris l'utilisation du même algorithme de hachage pour la résolution des noms d'API Windows. Toutefois, le changement le plus important concerne la manière dont le logiciel malveillant localise désormais sa configuration, qui contient à la fois la charge utile et les instructions essentielles à son déploiement.
Vous trouverez ci-dessous une capture d'écran montrant le pseudocode des deux implémentations :
Dans les versions précédentes, GHOSTPULSE analysait un fichier PNG à la recherche d'un bloc de données cryptées, divisé en morceaux et stocké de manière séquentielle. Le processus d'analyse du logiciel malveillant est simple : il recherche un marqueur spécifique dans le fichier, en l'occurrence la chaîne IDAT. Une fois trouvé, le logiciel malveillant vérifie la présence d'une balise de 4 octets qui suit la chaîne. Le morceau crypté sera extrait si cette balise correspond à la valeur attendue. Ce processus se poursuit pour chaque occurrence de la chaîne IDAT qui suit, jusqu'à ce que la totalité de la charge utile cryptée soit collectée.
Dans la nouvelle version, la configuration cryptée est stockée dans les pixels de l'image. Le logiciel malveillant construit un tableau d'octets en extrayant les valeurs RED, GREEN et BLUE (RVB) de chaque pixel de manière séquentielle à l'aide des API Windows standard de la bibliothèque GdiPlus (GDI+). Une fois le tableau d'octets construit, le logiciel malveillant recherche le début d'une structure contenant la configuration chiffrée de GHOSTPULSE, y compris la clé XOR nécessaire au déchiffrement. Pour ce faire, il parcourt le tableau d'octets par blocs de 16 octets. Pour chaque bloc, les premiers octets 4 représentent un hachage CRC32 et les octets 12 suivants sont les données à hacher. Le logiciel malveillant calcule le CRC32 des octets 12 et vérifie s'il correspond au hachage. Si une correspondance est trouvée, il extrait le décalage de la configuration cryptée de GHOSTPULSE, sa taille et la clé XOR de 4 octets, puis il la décrypte par XOR.
Le diagramme suivant présente une ventilation visuelle de ce processus :
Mise à jour de l'extracteur de configuration
Sur la base de ces résultats, nous avons mis à jour notre extracteur de configuration pour qu'il prenne en charge les deux versions de GHOSTPULSE. Cet outil prend un fichier PNG en entrée et produit la charge utile intégrée. Vous pouvez trouver l'outil mis à jour dans notre dépôt labs-releases.
Détecter le GHOSTPULSE avec YARA
La règle originale GHOSTPULSE YARA empêche toujours la phase finale d'une infection et est intégrée à Elastic Defend. L'échantillon mis à jour peut être détecté à l'aide des règles YARA suivantes et sera inclus dans Elastic Defend dans une prochaine version.
Elastic Security a mis à jour les règles GHOSTPULSE YARA pour identifier cette activité :
rule Windows_Trojan_GHOSTPULSE_1 {
meta:
author = "Elastic Security"
creation_date = "2024-10-15"
last_modified = "2024-10-15"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "GHOSTPULSE"
threat_name = "Windows.Trojan.GHOSTPULSE"
license = "Elastic License v2"
strings:
$stage_1 = { 49 63 D0 42 8B 0C 0A 41 03 CA 89 0C 1A 8B 05 ?? ?? ?? ?? 44 03 C0 8B 05 ?? ?? ?? ?? 44 3B C0 }
$stage_2 = { 48 89 01 48 8B 84 24 D8 00 00 00 48 8B 4C 24 78 8B 49 0C 89 08 C7 44 24 44 00 00 00 00 }
condition:
any of them
}
rule Windows_Trojan_GHOSTPULSE_2 {
meta:
author = "Elastic Security"
creation_date = "2024-10-10"
last_modified = "2024-10-10"
os = "Windows"
arch = "x86"
category_type = "Trojan"
family = "GHOSTPULSE"
threat_name = "Windows.Trojan.GHOSTPULSE"
license = "Elastic License v2"
strings:
$a1 = { 48 83 EC 18 C7 04 24 00 00 00 00 8B 04 24 48 8B 4C 24 20 0F B7 04 41 85 C0 74 0A 8B 04 24 FF C0 89 04 24 EB E6 C7 44 24 08 00 00 00 00 8B 04 24 FF C8 8B C0 48 8B 4C 24 20 0F B7 04 41 83 F8 5C }
condition:
all of them
}
Conclusion
En résumé, la famille de logiciels malveillants GHOSTPULSE a évolué depuis son lancement en 2023, cette récente mise à jour marquant l'un des changements les plus importants.
Alors que les attaquants continuent d'innover, les défenseurs doivent s'adapter en utilisant des outils et des techniques actualisés pour atténuer efficacement ces menaces. Nous sommes heureux de vous présenter notre nouvel outil d'extraction de configuration, conçu pour analyser les anciennes et les nouvelles versions de GHOSTPULSE. Cet outil permet aux chercheurs et aux professionnels de la cybersécurité de mieux comprendre et combattre ces menaces en constante évolution. Alors que le paysage des cybermenaces évolue, la collaboration et l'innovation restent essentielles pour une protection efficace.
Observations
Toutes les observables sont également disponibles au téléchargement dans les formats ECS et STIX.
Les observables suivants ont été examinés dans le cadre de cette recherche.
| Observable | Type | Nom | Référence |
|---|---|---|---|
57ebf79c384366162cb0f13de0de4fc1300ebb733584e2d8887505f22f877077 | SHA-256 | Setup.exe | GHOSTPULSE échantillon |
b54d9db283e6c958697bfc4f97a5dd0ba585bc1d05267569264a2d700f0799ae | SHA-256 | Setup_light.exe | GHOSTPULSE échantillon |
winrar01.b-cdn[.]net | nom de domaine | Infrastructure hébergeant l'échantillon GHOSTPULSE | |
reinforcenh[.]shop | nom de domaine | LUMMASTEALER C2 | |
stogeneratmns[.]shop | nom de domaine | LUMMASTEALER C2 | |
fragnantbui[.]shop | nom de domaine | LUMMASTEALER C2 | |
drawzhotdog[.]shop | nom de domaine | LUMMASTEALER C2 | |
vozmeatillu[.]shop | nom de domaine | LUMMASTEALER C2 | |
offensivedzvju[.]shop | nom de domaine | LUMMASTEALER C2 | |
ghostreedmnu[.]shop | nom de domaine | LUMMASTEALER C2 | |
gutterydhowi[.]shop | nom de domaine | LUMMASTEALER C2 | |
riderratttinow[.]shop | nom de domaine | LUMMASTEALER C2 |
