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.
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.
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 :
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 :C:WindowsSystem32spoolprtprocsx64DEment.dll
C:WindowsSystem32spoolprtprocsx64EntAppsvc.dll
C:WindowsSystem32spoolprtprocsx64Interactive.
HKLMSYSTEMControlSet001ControlPrintEnvironmentsWindows x64Print ProcessorsPrintFiiterPipelineSvcDriver = "DEment.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 E52DHK LMSYSTEMCurrentControlSetControlPrintEnvironmentsWindows x 64Processeurs d'impressionlltdsvc1Driver = " "ENTAPPSVC.DLL"
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.
banner.bmp
certificate.cert License.hwpJSONDIU7c9djE
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.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.
La chaîne %CNC_DEFINED% est reçue du serveur C&C, la variable %B64_TIMESTAMP% est l'horodatage encodé en base64 :
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.
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 :
La configuration de la porte dérobée est cryptée et intégrée dans la DLL du chargeur .
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.
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!