Comment les créateurs de logiciels malveillants tentent d'éviter sa détection: nous analysons Spy.GmFUToMitm comme exemple



Image: Unsplash

Des experts du Positive Technologies Security Center (PT Expert Security Center) ont découvert un échantillon intéressant de logiciels malveillants se propageant dans le segment Internet chinois. Ce logiciel est utilisé, entre autres, pour effectuer des attaques MITM, et sa principale caractéristique est la combinaison de diverses techniques pour éviter la détection. Nous avons décidé de les analyser pour montrer comment les développeurs de logiciels malveillants cachent son activité.

Comment tout a commencé


Le système d'analyse du trafic réseau a attiré notre attention sur le fait qu'une application malveillante demande régulièrement une image avec du contenu supplémentaire inclus. Le téléchargement a eu lieu à partir d'une ressource légitime pour stocker des images - imgsa.baidu.com. De plus, il s'est avéré que c'était une image avec un niveau de gentillesse écrasant :) Et combien blasphématoire après cela, la tentative des attaquants de l'utiliser pour cacher diverses charges malveillantes semblait blasphématoire!



Fig. 1. Image utilisée pour masquer le fait de la livraison de la charge utile

Pour commencer, pour collecter les données initiales et comparer les échantillons, nous avons organisé une recherche d'échantillons similaires - et en avons trouvé quelques-uns. Cela a été rendu possible grâce aux données caractéristiques de l'interaction réseau et à notre vaste base de données de trafic malveillant. En particulier, un schéma clair peut être observé dans le trafic réseau, schéma consistant en la répétition des mêmes actions par une application malveillante.



Fig. 2. Trafic réseau avec des schémas marqués

Nous avons examiné la première requête, en réponse, le serveur a renvoyé une configuration cryptée (Fig. 3) contenant les adresses des images qui contenaient la charge utile. Ces données sont stockées dans hxxp://63634[.]top:8081/koded .



Fig. 3. Configuration cryptée

Décryptage des données


Les données reçues sont déchiffrées par l'algorithme DES en mode livre de codes électroniques avec la clé 0x6a 0x5f 0x6b 0x2a 0x61 0x2d 0x76 0x62 contenue dans le corps du programme malveillant. Après décryptage, le texte en clair est une chaîne (Fig. 4), chacune contenant un lien vers l'image. Basé sur l'égalité des hachages MD5, c'est la même image. Apparemment, pour la stabilité du schéma de livraison, les attaquants ont localisé les mêmes données à différentes adresses.



Fig. 4. Exemple de configuration de chargeur de démarrage déchiffré

En utilisant les données obtenues, l'étape suivante est que le téléchargeur malveillant lance le téléchargement de l'image. Il en coupe les 5120 premiers octets (caneton et chiot) et n'utilise que la charge utile (Fig. 5), qui suit immédiatement à partir du 5121e octet.



Fig.5. Exemple de charge utile.

Après avoir déchiffré les données, nous avons obtenu la configuration de format suivante, similaire à celle obtenue lors de la première étape. C'est une portion de plus des liens d'image, mais cette fois tous les hachages MD5 sont différents et il y a deux suffixes de caractères à la fin de chaque ligne:



Fig. 6. Deuxième série de liens et suffixes suspects

Algorithme malveillant


Maintenant, ce sont de vrais modules de charge utile. Il s'est avéré que les deux caractères à la fin de chaque ligne sont utilisés pour sélectionner une image spécifique, c'est-à-dire une charge utile spécifique. Tout d'abord, une ligne avec le suffixe «AD» est utilisée (Fig. 7). Ce choix est déjà prédéterminé au stade de la création du programme malveillant. En d'autres termes, la séquence de chargement est prédéfinie sous la forme de suffixes à deux chiffres.



Fig. 7. Sélection d'un lien avec le suffixe "AD"

L'image téléchargée contient déjà un module malveillant, cela peut être dit au moins en fonction de sa taille. Les données sont toujours masquées sous forme d'images et situées au même décalage de 5120 octets. Après avoir supprimé les octets supplémentaires, le chargeur extrait, vérifie la quantité de hachage, puis déchiffre un module appelé TkRep.dll dans le fichier PE.



Fig. 8. Un exemple d'un module chiffré dans le corps de l'image et sa somme de hachage

Cette bibliothèque est chargée dans un processus malveillant et vérifie tout d'abord l'environnement dans lequel le module s'exécute:



Fig. 9. Vérification de l'environnement de virtualisation

Vérifie parmi les processus en cours d'exécution la présence de processus portant les noms devenv.exe, OLLYDBG.EXE, Dbgview.exe, windbg.exe, MSDEV.exe, Delphi32.exe, E.exe, PCHunter32.exe, PCHunter64.exe - ainsi que la présence d'outils antivirus.



Fig. 10. Vérification du processus

Effectue une vérification de débogage standard.



Fig. 11. Vérification du début du processus dans le contexte du débogueur

Recherche les tuyaux ouverts répertoriés dans le tableau.
\\. \ FltMouseKb\\. \ GameGuard\\. \ GxWfpFlt
\\. \ XxGamesFilter\\. \ GpeNetSafe\\. \ TeSafe
\\. \ Sdriver\\. \ PowerChange\\. \ xspeed
\\. \ gmMemProt\\. \ diafahbb

L'étape suivante consiste à enregistrer le nœud infecté sur le serveur malveillant, en envoyant des informations chiffrées sur le nœud infecté avec une requête POST au protocole HTTP (figure 12).



Fig. 12. Demande d'enregistrement sur le serveur des cybercriminels

Il est à noter que la réponse du serveur contient toujours les mêmes données, et de plus, seul le code de réponse du serveur est pris en compte par le client.

Comment un malware cache son activité


Conformément à une séquence donnée de charges utiles, nous procédons à l'étude des éléments suivants. Son suffixe est «AR». Le client, conformément au schéma existant, télécharge la prochaine concaténation de l'image avec la charge chiffrée à partir du service de stockage d'images Baidu Images, déchiffre le module et le démarre dans un nouveau processus avec un nom aléatoire. À notre avis, cette fonctionnalité sert à rendre une application malveillante inoffensive. Il s'agit souvent d'un client d'un jeu en ligne (Fig. 13). Et c'était une autre technique de déguisement.



Fig. 13. Interface de jeu en ligne

Après cette manœuvre distrayante, le processus malveillant passe à l'étape de la fixation sur le nœud infecté. Pour ce faire, il utilise des fonctionnalités similaires à celles des programmes rootkit. En particulier, l'introduction de son propre pilote sécurisé dans le système.

Et c'est comme ça que ça se passe. Dans la configuration décryptée, la charge avec le suffixe "AE" est sélectionnée. Il s'agit de la bibliothèque TaskReportDLL.dll. Il a les mêmes fonctions que la bibliothèque TkRep.dll de l'étape précédente - envoyer des informations sur le système et vérifier la disponibilité des équipements de protection.

Ensuite, la bibliothèque RealWorkDll.dll est téléchargée. Parmi les fonctions de RealWorkDll.dll, il est important de télécharger le pilote, qui est partiellement protégé par VMPROTECT, et le fichier PE que ce pilote va installer sur le système.



Fig. 14. Chemin d'accès à la base de données des pilotes

Ensuite, les fichiers PE utilisés pour installer le pilote sont supprimés et cette étape de réparation est terminée.

Une recherche dans la ligne de base de données des pilotes nous a menés au référentiel miroir de ressources rootkit [.] Com, dans lequel une instance du rootkit FUTo avec le nom correspondant dans le chemin «objfre_wxp_x86» a été trouvée (Fig. 14). Dans le blog de notre entreprise, ce rootkit a été envisagé en 2006 .

Examinons plus en détail le travail dans le système du pilote SDriverBlogx86 installé par le module RealWorkDll.dll. Lors de la première étape, les données d'enregistrement du client sont transmises au réseau. POST est utilisé comme demande, mais maintenant sur le numéro de port 8081 (Fig. 15). Apparemment, ce port est utilisé pour recevoir des données si l'activité sur le système infecté a atteint le stade d'activation du rootkit «FUTo».



Fig. 15. Demande de C2 du pilote installé dans le système

L'accès au serveur des cybercriminels a lieu sous forme cryptée, les données avant le cryptage sont des informations sur le système. Les séparateurs des champs de données, le format de présentation et le nombre de champs sont les mêmes pour tous les modules (Fig. 16).



Fig. 16. Informations système pour identifier un nœud infecté

De plus, le mécanisme de fonctionnement du pilote intégré au système coïncide avec le chargeur de démarrage initiateur - la seule différence étant que les liens vers les images ont cette fois été demandés au port rootkit et que le chemin de stockage de la configuration est passé de / koded à / qqwe. Peut-être que cela est en quelque sorte lié aux services qq.com et wechat.com.

La liste des modules que le processus reçoit contient une liste de fichiers PE. Mais dans ce cas, au lieu du suffixe à deux lettres pour sélectionner la charge, à la fin de la ligne contient une clé sous la forme d'un nom de fichier:



Fig. 17. Configuration reçue par le pilote corrigé dans le système

Après le chargement des images, la charge utile est également située à un décalage de 5120 octets. La structure de charge utile du pilote installé inclut la clé de la liste précédente sous la forme d'un nom de fichier, puis le fichier PE lui-même. Contrairement aux étapes précédentes, la charge utile n'est pas chiffrée ici.



Fig. 18. Charge utile reçue par le rootkit installé dans le système

Parmi toutes les charges utiles reçues à ce stade, il convient de noter le module de conduite des attaques MITM. Son hachage est égal à b9fcf48376083c71db0f13c9e344c0383bafa5b116fbf751672d54940082b99a , l'image avec elle est stockée à cette adresse .

Le module résultant recherche les processus avec les noms devenv.exe, OLLYDBG.EXE, Dbgview.exe, windbg.exe, MSDEV.exe, Delphi32.exe, E.exe, PCHunter32.exe, PCHunter64.exe, ainsi que les processus ZhuDongFangYu, 360Safe, 360Tray.

En cours de travail à l'aide d'une demande GET, les certificats server.crt, server.key, server.der, startcom.crt sont téléchargés.



Fig. 19. Demande de certificats

Les noms de classe du module pour mener une attaque MITM ne laissent aucun doute sur les intentions des attaquants (Fig. 20).



Fig. 20. Noms de classe du module pour mener une attaque MITM

Conclusion


Ce malware se compose d'un chargeur de démarrage, d'un fichier de déguisement, d'un pilote de rootkit et d'un module pour mener une attaque d'homme au milieu. Pour la livraison secrète de charge utile, le logiciel utilise une technique pour épisser des données avec des images JPEG. Pour les serveurs de commandes, les attaquants enregistrent des noms dans les zones de domaine top, bid, ainsi que sur la base de plateformes cloud.

Voici quelques méthodes pour masquer l'activité utilisée par les développeurs de logiciels malveillants:

  • déguisement en application juridique,
  • masquer le trafic d'images,
  • amarrage en tant que rootkit.

La menace considérée est détectée par le système d'analyse du trafic réseau PT Network Attack Discovery comme Spy.GmFUToMitm.

CIO
1953db709a96bc70d86f7dfd04527d3d0cb7c94da276ddf8f0ef6c51630a2915
1ab1b2fe3ce0fd37a0bb0814a2cac7e974f20963800f43d2f5478fc88c83a3da
1c8dbaf0a5045e2b4a6787635ded8f51d8e89a18e398c0dd79b1b82a968df1a0
9b7082ac4165b25a3b22f2aafdd41ea5f3512a76693f6a6b3101873a9cded961
9cee3f6d6e39adfa0d4712541c070b9c2423275698be0c6cd6cd8239d8793250
b9fcf48376083c71db0f13c9e344c0383bafa5b116fbf751672d54940082b99a
df3e7b04d988cf5634ec886321cb1ac364a46181e7a63f41f0788753e52dcf34
eb67c1d69eb09e195b8333e12c41a0749e7e186c9439f1e2c30f369712ce2c12
63634.top
anli.bid
shangdai.bid
b-blog.oss-cn-beijing.aliyuncs.com

Auteurs : Dmitry Makarov, Evgeny Ustinov, Positive Technologies

Source: https://habr.com/ru/post/fr477916/


All Articles