Winnti: une attaque contre les chaînes d'approvisionnement - Les développeurs de jeux asiatiques sont au premier plan

Ce n'est pas la première fois que des attaquants attaquent l'industrie du jeu, compromettent les développeurs, ajoutent des portes dérobées à l'environnement de construction du jeu, puis distribuent des logiciels malveillants sous le couvert d'un environnement légitime. En avril 2013, Kaspersky Lab a signalé un incident similaire. Cette attaque est attribuée à un cyber-groupe appelé Winnti.

Récemment, les experts ESET ont été attirés par de nouvelles attaques contre les chaînes d'approvisionnement. Deux jeux et une plateforme de jeu ont été compromis pour introduire une porte dérobée. Ces attaques visent l'Asie et l'industrie du jeu, avec Winnti à nouveau derrière eux.


Trois cas, une porte dérobée


Malgré les différentes configurations de logiciels malveillants, les trois produits logiciels compromis comprenaient le même code de porte dérobée et ont commencé à utiliser le même mécanisme. Maintenant, il n'y a pas de portes dérobées dans deux produits, mais l'un est toujours distribué dans une version de Troie - ironiquement, ce jeu s'appelle Infestation, qui est publié par la société thaïlandaise Extreme Extreme. Nous essayons de contacter le développeur depuis début février, mais jusqu'à présent en vain.

Nous analyserons comment la charge utile malveillante est introduite, puis examinerons en détail la porte dérobée.

Mise en œuvre de la charge utile


Le code de charge utile s'exécute pendant l'exécution de l'exécutable trojanisé. Immédiatement après le point d'entrée PE, l'appel d'initialisation C Runtime standard ( __scrt_common_main_seh dans la figure ci-dessous) est intercepté pour lancer la charge utile malveillante avant toute autre chose (figure 2). Cela peut indiquer que les attaquants ont modifié la configuration de l'assembly et non le code source lui-même.



Figure 1. Point d'entrée net vers un fichier exécutable



Figure 2. Point d'entrée d'un exécutable compromis

Le code ajouté à l'exécutable déchiffre et lance la porte dérobée dans la RAM avant de reprendre l'exécution normale du code d'initialisation C Runtime et du code d'application hôte suivant. La charge utile intégrée a une structure spéciale, illustrée dans la figure ci-dessous, qui est interprétée par le code de décompression ajouté.



Figure 3. Structure de charge utile intégrée

Il contient la clé RC4 (XOR chiffrée avec 0x37), qui est utilisée pour déchiffrer le nom de fichier et le fichier DLL incorporé.

Charge utile malveillante


La charge utile malveillante réelle ne contient que 17 Ko de code et de données.

La configuration


Les données de configuration illustrées dans la figure ci-dessous sont une liste de lignes séparées par des espaces.



Figure 4. Données de configuration de la charge utile

La configuration comprend quatre champs:

  1. URL du serveur de gestion C&C.
  2. La variable (t) utilisée pour déterminer le délai d'expiration en millisecondes avant de continuer. Le temps d'attente est sélectionné de manière aléatoire entre 2/3 et 5/3 t.
  3. Ligne identifiant la campagne.
  4. Une liste de noms de fichiers exécutables, séparés par un point-virgule. Si l'un d'eux fonctionne, la porte dérobée arrête son exécution.

Nous avons identifié cinq versions de la charge utile:



Dans les trois premières options, le code n'a pas été recompilé, mais les données de configuration ont été modifiées dans le fichier DLL lui-même. Le reste du contenu est une copie d'octets.

Infrastructure C&C


Les noms de domaine sont choisis de manière à ressembler aux sites des développeurs d'applications compromises. Le domaine de niveau supérieur est configuré pour rediriger vers le site légitime correspondant à l'aide du service Namecheap, tandis que le sous-domaine indique un serveur C&C malveillant.



Au moment d'écrire ces lignes, aucun des domaines n'est disponible, les serveurs C&C ne répondent pas.

Rapport d'étude


L'identifiant du bot est généré à partir de l'adresse MAC de la machine. La porte dérobée transmet les informations de la machine au serveur C&C, y compris le nom d'utilisateur, le nom de l'ordinateur, la version Windows et la langue du système, puis attend une commande. Les données sont cryptées avec XOR à l'aide de la clé « *&b0i0rong2Y7un1 » et encodées avec base64. Les données reçues du serveur C&C sont cryptées à l'aide de la même clé.

Équipes


Une simple porte dérobée ne prend en charge que quatre équipes pouvant être utilisées par des attaquants:

- DownUrlFile
- DownRunUrlFile
- RunUrlBinInMem
- UnInstall

Les noms des équipes parlent d'eux-mêmes. Ils permettent aux attaquants d'exécuter des exécutables supplémentaires à partir d'une URL donnée.

Peut-être que la dernière commande est moins évidente. UnInstall ne supprime pas le malware du système. En fin de compte, il est intégré dans un fichier exécutable légitime qui fonctionnera toujours. Au lieu de supprimer quelque chose, la commande désactive le code malveillant en définissant la valeur sur 1 pour la clé de registre:

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\ImageFlag

Après le démarrage de la charge utile, la valeur du registre est demandée et, si elle est spécifiée, l'exécution est annulée. Peut-être que les attaquants tentent de réduire la charge sur leurs serveurs C&C en évitant les rappels de victimes sans intérêt.

Deuxième étape


Selon la télémétrie, l'une des charges utiles de deuxième étape envoyées aux victimes est Win64 / Winnti.BN. Pour autant que nous puissions en juger, le compte-gouttes de ce malware est téléchargé via HTTP depuis api.goallbandungtravel[.]com . Nous avons vu qu'il était installé en tant que service Windows et en tant que DLL dans C:\Windows\System32 utilisant les noms de fichiers suivants:

- cscsrv.dll
- dwmsvc.dll
- iassrv.dll
- mprsvc.dll
- nlasrv.dll
- powfsvc.dll
- racsvc.dll
- slcsvc.dll
- snmpsvc.dll
- sspisvc.dll

Les échantillons que nous avons analysés étaient suffisamment grands - environ 60 Mo. Cependant, ce n'est que de la visibilité, car la taille réelle ou le fichier PE est de 63 à 72 Ko, selon la version. Beaucoup de fichiers propres sont simplement ajoutés aux fichiers malveillants. Cela est probablement dû à un composant qui réinitialise et installe un service malveillant.

Après avoir démarré le service, il ajoute l'extension .mui à son .mui DLL et le déchiffre à l'aide de RC5. Le fichier MUI déchiffré contient un code indépendant de la position avec le décalage 0. La clé RC5 est obtenue à partir du numéro de série du disque dur et de la ligne « f@Ukd!rCto R$. " Nous n'avons pu obtenir ni les fichiers MUI ni le code qui les installe en premier. Ainsi, le but exact du service malveillant nous est inconnu.

Les versions récentes des logiciels malveillants incluent un mécanisme de mise à jour automatique utilisant le serveur C & C http://checkin.travelsanignacio[.]com . Ce serveur a servi la dernière version des fichiers MUI chiffrés avec la clé statique RC5. Au cours de nos recherches, ce serveur C&C n'a pas répondu.

Buts


Commençons par ceux à qui la campagne n'est pas spécifiquement destinée. Au début de la charge utile, le malware vérifie si la langue du système est le russe ou le chinois (voir la figure ci-dessous). Si la réponse est oui, le programme cesse de fonctionner. Il est impossible de contourner cette exception - les attaquants ne sont pas fondamentalement intéressés par les ordinateurs avec ces paramètres de langue.



Figure 5. Vérification de la langue avant de lancer la charge utile

Statistiques de distribution


Selon la télémétrie, la plupart des infections se sont produites en Asie, en particulier en Thaïlande. Étant donné la popularité de l'application compromise, qui est toujours distribuée par le développeur, il n'est pas surprenant que le nombre de victimes s'élève à des dizaines et des centaines de milliers.



Conclusion


Les attaques de la chaîne d'approvisionnement sont difficiles à détecter du côté des utilisateurs. Il est impossible d'analyser tous les logiciels en cours d'exécution, ainsi que toutes les mises à jour recommandées. Par défaut, l'utilisateur fait confiance aux développeurs et suppose que leurs fichiers ne contiennent pas de code malveillant. C'est probablement la raison pour laquelle plusieurs cybergroupes ciblent les attaques contre les éditeurs de logiciels - compromettre permettra de créer un botnet, dont la taille est comparable à la popularité des logiciels de Troie. Cette tactique a un inconvénient: lorsque le système sera révélé, les attaquants perdront le contrôle du botnet et les utilisateurs pourront nettoyer le système en installant la prochaine mise à jour.

Les motivations du cybergroupe Winnti sont actuellement inconnues. Peut-être que les attaquants recherchent un gain financier ou envisagent d'utiliser le botnet dans le cadre d'une opération plus vaste.

Les produits ESET détectent la menace comme Win32 / HackedApp.Winnti.A, Win32 / HackedApp.Winnti.B, la charge utile comme Win32 / Winnti.AG, la deuxième étape comme Win64 / Winnti.BN.

Des indicateurs de compromis sont disponibles ici .

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


All Articles