Table des matières
- Introduction
- Aperçu de la campagne
- Accès initial
- Chaîne d'infection
- Analyse technique
- Étape 1 : Livraison initiale (Archive→JavaScript)
- Étape 2 : Analyse de PowerShell Loader1
- Étape 3 : Analyse de PowerShell Loader2
- Étape 4 – Phantom Stealer v3.5.0 : Collecte et exfiltration de données
- Attribution de campagne
- Conclusion
- CIO
- Seqrite Couverture de détection -
- Tactiques, techniques et procédures d'attaque (TTP) de MITRE
Introduction
Les campagnes d'hameçonnage continuent d'évoluer en se faisant passer pour des communications commerciales courantes auxquelles les destinataires sont susceptibles de faire confiance. Au cours de notre enquête, nous avons découvert une campagne utilisant de multiples techniques d'hameçonnage pour diffuser des fichiers JavaScript malveillants, dissimulés dans des pièces jointes compressées. Bien que les courriels usurpent l'identité de différentes entités de confiance, notamment un prestataire logistique international et une administration fiscale, ils aboutissent finalement à une chaîne d'infection identique, se déroulant en plusieurs étapes.
Une fois exécuté, le programme de téléchargement JavaScript lance un script PowerShell obfusqué qui exécute l'intégralité du processus malveillant en mémoire, réduisant considérablement son empreinte disque et compliquant sa détection. La chaîne d'infection déploie finalement Phantom Stealer v3.5.0, qui collecte des informations sensibles sur le système compromis et exfiltre les données collectées via SMTP en utilisant un contenu chiffré.
Cette campagne met en lumière la manière dont les acteurs malveillants combinent de plus en plus des techniques d'ingénierie sociale convaincantes, axées sur le monde des affaires, avec des techniques d'obfuscation multicouches et d'exécution sans fichier pour contourner les défenses de sécurité conventionnelles et compromettre les environnements d'entreprise.
Aperçu de la campagne
La campagne repose sur des courriels d'hameçonnage sophistiqués qui imitent des communications professionnelles courantes afin d'inciter les destinataires à exécuter un fichier JavaScript malveillant dissimulé dans des pièces jointes compressées. Lors de notre analyse, nous avons identifié deux courriels d'hameçonnage distincts diffusant le même logiciel malveillant, mais utilisant différentes techniques d'ingénierie sociale.
Le premier courriel usurpe l'identité d'UPS Forwarding Hub et présente des informations sur la réservation d'expéditions et un devis afin d'attirer les utilisateurs impliqués dans les activités d'approvisionnement ou de logistique. Le second se fait passer pour une notification officielle du Service des impôts malaisien (LHDN) et demande des documents pour un contrôle fiscal des entreprises, dans le but de faire pression sur les destinataires responsables des finances ou de la conformité réglementaire.
Bien que les techniques d'hameçonnage diffèrent, les deux exploitent des processus métier courants qui exigent une attention immédiate. En s'appuyant sur des marques de confiance, des scénarios d'entreprise réalistes et un sentiment d'urgence, les attaquants augmentent la probabilité que les destinataires ouvrent l'archive jointe et exécutent le code JavaScript intégré.
Accès initial
La campagne débute par des courriels d'hameçonnage conçus pour ressembler à des communications commerciales légitimes. Au cours de notre enquête, nous avons observé deux courriels d'hameçonnage basés sur des scénarios commerciaux différents, mais suivant tous deux la même chaîne d'attaque.
Courriel 1 – Avis d’expédition UPS

Le premier courriel d'hameçonnage usurpe l'identité de Centre de réexpédition UPS Ce courriel se présente comme une simple demande de réservation d'expédition. Adressé à une boîte mail dédiée aux achats, il mentionne un numéro d'expédition, un identifiant de devis, des détails de livraison et les frais à la charge du destinataire, ce qui le rend crédible en tant que communication logistique courante. Pour renforcer son authenticité, il inclut des éléments graphiques, des informations sur l'expédition et une pièce jointe compressée contenant, semble-t-il, les documents d'expédition.
Fait intéressant, Les détails de l'expédition font référence à un devis daté du 25 juin 2025, alors que le courriel a été envoyé en juin 2026, ce qui indique que le modèle d'hameçonnage a probablement été réutilisé à partir d'une campagne antérieure ou assemblé sans que tous les champs aient été mis à jour.
Courriel 2 – Avis de vérification fiscale malaisienne

Le deuxième courriel d'hameçonnage usurpe l'identité de Conseil malaisien des recettes intérieures (LHDN) Rédigé entièrement en malais, ce document ressemble à une notification officielle de contrôle fiscal. Il exige des pièces justificatives pour l'évaluation de l'impôt sur les sociétés de 2026 et impose un délai de soumission de 14 jours afin de créer un sentiment d'urgence. En faisant référence à des formulaires fiscaux légitimes, à des services gouvernementaux et à des coordonnées officielles, les auteurs de l'attaque tentent d'établir leur crédibilité et de persuader les destinataires d'ouvrir l'archive jointe.
Le langage localisé et le contexte réglementaire donnent à ce courriel l'apparence d'une correspondance commerciale courante relative à la conformité fiscale.
Un mécanisme de livraison commun
Bien que les techniques d'ingénierie sociale diffèrent, les deux courriels diffusent le même fichier JavaScript malveillant, encapsulé dans des archives compressées. Cela indique que les attaquants réutilisent une chaîne de diffusion de logiciels malveillants similaire, tout en adaptant l'appât à différents contextes professionnels.
Chaîne d'infection
La figure 3 illustre la chaîne d'infection complète observée lors de notre analyse. La campagne utilise un flux d'exécution par couches dans lequel chaque étape reconstruit et lance progressivement le composant suivant, déployant finalement Phantom Stealer v3.5.0.

Analyse technique
Étape 1 : Livraison initiale (Archive -> JavaScript)
Les deux courriels d'hameçonnage contiennent une pièce jointe compressée. Le code JavaScript qu'ils renferment est dissimulé par des noms de fichiers étroitement liés au thème du courriel. Dans les échantillons observés, les attaquants utilisent des noms pertinents pour le monde des affaires, tels que :
- Documents UPS_Numéro d'expédition 3264010420 - ID de devis 203263067.js
- Bordereau de dépôt pour facture de mai 26 MBB531540 dd 20042026.js
- CKHT800A_RUJ ATC13529CWYE25M.js
En adaptant le nom du fichier à l'appât de l'ingénierie sociale, la pièce jointe apparaît comme un document d'expédition légitime, un relevé bancaire ou un fichier fiscal, augmentant ainsi la probabilité que les destinataires l'exécutent sans soupçon.
Analyse d'un fichier JavaScript
Plutôt que d'exécuter immédiatement des activités malveillantes, le script dissimule d'abord sa fonctionnalité par de multiples couches d'obfuscation de chaînes de caractères et d'appels de fonctions indirects.

Les noms de fonctions, les appels de méthodes, les chaînes de commandes, etc. sont remplacés par des indices numériques qui font référence à des tableaux de chaînes cachés, ce qui rend le script beaucoup plus complexe qu'il ne l'est réellement.
Le script contient de nombreuses fonctions auxiliaires qui effectuent de simples opérations arithmétiques ou de comparaison. Ces fonctions d'encapsulation n'apportent aucun avantage fonctionnel, mais nuisent considérablement à la lisibilité en obligeant les analystes à parcourir plusieurs niveaux d'indirection avant d'atteindre la logique d'exécution proprement dite. Les tableaux de chaînes encodées ne sont initialisés qu'une seule fois, puis réutilisés, ce qui obscurcit davantage le flux d'exécution.
Fonctionnalités du chargeur JavaScript
Bien que l'obfuscation masque initialement le comportement du script, la récupération des chaînes de caractères intégrées révèle clairement sa fonctionnalité. Les chaînes décodées font référence à PowerShell, aux objets COM natifs de Windows, aux opérations sur les fichiers et à WMI, autant d'éléments qui indiquent qu'il s'agit d'un chargeur soigneusement conçu plutôt que d'un logiciel malveillant autonome.

Ces artefacts indiquent que JavaScript est responsable de la préparation de l'environnement d'exécution, de la reconstruction de l'étape suivante et du transfert du contrôle à PowerShell. Cette approche par couches masque la charge utile principale jusqu'à l'exécution, ce qui rend l'analyse statique beaucoup plus complexe.
Charge utile Base64 intégrée
L'une des caractéristiques les plus remarquables de ce chargeur est la présence d'un volumineux bloc de données encodé en Base64, intégré directement dans le code source JavaScript. Au lieu de télécharger l'étape suivante depuis une source externe, le chargeur JavaScript intègre un script PowerShell complet encodé en Base64 dans son code source.

La charge utile encodée est stockée en tant que propriété d'objet JavaScript et n'est reconstruite que lors de l'exécution, ce qui permet au chargeur de rester autonome tout en dissimulant la logique PowerShell réelle à l'inspection statique.
Une fois son initialisation terminée, le script JavaScript récupère la charge utile PowerShell encodée en Base64 et stockée dans l'objet `encodedData`. À l'aide des composants COM natifs de Windows, le chargeur décode le contenu intégré, reconstruit le script PowerShell et l'écrit dans un fichier `.ps1` temporaire. Il exécute ensuite `powershell.exe` avec des paramètres d'exécution masqués afin de passer à l'étape suivante de la chaîne d'infection.
Voici une séquence d'exécution typique de JavaScript exécutant PowerShell :

Étape 2 : Analyse de PowerShell Loader1
Au lieu d'intégrer directement l'étape suivante en clair, le chargeur PowerShell la stocke sous forme de charge utile chiffrée AES. Le contenu chiffré, la clé de chiffrement et le vecteur d'initialisation (IV) sont tous intégrés au script sous forme de chaînes encodées en Base64. Cela permet au chargeur de rester totalement autonome tout en garantissant que la logique malveillante demeure dissimulée jusqu'à son exécution.


Avant de pouvoir déchiffrer la charge utile chiffrée, le script supprime les espaces et les sauts de ligne des chaînes Base64 intégrées afin de reconstituer un flux de données continu. Il convertit ensuite les chaînes nettoyées en tableaux d'octets à l'aide de la méthode .NET Convert.FromBase64String() . La même routine est réutilisée pour traiter la charge utile chiffrée, la clé AES et le vecteur d'initialisation.
Routine de décryptage AES
Une fois les composants encodés en Base64 convertis en tableaux d'octets, le chargeur reconstruit la charge utile cachée à l'aide de la classe .NET AesCryptoServiceProvider.

Le script configure le chiffrement pour fonctionner en mode CBC avec un remplissage PKCS7 avant de créer un objet de déchiffrement qui traite les données chiffrées intégralement en mémoire. En utilisant les bibliothèques cryptographiques .NET natives plutôt que des routines de déchiffrement personnalisées, le chargeur offre une implémentation fiable et compacte tout en masquant l'étape suivante jusqu'à son exécution.
Les octets déchiffrés sont écrits dans un MemoryStream via un CryptoStream, permettant ainsi à l'intégralité du processus de déchiffrement de se dérouler en mémoire.
De bout en bout
Après avoir récupéré avec succès le script en clair, le chargeur transfère immédiatement l'exécution via Invoke-Expression. Cela permet au script de s'exécuter directement depuis la mémoire, autorisant ainsi le lancement de l'étape suivante sans création de fichiers supplémentaires sur le système compromis.

Étape 3 : Analyse de PowerShell Loader2
L'étape 3 de cette chaîne d'infection est un autre blob déchiffré en Base64 résultant de PowerShell à partir de l'étape 2.

Contrairement à l'étape précédente, qui se concentre sur le déchiffrement du script intégré, ce chargeur est chargé de récupérer un assembly .NET protégé, de surveiller l'environnement d'exécution et de lancer l'assembly directement depuis la mémoire sans l'écrire sur le disque.
Préparation de la charge utile finale pour l'exécution réflexive
L'analyse du script PowerShell secondaire a révélé qu'il intègre deux charges utiles distinctes , chacune servant un objectif différent dans la chaîne d'infection.
Charge utile 1 : Injecteur
La première charge utile est stockée sous forme de blob encodé en Base64 et protégé par un chiffrement XOR simple. Cet ensemble sert d'injecteur en mémoire, chargé d'exécuter l'étape suivante.
Avant l'exécution, le chargeur PowerShell décode les données Base64 et applique une routine de déchiffrement XOR à l'aide de la clé codée en dur. « DEVILboy56@@ » reconstituer l'assemblage original en mémoire.


Le décryptage XOR réussi d'un blob base64 a généré un assembly .NET, chargé directement en mémoire.


Charge utile 2 : Voleur de fantômes
Une deuxième charge utile est intégrée au chargeur PowerShell sous forme de tableau d'octets bruts stocké au format décimal.

L'examen du tableau d'octets a révélé l' en-tête DOS « MZ » (4D 5A), confirmant qu'il s'agit d'une image exécutable portable (PE) valide et non de code malveillant ou de données chiffrées. Contrairement à la première charge utile, cette image PE n'est pas déchiffrée par le script PowerShell. Elle est directement transmise comme argument à l'assembly .NET réflexif, accompagnée du chemin d'accès au binaire légitime aspnet_compiler.exe.


Cette conception sépare clairement les responsabilités de chaque composant.
- Le script PowerShell fonctionne principalement comme un orchestrateur, récupérant le chargeur réflexif et lui fournissant le processus cible et la charge utile PE intégrée.
- La logique d'injection et d'exécution proprement dite est déléguée à l'assembly .NET en mémoire, ce qui réduit considérablement la complexité de l'étape PowerShell tout en dissimulant le logiciel malveillant final jusqu'à l'étape d'exécution suivante.
Étape 4 – Phantom Stealer v3.5.0 : Collecte et exfiltration de données
Après l'exécution réussie du chargeur .NET par réflexion, l'attaque aboutit au déploiement de Phantom Stealer v3.5.0 . Ce logiciel malveillant vise à collecter un large éventail d'informations sensibles sur le système compromis, notamment les informations sur l'hôte, les applications installées, les identifiants de navigation, les cookies, les informations de paiement enregistrées, les portefeuilles de cryptomonnaies et les données associées aux applications de messagerie les plus utilisées. En collectant des informations provenant de sources multiples, le logiciel malveillant cherche à maximiser la valeur de l'hôte compromis avant de procéder à l'exfiltration des données.

Récolte d'informations
Phantom Stealer recense le système infecté et collecte des informations provenant de nombreuses applications et profils utilisateurs. Les données collectées comprennent des informations système, les logiciels installés, les identifiants de navigation, les cookies, les cartes de paiement enregistrées, l'historique de navigation et les fichiers associés aux portefeuilles de cryptomonnaies et aux applications de messagerie. Les informations collectées sont organisées dans des fichiers distincts selon l'application ou le type de données, ce qui simplifie leur exfiltration ultérieure.
Exemples d'artefacts récoltés :
- Mots de passe Chromium .SMS
- Cartes de crédit Chrome .SMS
- Cookies Chromium .json
- Mots de passe Gecko .SMS
- Cookies Gecko .json
Authentification SMTP
Après l'établissement d'une session, le logiciel malveillant s'authentifie auprès du serveur SMTP via le mécanisme AUTH LOGIN . Le nom d'utilisateur et le mot de passe sont transmis sous forme encodée en Base64 avant que le serveur SMTP n'autorise l'envoi des courriels.
Lors de notre analyse, les éléments suivants ont été observés :
Nom d'utilisateur (Base64) : cnVoaUBha3Rla21ldGFsLmNvbS50cg==
Décodé à : ruhi@aktekmetal[.]com[.]tr
Le mot de passe est également transmis sous forme encodée en Base64 avant que l'authentification ne soit réussie.

Lorsque nous avons décodé les données base64 collectées par l'acteur malveillant (illustrées dans la Fig. 18), nous avons trouvé les données réelles au format ci-dessous.

Exfiltration de données via SMTP
Phantom Stealer transmet les informations collectées directement via le SMTP (Simple Mail Transfer Protocol)L'analyse dynamique a révélé que le logiciel malveillant établit une session SMTP via Port TCP 587, le port de soumission standard pour la livraison de courriels authentifiés. Après s'être connecté au serveur de messagerie, le logiciel malveillant initie une SMTP étendu (ESMTP) séance en utilisant le EHLO commande et met ensuite à niveau le canal de communication à travers DÉMARRAGES, garantissant ainsi que les identifiants transmis et les informations volées sont protégés par le chiffrement TLS pendant leur transit.
Au lieu de regrouper toutes les informations volées dans une seule archive, Phantom Stealer génère plusieurs fichiers, chacun correspondant à une application ou une catégorie d'identifiants particulière.

Après avoir transmis avec succès les informations collectées, le logiciel malveillant met fin proprement à la session SMTP à l'aide de la commande QUIT . La transaction de messagerie électronique s'achève ainsi selon la sémantique SMTP standard, permettant à la communication malveillante de ressembler fortement au trafic de messagerie sortante légitime.
Attribution de campagne
Au moment de l'analyse, nous n'avons trouvé aucune preuve concluante reliant cette campagne à un acteur malveillant ou à un ensemble d'intrusions spécifique. Bien que la charge utile finale soit identifiée comme Phantom Stealer v3.5.0, ce logiciel malveillant est largement répandu au sein de l'écosystème cybercriminel et a été adopté par de nombreux opérateurs.
Conclusion
Cette campagne illustre comment les techniques d'hameçonnage modernes ont évolué, passant de la simple diffusion de logiciels malveillants à des chaînes d'attaques complexes et soigneusement orchestrées. En usurpant l'identité de communications commerciales légitimes liées à la logistique, à la banque et à la conformité réglementaire, les attaquants augmentent les chances d'interaction avec les utilisateurs tout en dissimulant un processus d'exécution sophistiqué derrière des documents d'apparence anodine.
Au lieu d'exposer directement la charge utile finale, chaque étape ne révèle que le composant suivant de la chaîne d'infection, ce qui augmente considérablement la complexité de l'analyse statique et réduit les possibilités de détection précoce.
Pour les organisations, cette campagne rappelle qu'il convient de traiter avec prudence les courriels professionnels convaincants, même ceux semblant provenir de prestataires logistiques, d'institutions financières ou d'organismes gouvernementaux de confiance. Renforcer la sécurité des courriels, sensibiliser les employés à la vérification des pièces jointes inattendues, limiter l'exécution de scripts inutiles et surveiller les activités suspectes liées à PowerShell, le chargement de mémoire par réflexion, l'injection de processus et le trafic SMTP sortant inhabituel peuvent considérablement améliorer les chances de détecter des menaces similaires avant que des informations sensibles ne soient compromises.
Cette campagne souligne l'importance d'une stratégie de défense en profondeur, où la sécurité du courrier électronique, endpoint protectionLa surveillance comportementale et la visibilité du réseau fonctionnent de concert pour identifier les attaques sophistiquées à plusieurs étapes susceptibles d'échapper à la détection traditionnelle basée sur les signatures.
CIO-
6BBFC88534D5D515DDDB0EC9BB618530
8A620E451E64F418BC21FD458E952F2E
5F238710A5EF4F6DDBBE7A118C822705
a30b628d0c087f305b35be3e3f5281b3
34bfa888695b9aaa41bd575245972043
Seqrite Couverture de détection -
Trojan.Injector.S39585891
Cheval de Troie.YakbeexMSIL.ZZ4
PS.Trojan.Loader.50921.GC
Js.Trojan.Loader.50922.GC
Tactiques, techniques et procédures d'attaque (TTP) de MITRE
| Tactiques (ATT&CK ID) | Techniques / Sous-technique (ID) | Procédure |
| Accès initial (TA0001) | Hameçonnage : Pièce jointe de phishing ciblé (T1566.001) | Fournit une pièce jointe ZIP malveillante |
| Exécution (TA0002) | Interpréteur de commandes et de scripts : JavaScript (T1059.007) | Exécute du JavaScript obfusqué |
| Exécution (TA0002) | Interpréteur de commandes et de scripts : PowerShell (T1059.001) | Lance PowerShell caché |
| Furtivité (TA0005) | Fichiers et informations obfusqués/compressés (T1027) | Utilise une obfuscation multicouche |
| Furtivité (TA0005) | Désobfusquer/Décoder des fichiers ou des informations (T1140) | Décode les données Base64, AES et XOR |
| Furtivité (TA0005) | Chargement de code réflexif (T1620) | Charge l'assembly .NET depuis la mémoire |
| Furtivité (TA0005) | Mascarade (T1036) | Utilise des noms de fichiers à thématique professionnelle |
| Furtivité (TA0005) | Injection de procédé (T1055) | Injecte la charge utile dans aspnet_compiler.exe |
| Furtivité (TA0005) | Exécution du proxy binaire système (T1218) | Utilise abusivement un binaire .NET légitime |
| Découverte (TA0007) | Découverte des informations système (T1082) | Collecte les informations de l'hôte |
| Découverte (TA0007) | Découverte des processus (T1057) | Vérifie l'état du processus cible |
| Accès aux informations d'identification (TA0006) | Identifiants provenant de gestionnaires de mots de passe (T1555) | Extrait les identifiants stockés |
| Accès aux informations d'identification (TA0006) | Identifiants des navigateurs Web (T1555.003) | Vole les identifiants de navigation et les cookies |
| Collecte (TA0009) | Données du système local (T1005) | Collecte les données de l'application locale |
| Collecte (TA0009) | Données collectées archivées (T1560) | Organise les données volées dans des fichiers |
| Exfiltration (TA0010) | Exfiltration via un protocole alternatif (T1048) | Exfiltre des données via SMTP |
| Commandement et contrôle (TA0011) | Protocole de couche application : Protocoles de messagerie (T1071.003) | Utilise le protocole SMTP |
| Commandement et contrôle (TA0011) | Canal crypté (T1573) | Chiffre le protocole SMTP à l'aide de STARTTLS |
Auteurs
- Prashil Moon
- Manoj Kumar Neelamegam



