Anatomie des cryptomineurs : analyse des cryptomineurs

Maor Dahan

écrit par

Maor Dahan

March 19, 2025

Maor Dahan

écrit par

Maor Dahan

Senior Security Researcher chez Akamai, Maor Dahan possède plus de dix ans d'expérience dans le domaine de la cybersécurité. Maor est spécialisé dans l'étude des systèmes d'exploitation, la recherche de vulnérabilités et l'analyse des logiciels malveillants. Il a conçu et développé des mécanismes avancés de détection et de prévention pour des produits de sécurité innovants tels que l'EDR, l'EPP et la sécurité virtualisée.

Dans les études de cas suivantes, nous allons aborder certains échantillons de cryptomineurs que nous avons identifiés « in the wild ».
Dans les études de cas suivantes, nous allons aborder certains échantillons de cryptomineurs que nous avons identifiés « in the wild ».

Synthèse

Il s'agit du deuxième volet de notre série de blogs en trois parties, intitulé Anatomie des cryptomineurs. Dans la première partie, nous avons évoqué les cryptomonnaies en général, leurs différents attributs et ce qui rend certaines d'entre elles plus attrayantes que d'autres pour les acteurs malveillants.

Dans cette partie, nous allons nous pencher sur l'analyse de divers échantillons de cryptomineurs pour comprendre leurs rouages internes. Nous allons nous concentrer sur les cryptomineurs qui exploitent Monero et Zephyr, deux des cryptomonnaies que nous avons déterminées comme étant adaptées aux activités malveillantes. Dans ce billet de blog, nous allons aborder les points suivants :

  • L'utilisation du réseau blockchain pour identifier les communications de minage suspectes à partir d'un cryptomineur malveillant potentiel.

  • Quatre exemples d'études de cas qui utilisent différentes topologies pour rester actifs et persistants pendant une longue période.

  • Un cas intriguant de campagne longue et persistante avec des milliers de victimes qui génère 5,50 USD par heure.

  • Les attaquants qui utilisent plusieurs cryptomonnaies dans une même campagne.

  • La détection via les activités du réseau et la référence croisée avec le réseau blockchain.

  • La détection par l'analyse de la mémoire des processus, parallèlement à l'empreinte par les algorithmes de consensus.

Nous avons également inclus une liste d'indicateurs de compromission (IOC) issus des études de cas dans ce billet de blog pour aider les équipes de sécurité à protéger leurs actifs.

Nous terminerons cet article en examinant les techniques de détection qui reposent sur les concepts d'algorithmes résistants aux ASIC, ainsi que la détection des opérations de cryptomonnaie. La détection se concentre sur les principes fondamentaux de l'exploration et peut être appliquée au niveau du réseau ou du système d'exploitation.

Analyse du réseau Monero

Le réseau Monero est créé à l'aide du protocole Levin pour mettre en œuvre une communication peer-to-peer (P2P) via les nœuds du réseau. Il utilise le protocole pour distribuer les opérations de blockchain telles que les nouvelles transactions et les nouveaux blocs. Il permet également au réseau de se maintenir de manière décentralisée grâce à la publication de nœuds homologues et à la possibilité d'éliminer les attaques par le biais d'algorithmes de consensus.

Bien que nous ayons utilisé Monero à titre d'exemple, la découverte d'un réseau de blockchain devrait être possible dans la plupart des cryptomonnaies. Cela est dû à la nature distribuée des réseaux blockchain. Vous trouverez plus de détails dans notre billet de blog précédent.

Découverte du réseau

Le réseau Monero étant un réseau décentralisé P2P de contributeurs individuels, nous pouvons facilement nous y connecter nous-mêmes. En mappant le réseau Monero, nous pouvons obtenir des IOC fiables (tels que des adresses IP de nœud) et repérer l'activité potentielle des concentrateurs de nœuds qui sont plus connectés que d'autres.

Ces informations peuvent être utilisées pour détecter et enquêter sur les opérations minières, et elles nous permettent également d'évaluer les vulnérabilités du réseau et son exposition aux attaques de la blockchain. La Figure 1 est une représentation visuelle du réseau de minage Monero, dans lequel la carte thermique montre la densité des nœuds par zone géographique. Nous avons marqué les nœuds ouverts au public avec des points rouges.

Figure 1 is a visual representation of the Monero mining network, in which the heat map shows the density of nodes by its geographical area. Fig. 1: A graphical mapping of the Monero network (as of March 2025)

Le réseau étant constitué de nœuds homologues distribués, tout cryptomineur doit interagir directement ou indirectement avec l'un des quelque 30 000 serveurs du monde entier, qui sont indiqués sur notre carte. Comme nous allons le voir, la carte s'est avéré très utile pour la recherche d'échantillons de cryptomonnaies et la détection de connexions réseau directes aux blockchains. (Vous trouverez plus d'informations sur notre référentiel GitHub, y compris le code source pour l'analyse de la blockchain et la génération de cartes.)

Référencement croisé des cryptomineurs sur le réseau

À l'aide des différents indicateurs obtenus via la cartographie du réseau Monero, il est possible d'identifier les échantillons qui interagissent avec le réseau blockchain. Par exemple, à l'aide de VirusTotal LiveHunt, nous pouvons identifier les fichiers contenant des adresses de nœuds connues, ce qui nous aidera à détecter les campagnes de cryptomineurs actives (Figure 2).

Using VirusTotal Livehunt, we can identify files containing known node addresses, which will help us detect active cryptominer campaigns (Figure 2). Fig. 2: An example of a VirusTotal Livehunt YARA rule

Comme dans tout autre élément de sécurité, il ne s'agit pas d'une technique de chasse universelle. L'utilisation de cette approche uniquement peut entraîner des faux positifs lorsque le serveur n'est pas un nœud blockchain exclusif. Cela peut également entraîner un manque de visibilité, car la carte ne découvre pas tous les nœuds. Cependant, en combinant cette technique avec d'autres indicateurs, on peut augmenter le taux de détection des vrais positifs.

La carte contient des nœuds accessibles au public ainsi que des nœuds récemment accessibles. Certains nœuds ne sont pas utilisés uniquement pour un nœud Monero ; par exemple, ils peuvent servir de miroir au référentiel PyPi de Python ou tout autre service. La Figure 3 montre un exemple de serveur qui fournit plusieurs services, ce qui peut entraîner une distraction importante dans le processus de recherche. Nous avons éliminé ces serveurs de l'analyse afin de réduire les faux positifs potentiels.

Figure 3 is an example of a server that provides multiple services, which can cause a lot of distraction in the hunting process. Fig. 3: Example of a node in the Monero network that serves multiple services (VirusTotal)

Dans la recherche des menaces, il est tout aussi important d'exclure les échantillons non pertinents que de sélectionner les échantillons pertinents. L'analyse de réseau combinée à une approche de référence croisée peut révéler des cryptomineurs et des campagnes entières de minage orchestrées via des botnets. En intégrant des techniques d'analyse statique supplémentaires, telles que la correspondance avec les adresses de portefeuille codées en dur, nous pouvons nous concentrer efficacement sur les échantillons malveillants les plus pertinents.

Analyse d'échantillons de cryptomineurs

En raison de la nature bruyante du cryptominage, il peut être facile de détecter des opérations même à l'œil nu. Un professionnel de l'IT alerté peut détecter les anomalies générées par les cryptomineurs sans avoir besoin d'outils sophistiqués de protection contre les logiciels malveillants. Même les personnes non expertes sont conscientes de la performance de base de leur machine. Si elle devient lente, elles la font analyser par un professionnel qui peut trouver facilement la cause racine. De ce fait, de nombreux cryptomineurs ne prennent pas la peine de protéger leurs logiciels malveillants contre l'analyse et la détection, et optent plutôt pour une stratégie d'infection de masse non ciblée.

Dans les études de cas suivantes, nous allons aborder certains exemples de cryptomineurs que nous avons identifiés « in the wild », et nous allons nous pencher sur certains des détails les plus intéressants concernant leur fonctionnement et leur comportement. Deux facteurs principaux ont été utilisés pour trouver ces études de cas : (1) une cryptomonnaie pertinente telle que décrite dans le premier billet de blog de cette série, et (2) la topologie de minage qu'ils exploitent.

Étude de cas n° 1 : Une campagne persistante et massive

Dans le cadre de cette étude, nous avons analysé une variété d'échantillons de cryptomineurs, et l'un d'entre eux était une campagne de 6 ans. Comme c'est souvent le cas avec les campagnes de longue durée, il semble s'agir soit d'une opération organisée, soit d'un service de distribution de logiciels malveillants qui déploie le cryptomineur pour le compte d'un tiers.

L'analyse de cet échantillon indique que plusieurs proxys s'accumulent à un taux de hachage de 5,6 Mh/s, ce qui équivaut à des milliers de machines compromises (Figure 4). Il s'agit d'une attaque massive et persistante, et étant donné que le taux de hachage reste stable, le logiciel malveillant reste probablement non détecté par la plupart de ses victimes et continue de fonctionner sans entrave. Ce type d'attaque est une campagne extrêmement lucrative pour un attaquant.

Analysis of that sample shows it has multiple proxies that accumulate to a hashrate of 5.6 Mh/s, which equates to thousands of compromised machines (Figure 4). Fig. 4: The campaign’s Nanopool dashboard reveals the total hashrate

La campagne est active au moins depuis juin 2018 et contient des indicateurs (par exemple, la langue utilisée dans les échantillons) qui pourraient indiquer un effort de collaboration entre des acteurs de menace russes et chinois. L'analyse des serveurs de commande et contrôle (C2) a également soutenu cette théorie, mais à la date de publication de cet article, elle n'a pas été entièrement confirmée.

Au moment de la rédaction de ce document, l'attaquant a accumulé au moins 1 702 XMR, d'une valeur d'environ 280 000 USD au taux de change actuel. Répartis sur six ans, cela représente une moyenne de près de 47 000 USD par an pour une seule campagne.

La plupart des exemples liés à cette campagne utilisent un langage de script correspondant au système d'exploitation de la victime en tant que chargeur initial et téléchargeur. Il repose principalement sur le routage et les connexions réseau trompeuses, probablement dans le but de dissocier le fichier malveillant du serveur C2.

Après avoir analysé les échantillons de la campagne, nous avons constaté que celle-ci utilise PowerShell pour déployer un exécutable nommé chargeur d'une manière furtive en utilisant les rootkit r77. Même sans analyser l'injecteur complexe, nous pouvons voir qu'il existe plusieurs versions de ce cryptomineur.

Dans certaines versions, le cryptomineur lui-même contient le fichier config.json , qui contient la configuration du minage. Dans les autres échantillons, le script OracleLoader supprime le cryptomineur et définit la configuration. Le logiciel malveillant dispose d'un mécanisme de mise à jour qui pourrait récupérer le botnet en cas de compromission (Tableau 1).

Caractéristique

Valeur

Remarque

Nom du logiciel malveillant

Chargeur Oracle

 

Version actuelle

1.1.72.0

<5.133.65.53>/Oracle/ver$77_loader.exe.txt

Composants associés

  • OracleLoader.ps1

  • rms.exe

  • rms2.exe

  • $77_oracle.exe



Tableau 1 : Caractéristiques d'Oracle Loader

Le logiciel malveillant écoute également sur le port 999, exposant ainsi la fonctionnalité API HTTP de XMRig. Cela permet à l'attaquant d'accéder au mineur de la victime et de surveiller le processus d'extraction. Si l'ordinateur victime est directement connecté à Internet et n'est pas derrière un routeur NAT (Network Address Translation) ou un pare-feu externe, nous pourrions théoriquement trouver les victimes via des services de surveillance réseau tels que Shodan. La Figure 5 montre le résultat d'une requête Shodan utilisée pour détecter les victimes potentielles.

Figure 5 shows the result of a Shodan query used to detect potential victims. Fig. 5: Shodan results for potential victims (Source: http://shodan.io)

En utilisant l'application Web XMRig worker monitor pour surveiller les mineurs des victimes, nous pouvons révéler des informations les concernant, telles que le modèle du processeur et le taux de hachage. Cette interface nous permet uniquement d'interroger des informations. Par conséquent, bien que nous puissions voir l'activité, nous ne pouvons pas contrôler le mineur par l'intermédiaire de celle-ci ni l'arrêter (Figure 6).

This interface only enables us to query information, so although we can see activity, we can’t control the miner through it nor shut it down (Figure 6). Fig. 6: Remote access to the victim machine using the worker monitor

Comme nous pouvons le voir dans le tableau de bord du pool de minage, le taux de hachage régulier suggère que les victimes proviennent du monde entier, sinon, nous nous attendrions à un taux de hachage alternatif basé sur les heures d'activité du fuseau horaire. Une autre explication peut être que l'attaquant cible les serveurs et non les consommateurs, comme le font les autres campagnes de cryptomineurs.

Étude de cas n° 2 : Topologie de pool public utilisée par un cryptomineur Zephyr

Bien qu'il y ait des attaquants très motivés et sophistiqués avec des campagnes à long terme qui génèrent des bénéfices considérables, comme dans l'étude de cas n°1, ils ne représentent pas la plus grande partie de la menace. Les cryptomineurs qui utilisent des pools publics sont les plus courants. Ils ne contiennent pas de fonctionnalités sophistiquées telles que des techniques d'obscurcissement ou d'anti-analyse. Un mode opératoire typique consisterait à contacter directement le pool avec une adresse de portefeuille en texte clair. En outre, ils génèrent souvent un impact et des bénéfices moins importants.

Le marché des cryptomonnaies offre plusieurs options aux attaquants, avec une rentabilité de minage et une valeur en cryptomonnaie variables. Malgré l'aspect financier inhérent à la cryptomonnaie, la rentabilité de minage de l'une d'elles n'est apparemment pas la considération la plus importante pour de nombreux attaquants. La cryptomonnaie Zephyr, qui est moins rentable que Monero, est très ciblée par les acteurs malveillants. La volatilité du marché des cryptomonnaies est une préoccupation pour les pirates et les acheteurs légitimes de cryptomonnaies. Il peut s'agir de la valeur potentielle à long terme qui les attire dans une cryptomonnaie plutôt que dans une autre.

La campagne Zephyr la plus grande que nous avons pu observer rassemble plus de 1 400 victimes actives avec un taux de hachage total de 800 Kh/s et un bénéfice total de 906,3 ZEPH, qui représente actuellement 2 528 USD.

Nous pouvons déterminer quand un attaquant cible des régions spécifiques en inspectant le taux de hachage du botnet au fil du temps. Une autre campagne que nous avons observée, qui utilise des proxies combinés à des logiciels malveillants à connexion directe et qui semble cibler les utilisateurs russophones, en est un exemple (Figure 7).

An example of this lies in another observed campaign that uses proxies combined with direct connection malware that seems to be targeting Russian-speaking users (Figure 7). Fig. 7: Cryptominer hashrate graph over time (Source: https://zephyr.hashvault.pro/en/)

Les changements périodiques peuvent indiquer que la plupart des victimes sont des utilisateurs humains et non des serveurs, car les machines personnelles sont plus susceptibles d'être mises hors tension périodiquement. Si nous analysons la fréquence du taux de hachage, nous pouvons voir que le cycle dure 24 heures et, en supposant que le point le plus bas survient la nuit, il est possible de localiser le fuseau horaire de la plupart des victimes (Figure 8).

If we analyze the frequency of the hashrate, we can see that the cycle is 24 hours long, and under the assumption that the low point is nighttime, it’s possible to locate the time zone in which most of the victims live (Figure 8). Fig. 8: Time zone map identifies the location of the majority of the victims (Source: https://www.timeanddate.com/time/map/)

Les intervalles de temps ne sont pas suffisants pour prouver l'emplacement de la victime, mais notre théorie a été soutenue par la fonction de recherche de géolocalisation IP fournie par le pool Hashvault. En associant cette analyse à celle des logiciels malveillants et aux noms de diffusion des logiciels malveillants liés aux jeux, tels que Fortnite, Solara executor for Roblox, etc., nous pouvons parvenir à une hypothèse plus solide : le logiciel malveillant se fait passer pour un moteur de triche et incite les joueurs à le trouver. Nous pensons également qu'il s'est propagé sur les réseaux sociaux et les applications de messagerie, telles que Telegram et Discord.

Étude de cas n° 3 : Cryptomineur utilisant une topologie de proxy de minage

Nous avons utilisé la carte réseau Monero pour recueillir des informations sur plus de 25 000 nœuds, mais seulement 10 % d'entre eux étaient directement accessibles. À l'inverse, nous avons également utilisé cette carte pour filtrer tous les cryptomineurs connus qui ne contactent pas le réseau. C'est ainsi que nous avons trouver une campagne qui est active depuis avril 2022. 

La Figure 9 montre les vecteurs d'attaque du logiciel malveillant : il utilise un proxy de minage comme XMRig-proxy et distribue son cryptomineur via des logiciels piratés, comme des versions crackées d'Internet Download Manager (IDM).

Figure 9 shows the malware’s attack vectors: It uses a mining proxy like XMRig-proxy and distributes its cryptominer through pirated software, like cracked Internet Download Manager (IDM). Fig. 9: Visualization of cryptominer using a cracked program for initial access

Le flux d'attaques est similaire parmi les exemples de logiciels malveillants de la campagne. Il commence généralement par un téléchargement automatique à partir de crackingcity.com, qui déclenche une chaîne de payload. Ensuite, au cours de la dernière étape, il déploie le cryptomineur dlIhost.exe qui se connecte à un proxy hébergé dans custompool.xyz. L'attaquant utilise des variables d'environnement pour transmettre des chaînes en tant qu'arguments à son processus enfant, principalement des fichiers de lots, en guise de technique d'évasion. Il déchiffre les archives intégrées et exécute des scripts ou des fichiers après avoir manipulé la liste d'exclusion du défenseur.

L'attaquant a enregistré le domaine proxy sous le nom custompool.xyz le 29 avril 2022, trois jours seulement après la première détection sur VirusTotal. Le premier échantillon, appelé VScan.exe, est une archive auto-extraite qui utilise deux fichiers de lot. Le premier est main.bat, qui utilise un mot de passe masqué dans les variables d'environnement pour extraire le fichier de lot de la deuxième étape, VS.bat. Nous pouvons extraire les informations masquées à l'aide d'un débogueur de deux manières : pause lorsqu'une variable d'environnement nommée « l3 » est consultée (Figure 10), ou pause à chaque modification des variables d'environnement.

We can extract the hidden information using a debugger in two ways: break when an environment variable named "l3" is accessed (Figure 10) or break on every modification of the environment variables. Fig. 10: Dynamic analysis reveals the encrypted compression password

Grâce au mot de passe un#912345678@rar, nous pouvons extraire le chargeur de la deuxième étape qui se connecte à l'autre domaine C2, crackingcity.com. Lors de la dernière étape, le logiciel malveillant exécute dlIhost.exe (il s'agit essentiellement d'un client XMRig modifié avec une configuration intégrée au pool custompool.xyz ). À ce stade, le pool est l'adresse IP directe (Figure 11).

. In the final stage, the malware executes dlIhost.exe (essentially a modified XMRig client with embedded configuration to the custompool.xyz pool), which at this point is the direct IP (Figure 11). Fig. 11: Intercepting configuration data through static analysis

Une question se pose à présent concernant le type de serveur. S'agit-il d'un pool privé ? D'un proxy de minage ? Ou est-ce une sorte de nœud personnalisé que nous considérons comme étant le même que celui d'un pool privé ? Pour répondre à ces questions, nous devons trouver un moyen d'extraire certains identifiants du serveur. Le minage en solo via un nœud dédié nécessite que le mineur opère en mode daemon (où la demande RPC est transmise via HTTP), qui n'est pas présent dans cette configuration. Ce n'est donc clairement pas le cas.

La structure JSON est conservée lors de la sérialisation, ce qui nous permet d'essayer d'obtenir des réponses du serveur en envoyant les différentes méthodes stratum prises en charge par XMRig-proxy. Si les réponses du serveur correspondent à l'ordre des clés et des valeurs, cela peut être une forte indication que le serveur utilise XMRig-proxy ou qu'il se base dessus.

Le XMRig prend en charge trois méthodes de protocole Stratum :

  1. Connexion - la première requête initiée par l'employé de minage, qui contient généralement le portefeuille comme identifiant
  2. Keepalived - maintenir simplement la connexion
  3. Envoyer - envoyer le résultat lorsqu'un partage valide est trouvé

 

Lorsqu'une méthode non valide est demandée, le XMRig-proxy envoie une erreur en réponse (Figure 12). Cela peut indiquer le type de serveur, car d'autres services, tels que les pools, ignorent simplement la requête incorrecte plutôt que d'envoyer une erreur. La combinaison de tous ces éléments nous amène à la conclusion que nous avons affaire à XMRig-proxy.

When an invalid method is requested, the XMRig-proxy will answer with an error (Figure 12). Fig. 12: XMRig-proxy response as baseline

Nous avons divisé la méthode de soumission en trois cas qui devrait renvoyer des erreurs explicites à partir d'un proxy XMRig (Tableau 2).

  • Un partage à faible difficulté se produit lorsque le mineur soumet un hachage avec une valeur inférieure à celle de la cible attendue. 

  • Une valeur unique non valide est le résultat d'une valeur unique hors plage selon la conception de NiceHash. 

  • Un hachage de difficulté maximale est un hachage spécialement conçu qui répond probablement à la cible de n'importe quelle tâche. Dans ce cas, nous contournons la validation de la difficulté du proxy XMRig et nous transmettons directement au pool, ce qui renvoie l'erreur de pool.

Demande

XMRig-proxy

MoneroOcean

HashVault

Nanopool

SupportXMR

C3Pool

Connexion

(ligne de référence)

Keepalived

(ligne de référence)

Inconnu

(ligne de référence)

Envoyer : faible difficulté

(ligne de référence)

Envoyer : valeur unique non valide

(ligne de référence)

NA : adresse IP bloquée

Envoyer : difficulté maximale

Répéter le message de réponse du pool

NA : adresse IP bloquée

Tableau 2 : Comparaison des demandes de protocole Stratum entre XMRig-proxy et différents pools publics ; ✅ indique que la ligne de référence est la même, ✕ indique que les données sont différentes et ≈ indique que les données sont identiques, mais l'ordre différent.

Nous pouvons non seulement distinguer XMRig-proxy des pools couramment utilisés, mais également faire la distinction entre les pools eux-mêmes. Ces informations peuvent être utiles lorsque nous acheminons vers un pool via d'autres composants réseau, tels que le proxy inverse. Dans ce cas, lorsque nous soumettons des résultats de minage avec une difficulté maximale, nous pouvons obtenir une erreur liée au pool back-end plutôt qu'au proxy. En utilisant ces informations, nous pouvons identifier que l'attaquant utilise Nanopool, mais comme nous ne disposons pas de l'adresse du portefeuille, nous ne pouvons pas évaluer le nombre de victimes pour cette campagne ni ses bénéfices.

Étude de cas n° 4 : Communication blockchain masquée à l'aide d'une topologie proxy Stratum

Le proxy de protocole Stratum fonctionne au niveau du réseau en transférant les requêtes de protocole Stratum directement vers un autre serveur sans modifier les adresses de portefeuille. Cela permet de s'assurer que le travail de chaque mineur est crédité sur son portefeuille respectif. La mise en œuvre d'un proxy Stratum peut être réalisée à l'aide d'un proxy de réseau de couche de transport de base ou d'un proxy d'application spécialisé, qui comprend et gère le protocole.

Nous avons trouvé une campagne active qui utilise cette topologie et se connecte à un pool public via un proxy Stratum. Nous n'avons pas pu déterminer s'il s'agit d'un proxy inverse au niveau du réseau ou s'il intercepte le protocole Stratum lui-même et fonctionne comme un proxy d'application. Dans tous les cas, il redirige les messages Stratum pour masquer le pool ou le nœud back-end. L'analyse des pools publics pour le portefeuille fourni révèle qu'il contacte le pool public MoneroOcean .

La campagne est active depuis au moins quatre mois et son bénéfice total s'élève à 1 158 XMR (environ 180 USD). En soi, il ne s'agit pas d'une campagne réussie, mais l'effort apparent de l'acteur malveillant laisse présager des plans plus vastes, notamment le développement de l'ensemble de la campagne : à savoir l'infrastructure, le cryptomineur et les différents fichiers malveillants pour la diffuser. Les attaquants diffusent également la campagne eux-mêmes sans dépendre de tiers, tout en mettant en œuvre des mécanismes d'ingénierie anti-inverse, notamment le chiffrement, l'obscurcissement et la prévention de l'utilisation des outils de surveillance (Figure 13).

The attackers also distribute the campaign themselves without relying on third parties, while implementing anti-reverse engineering mechanisms, including encryption, obfuscation, and the prevention of the use of monitoring tools (Figure 13). Fig. 13: Persistent cryptominer uses Stratum proxy to hide the back-end pool

Bien que la campagne puisse être lente, nous pouvons observer une exécution réfléchie du logiciel malveillant, notamment dans le processus d'obscurcissement. Le logiciel malveillant tente de masquer la charge utile en téléchargeant une archive pendant l'exécution et en exécutant des processus avec des noms de fichiers système légitimes.

Détections

Il existe plusieurs moyens de détection en général. Chaque méthode peut ne pas être autonome, mais elle le sera si elle est utilisée en conjonction avec d'autres mécanismes de détection. Les cryptomineurs ne font pas exception à la règle ; en effet, ils peuvent être difficiles à détecter en raison de leurs caractéristiques bénignes. Ils utilisent la seule chose qui ne nécessite pas d'autorisation spéciale dans la plupart des systèmes d'exploitation : le calcul (temps CPU).

Connexions au réseau

Pour détecter ces mineurs, nous pouvons établir une référence croisée entre le réseau blockchain (comme le réseau Monero que nous avons étudié précédemment) et les données obtenues à partir d'un outil de visibilité du réseau, comme un pare-feu ou une solution de segmentation. Puisque chaque nœud ou pool doit interagir avec la blockchain Monero, les administrateurs réseau disposent ainsi d'informations précieuses sur le trafic sortant de leur réseau. Lorsqu'il est associé à des ports réseau, il facilite considérablement la détection, car la plupart des cryptomonnaies utilisent des numéros de port distincts, tels que 999, 3333 ou 7777. Bien que Monero soit utilisé dans cette étude de cas, le mappage réseau blockchain peut être utilisé dans tous les réseaux basés sur la preuve d'intervention (PoW).

Il est toutefois important de noter que tout le trafic vers les nœuds Monero n'est pas nécessairement du cryptominage, car ces nœuds fournissent parfois plusieurs services. Par exemple, on trouve l'IP 157[.]90[.]212[.]53 sur notre carte réseau Monero, mais il s'agit également d'un nœud de sortie pour le réseau Tor. Il peut y avoir de nombreuses raisons pour lesquelles un nœud Monero fournit d'autres services ; il peut être compromis ou simplement intentionnellement polyvalent. Dans tous les cas, l'utilisation de la connexion au réseau sans informations supplémentaires peut être une indication faible de connexion à la blockchain et peut générer des faux positifs. C'est une autre raison pour laquelle les informations sur le numéro de port sont essentielles pour une détection précise.

Une autre raison expliquant la présence de faux positifs peut être un faible taux de mise à jour de la carte. Un serveur légitime peut être attribué avec une adresse IP précédemment utilisée par un nœud Monero et provoquer un faux positif si la carte n'est pas à jour.

Cette détection ne peut pas être autonome, mais peut être utilisée comme déclencheur pour une logique de détection ou une enquête plus complète. Toute opération de cryptomineur doit inclure la communication avec un serveur Stratum pour une affectation de travail de minage. Généralement, il fonctionne avec des pools de minage connus du public, mais dans certains cas, il peut être masqué à l'aide d'un proxy, qui n'apparaîtra pas sur la carte réseau.

Détection de l'exécution de l'algorithme

Les cryptomineurs utilisent intensivement les ressources informatiques de la victime, de sorte que la surveillance du système permettant de détecter les pics d'utilisation peut indiquer une infection. Mais comme pour la carte réseau qui a fait l'objet d'une référence croisée, cette méthode unique ne permet pas une détection précise.

La combinaison de plusieurs indicateurs de compromission détectables augmente le taux de confiance de la détection. En d'autres termes, elle réduit les faux positifs. Pour qu'une opération minière réussisse, il existe des contreparties essentiels. Les cryptomineurs doivent extraire la cryptomonnaie choisie en utilisant son algorithme de consensus comme preuve de travail. Chaque algorithme de ce type possède une empreinte unique dans le système pendant l'exécution, et l'extraction de ces fonctionnalités peut créer une méthode solide de détection des cryptomonnaies malveillantes.

Les algorithmes résistants aux ASIC, tels que RandomX, mettent généralement en œuvre un ensemble complexe d'opérations qui peuvent être identifiées de manière unique. Par exemple, le développeur de RandomX a créé un outil de détection sur la base de cette hypothèse exacte. En itérant les threads en cours d'exécution dans le système, nous pouvons analyser l'état du thread, y compris les valeurs des registres de CPU. Puisque RandomX est mis en œuvre à l'aide des nombreuses caractéristiques modernes des processeurs, l'utilisation des configurations de contrôle d'arrondissement , comme avec l'outil de détection par le développeur de RandomX, est une façon d'y parvenir.

En fait, il peut être combiné à d'autres indicateurs, tels que les opérations AES matérielles et la configuration hugepage pour améliorer le taux de détection. En résumé, la détection peut être obtenue en recherchant des clés AES uniques dans les registres SSE ou en interrogeant les privilèges du jeton d'accès au fil, respectivement.

Nous pouvons également étendre ces méthodes à d'autres systèmes d'exploitation, car la plupart des cryptomineurs cherchent à ne pas dépendre des plateformes et doivent se comporter de la même manière, même sur des systèmes d'exploitation différents. Le fait de ne pas dépendre d'un système d'exploitation unique permet à une campagne d'être potentiellement plus fructueuse, car les chiffres cibles augmentent considérablement de cette façon.

Localisation du portefeuille dans la mémoire de processus

Lorsque les cryptomineurs communiquent directement avec le pool de minage plutôt qu'à l'aide d'un proxy, le portefeuille du mineur doit résider dans la mémoire du processus. En effet, le protocole Stratum exige que le mineur authentifie le serveur et indique quel compte doit être récompensé pour des soumissions de partage valides. Généralement, il utilise une adresse de portefeuille et, pour le minage de Monero, plus précisément, le mineur sera probablement basé sur le logiciel XMRig. En s'appuyant sur ces hypothèses, nous pouvons trouver et intercepter le portefeuille lorsqu'il est envoyé au pool en nous connectant aux différentes API de socket, ou (théoriquement) utiliser une « attaque » MITM (machine-in-the-middle) pour intercepter le message d'authentification envoyé par le mineur.

Nous pouvons également utiliser une simple recherche Regex sur l'intégralité de la mémoire allouée du processus pour trouver l'adresse de portefeuille à 95 caractères, car elle suit un format strict. Elle commence par 4 ou 8 et se compose de caractères BASE58 valides. Le motif /[48][1-9A-HJ-NP-Za-km-z]{94}/ pourrait donc être suffisant pour cette tâche et peut être intégré dans une règle YARA également. L'analyse peut être effectuée à tout moment après la première connexion du cryptomineur, car le mineur doit garder l'adresse du portefeuille disponible au cas où il devrait se reconnecter..

Enfin, nous pouvons utiliser l'une des techniques mentionnées pour trouver d'autres chaînes liées au protocole Stratum et analyser le portefeuille depuis l'intérieur. Ces indicateurs pourraient réduire les faux positifs, car la structure JSON du protocole est beaucoup plus unique. Par exemple, consultez la demande de connexion de la Figure 14 : nous pouvons créer une signature plus forte contenant plusieurs clés pour une détection plus précise.

  {
   "id": 1,
   "jsonrpc": "2.0",
   "method": "login",
   "params": {
       "login": "<wallet address>",
       "pass": "<Usually the worker name>",
       "agent": "<Usually xmrig agent>",
       "algo": [
           "rx/0"
       ]
   }
}

Fig. 14 : Exemple de demande de connexion ; la correspondance avec le modèle peut fournir une détection plus précise

Conclusions

Les chercheurs d'Akamai continueront à exposer les campagnes malveillantes et les acteurs à leur origine, ainsi qu'à identifier les IOC afin de protéger nos clients et le grand public.

Dans cette deuxième partie de notre série de blogs sur les cryptomineurs en trois parties, nous avons illustré un certain nombre de techniques permettant de révéler davantage d'informations sur diverses campagnes, notamment l'identification d'un pool de minage derrière un proxy de minage ou la localisation du fonctionnement géographique de la campagne en analysant le taux de hachage du botnet cryptomineur au fil du temps, et bien plus encore.

Nous avons découvert des cryptomonnaies malveillantes qui utilisaient Zephyr aux côtés du célèbre Monero. En utilisant les différentes topologies de minage, les cryptomineurs ont pu cacher des informations et minimiser le nombre d'identifications et d'indicateurs compromettants.

Après avoir pris conscience de l'anatomie des différents cryptomineurs et du processus de minage, en général, une question s'est posée : pouvons-nous arrêter le minage du botnet du cryptomineur ? Arrêter le minage permettrait de fermer les cryptomineurs qui infectent les machines des victimes et consomment leurs ressources. Nous allons étudier cette question dans le dernier épisode de notre série.

Pour suivre cette série et d'autres recherches de pointe en matière de sécurité, vous pouvez consulter notre page de recherches sur la sécurité et nous suivre sur les réseaux sociaux.

Indicateurs de compromission



Maor Dahan

écrit par

Maor Dahan

March 19, 2025

Maor Dahan

écrit par

Maor Dahan

Senior Security Researcher chez Akamai, Maor Dahan possède plus de dix ans d'expérience dans le domaine de la cybersécurité. Maor est spécialisé dans l'étude des systèmes d'exploitation, la recherche de vulnérabilités et l'analyse des logiciels malveillants. Il a conçu et développé des mécanismes avancés de détection et de prévention pour des produits de sécurité innovants tels que l'EDR, l'EPP et la sécurité virtualisée.