DePriMon est un téléchargeur malveillant, en plusieurs étapes et utilisant de nombreuses techniques non traditionnelles. Pour obtenir la persistance, le logiciel malveillant enregistre un nouveau moniteur de port local - une astuce relevant de la technique « Port Monitors », que vous pouvez trouver dans  la base de connaissances MITRE ATT&CK. Pour cela, le logiciel malveillant utilise le nom « Windows Default Print Monitor ». C’est d’ailleurs la raison pour laquelle nous avons nommé ce logiciel malveillant DePriMon. En raison de sa complexité et de son architecture modulaire, nous considérons qu’il constitue un framework.

Selon notre télémétrie, DePriMon est actif depuis au moins mars 2017. DePriMon a été détecté dans une société privée, basée en Europe centrale, et sur des dizaines d'ordinateurs au Moyen-Orient.

Certains des noms de domaine utilisés comme serveurs C&C contiennent des mots arabes, ce qui donne une indication d'une campagne spécifique à une région. Cependant, DePriMon mérite une attention qui dépasse les frontières des raisons qu’il vise. En effet, ce logiciel malveillant est soigneusement écrit, et incorpore beaucoup de chiffrement qu’il utilise efficacement.

Pour aider les défenseurs à rester à l'abri de cette menace, nous avons analysé en profondeur ce nouveau logiciel malveillant, en nous concentrant sur le téléchargeur lui-même. Parce qu'il nous manque une ou plusieurs stades initiaux, que nous appellerons ici « le premier stade », nous ne connaissons pas le vecteur de distribution et de compromis initial. La question de savoir quel type de charge utile finale est utilisé dans les attaques est une autre question à laquelle il reste à répondre.

Toutefois, il convient de noter que, dans quelques cas, DePriMon a été détecté avec des logiciels malveillants ColoredLambert sur les mêmes ordinateurs dans un court laps de temps. ColoredLambert est utilisé par le groupe de cyberespionnage Lamberts (alias Longhorn) et lié à la fuite des capacités de la CIA dans la chambre forte 7. Nos collègues de Symantec et Kaspersky ont publié leurs analyses en avril 2017.

Analyse technique

Deuxième stade

Les deuxième et troisième étapes du DePriMon sont toutes deux livrées sur le disque de la victime au cours de la première étape. La deuxième étape s'installe et charge la troisième étape à l'aide d'un chemin chiffré et codé en dur. Une des explications possibles est qu'il a été configuré après la première étape de l'attaque.

La technique d'installation décrite est unique. En principe, il appartient, dans la taxonomie MITRE ATT&CK, au « Port Monitors », sous les deux tactiques de Persistance et d'Escalade des Privilèges. Nous pensons que DePriMon est le premier exemple de logiciel malveillant utilisant cette technique jamais décrite publiquement.

La troisième étape enregistre la DLL du troisième stade en tant que moniteur de ports en créant la clé de registre et la valeur suivantes :

HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\Windows Default Print Monitor

Driver = %PathToThirdStageDLL%

La création de cette clé de registre requiert des droits d'administrateur.

Au démarrage du système, la DLL enregistrée sera chargée par spoolsv.exe avec les privilèges SYSTEM. Ce fonctionnement, combiné avec le caractère unique de cette méthode, rend la technique très efficace pour les attaquants.

La deuxième étape vérifie régulièrement s'il y a un fichier dans le dossier %system32% portant le même nom que le fichier DLL de la troisième étape mais sans l'extension « .dll ». Ce fichier sert de déclencheur de désinstallation - si DePriMon le trouve, il supprime ce fichier et ses propres composants de manière sécurisée en écrasant les binaires puis en les supprimant.

Troisième stade

La troisième étape, chargée de télécharger la ou les charges utiles principales des opérateurs DePriMon, met également en œuvre des techniques intéressantes.

Pour la communication C&C, il utilise l'implémentation Microsoft de SSL/TLS, Secure Channel, au lieu des API courantes comme WinHTTP ou WinInet. Sa configuration est très complexe, tout comme la façon dont le logiciel malveillant gère celle-ci. Enfin, les auteurs ont consacré beaucoup d'efforts au chiffrement, ce qui rend l'analyse du logiciel malveillant DePriMon plus difficile.

C&C communication

DePriMon communique en toute sécurité via TLS, mais pas à un niveau élevé comme c'est le cas pour les logiciels malveillants. La connexion est initialisée avec un socket Windows et peut continuer avec l'initialisation d'une session SSPI (Security Support Provider Interface) authentifiée avec le SSP Negotiate / NTLM. Après cela, DePriMon utilise Schannel.

SSPI est utilisé/non utilisé en fonction d'un drapeau particulier dans le fichier de configuration et peut utiliser les paramètres proxy locaux de la machine. L'implémentation est similaire à cet exemple fourni par Microsoft.

L'implémentation du logiciel malveillant TLS via Schannel s’apparente à cet exemple par Coast Research & Development. Cela inclut la création d'informations d'identification, l'exécution du handshake client et la vérification du certificat du serveur.

Figure 1. Une partie de l'implémentation SSPI à sa sortie du décompilateur Hex-Rays

Une fois la communication établie, la troisième étape chiffre et dé chiffre les messages manuellement à chaque fois.

Configuration

Les données de configuration de la troisième étape du DePriMon comptent 27 membres, ce qui est un nombre inhabituellement élevé pour un téléchargeur. Il est chiffré avec AES-256 et intégré dans le binaire.

Au cours de la première exécution, la troisième étape de DePriMon (le téléchargeur lui-même) déchiffre les données de configuration avec la clé 2 (voir la section IoCs), les chiffre avec la clé 3 et stocke le fichier de configuration chiffré dans un dossier temporaire. Le nom de fichier pour le fichier de configuration est créé par le processus suivant : A partir du deuxième octet, la valeur de la clé 2 est transformée en nombre en base 36 mais encodée avec un alphabet personnalisé suivant la logique : « abc...xyz012...789 ». L'extension du fichier de configuration est « .tmp ».

Voici un exemple de chemin de fichier de configuration : %temp%\rb1us0wm99sslpa1vx.tmp.

Lors de la deuxième exécution, le téléchargeur lit les données de configuration à partir du fichier, et non à partir de lui-même - de cette façon, l'attaquant peut facilement mettre à jour la configuration.

Grâce à sa conception sécurisée, la configuration n'est pas laissée en mémoire sous forme non chiffée. Chaque fois que le téléchargeur a besoin d'utiliser un élément du fichier de configuration, il déchiffre le fichier de configuration, récupère le membre et chiffre à nouveau le fichier.

Cette conception protège la fonction principale du logiciel malveillant - la communication C&C - contre les analyses de mémoire.

Figure 2. Une partie du code vu par le décompilateur Hex-Rays, qui illustre comment le logiciel malveillant DePriMon déchiffre le fichier de configuration, sauvegarde quelques membres dans des variables locales et le chiffre à nouveau.

D'intérêt dans le fichier de configuration sont :

  • Deux entrées pour les noms d'utilisateur et deux membres pour les mots de passe - pour le serveur proxy s'il est configuré sur la machine. Cela signifie que les attaquants se préparent à poursuivre leur attaque via un proxy avec des identifiants. Cependant, nous n'avons pas vu de fonctionnalité pour voler ces détails, il semble donc que cela se fasse dans une autre phase de l'attaque.
  • Trois entrées pour trois serveurs C&C - chacun d'eux utilisé à une occasion différente.
  • Trois entrées pour trois ports - chacun d'eux utilisé à une occasion différente.
  • Indicateurs indiquant si le téléchargeur initialise une connexion via Security Support Provider Interface (SSPI) avec un proxy possible ou seulement avec un socket (décrit plus loin).

Il est à noter qu'en plus des serveurs C&C extraits d'échantillons de logiciels malveillants, nous avons identifié d'autres domaines et serveurs probablement liés à ces logiciels malveillants.

Chiffrement

Le logiciel malveillant utilise l'algorithme de chiffrement AES avec trois clés différentes de 256 bits à des fins différentes (ces clés sont énumérées dans la section IoCs).

  • Première clé : Pour le déchiffrement de diverses chaînes de caractères sensibles dans le logiciel malveillant;
  • Deuxième clé : Pour le chiffrement et le déchiffrement des données de configuration en mémoire (comme décrit précédemment). Cette clé est également utilisée pour générer la troisième clé;
  • Troisième clé : Pour le chiffrement et le déchiffrement du fichier de configuration sur disque.

Cette clé n'est pas codée en dur, mais est plutôt dérivée d'un tableau de 32 octets qui est ensuite chiffré. Le tableau est généré comme suit : les 4 premiers octets sont le numéro de série du volume du lecteur système, et les 28 octets restants contiennent les valeurs 5 à 32. Ce tableau est chiffré avec la seconde clé, ce qui donne la troisième clé.

Conclusion

DePriMon est un téléchargeur exceptionnellement avancé et ses développeurs ont consacré des efforts supplémentaires à la mise en place de l'architecture et à l'élaboration des composants critiques.

DePriMon est téléchargé en mémoire et exécuté directement à partir de là en tant que DLL en utilisant la technique de chargement DLL réfléchissante. Il n'est jamais stocké sur disque. Il possède un fichier de configuration étonnamment volumineux avec plusieurs éléments intéressants, son chiffrement est correctement implémenté et protège efficacement la communication C&C.

De ce fait, DePriMon est donc un outil puissant, flexible et persistant conçu pour télécharger une charge utile et l'exécuter, et pour recueillir des informations de base sur le système et son utilisateur en cours de route.

Indicateurs de compromission (IoC)

Noms de détection d'ESET

Win32/DePriMon
Win64/DePriMon

SHA-1 hashes

02B38F6E8B54885FA967851A5580F61C14A0AAB6
03E047DD4CECB16F513C44599BF9B8BA82D0B7CB
0996C280AB704E95C9043C5A250CCE077DF9C8B2
15EBE328A501B1D603E66762FBB4583D73E109F7
1911F6E8B05E38A3C994048C759C5EA2B95CE5F7
2B30BE3F39DEF1F404264D8858B89769E6C032D9
2D80B235CDF41E09D055DD1B01FD690E13BE0AC7
6DB79671A3F31F7A9BB870151792A56276619DC1
6FAB7AA0479D41700981983A39F962F28CCFBE29
7D0B08654B47329AD6AE44B8FF158105EA736BC3
7E8A7273C5A0D49DFE6DA04FEF963E30D5258814
8B4F3A06BA41F859E4CC394985BB788D5F76C85C
94C0BE25077D9A76F14A63CBF7A774A96E8006B8
968B52550062848A717027C512AFEDED19254F58
9C4BADE47865E8111DD3EEE6C5C4BC83F2489F5B
AA59CB6715CFFF545579861E5E77308F6CAEAC36
C2388C2B2ED6063EACBA8A4021CE32EB0929FAD2
CA34050771678C65040065822729F44B35C87B0C
D38045B42C7E87C199993AB929AD92ADE4F82398
E272FDA0E9BA1A1B8EF444FF5F2E8EE419746384
E2D39E290201010F49652EE6116FD9B35C9AD882
F413EEE3CFD85A60D7AFC4D4ECC4445BB1F0B8BC

Domaines

Domain IP address
img.dealscienters[.]net 138.59.32.72
teknikgorus[.]com 88.119.179.17
wnupdnew[.]com 190.0.226.147
babmaftuh[.]com 185.56.89.196
alwatantrade[.]com 188.241.60.109
shayalyawm[.]com 5.226.168.124
elehenishing[.]com 185.225.17.77
almawaddrial[.]com 46.151.212.202
mdeastserv[.]com 46.151.212.201

Exemples de clés

Key 1: C097CF17DC3303BC8155534350464E50176ACA63842B0973831D8C6C8F136817
Key 2: 8D35913F80A23E820C23B3125ABF57901BC9A7B83283FB2B240193ABDEDE52B9
Key 3: Dérivées tel que décrit ci-haut.

Noms de fichiers

dpnvmrs.dll
hp3mlnv.dll
hp4mlnv.dll
hp5nhd.dll
hp6nhd.dll
hpjdnb64.dll
hpmdnel3b.dll
ifssvc.dll
ifssvcmgr.dll
msprtmon64.dll
msptromn.dll
plamgr.dll
ppcrlchk.dll
ppcrlupd.dll
prntapt.dll
prntqdl64.dll
pscript6f.dll
pscript6s.dll
shprn64.dll
stprn32.dll
winmnprt.dll

Techniques MITRE ATT&CK

Tactic ID Name Description
Persistence T1013 Port Monitors DePriMon installs one of its components as a port monitor for achieving persistence.
Defense Evasion T1036 Masquerading DePriMon places its components into the System32 folder with names mimicking common system DLLs.
T1107 File Deletion DePriMon can delete itself securely by overwriting its files with random data and then deleting them.
T1112 Modify Registry DePriMon adds registry entry in HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors to achieve persistence.
T1134 Access Token Manipulation DePriMon obtains a user token for obtaining information about the proxy settings on the machine.
T1140 Deobfuscate/Decode Files or Information DePriMon encrypts some of its strings and its configuration file using AES-256.
Discovery T1007 System Service Discovery DePriMon can list registered services on the system.
T1057 Process Discovery DePriMon can list running processes on the system.
T1082 System Information Discovery DePriMon collects various information about the system.
T1124 System Time Discovery DePriMon regularly checks system time and performs various actions based on it, such as uninstallation.
Command And Control T1043 Commonly Used Port DePriMon uses ports 443 and 8080 for C&C communication.
T1071 Standard Application Layer Protocol DePriMon uses HTTP for C&C communication.
T1090 Connection Proxy DePriMon uses local proxy settings to make its communication less suspicious.