Mineurs invisibles : dévoilement des opérations de minage de crypto-monnaies de GHOSTENGINE

Elastic Security Labs a identifié REF4578, un ensemble d'intrusions incorporant plusieurs modules malveillants et exploitant des pilotes vulnérables pour désactiver des solutions de sécurité connues (EDR) pour le minage de crypto-monnaie.

25 minutes de lectureSchéma d'attaque
Mineurs invisibles : dévoilement des opérations de minage de crypto-monnaies de GHOSTENGINE

Préambule

Elastic Security Labs a identifié un ensemble d'intrusions incorporant plusieurs modules malveillants et exploitant des pilotes vulnérables pour désactiver des solutions de sécurité connues (EDR) pour le minage de crypto-monnaie. En outre, l'équipe a découvert des capacités permettant d'établir la persistance, d'installer une porte dérobée non documentée auparavant et d'exécuter un crypto-miner. Nous appelons cet ensemble d'intrusion REF4578 et la charge utile principale GHOSTENGINE (des recherches tangentes menées par l'équipe d'Antiy ont nommé certaines parties de cet ensemble d'intrusion HIDDENSHOVEL).

Principaux points abordés dans cet article

  • Les auteurs de logiciels malveillants ont incorporé de nombreux mécanismes de contingence et de duplication
  • GHOSTENGINE s'appuie sur des pilotes vulnérables pour mettre fin et supprimer des agents EDR connus susceptibles d'interférer avec le mineur de monnaie déployé et bien connu.
  • Cette campagne a été d'une complexité peu commune pour assurer l'installation et la persistance du mineur XMRIG.

Analyse du code

On May 6, 2024, at 14:08:33 UTC, the execution of a PE file named Tiworker.exe (masquerading as the legitimate Windows TiWorker.exe file) signified the beginning of the REF4578 intrusion. The following alerts were captured in telemetry, indicating a known vulnerable driver was deployed.

Une fois exécuté, ce fichier télécharge et exécute un script PowerShell qui orchestre l'ensemble du processus d'exécution de l'intrusion. L'analyse a révélé que ce binaire exécute une ligne de commande PowerShell codée en dur pour récupérer un script obscurci, get.png,, qui est utilisé pour télécharger d'autres outils, modules et configurations de l'attaquant C2-, comme le montre la capture d'écran ci-dessous.

GHOSTENGINE

GHOSTENGINE est responsable de la récupération et de l'exécution des modules sur la machine. Il utilise principalement le protocole HTTP pour télécharger des fichiers à partir d'un domaine configuré, avec une IP de secours au cas où les domaines ne seraient pas disponibles. En outre, il utilise le protocole FTP comme protocole secondaire avec des informations d'identification intégrées. Vous trouverez ci-dessous un résumé du déroulement de l'exécution :

Ce script télécharge et exécute clearn.png, un composant conçu pour purger le système des restes d'infections antérieures appartenant à la même famille mais à une campagne différente ; il supprime les fichiers malveillants sous C:\Program Files\Common Files\System\ado et C:\PROGRA~1\COMMON~1\System\ado\ et supprime les tâches planifiées suivantes par leur nom :

  • Microsoft Assist Job
  • System Help Center Job
  • SystemFlushDns
  • SystemFlashDnsSrv

La présence de ces artefacts de tâches programmées peut être le signe d'une infection antérieure.

Pendant son exécution, il tente de désactiver Windows Defender et de nettoyer les canaux suivants du journal des événements Windows :

  • Application
  • Security
  • Setup
  • System
  • Forwarded Events
  • Microsoft-Windows-Diagnostics-Performance
  • Microsoft-Windows-AppModel-Runtime/Operational
  • Microsoft-Windows-Winlogon/Operational

get.png désactive Windows Defender, active les services à distance et efface le contenu de :

  • C:\Windows\Temp\
  • C:\Windows\Logs\
  • C:\$Recycle.Bin\
  • C:\windows\ZAM.krnl.trace

get.png vérifie également que le volume C:\ dispose d'au moins 10 MB d'espace libre pour télécharger les fichiers, en les stockant dans C:\Windows\Fonts. Si ce n'est pas le cas, il essaiera de supprimer les fichiers volumineux du système avant de rechercher un autre volume approprié disposant de suffisamment d'espace et de créer un dossier sous $RECYCLE.BIN\Fonts.

Pour obtenir la résolution DNS actuelle pour les noms de domaine C2, GHOSTENGINE utilise une liste codée en dur de serveurs DNS, 1.1.1.1 et 8.8.8.8.

Ensuite, pour établir la persistance, get.png crée les tâches planifiées suivantes en tant que SYSTEM:

  • OneDriveCloudSync utilise msdtc pour exécuter le service malveillant DLL C:\Windows\System32\oci.dll toutes les 20 minutes (décrit plus loin).
  • DefaultBrowserUpdate pour lancer C:\Users\Public\run.bat, qui télécharge le script get.png et l'exécute toutes les 60 minutes.
  • OneDriveCloudBackup exécute C:\Windows\Fonts\smartsscreen.exe toutes les 40 minutes

get.png met fin à tous les processus curl.exe et à tout processus PowerShell dont la ligne de commande contient *get.png*, à l'exception du processus en cours. Il s'agit d'un moyen de mettre fin à toute instance du logiciel malveillant en cours d'exécution.

Ce script télécharge ensuite config.txt, un fichier JSON contenant les hachages des fichiers PE qu'il a récupérés. Ce fichier vérifie si des binaires mis à jour doivent être téléchargés en contrôlant les hachages des fichiers précédemment téléchargés lors d'infections antérieures.

Enfin, get.png télécharge tous ses modules et divers fichiers PE. Vous trouverez ci-dessous un tableau contenant une description de chaque fichier téléchargé :

cheminTypeDescription
C:\Windows\System32\drivers\aswArPots.sysPilote du noyauPilote vulnérable d'Avast
C:\Windows\System32\drivers\IObitUnlockers.sysPilote du noyauPilote vulnérable de IObit
C:\Windows\Fonts\curl.exeExécutable PEUtilisé pour télécharger des fichiers via cURL
C:\Windows\Fonts\smartsscreen.exeExécutable PELa charge utile principale (GHOSTENGINE), dont l'objectif principal est de désactiver les instruments de sécurité, de terminer l'infection initiale et d'exécuter le mineur.
C:\Windows\System32\oci.dllService DLLPersistence/updates module
backup.pngScript PowershellBackdoor module
kill.pngScript PowershellUn script PowerShell qui injecte et exécute un fichier PE chargé de tuer les capteurs de sécurité.

Modules GHOSTENGINE

GHOSTENGINE déploie plusieurs modules qui peuvent altérer les outils de sécurité, créer une porte dérobée et vérifier les mises à jour de logiciels.

Contrôleur d'agent EDR et module de minage : smartsscreen.exe

Ce module met principalement fin à tout processus actif de l'agent EDR avant de télécharger et d'installer un crypto-miner.

Le logiciel malveillant analyse et compare tous les processus en cours avec une liste codée en dur d'agents EDR connus. S'il y a des correspondances, il met d'abord fin à l'agent de sécurité en exploitant le fichier Avast Anti-Rootkit Driver aswArPots.sys avec l'IOCTL 0x7299C004 pour mettre fin au processus par PID.

smartscreen.exe est ensuite utilisé pour supprimer le binaire de l'agent de sécurité avec un autre pilote vulnérable, iobitunlockers.sys de IObit, avec l'IOCTL 0x222124.

smartscreen.exe télécharge ensuite le programme d'exploitation du client XMRig (WinRing0x64.png) à partir du serveur C2 sous la forme taskhostw.png. Enfin, il exécute XMRig, ses pilotes et le fichier de configuration config.json, lançant ainsi le processus d'extraction.

Update/Persistence module: oci.dll

Le script PowerShell crée une DLL de service (oci.dll), une DLL fantôme chargée par msdtc. L'architecture de la DLL varie en fonction de la machine ; elle peut être de 32 bits ou de 64 bits. Sa fonction principale est de créer une persistance du système et de télécharger toutes les mises à jour des serveurs C2 en téléchargeant le script get.png depuis le C2 et en l'exécutant.

Chaque fois que le service msdtc démarre, il charge oci.dll pour lancer le one-liner PowerShell qui exécute get.png :

Module de terminaison de l'agent EDR : kill.png

kill.png est un script PowerShell qui injecte un shellcode dans le processus en cours, en décryptant et en chargeant un fichier PE dans la mémoire.

Ce module est écrit en C++ et les auteurs ont intégré la redondance dans son fonctionnement. Cette redondance est évidente dans la réplication de la technique utilisée dans smartsscreen.exe pour terminer et supprimer les binaires de l'agent EDR ; elle scrute continuellement les nouveaux processus.

Module de porte dérobée Powershell : backup.png

Le script PowerShell fonctionne comme une porte dérobée, permettant l'exécution de commandes à distance sur le système. Il envoie continuellement un objet JSON codé en base64 contenant un identifiant unique, dérivé de l'heure actuelle et du nom de l'ordinateur, tout en attendant des commandes codées en base64. Les résultats de ces commandes sont ensuite renvoyés.

Dans cet exemple, eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9 est l'objet JSON encodé en Base64 :

$ echo "eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9" | base64 -D
{"id":"171568624072626","host":"analysis"}

Configuration du mineur

XMRig est un mineur de crypto-monnaie légitime, qui a documenté l'utilisation et les éléments du fichier de configuration ici. Comme indiqué au début de cette publication, le but ultime de l'intrusion REF4578 était d'accéder à un environnement et de déployer un mineur de crypto-monnaie Monero persistant, XMRig.

Nous avons extrait le fichier de configuration du mineur, ce qui s'est avéré extrêmement précieux car il nous a permis d'établir un rapport sur l'ID de paiement Monero et de suivre les statistiques du travailleur et du pool, les crypto-monnaies extraites, les ID de transaction et les retraits.

Vous trouverez ci-dessous un extrait du fichier de configuration REF4578 XMRig :

{
    "autosave": false,
    "background": true,
    "colors": true,

...truncated...

    "donate-level": 0,
    "donate-over-proxy": 0,
    "pools": [
        {
            "algo": "rx/0",
            "coin": "monero",
            "url": "pool.supportxmr[.]com:443",
            "user": "468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f",
            "keepalive": true,
            "tls": true

...truncated...

    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
    "verbose": 0,
    "watch": true,
    "pause-on-battery": false,
    "pause-on-active": false
}

ID de paiement Monero

Monero est une crypto-monnaie basée sur la blockchain qui met l'accent sur l'obscurcissement et la fongibilité afin de garantir l'anonymat et la confidentialité. L'identifiant de paiement est une pièce jointe arbitraire et facultative qui consiste en 32 octets (64 caractères hexadécimaux) ou 8 octets (dans le cas d'adresses intégrées).

En utilisant l'ID de paiement de l'extrait de configuration ci-dessus (468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f), nous pouvons voir les statistiques des travailleurs et du pool sur l'un des sites du pool minier Monerorépertoriés dans la configuration.

En outre, nous pouvons voir les hachages des transactions, que nous pouvons consulter sur l'explorateur de la blockchain Monero. Notez que si les transactions remontent à quatre mois, cela n'indique que le gain monétaire potentiel de ce travailleur et de ce compte spécifiques.

En utilisant le Blockchain Explorer et l'un des hashs de transaction que nous avons obtenu à partir de l'ID de paiement, nous pouvons voir la clé publique, le montant retiré et le moment où il l'a été. Notez que ces clés publiques sont utilisées avec des adresses uniques, ou des adresses furtives, avec lesquelles l'adversaire utilise ensuite une clé privée pour débloquer les fonds.

In the above example for transaction 7c106041de7cc4c86cb9412a43cb7fc0a6ad2c76cfdb0e03a8ef98dd9e744442 we can see that there was a withdrawal of 0.109900000000 XMR (the abbreviation for Monero) totaling $14.86 USD. The Monerao Mining Pool site shows four transactions of approximately the same amount of XMR, totaling approximately $60.70 USD (January - March 2024).

Au moment de la publication de cette étude, il y a encore des mineurs actifs connectés à l'identifiant de paiement REF4578.

Bien que cet identifiant de paiement spécifique ne semble pas rapporter gros, il est évident que REF4578 a pu utiliser ce jeu d'intrusion avec succès. D'autres victimes de cette campagne pourraient avoir des identifiants de paiement différents utilisés pour suivre les intrusions, qui pourraient être combinés pour obtenir un gain global plus important.

Logiciels malveillants et MITRE ATT&CK

Elastic utilise le cadre MITRE ATT& CK pour documenter les tactiques, techniques et procédures communes que les menaces utilisent contre les réseaux d'entreprise.

Tactiques

Les tactiques représentent le pourquoi d'une technique ou d'une sous-technique. Il s'agit de l'objectif tactique de l'adversaire : la raison pour laquelle il effectue une action.

Techniques

Les techniques représentent la manière dont un adversaire atteint un objectif tactique en effectuant une action.

Atténuer les effets de GHOSTENGINE

Détection

Le premier objectif du logiciel malveillant GHOSTENGINE est de neutraliser les solutions de sécurité des points d'extrémité et de désactiver certains journaux d'événements Windows, tels que les journaux de sécurité et de système, qui enregistrent la création de processus et l'enregistrement de services. Il est donc essentiel de donner la priorité à la détection et à la prévention de ces actions initiales :

  • Suspicious PowerShell Execution (Exécution suspecte de PowerShell)
  • Exécution à partir de répertoires inhabituels
  • Élever les privilèges pour assurer l'intégrité du système
  • Déploiement de pilotes vulnérables et mise en place de services associés en mode noyau.

Une fois que les pilotes vulnérables sont chargés, les possibilités de détection diminuent considérablement et les entreprises doivent trouver des terminaux compromis qui cessent de transmettre des journaux à leur SIEM.

Le trafic réseau peut être généré et identifiable si les enregistrements DNS pointent vers des domaines connus du pool minier sur des ports bien connus tels que HTTP (80) et HTTPS (443). Stratum est également un autre protocole réseau populaire pour les mineurs, par défaut, sur le port 4444.

L'analyse de cet ensemble d'intrusions a révélé les règles de détection et les événements de prévention du comportement suivants :

La prévention

Prévention des fichiers malveillants :

Prévention de l'injection de codes-barres :

Prévention de la création de fichiers par les pilotes vulnérables(Windows.VulnDriver.ArPot et Windows.VulnDriver.IoBitUnlocker )

YARA

Elastic Security a créé des règles YARA pour identifier cette activité.

Observations

Toutes les observables sont également disponibles au téléchargement dans les formats ECS et STIX.

Les observables suivants ont été examinés dans le cadre de cette recherche.

ObservableTypeNomRéférence
2fe78941d74d35f721556697491a438bf3573094d7ac091b42e4f59ecbd25753SHA-256C:\Windows\Fonts\smartsscreen.exeModule contrôleur GHOSTENGINE EDR
4b5229b3250c8c08b98cb710d6c056144271de099a57ae09f5d2097fc41bd4f1SHA-256C:\Windows\System32\drivers\aswArPots.sysPilote vulnérable Avast
2b33df9aff7cb99a782b252e8eb65ca49874a112986a1c49cd9971210597a8aeSHA-256C:\Windows\System32\drivers\IObitUnlockers.sysPilote vulnérable Iobit
3ced0552b9ecf3dfecd14cbcc3a0d246b10595d5048d7f0d4690e26ecccc1150SHA-256C:\Windows\System32\oci.dllModule de mise à jour et de persistance (64 bits)
3b2724f3350cb5f017db361bd7aae49a8dbc6faa7506de6a4b8992ef3fd9d7abSHA-256C:\Windows\System32\oci.dllModule de mise à jour et de persistance (32 bits)
35eb368c14ad25e3b1c58579ebaeae71bdd8ef7f9ccecfc00474aa066b32a03fSHA-256C:\Windows\Fonts\taskhostw.exeClient du mineur
786591953336594473d171e269c3617d7449876993b508daa9b96eedc12ea1caSHA-256C:\Windows\Fonts\config.jsonFichier de configuration du mineur
11bd2c9f9e2397c9a16e0990e4ed2cf0679498fe0fd418a3dfdac60b5c160ee5SHA-256C:\Windows\Fonts\WinRing0x64.sysConducteur de mine
aac7f8e174ba66d62620bd07613bac1947f996bb96b9627b42910a1db3d3e22bSHA-256C:\ProgramData\Microsoft\DeviceSync\SystemSync\Tiworker.exeStade initial
6f3e913c93887a58e64da5070d96dc34d3265f456034446be89167584a0b347eSHA-256backup.pngModule de porte dérobée GHOSTENGINE
7c242a08ee2dfd5da8a4c6bc86231985e2c26c7b9931ad0b3ea4723e49ceb1c1SHA-256get.pngChargeur GHOSTENGINE
cc4384510576131c126db3caca027c5d159d032d33ef90ef30db0daa2a0c4104SHA-256kill.pngModule de terminaison GHOSTENGINE EDR
download.yrnvtklot[.]comDomainServeur C2
111.90.158[.]40ipv4-addrServeur C2
ftp.yrnvtklot[.]comDomainServeur C2
93.95.225[.]137ipv4-addrServeur C2
online.yrnvtklot[.]comDomainServeur C2

Références

Les éléments suivants ont été référencés tout au long de la recherche ci-dessus :

Partager cet article