Introduction
Seqrite Des laboratoires ont récemment identifié une campagne de distribution de logiciels malveillants qui exploitait la crédibilité des institutions gouvernementales pour accroître son taux de réussite. Les auteurs de cette menace se faisaient passer pour des ministères et diffusaient des courriels malveillants se faisant passer pour des notifications officielles relatives aux impôts, aux remboursements, aux obligations de conformité et à la réglementation. En tirant parti de l'identité visuelle reconnue du gouvernement, de l'urgence et d'incitations financières, la campagne visait à persuader les destinataires d'ouvrir des pièces jointes malveillantes ou d'interagir avec leur contenu. Cette activité met en lumière l'efficacité persistante des techniques d'ingénierie sociale utilisant le thème gouvernemental pour faciliter la diffusion de logiciels malveillants et compromettre les utilisateurs ciblés.
Chaîne d'infection:

Premiers résultats concernant la campagne :
Une campagne d'hameçonnage sophistiquée, ciblant les entreprises et les contribuables indiens, a été observée. Elle exploite des thèmes liés à la TPS (taxe sur les biens et services) pour diffuser des logiciels malveillants. Identifiée pour la première fois sur VirusTotal le 06 juillet 2026, cette campagne imite des communications gouvernementales légitimes et utilise des appâts fiscaux pour inciter les utilisateurs à interagir avec elle. Les auteurs de la menace emploient des documents et des noms de fichiers convaincants, très similaires aux notifications officielles de la TPS, ce qui rend difficile pour les destinataires de distinguer le contenu malveillant des correspondances gouvernementales légitimes. L'objectif principal de cette campagne semble être le déploiement de logiciels malveillants et le vol d'informations sensibles, illustrant ainsi l'utilisation abusive persistante de techniques d'ingénierie sociale à thème gouvernemental pour cibler l'écosystème financier et fiscal indien.
Courriel initial :
Dans le cas analysé, l'auteur de la menace a diffusé un courriel d'hameçonnage usurpant l'infrastructure de la GST (Taxe sur les biens et services) du gouvernement indien. Ce courriel provenait de l'adresse donotreply.@gst.gov.in et avait pour objet « Demande de remboursement GST RFD-01 déposée sous le numéro ARN AL27052600952P ». Le message était conçu pour paraître comme une notification officielle de remboursement de la GST, afin de convaincre les destinataires qu'une demande de remboursement avait été traitée ou faisait l'objet d'un examen. Pour renforcer sa crédibilité, le courriel contenait une pièce jointe nommée GST-Refund_July-26_AL27052600952P.rar, faisant référence au même numéro de référence de demande (ARN) que celui figurant dans l'objet. L'utilisation d'identifiants identiques dans le contenu du courriel et la pièce jointe est une technique d'ingénierie sociale courante visant à renforcer la légitimité et à réduire les soupçons.

Fig. : Courriel
Analyse technique:
Après extraction, l'archive contenait un fichier exécutable se faisant passer pour un document ou une application relative au remboursement de la TPS. Un premier examen a révélé que la charge utile est un exécutable .NET, indiquant qu'il a été développé à l'aide du framework Microsoft .NET. Les cybercriminels utilisent fréquemment des binaires .NET car ils sont relativement faciles à développer, permettent un déploiement rapide de fonctionnalités malveillantes et incluent souvent des mécanismes d'obfuscation qui compliquent l'analyse statique. Cet exécutable constitue la charge utile malveillante principale diffusée par la campagne d'hameçonnage et représente l'étape suivante de la chaîne d'attaque après l'interaction réussie de l'utilisateur avec la pièce jointe.

L'analyse du fichier exécutable extrait a permis de l'identifier comme un binaire basé sur le framework Microsoft .NET. Contrairement aux fichiers exécutables portables (PE) natifs de Windows, compilés directement en code machine, les applications .NET contiennent du code en langage intermédiaire exécuté par le Common Language Runtime (CLR).

L'analyse débute avec un fichier binaire .NET contenant une image bitmap (AF) intégrée à ses ressources. Au lieu de stocker la charge utile suivante comme une ressource DLL classique, l'auteur la dissimule à l'intérieur de l'image en encodant les octets de la charge utile dans les valeurs RVB des pixels de l'image bitmap.

Au démarrage, l'application appelle la fonction `ServiceChromatic()` en lui passant l'image bitmap intégrée en entrée. Bien que cette fonction contienne une grande quantité de code superflu, son objectif est simple : elle parcourt l'image bitmap colonne par colonne, lit les valeurs Rouge, Vert et Bleu de chaque pixel et reconstruit le flux d'octets d'origine. La fonction extrait les 64 000 premiers octets de l'image et les renvoie sous forme de tableau d'octets (`byte[]`).
Le tableau d'octets récupéré est ensuite transmis directement à Assembly.Load(), ce qui permet de charger l'assembly .NET masqué entièrement depuis la mémoire, sans l'écrire sur le disque. Dans cet exemple, la charge utile extraite est l'assembly suivant, Windows Health Optimizer Plus.dll, qui est ensuite exécuté par réflexion.

Analyse du chargeur de deuxième étape :
Après l'extraction et le chargement en mémoire réussis du chargeur de deuxième étape, Windows Health Optimizer Plus.dll , le malware invoque la méthode v3.aq() avec trois paramètres : v3.aq("73537457", "6C6E6A", "CapitalCities"). Les deux premiers arguments sont des chaînes de caractères encodées en hexadécimal. Converties en ASCII, 73537457 correspond à « sStW » et 6C6E6A à « inj » . Ces chaînes décodées sont ensuite utilisées par l'assembly de deuxième étape comme identificateurs de commande ou d'opération. Leurs valeurs indiquent que le malware ordonne à l'étape suivante de traiter la charge utile bitmap intégrée (sStW) et d'effectuer une opération d'injection (inj), suggérant que ces paramètres servent d'instructions d'exécution contrôlant le comportement de la charge utile de l'étape suivante.

Extraction de la charge utile basée sur une image bitmap :
Le logiciel malveillant utilise ensuite une technique d'extraction de données basée sur une image bitmap, exploitant le stockage des pixels pour dissimuler des données intégrées. Au lieu d'utiliser l'image uniquement pour son contenu visuel, il lit les valeurs ARGB brutes de chaque pixel et reconstruit la charge utile binaire cachée à partir du flux d'octets extrait. L'image bitmap sert ainsi de support aux données dissimulées, permettant à la charge utile de rester cachée au sein d'une image par ailleurs légitime.
La charge utile extraite est traitée par une routine de déchiffrement personnalisée basée sur l'opérateur XOR. La chaîne de caractères fournie en paramètre est convertie en octets UTF-16 Big Endian et utilisée comme clé XOR, conjointement à une valeur supplémentaire extraite du tampon chiffré. Après déchiffrement, la charge utile est reconstruite directement en mémoire, révélant ainsi le fichier perfgurd.dll. Le malware charge la DLL à partir de sa représentation encodée sans l'écrire sur le disque, permettant une exécution sans fichier et réduisant ainsi les risques de détection.

Analyse du chargeur de troisième étape – perfgurd.dll
La méthode ci-dessous agit comme un wrapper d'exécution dynamique qui appelle une méthode spécifique d'un assembly chargé sans faire directement référence à son nom. Elle initialise d'abord la variable `num` à 29, mais si le processus s'exécute dans un environnement 64 bits (`IntPtr.Size == 8`), elle modifie sa valeur à 15. Cette sélection conditionnelle suggère que l'assembly contient des méthodes distinctes pour les architectures 32 bits et 64 bits.
L'objet `object_0` doit être un objet Assembly .NET chargé. Le code récupère tous les types de l'assembly à l'aide de `GetTypes()`, sélectionne le type à l'index 20, puis récupère ses méthodes à l'aide de `GetMethods()`. Selon l'architecture système, il sélectionne la méthode 29 ou la méthode 15 de ce type et l'appelle par réflexion via `Invoke(null, null)`.
Comme les deux arguments de `Invoke()` sont nuls, la méthode ciblée est vraisemblablement une méthode statique sans paramètre. Cette technique permet au malware de masquer le nom et le déroulement de l'exécution de la méthode aux outils d'analyse statique, car l'exécution repose entièrement sur les indices de tableaux et non sur des identifiants explicites. En pratique, cette fonction sert de répartiteur, transférant l'exécution à l'étape suivante du malware. La méthode sélectionnée contient généralement la principale fonctionnalité malveillante ou la routine d'initialisation de la charge utile.

En fonction de l'architecture du système de la victime, le logiciel malveillant appelle l'une des deux méthodes de la classe PerfGuard.Networking.EfficientServer de la bibliothèque perfgurd.dll. Sur les systèmes 32 bits, la méthode WaitForAdvancedController() (index 29) est exécutée, tandis que sur les systèmes 64 bits, c'est la méthode WaitForGlobalAggregator() (index 15) qui est appelée. Comme illustré ci-dessous, le logiciel malveillant utilise les index des méthodes plutôt que leurs noms explicites lors de son exécution, une technique qui contribue à masquer le flux d'exécution et à compliquer l'analyse statique.

Le programme d'exécution vérifie d'abord si le processus s'exécute avec des privilèges d'administrateur. Si ce n'est pas le cas, il utilise cmstp.exe, un utilitaire Windows légitime, pour lancer le processus principal avec des privilèges élevés. En exploitant ce binaire système de confiance, le logiciel malveillant tente de contourner les restrictions d'exécution normales et de poursuivre son exécution dans un contexte d'administrateur.
Pour assurer sa persistance, le logiciel malveillant crée une copie de lui-même dans C:\Users\admin\AppData\Roaming sous le nom RVKLmPcYcNO.exe, comme illustré ci-dessous. Il génère ensuite un script PowerShell (.ps1) dans ce répertoire temporaire, lequel lance la copie en mode caché, la rendant ainsi invisible à l'utilisateur. Afin de garantir son exécution automatique à chaque ouverture de session, le logiciel malveillant crée une entrée de registre « Run » sous HKCU\Software\Microsoft\Windows\CurrentVersion\Run pointant vers ce script PowerShell. Par conséquent, ce script est exécuté à chaque connexion de l'utilisateur, ce qui lance la copie du logiciel malveillant et assure sa persistance même après un redémarrage du système.


Le chargeur de troisième étape déchiffre et reconstruit la charge utile finale directement dans la mémoire de son propre processus. Après déchiffrement, la charge utile récupérée est chargée et exécutée dans le contexte du processus existant, évitant ainsi le lancement d'un processus exécutable distinct. Cette technique d'exécution en mémoire contribue à réduire les artefacts du système de fichiers et améliore la discrétion de l'exécution de la charge utile. La charge utile déchiffrée extraite lors de l'analyse est présentée ci-dessous.

Charge utile finale Déploiement – Remcos RAT

L'analyse de la phase finale a révélé que le logiciel malveillant déploie finalement le cheval de Troie d'accès à distance Remcos. Remcos est un outil d'administration à distance disponible dans le commerce, fréquemment utilisé à mauvais escient par les acteurs malveillants pour établir un accès persistant aux systèmes compromis.
L'architecture de chargement multi-étapes observée dans cette campagne vise à dissimuler la charge utile finale et à compliquer sa détection. L'exécutable initial, Windows Health Optimizer Plus.dll, et perfgurd.dll fonctionnent conjointement comme des chargeurs successifs qui déchiffrent, reconstruisent et exécutent Remcos entièrement en mémoire.
Une fois exécuté, Remcos confère à l'attaquant un contrôle étendu sur l'hôte compromis.
Capacités de Remcos :
L'échantillon analysé présente des fonctionnalités généralement associées à Remcos RAT, notamment :
- Exécution de commandes à distance.
- Chargement et téléchargement de fichiers.
- Gestion du système de fichiers.
- Enregistrement et surveillance des frappes au clavier.
- Collecte d'identifiants.
- Reconnaissance du système.
- Manipulation des processus et des services.
- Modification du registre.
- Établissement de la persistance.
- Capture d'écran.
- Fonctionnalités de bureau à distance.
- Surveillance de l'activité des utilisateurs.
- Collecte d'informations sur le système et le réseau.
- Communication avec l'infrastructure de commande et de contrôle (C2) contrôlée par l'attaquant.
- Déploiement de charges utiles supplémentaires.
Ces capacités permettent aux acteurs malveillants de maintenir un accès à long terme, de surveiller l'activité de la victime, de voler des informations sensibles et de mener d'autres opérations après la compromission.
Conclusion:
Cette campagne représente une opération d'hameçonnage sophistiquée sur le thème de la TPS, conçue pour déployer le logiciel malveillant Remcos RAT via une plateforme de logiciels malveillants .NET à plusieurs étapes. L'attaque débute par une notification frauduleuse de remboursement de la TPS qui exploite l'image de marque du gouvernement indien et des thèmes liés à la fiscalité afin de gagner la confiance des utilisateurs et de les inciter à exécuter une pièce jointe malveillante.
L'analyse de l'infrastructure a identifié plusieurs sous-domaines aléatoires sous aofmokighoig.hath.network pointant vers une infrastructure associée à l'activité de commande et de contrôle du RAT Remcos. L'utilisation de services DNS dynamiques, notamment hath.network et synology.me , ainsi que d'une infrastructure rotative hébergée par M247 Europe SRL, est caractéristique des opérations de logiciels malveillants courants et de la cybercriminalité à motivation financière. L'hameçonnage lié au remboursement de la TVA suggère en outre un ciblage délibéré des utilisateurs et organisations indiens. Bien que les indicateurs disponibles permettent d'attribuer l'activité à un réseau de cybercriminalité persistant, les preuves actuelles sont insuffisantes pour l'associer avec certitude à un acteur malveillant connu. Au vu de l'infrastructure observée, des caractéristiques du logiciel malveillant et du ciblage, il est établi que la campagne est menée par un opérateur Remcos ciblant l'Inde ou par un courtier d'accès initial utilisant une infrastructure DNS dynamique jetable.
Globalement, la combinaison d'un accès initial par hameçonnage, de chargeurs .NET déployés par étapes, d'une dissimulation de charge utile par image bitmap, d'une exécution sans fichier et d'une infrastructure de commande et de contrôle résiliente témoigne d'une volonté délibérée de contourner les contrôles de sécurité tout en établissant un accès non autorisé et persistant aux systèmes des victimes. Cette campagne illustre l'évolution constante des techniques de diffusion de logiciels malveillants courants et souligne l'efficacité des chaînes d'infection multicouches pour permettre le vol d'identifiants, l'accès à distance et des opérations post-compromission plus vastes.
Seqrite Couverture:
Trojan.Agent
Cheval de Troie.AgentCiR
Trojan.LoaderCiR
Trojan.Mauvaise.SL1
CIO:
| 3757dccb2adae65ccdf8d5e5c948b927 | Eml |
| 07d7d21c2c0920d198efb9ea54900a80 | Remboursement de la TPS_26 juillet_AL27052600952P.rar |
| 20476F3A51DFDDF3DC0603FC7858D894 | Remboursement de la TPS_26-juillet_AL27052600952P.com |
| 7842D12D9E37C75076133BE5B9904CB2 | Windows Health Optimizer Plus.dll |
| CC34D9760394104AD47877A0D57E9C63 | PerfGuard.dll |
| 2a34bdd25b404737ee5d3b52bf0b3b70 | RemcosRAT |
C2:
185.242.4.122
MITRE ATT&CK :
| Tactique | Cartographie des techniques |
| Accès initial | T1566.001 |
| De bout en bout | T1204.002, T1059.001, T1129 |
| Persistence | T1547.001, T1036 |
| Elévation de Privilèges | T1548.002 |
| Évasion défensive | T1027, T1027.013, T1140, T1218.003, T1620, T1055 |
| Accès aux informations d'identification | T1056.001, T1555 |
| Découverte | T1082, T1016, T1057, T1083 |
| Collection | T1113, T1005, T1039 |
| Commander et contrôler | T1071.001, T1105 |
| Mouvement latéral | T1021 |
| Impact | T1489 |
Auteurs:
Vaibhav Billade
Rumana Siddiqui



