Maison >Opération et maintenance >Sécurité >Comment mettre en œuvre l'analyse des nouvelles variantes de Winnti Group

Comment mettre en œuvre l'analyse des nouvelles variantes de Winnti Group

王林
王林avant
2023-05-12 22:01:041181parcourir

La nouvelle porte dérobée modulaire PipeMon du groupe Winnti a été découverte en février 2020. Ses principales cibles sont les sociétés de jeux et de vidéos en ligne multijoueurs coréennes et taïwanaises, et le malware peut lancer des attaques sur la chaîne d'approvisionnement. Les attaquants peuvent intégrer des chevaux de Troie dans des jeux publiés ou attaquer des serveurs de jeux et utiliser la monnaie du jeu pour obtenir des avantages financiers. Le groupe Winnti est actif depuis 2012 et cible les attaques de la chaîne d'approvisionnement dans l'industrie du logiciel. Récemment, les chercheurs d’ESET ont également découvert des attaques visant plusieurs universités de Hong Kong.

Analyse technique

Deux variantes de PipeMon ont été découvertes dans les entreprises ciblées. La première étape de PipeMon consiste à lancer un fichier exécutable protégé par mot de passe et intégré dans .rsrc. Démarrez le programme et écrivez RARSFX dans setup0.exe dans le répertoire généré automatiquement, fournissez le mot de passe via les paramètres et utilisez CreateProcess pour exécuter RARSFX, comme indiqué ci-dessous :

setup0.exe -p*|T/PMR{|T2^LWJ*

Le mot de passe de chaque échantillon est différent, puis extrayez le contenu de RARSFX à % Dans TMP%RarSFX0 :

CrLnc.dat – charge utile cryptée

Duser.dll – Contournement UAC

osksupport.dll – Contournement UAC

PrintDialog.dll – initialisation du malware

PrintDialog.exe – chargement de Pri ntDialog .dll Fichiers Windows légaux

setup.dll - dll d'installation

setup.exe - programme principal

S'il y a un conflit dans le nom du dossier, le numéro à la fin de la chaîne RarSFX0 sera incrémenté jusqu'à ce qu'il n'y ait plus conflits. Après avoir extrait le fichier, setup.exe sera exécuté sans paramètres, en utilisant LoadLibraryA pour charger setup.dll. Après le chargement, setup.dll vérifiera les paramètres sous la forme « -x:n », n étant différent selon les modes de fonctionnement. Les paramètres pris en charge et leurs comportements correspondants sont présentés dans le tableau 1.

如何实现Winnti Group新变体分析

RARSFX exécute setup.exe sans arguments, vérifiant s'il s'exécute avec des privilèges. Sinon, déterminez si la version de Windows est antérieure à Windows 7 build 7601. Si les conditions sont remplies, l'usurpation d'identité par jeton sera utilisée pour obtenir les autorisations. Sinon, il essaiera d'utiliser une technique de contournement UAC différente, qui peut installer la charge utile dans l'un des éléments suivants :

C:WindowsSystem32spoolprtprocsx64DEment.dll

C:WindowsSystem32spoolprtprocsx64EntAppsvc.dll

C:WindowsSystem32spoolprtprocsx64Interactive.

attaquer plutôt plutôt que de sélectionner aléatoirement l'emplacement de la DLL malveillante, setup.dll enregistre le chargeur de DLL en tant qu'imprimante alternative en définissant la valeur de registre suivante :


HKLMSYSTEMControlSet001ControlPrintEnvironmentsWindows x64Print ProcessorsPrintFiiterPipelineSvcDriver = "DEment.dll"


HK LMSYSTEMCurrentControlSetControlPrintEnvironmentsWindows x 64Processeurs d'impressionlltdsvc1Driver = " "ENTAPPSVC.DLL"


Veuillez faire attention aux fautes d'orthographe dans PrintFiiterPipelinesvc (car n'importe quel nom peut être utilisé, il n'a aucun effet sur l'installation du processeur d'impression).

Après avoir enregistré le processeur d'impression, PipeMon redémarre le service de spouleur d'impression (spoolsv.exe), qui chargera le processus d'impression malveillant. Le service Print Spooler démarre à chaque démarrage du PC, garantissant la persistance des programmes malveillants. Selon le programme d'installation, CrLnc.dat est écrit à l'emplacement suivant dans le registre : 69ACAA10 E52D

L'ensemble du processus d'exécution de PipeMon Comme le montre la figure ci-dessous :

PipeMon


PipeMon est une porte dérobée modulaire. Chaque module est une DLL qui peut exporter la fonction IntelLoader et utiliser la technologie de chargement réfléchissant pour le chargement. Chaque module a des fonctions différentes, comme indiqué dans le tableau 2.

如何实现Winnti Group新变体分析

Le chargeur responsable du chargement des modules principaux (ManagerMain et GuardClient) est Win32CmdDll.dll, situé dans le répertoire du processeur d'impression. Les modules sont stockés cryptés au même emplacement et sont nommés comme suit :

banner.bmp如何实现Winnti Group新变体分析

certificate.cert

License.hwp

JSONDIU7c9djE

D8JNCKS0DJE

B0SDFUWEk NCj.logN

. hwp est coréen text Le gestionnaire utilise une extension très populaire en Corée du Sud. Le module est chiffré par R** et la clé de déchiffrement est « Com ! 123Qasdz' est codé en dur dans chaque module. Win32CmDll.dll décrypte et injecte les modules ManagerMain et GuardClient. Le module ManagerMain se charge de décrypter et d'injecter le module Communication, tandis que le module GuardClient veillera à ce que le module Communication soit exécuté et rechargé si nécessaire. Le diagramme ci-dessous décrit le fonctionnement de PipeMon.

如何实现Winnti Group新变体分析

Win32CmDll.dll tente d'abord d'injecter les modules ManagerMain et GuardClient dans un processus nommé l'un des suivants : lsass.exe, wininit.exe ou lsm.exe. Si cela échoue, il tentera d'injecter l'un des processus de service Windows enregistrés, à l'exclusion des processus nommés spoolsv.exe, ekrn.exe (ESET), avp.exe (Kaspersky) ou dllhost.exe. Si tout le reste échoue, il essaiera les processus taskhost.exe, taskhostw.exe ou explorer.exe.

D'autres modules peuvent être chargés à la demande à l'aide de commandes dédiées, mais aucun d'entre eux n'a encore été découvert. Les modules communiquent via des canaux nommés. Le canal de communication entre chaque module utilise deux canaux nommés, un pour l'envoi et un pour la réception.

如何实现Winnti Group新变体分析La chaîne %CNC_DEFINED% est reçue du serveur C&C, la variable %B64_TIMESTAMP% est l'horodatage encodé en base64 :

如何实现Winnti Group新变体分析

Le module de communication est responsable de la gestion de la communication entre le serveur C&C et les autres modules via le pipeline, son adresse C&C codée en dur dans le module ManagerMain. Le protocole de communication est TLS sur TCP, géré via la bibliothèque HP-Socket. Tous les messages sont cryptés R** à l'aide de clés codées en dur. Si le contenu transféré est supérieur ou égal à 4 Ko, zlib est utilisé pour le compresser en premier.

如何实现Winnti Group新变体分析Initie la communication avec le serveur C&C, en envoyant d'abord un message de balise contenant les informations suivantes :

Version du système d'exploitation

adresses physiques des adaptateurs réseau connectés concaténées avec %B64_TIMESTAMP%

adresse IP locale de la victime

version/campagne de porte dérobée ID ; nous avons observé les valeurs suivantes "1.1.1.4beat"

L'attaquant a également utilisé une version mise à jour de PipeMon, remplaçant R** par un simple XOR, en utilisant 0x75E8EEAF comme clé, supprimant tout chaînes codées en dur, et en utilisant des valeurs aléatoires pour nommer les canaux de communication inter-modules. Seul le chargeur principal est stocké sous forme de fichier sur le disque, et les modules mis à jour sont décrits dans le tableau suivant :

Modifications du format de communication C&C :

如何实现Winnti Group新变体分析

La configuration de la porte dérobée est cryptée et intégrée dans la DLL du chargeur .

如何实现Winnti Group新变体分析


Le module PipeMon et l'installateur utilisent la même signature, et le certificat a peut-être été volé par l'organisation Winnti lors d'une attaque précédente.

如何实现Winnti Group新变体分析

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer