WinorDLL64 : Une porte dérobée du vaste arsenal Lazarus ?

WinorDLL64 : Une porte dérobée du vaste arsenal Lazarus ?

Nœud source: 1975596

La région ciblée et le chevauchement du comportement et du code suggèrent que l'outil est utilisé par le tristement célèbre groupe APT aligné sur la Corée du Nord

Les chercheurs d'ESET ont découvert l'une des charges utiles du Téléchargeur Wslink que nous avons découvert en 2021. Nous avons nommé cette charge utile WinorDLL64 en fonction de son nom de fichier WinorDLL64.dll. Wslink, qui avait le nom de fichier WinorLoaderDLL64.dll, est un chargeur pour les binaires Windows qui, contrairement à d'autres chargeurs de ce type, s'exécute en tant que serveur et exécute les modules reçus en mémoire. Comme le suggère le libellé, un chargeur sert d'outil pour charger une charge utile, ou le logiciel malveillant réel, sur le système déjà compromis. Le vecteur de compromis Wslink initial n'a pas été identifié.

La charge utile Wslink initialement inconnue a été téléchargée sur VirusTotal depuis la Corée du Sud peu de temps après la publication de notre article de blog et a atteint l'une de nos règles YARA basées sur le nom unique de Wslink WinorDLL64. En ce qui concerne Wslink, la télémétrie ESET n'a vu que quelques détections - en Europe centrale, en Amérique du Nord et au Moyen-Orient.

La WinorDLL64 la charge utile sert de porte dérobée qui acquiert notamment de nombreuses informations système, fournit des moyens de manipulation de fichiers, tels que l'exfiltration, l'écrasement et la suppression de fichiers, et exécute des commandes supplémentaires. Fait intéressant, il communique via une connexion qui a déjà été établie par le chargeur Wslink.

En 2021, nous n'avons trouvé aucune donnée suggérant que Wslink est un outil d'un acteur menaçant connu. Cependant, après une analyse approfondie de la charge utile, nous avons attribué WinorDLL64 au groupe Lazarus APT avec une faible confiance basée sur la région ciblée et un chevauchement à la fois du comportement et du code avec des échantillons Lazarus connus.

Actif depuis au moins 2009, ce tristement célèbre groupe aligné sur la Corée du Nord est responsable d'incidents très médiatisés tels que le Piratage de Sony Pictures Entertainment et des dizaines de millions de dollars cyberbraquages ​​en 2016, WannaCryptor (alias WannaCry) en 2017, et une longue histoire d'attaques perturbatrices contre Infrastructures publiques et critiques sud-coréennes depuis au moins 2011. L'US-CERT et le FBI appellent ce groupe COBRA CACHÉ.

Basé sur notre une connaissance approfondie des activités et des opérations de ce groupe, nous pensons que Lazarus se compose d'une grande équipe qui est systématiquement organisée, bien préparée et composée de plusieurs sous-groupes qui utilisent un grand ensemble d'outils. L'année dernière, nous découvert un outil Lazarus qui a profité de la CVE - 2021‑21551 vulnérabilité pour cibler un employé d'une entreprise aérospatiale aux Pays-Bas et un journaliste politique en Belgique. C'était le premier abus enregistré de la vulnérabilité; en combinaison, l'outil et la vulnérabilité ont conduit à l'aveuglement de la surveillance de toutes les solutions de sécurité sur les machines compromises. Nous avons également fourni une description détaillée de la structure de la machine virtuelle utilisé dans les échantillons de Wslink.

Ce billet de blog explique l'attribution de WinorDLL64 à Lazarus et fournit une analyse de la charge utile.

Liens vers Lazare

Nous avons découvert des chevauchements dans le comportement et le code avec des exemples Lazarus de Opération GhostSecret et par Implant Bankshot décrit par McAfee. La description des implants dans les articles GhostSecret et Bankshot contient des chevauchements dans la fonctionnalité avec WinorDLL64 et nous avons trouvé un chevauchement de code dans les exemples. Dans cet article de blog, nous n'utiliserons que le FE887FCAB66D7D7F79F05E0266C0649F0114BA7C échantillon de GhostSecret pour comparaison avec WinorDLL64 (1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F), sauf indication contraire.

Les détails suivants résument les faits à l'appui de notre attribution de faible confiance à Lazarus :

1. Victimologie

  • Des collègues chercheurs d'AhnLab ont confirmé les victimes sud-coréennes de Wslink dans leur télémétrie, ce qui est un indicateur pertinent compte tenu des cibles traditionnelles de Lazarus et que nous n'avons observé que quelques coups.

Figure 1. Victime sud-coréenne signalée, où mstoned7 est le chercheur d'Ahnlab

2. Malware

  • Le dernier échantillon GhostSecret rapporté par McAfee (FE887FCAB66D7D7F79F05E0266C0649F0114BA7C) date de février 2018 ; nous avons repéré le premier échantillon de Wslink fin 2018 et d'autres chercheurs ont signalé des résultats en août 2018, qu'ils ont divulgués après notre publication. Par conséquent, ces échantillons ont été repérés à une période de temps relativement courte.
  • La En-têtes riches en PE indiquent que le même environnement de développement et des projets de taille similaire ont été utilisés dans plusieurs autres échantillons connus de Lazarus (par exemple, 70DE783E5D48C6FBB576BC494BAF0634BC304FD6; 8EC9219303953396E1CB7105CDB18ED6C568E962). Nous avons trouvé ce chevauchement en utilisant les règles suivantes qui ne couvrent que ces échantillons Wslink et Lazarus, qui est un indicateur avec un faible poids. Nous les avons testés sur La rétrochasse de VirusTotal et notre corpus de fichiers internes.

rich_signature.length == 80 et
pe.rich_signature.toolid(175, 30319) == 7 et
pe.rich_signature.toolid(155, 30319) == 1 et
pe.rich_signature.toolid(158, 30319) == 10 et
pe.rich_signature.toolid(170, 30319) >= 90 et
pe.rich_signature.toolid(170, 30319) <= 108

Cette règle peut être traduite par la notation suivante qui est plus lisible et utilisée par VirusTotal, où l'on peut voir la version du produit et l'ID de build (VS2010 version 30319), nombre et type de fichiers source/objet utilisés ([LTCGC++] où LTCG signifie Link Time Code Generation, [ASM], [ C ]), et le nombre d'exportations ([EXP]) dans la règle :

[LTCG C++] VS2010 build 30319 nombre = 7
[EXP] VS2010 build 30319 nombre = 1
[ASM] VS2010 build 30319 nombre = 10
[ C ] VS2010 build 30319 compte dans [ 90 .. 108 ]

  • L'article de GhostSecret décrivait "un composant unique de collecte de données et d'installation d'implants qui écoute sur le port 443 les connexions entrantes du serveur de contrôle" qui fonctionnait également en tant que service. Il s'agit d'une description précise du comportement du téléchargeur Wslink, à l'exception du numéro de port, qui peut varier en fonction de la configuration. Pour résumer, même si la mise en œuvre est différente, les deux servent le même objectif.
  • Le chargeur est virtualisé par Oreans' Code Virtualizer, qui est un protecteur commercial utilisé fréquemment par Lazare.
  • Le chargeur utilise le Module de mémoire bibliothèque pour charger des modules directement depuis la mémoire. La bibliothèque n'est pas couramment utilisée par les logiciels malveillants, mais elle est très populaire parmi les groupes alignés sur la Corée du Nord tels que Lazarus et Kimsuky.
  • Chevauchement dans le code entre WinorDLL64 et GhostSecret que nous avons trouvé lors de notre analyse. Les résultats et la signification dans l'attribution sont répertoriés dans le tableau 1.

Tableau 1. Similitudes entre WinorDLL64 et GhostSecret et leur importance dans l'attribution des deux au même acteur menaçant

Autres similitudes entre WinorDLL64 et GhostSecret Impact
Chevauchement de code dans le code chargé d'obtenir l'architecture du processeur Faible
Chevauchement de code dans la manipulation du répertoire en cours Faible
Chevauchement de code dans l'obtention de la liste des processus Faible
Chevauchement de code dans l'envoi de fichiers Faible
Chevauchement des comportements dans les processus de listage Faible
Chevauchement de comportement dans la manipulation du répertoire en cours Faible
Chevauchement de comportement dans la liste des fichiers et des répertoires Faible
Chevauchement des comportements dans les volumes de référencement Faible
Chevauchement de comportement dans les fichiers de lecture/écriture Faible
Chevauchement de comportement dans la création de processus Faible
Chevauchement considérable des comportements dans la suppression sécurisée des fichiers Faible
Chevauchement considérable des comportements lors de l'arrêt des processus Faible
Chevauchement considérable des comportements dans la collecte des informations système Faible

Le chevauchement de code dans la fonctionnalité d'envoi de fichiers est mis en évidence dans la figure 2 et la figure 3.

Figure 2. GhostSecret envoyant un fichier

Figure 3. Wslink envoyant un fichier

L'analyse technique

WinorDLL64 sert de porte dérobée qui acquiert notamment de nombreuses informations système, fournit des moyens de manipulation de fichiers et exécute des commandes supplémentaires. Fait intéressant, il communique via une connexion TCP qui a déjà été établie par son chargeur et utilise certaines des fonctions du chargeur.

Figure 4. Visualisation de la communication de Wslink

La porte dérobée est une DLL avec une seule exportation sans nom qui accepte un paramètre - une structure de communication qui a déjà été décrite dans notre article de blog précédent. La structure contient un contexte TLS - socket, clé, IV - et des rappels pour l'envoi et la réception de messages chiffrés avec AES-CBC 256 bits qui permettent à WinorDLL64 d'échanger des données en toute sécurité avec l'opérateur via une connexion déjà établie.

Les faits suivants nous amènent à croire avec une grande confiance que la bibliothèque fait bien partie de Wslink :

  • La structure unique est utilisée partout de la manière attendue, par exemple, le contexte TLS et d'autres paramètres significatifs sont fournis dans l'ordre anticipé aux rappels corrects.
  • Le nom de la DLL est WinorDLL64.dll et le nom de Wslink était WinorLoaderDLL64.dll.

WinorDLL64 accepte plusieurs commandes. La figure 5 affiche la boucle qui reçoit et gère les commandes. Chaque commande est liée à un ID unique et accepte une configuration qui contient des paramètres supplémentaires.

Figure 5. La partie principale de la boucle de réception de commande de la porte dérobée

La liste des commandes, avec nos étiquettes, est dans la figure 6.

Figure 6. La liste de commandes

Le tableau 2 contient un résumé des commandes WinorDLL64, où les catégories modifiées et anciennes font référence à la relation avec la fonctionnalité GhostSecret précédemment documentée. Nous soulignons uniquement les changements significatifs dans la catégorie modifiée.

Tableau 2. Présentation des commandes de porte dérobée

Catégories ID de commande Fonctionnalités Description
Nouveauté Assistance Exécuter une commande PowerShell WinorDLL64 demande à l'interpréteur PowerShell de s'exécuter sans restriction et de lire les commandes à partir de l'entrée standard. Ensuite, la porte dérobée transmet la commande spécifiée à l'interpréteur et envoie la sortie à l'opérateur.
Assistance Compresser et télécharger un répertoire WinorDLL64 effectue une itération récursive sur un répertoire spécifié. Le contenu de chaque fichier et répertoire est compressé séparément et écrit dans un fichier temporaire qui est ensuite envoyé à l'opérateur puis supprimé en toute sécurité.
0x0D Déconnecter une session Déconnecte un utilisateur connecté spécifié de la session des services Bureau à distance de l'utilisateur. La commande peut également exécuter différentes fonctionnalités en fonction du paramètre.
0x0D Lister les sessions Acquiert divers détails sur toutes les sessions sur l'appareil de la victime et les envoie à l'opérateur. La commande peut également exécuter différentes fonctionnalités en fonction du paramètre.
0x0E Mesurer le temps de connexion Utilise l'API Windows Gettickcount pour mesurer le temps nécessaire pour se connecter à un hôte spécifié.
Modifié Assistance Obtenir des informations sur le système Acquiert des détails complets sur le système de la victime et les envoie à l'opérateur.
0x0A Supprimer les fichiers en toute sécurité Remplace les fichiers spécifiés par un bloc de données aléatoires, renomme chaque fichier en un nom aléatoire et les supprime enfin en toute sécurité un par un.
0x0C Tuer les processus Termine tous les processus dont les noms correspondent à un modèle fourni et/ou à un PID spécifique.
Vieux 0x02/0x0B Créer un processus Crée un processus en tant qu'utilisateur actuel ou spécifié et envoie éventuellement sa sortie à l'opérateur.
Assistance Définir/Obtenir le répertoire actuel Tente de définir puis d'acquérir le chemin du répertoire de travail actuel.
Assistance Lister les volumes Itère sur les lecteurs de C : à Z : et acquiert le type de lecteur et le nom du volume. La commande peut également exécuter différentes fonctionnalités en fonction du paramètre.
Assistance Lister les fichiers d'un répertoire Itère sur les fichiers dans le répertoire spécifié et acquiert des informations telles que les noms, les attributs, etc. La commande peut également exécuter différentes fonctionnalités en fonction du paramètre.
Assistance Écrire dans un fichier Télécharge et ajoute la quantité de données indiquée au fichier spécifié.
Assistance Lire à partir d'un fichier Le fichier spécifié est lu et envoyé à l'opérateur.
0x0C Répertorier les processus Obtient des détails sur tous les processus en cours d'exécution sur l'appareil de la victime et envoie en outre l'ID du processus en cours.

Conclusion

La charge utile de Wslink est dédiée à fournir des moyens de manipulation de fichiers, d'exécution de code supplémentaire et d'obtention d'informations détaillées sur le système sous-jacent qui peuvent éventuellement être exploitées ultérieurement pour un mouvement latéral, en raison d'un intérêt spécifique pour les sessions réseau. Le chargeur Wslink écoute sur un port spécifié dans la configuration et peut servir des clients de connexion supplémentaires, et même charger diverses charges utiles.

WinorDLL64 contient un chevauchement dans l'environnement de développement, le comportement et le code avec plusieurs échantillons de Lazarus, ce qui indique qu'il pourrait s'agir d'un outil du vaste arsenal de ce groupe APT aligné sur la Corée du Nord.

ESET Research propose des rapports d'intelligence APT privés et des flux de données. Pour toute demande concernant ce service, rendez-vous sur Intelligence des menaces ESET .

IoCs

SHA-1 Nom de détection ESET Description
1BA443FDE984CEE85EBD4D4FA7EB1263A6F1257F Win64/Wslink.A Image mémoire de la charge utile Wslink découverte WinorDll64.

Techniques d'ATT&CK D'ONGLET

Ce tableau a été construit avec Version 12 du cadre ATT&CK. Nous ne mentionnons plus les techniques du chargeur, seulement la charge utile.

Tactique ID Nom Description
Développement des ressources T1587.001 Développer des capacités : logiciels malveillants WinorDLL64 est un outil personnalisé.
Internationaux T1059.001 Interpréteur de commandes et de scripts : PowerShell WinorDLL64 peut exécuter des commandes PowerShell arbitraires.
T1106 API native WinorDLL64 peut exécuter d'autres processus en utilisant le CréerProcessW ainsi que CréerProcessAsUserW Apis.
Évasion défensive T1134.002 Manipulation de jeton d'accès : créer un processus avec un jeton WinorDLL64 peut appeler des API WTSQueryUserToken ainsi que CréerProcessAsUserW pour créer un processus sous un utilisateur usurpé.
T1070.004 Suppression de l'indicateur : suppression de fichier WinorDLL64 peut supprimer en toute sécurité des fichiers arbitraires.
Découverte T1087.001 Découverte de compte : compte local WinorDLL64 peut énumérer les sessions et répertorier les noms d'utilisateurs et de clients associés, entre autres détails.
T1087.002 Découverte de compte : compte de domaine WinorDLL64 peut énumérer les sessions et répertorier les noms de domaine associés, entre autres détails.
T1083 Découverte de fichiers et de répertoires WinorDLL64 peut obtenir des listes de fichiers et de répertoires.
T1135 Découverte du partage réseau WinorDLL64 peut découvrir les lecteurs réseau partagés.
T1057 Découverte de processus WinorDLL64 peut collecter des informations sur les processus en cours d'exécution.
T1012 Registre de requête WinorDLL64 peut interroger le registre Windows pour recueillir des informations système.
T1082 Découverte des informations système WinorDLL64 peut obtenir des informations telles que le nom de l'ordinateur, le système d'exploitation et la dernière version du service pack, l'architecture du processeur, le nom du processeur et la quantité d'espace sur les lecteurs fixes.
T1614 Découverte de l'emplacement du système WinorDLL64 peut obtenir le nom de pays par défaut de la victime en utilisant le GetLocaleInfoW API.
T1614.001 Découverte de l'emplacement du système : découverte de la langue du système WinorDLL64 peut obtenir la langue par défaut de la victime en utilisant le GetLocaleInfoW API.
T1016 Découverte de la configuration réseau du système WinorDLL64 peut énumérer les informations sur la carte réseau.
T1049 Découverte des connexions réseau du système WinorDLL64 peut collecter une liste de ports d'écoute.
T1033 Propriétaire du système/Découverte des utilisateurs WinorDLL64 peut énumérer les sessions et répertorier les noms d'utilisateur, de domaine et de client associés, entre autres détails.
Collection T1560.002 Archiver les données collectées : archiver via la bibliothèque WinorDLL64 peut compresser et exfiltrer des répertoires en utilisant le rapide bibliothèque.
T1005 Données du système local WinorDLL64 peut collecter des données sur l'appareil de la victime.
Impact T1531 Suppression de l'accès au compte WinorDLL64 peut déconnecter un utilisateur connecté des sessions spécifiées.

Horodatage:

Plus de Nous vivons la sécurité