Anatomia dei cryptominer: come arrestare le botnet di mining

Maor Dahan

scritto da

Maor Dahan

June 24, 2025

Maor Dahan

scritto da

Maor Dahan

Maor Dahan svolge il ruolo di Senior Security Researcher per Akamai e vanta un’esperienza pluridecennale nel settore della cybersecurity. Maor è specializzato nei componenti interni dei sistemi operativi, nelle ricerche sulle vulnerabilità e nelle analisi di malware. Inoltre, si occupa della progettazione e dello sviluppo di avanzati meccanismi di rilevamento e prevenzione per prodotti di sicurezza innovativi, come i sistemi EDR, i prodotti EPP e le soluzioni per la sicurezza basate sulla virtualizzazione.

Grazie a un metodo denominato "bad shares", siamo riusciti a bloccare il proxy di mining sulla rete, arrestando l'esecuzione del mining.
Grazie a un metodo denominato "bad shares", siamo riusciti a bloccare il proxy di mining sulla rete, arrestando l'esecuzione del mining.

Sommario

Introduzione

Benvenuti nell'ultima parte della nostra serie di blog Anatomia dei cryptominer.

  • Nel nostro primo post, abbiamo discusso delle componenti fondamentali delle criptovalute, dei relativi attributi e di cosa rende alcune di esse più allettanti di altre per i criminali. 

  • Nella seconda parte, abbiamo analizzato vari esempi di cryptomining che abbiamo scoperto mentre stavano violando diverse topologie di mining. 

  • In questo terzo e ultimo post della serie, andremo ad esplorare due nuove tecniche proattive che possono essere usate per contrastare i cryptominer.

Oltre a questi post del blog, abbiamo pubblicato vari strumenti di analisi che sono disponibili nel nostro archivio.

Tutti sanno che la miglior difesa è l'attacco. A causa della natura distribuita delle campagne di cryptominer, una loro interruzione potrebbe risultare molto difficile da realizzare.

In questo post del blog, vi mostriamo come risolvere questo problema sfruttando la progettazione delle comuni topologie di mining per arrestare in modo efficace il processo di mining. Anche se le tecniche da noi descritte sono state usate per prendere di mira i cryptominer Monero, gli stessi principi si possono applicare anche ad altre criptovalute.

Come arrestare le operazioni dei cryptominer

Quando viene rilevata l'attività di un cryptominer dannoso, è possibile arrestarlo mediante due modi attualmente disponibili: 

  1. Richiedere il servizio del pool per bloccare l'account del criminale

  2. Tentare di arrestare altri servizi presenti nell'infrastruttura del criminale per interferire con la campagna

Questi metodi presentano alcuni problemi perché possono diventare alquanto complessi e richiedere molto tempo in quanto si basano su terze parti.

Abbiamo, quindi, trovato un metodo migliore. 

Abbiamo sviluppato due tecniche sfruttando le topologie di mining e le policy del pool che ci consentono di ridurre l'efficacia della botnet di un cryptominer fino ad arrestarla completamente, forzando, quindi, il criminale ad apportare cambiamenti radicali alla sua infrastruttura o, persino, ad abbandonare l'intera campagna.

Entrambe le tecniche sfruttano le comunicazioni Stratum in modo da bloccare i componenti critici come proxy o wallet che sono correlati agli account interessati dall'operazione di mining.

Da 3,3 milioni a zero

Abbiamo preso di mira l'operazione di un cryptominer dannoso che è attiva da sei anni. Bloccando il proxy di mining del criminale, un point of failure fondamentale nella topologia di mining, siamo riusciti a ridurre il suo hashrate da 3,3 milioni di hash al secondo fino ad azzerarlo del tutto (Figure 1).

Come i  criminali stavano ricavando profitti da questa operazione, altrettanto facilmente siamo riusciti a fermare il potenziale ricavo annuo del criminale nel giro di pochi secondi. Tramite un semplice portatile, abbiamo fatto perdere all'operatore del cryptominer un profitto annuo di 26.000 dollari con una drastica riduzione dell'hashrate.

By banning the attacker’s mining proxy, a central point of failure in the mining topology, we were able to reduce its hashrate from 3.3 million hashes per second all the way down to zero (Figure 1). Fig. 1: A malicious mining proxy losing 100% of its hashrate

In cosa consiste il metodo "bad shares"?

Il video riportato in Figura 2 mostra questa tecnica, che abbiamo denominato "bad shares", in cui la vittima di un cryptominer è connessa ad un proxy di mining dannoso. Grazie a un metodo denominato "bad shares", siamo riusciti a bloccare il proxy di mining sulla rete, arrestando l'esecuzione del mining e riducendo l'utilizzo della CPU della vittima dal 100% allo 0%.

Figura 2. Applicazione della tecnica "bad shares" nella nostra configurazione di prova

Se non potete batterli, arrestateli

Il cryptomining eseguito tramite un pool si basa sull'invio di validi valori hash, denominati share. Per generare ricavi, un cryptominer deve inviare gli share al pool di mining. Quando riceve uno share, il pool di mining verificato il risultato dell'hash e la sua difficoltà.

La verifica degli share è una delle attività più complesse che deve gestire il server del pool, specialmente nei casi di share non validi. Come con ogni cosa che ci circonda nella nostra vita, è possibile commettere errori; ad esempio, un malfunzionamento dell'hardware potrebbe condurre all'invio di valori share errati al pool.

La gestione degli share non validi utilizza un numero elevato di risorse, pertanto i pool devono proteggersi dalla possibilità di crollare a causa dell'invio di enormi volumi di share non validi. Pertanto, se uno share inviato non supera la verifica del server, la maggior parte dei pool applicherà una sanzione al miner, che, di solito, viene arrestato temporaneamente.

Questa interazione può risultare molto interessante quando si tenta di arrestare un'operazione di mining dannosa. Se possiamo far arrestare i miner del criminale (ossia, le vittime) da parte di un nodo di back-end o un pool, possiamo fermare lo sfruttamento delle risorse del cryptominer e, fondamentalmente, "liberare" le vittime.

Nelle sezioni seguenti, andremo a dimostrare questo concetto prendendo di mira due campagne di mining che abbiamo esplorato in precedenza, ciascuna delle quali presenta una diversa topologia di mining: un proxy di mining e una connessione diretta ad un pool pubblico.

Utilizzo del metodo "bad shares" per arrestare il proxy di mining di un criminale

Una delle topologie di mining più comunemente utilizzate dai cryptominer dannosi è il proxy di mining (Figura 3). Questa configurazione migliora la privacy nascondendo sia l'indirizzo del back-end che quello del wallet dei criminali, che così proteggono le loro identità, riducendo, al contempo, la loro tracciabilità all'interno della rete.

One of the most popular mining topologies used by malicious cryptominers is a mining proxy (Figure 3). Fig. 3: Mining topology based on a mining proxy

I proxy di mining pongono particolari problemi per il rilevamento della rete poiché "nascondono" il pool del sistema preso di mira a cui il miner si connette, che, di solito, viene rilevato tramite un'ispezione della rete. Inoltre, nascondono l'indirizzo del wallet, riducendo ulteriormente la superficie rilevabile del miner. Tuttavia, abbiamo scoperto che i proxy di mining possono risultare un "tallone di Achille" per i cryptominer.

Quando si esegue il mining tramite un proxy, tutte le vittime sono connesse ad un solo server, pertanto se si interferisce con il proxy si può interrompere completamente l'operazione di mining. Abbiamo sviluppato una tecnica che ci consente di fare proprio questo.

L'idea è semplice: se connettiamo un proxy dannoso come un miner, possiamo inviare risultati non validi relativamente al processo di mining ("bad shares"), i quali, riuscendo a bypassare la verifica del proxy, verranno inviati al pool. Una serie consecutiva di "bad shares" causa, alla fine, il blocco del proxy, arrestando effettivamente le operazioni di mining per l'intera botnet di cryptomining.

Comunicare con il proxy

Il cryptominer deve essere prima connesso al proxy tramite il metodo di accesso Stratum. Se non è stata impostata un'altra configurazione, il miner si identifica come x per impostazione predefinita nel server proxy XMRig (Figura 4).

The cryptominer must first connect to the proxy using the Stratum login method. If no other configuration was set, the miner identifies as x by default in the XMRig proxy server (Figure 4). Fig. 4: JSON representation of the login request

Se la connessione riesce, è presente un listener all'estremità del proxy. Possiamo garantire che si tratta effettivamente di un proxy di mining analizzando la risposta: una risposta valida sarà costituita da un documento JSON conforme al protocollo Stratum e il risultato sarà un processo.

Anche se il processo di mining completo è complesso (come descritto nella guida Da zero a Monero), creare uno share personalizzato è relativamente semplice poiché richiede solo l'estrazione di alcuni valori dalla risposta del proxy: id di lavoro, id di processo e nicehash nonce. Questi tre valori sono necessari per tenere traccia di uno specifico processo di mining, pertanto, se vogliamo far accettare al proxy i nostri "bad shares" dobbiamo compilare questi campi in modo corretto (Figura 5).

 All three are required to keep track of a specific mining job, so if we want the proxy to accept our bad shares we have to fill out those fields correctly (Figure 5). Fig. 5: JSON representation of job assignment response

Dopo aver ricevuto uno share da un miner, il proxy lo inoltra al pool praticamente così com'è, con un'unica differenza fondamentale: inviandolo dall'indirizzo del wallet del criminale. Ecco perché non potremmo mai conoscere il wallet o altre informazioni sull'account del criminale o sul pool proveniente dal cryptominer di esempio.

XMRogue

Infiltrarsi nella botnet del cryptominer come una delle sue vittime non è difficile. Di solito, non sono richieste autorizzazioni speciali e, in molti casi, vengono utilizzate applicazioni standard quali XMRig come miner e XMRig-proxy come proxy di mining,

il che ci ha portato a sviluppare XMRogue. XMRogue è uno strumento che consente di impersonare un miner, connettersi ad un proxy di mining, inviare "bad shares" consecutivi e, infine, bloccare il proxy di mining sul pool (Figura 6).

This led us to develop XMRogue. XMRogue is a tool that enables us to impersonate a miner, connect to a mining proxy, submit consecutive bad shares, and eventually ban the mining proxy from the pool (Figure 6). Fig. 6: Bad shares technique sequence diagram

Un'importante considerazione riguarda la verifica degli share al livello del proxy: poiché i nostri "bad shares" vengono inoltrati al pool dal proxy, quest'ultimo ha l'opportunità di identificarli e di escluderli.

Ad esempio, il famoso XMRig-proxy verifica il valore nicehash nonce fornito con il processo e la difficoltà del risultato. Se il valore nonce o la difficoltà non sono corretti, il "bad share" non verrà inoltrato al pool di back-end. In Figura 7, viene illustrato il processo di verifica all'interno del codice, in cui vengono ignorati gli share con hash a bassa difficoltà o i valori nicehash errati.

In Figure 7, we see the validation within the code, where shares with low difficulty hashes or incorrect nicehash values are discarded. Fig. 7: XMRig-proxy code that handles mining errors. (Source: https://github.com/xmrig/xmrig-proxy/blob/501d9722454e20de90ed205e26da8cbf304c2ac8/src/proxy/Miner.cpp#L259)

Possiamo superare queste verifiche analizzando la richiesta del processo e creando attentamente il risultato di un processo "errato" che viene, invece, considerato valido dal proxy, forzandolo ad inoltrare i nostri share al pool.

Mettere alla prova la teoria

Per mettere alla prova la nostra tecnica, abbiamo scelto di prendere di mira una delle campagne di mining identificate nella seconda parte di questa serie. Siamo riusciti ad estrarre gli indirizzi di tutti i proxy di mining utilizzati dalla campagna prescelta, che ci fornisce una serie di informazioni alquanto utili. Ad esempio, possiamo vedere che il proxy centrale del criminale (denominato in modo originale "proxy") ha ricevuto la massima valutazione da Nanopool, che ne indica un utilizzo diffuso (Figura 8).

 For example, we can see that the central attacker’s proxy — creatively named “proxy” — has a maximum rating from Nanopool, which indicates extended use (Figure 8). Fig. 8: Worker list of the malicious campaign

Questo proxy genera 3 milioni di hash al secondo, che equivale ad un ricavo di circa 3 dollari all'ora o di 26.000 all'anno. Prendendo di mira questo proxy con XMRogue, siamo riusciti a bloccarlo sul pool e a fermare il mining di tutte le vittime ad esso connesse. Se esaminiamo l'hashrate del proxy, possiamo vedere che si è ridotto fino ad azzerarsi (Figura 9).

If we inspect the hashrate of the proxy, we can see that it dropped all the way down to zero (Figure 9). Fig. 9: The campaign mining dashboard during XMRogue work

Se consideriamo l'impatto di XMRogue sull'intera campagna del criminale, possiamo notare una notevole diminuzione della sua redditività. Quando l'abbiamo documentata per la prima volta, questa campagna aveva generato quasi 50.000 dollari all'anno. Dopo aver interrotto e reso inutilizzabile la campagna, i ricavi annui che aveva generato sono diminuiti del 76% passando a 12.000 dollari. Prendendo di mira ulteriori proxy, i ricavi avrebbero potuto potenzialmente azzerarsi. Questo tipo di impatto potrebbe facilmente costringere i criminali ad abbandonare la loro campagna per sempre o a correre il rischio di venire identificati se le modifiche da loro apportate dovessero venire monitorate.

Utilizzo di altre policy del pool di mining

I criminali non sempre utilizzano un proxy. In molti casi, le vittime si connettono direttamente al pool, pertanto la tecnica precedente non è applicabile. L'invio di "bad shares" blocca semplicemente il nostro indirizzo IP sul pool, senza influire sull'operazione di mining.

Public pool topology Fig. 10: Public pool topology; a victim miner connected directly to a public pool

Quando abbiamo ispezionato il codice sorgente del pool di mining, ci è venuta in mente un'altra opzione: prendere di mira l'indirizzo del wallet. Mentre la policy dei "bad shares" precedente prendeva di mira gli indirizzi IP del miner, abbiamo identificato un'altra policy che viene applicata al livello del wallet: il pool blocca l'indirizzo del wallet per un'ora se presenta più di 1.000 nodi di lavoro.

Se utilizza un proxy di mining, un criminale può incorporare il proprio indirizzo del wallet esclusivamente sul server proxy, consentendogli di camuffarlo in modo efficace. Tuttavia, nei casi in cui viene eseguito il mining diretto, l'indirizzo del wallet deve essere presente sul computer della vittima per poterlo estrarre.

Bloccare il criminale in questo caso è semplice: dobbiamo semplicemente inviare più di 1.000 richieste di accesso contemporaneamente tramite il wallet del criminale, che così verrà bloccato dal pool. Questa tecnica è stata aggiunta come modalità di operazione allo strumento XMRogue.

Per illustrare questa idea, abbiamo usato un'altra campagna che utilizza il pool pubblico MoneroOcean. Lo stato iniziale della campagna era pari ad un hashrate di 22 kH/s (Figura 11). Questa campagna è molto più piccola di quella discussa sopra, ma la tecnica in sé copre una gamma più ampia di configurazioni di campagne di cryptomining.

To illustrate this idea, we used another campaign we uncovered that uses the public pool MoneroOcean. The campaign's initial state was a 22 kH/s hashrate (Figure 11). Fig. 11: Active cryptominer campaign uses MoneroOcean public pool

Dopo aver lanciato il nostro script, che, immediatamente, avvia migliaia di accessi, abbiamo visto precipitare il valore del mining, se non bloccarsi completamente (Figura 12).

After launching our script, which instantly initiates thousands of logins, we saw the mining rate plummet, eventually seizing entirely (Figure 12). Fig. 12: Continuous decrease of the cryptominers’ mining hashrate

Più grande è la rete, più superficiale è la cattura

Questa tattica potrebbe interrompere più operazioni di mining, ma non è una soluzione permanente. Una volta bloccate le diverse connessioni di accesso, l'hashrate della campagna è stato ripristinato (Figura 13).

This tactic could interrupt more mining operations, but it isn’t a permanent solution. Once we stopped the multiple login connections, the campaign's hashrate recovered (Figure 13). Fig. 13: The account recovered after we stopped XMRogue's multiple login sequence

Riepilogo

Le tecniche descritte sopra mostrano come gli addetti alla sicurezza possono arrestare in modo efficace campagne di cryptominer dannosi senza interrompere il funzionamento legittimo del pool sfruttando le policy corrispondenti. Un miner legittimo è in grado di riprendersi rapidamente da questo tipo di attacco perché riesce a modificare facilmente il proprio indirizzo IP o il proprio wallet a livello locale.

Questa attività sarebbe molto più difficile da eseguire per un cryptominer dannoso poiché richiederebbe la modifica dell'intera botnet. Per i miner meno sofisticati, tuttavia, questo sistema di difesa potrebbe disattivare completamente la botnet.

Conclusione della serie

Questo post conclude la nostra serie Anatomia dei cryptominer, in cui abbiamo descritto gli elementi fondamentali del cryptomining e abbiamo esplorato la mentalità dei criminali tramite la ricerca di campagne attive in cui sono implementate diverse topologie di mining.

Riteniamo che la minaccia dei cryptominer continuerà a crescere nel tempo, tuttavia, ora possiamo contrastare e interrompere le attività dei criminali, rendendo molto più difficile monetizzare i cryptominer in modo efficace.



Maor Dahan

scritto da

Maor Dahan

June 24, 2025

Maor Dahan

scritto da

Maor Dahan

Maor Dahan svolge il ruolo di Senior Security Researcher per Akamai e vanta un’esperienza pluridecennale nel settore della cybersecurity. Maor è specializzato nei componenti interni dei sistemi operativi, nelle ricerche sulle vulnerabilità e nelle analisi di malware. Inoltre, si occupa della progettazione e dello sviluppo di avanzati meccanismi di rilevamento e prevenzione per prodotti di sicurezza innovativi, come i sistemi EDR, i prodotti EPP e le soluzioni per la sicurezza basate sulla virtualizzazione.