Cos'è davvero XMR, perché è diventato il carburante del cryptojacking, e perché il tuo server scalda anche di notte.
"Strano, da una settimana il load è sempre a 4. Sarà il backup." — nessun backup, sysadmin appena prima della doccia fredda.
La crypto privacy-by-default. Bitcoin con il sipario tirato. Zero indirizzi pubblici tracciabili, zero importi visibili, zero block explorer che ti vede.
Bitcoin è un postino con le cartoline: chiunque vede chi spedisce, chi riceve, e quanto. Tutto su un registro pubblico, per sempre. Monero è un postino con buste sigillate, dieci copie identiche, e firme anonime: il pacco arriva, ma nessuno (né tu, né chi guarda dall'esterno) sa esattamente da dove sia partito, dove finisca, quanto pesi. La rete dice solo "una transazione valida è avvenuta".
Nel 2014 nasce Bytecoin, prima implementazione del protocollo CryptoNote. Si scopre che l'80% delle monete erano già state minate prima del lancio pubblico (cosa molto poco simpatica). Una community sdegnata fa fork e crea BitMonero, poi rinominato Monero ("moneta" in esperanto). Da allora è il riferimento per privacy crypto: nessuna premine, hard fork periodici per restare ASIC-resistant, sviluppo aperto e finanziato dalla community.
Ogni firma viene mescolata con N firme decoy presenti on-chain. Non si può capire quale sia la "vera".
Ogni transazione genera un indirizzo monouso. Nessuno vede il tuo indirizzo "principale" sulla blockchain.
Anche gli importi sono nascosti, dimostrati validi via zero-knowledge proof (Bulletproofs+).
Algoritmo di mining ottimizzato per CPU. Rende ASIC e GPU farm poco competitivi. Ed è qui che inizia il problema.
Non è un'opzione "privata" come ZCash. Su Monero tutte le transazioni sono private. Sempre.
Ogni 6 mesi circa: aggiorna il protocollo, rompe gli ASIC eventualmente sviluppati, mantiene CPU mining vivo.
Dopo l'emissione iniziale, c'è tail emission di 0.6 XMR/blocco per sempre. Garantisce ricompensa ai miner.
Codice trasparente, sviluppo guidato da community. Nessuna fondazione padrona.
Monero non è Bitcoin con un mantello di Harry Potter sopra. È un protocollo diverso, con scelte tecniche diverse, e algoritmo di mining progettato apposta per girare sulla tua CPU di casa.
| Parametro | Valore | Confronto Bitcoin |
|---|---|---|
| Block time | ~2 minuti | 10 minuti |
| Block size | Dinamico (penalty oltre la media) | ~1-4 MB fissi |
| Algoritmo PoW | RandomX (CPU-friendly) | SHA-256 (ASIC-only) |
| Modello account | Stealth address + view key | UTXO trasparente |
| Privacy | Default e obbligatoria | Pseudo-anonimato (cluster facili) |
| Indirizzi | 95 caratteri base58 | 34-62 caratteri |
| Tail emission | 0.6 XMR/blocco per sempre | Halving fino a 21M |
| Hard fork | Ogni ~6 mesi | Solo se la community vuole |
RandomX è un algoritmo di proof-of-work progettato per essere efficiente su CPU general-purpose e inefficiente su hardware specializzato. Funziona generando programmi pseudocasuali (in un linguaggio interno) che il miner deve eseguire usando tutto quello che una CPU x86/ARM offre: registri, branch prediction, cache, virtual memory. Un ASIC non può fare questo se non implementando di fatto una CPU general-purpose, perdendo il vantaggio di costo.
Risultato: il tuo PC desktop o un server cloud minano XMR in modo sensato. Una farm GPU minerebbe meglio Ethereum (quando esisteva), una farm ASIC minerebbe Bitcoin, ma per Monero la CPU del tuo VPS hackerato è competitiva. Da qui il problema: ogni macchina compromessa è un piccolo miner utile.
Tre motivi, ognuno indipendentemente sufficiente. Insieme spiegano perché quasi tutto il ransomware moderno chiede pagamento in XMR, e perché il cryptojacking mina XMR e non altro.
Su Bitcoin la chain analysis (Chainalysis, Elliptic, TRM Labs) rintraccia indirizzi, cluster, exchange, KYC. Su Monero questa pipeline si rompe: niente cluster, niente cammino delle monete, niente importi. Il tracing è tecnicamente difficile e gli unici risultati pubblici si sono basati su exploit di vecchie versioni del protocollo o errori operativi degli utenti.
Per fare cryptojacking su scala serve un coin che renda dignitosamente con CPU di server cloud o desktop. Bitcoin no (servono ASIC), Ethereum non esiste più come PoW (passato a PoS nel 2022, fine del mining). Monero rimane l'unica grande crypto sensata da minare con CPU rubata. Non è un caso, è un design.
Convertire XMR in fiat è più complicato di Bitcoin perché molti exchange centralizzati l'hanno delistato per pressione regolatoria. Ma esistono swap atomici BTC-XMR, exchange decentralizzati e brokers OTC. Per chi opera in scala, è un attrito gestibile.
2017-2019: bastavano 5 righe di JavaScript in una pagina e il visitatore minava per te. Storia istruttiva di come una buona idea sia stata rovinata da chiunque la usasse.
Servizio che fornisce uno script JavaScript che mina XMR usando la CPU del visitatore. Idea legittima: alternativa alla pubblicità per monetizzare un sito. Trattenevano il 30%, l'oste il 70%.
Lo script viene inserito senza notifica all'utente. Comincia il dibattito: opt-in o opt-out? The Pirate Bay sostiene che è un esperimento. Gli utenti notano CPU al 100%.
Migliaia di siti compromessi tramite plugin WordPress vulnerabili, CDN compromesse (libreria a11y "Browsealoud" — un caso celebre infettò siti governativi UK e US). Coinhive diventa sinonimo di malware anche quando l'uso era legittimo.
Calo del prezzo XMR e hard fork che riduceva l'efficienza dell'algoritmo nel browser rendono il modello insostenibile. Restano vivi cloni (CoinIMP, Crypto-Loot) ma con quote di mercato marginali.
Il browser cryptojacking declina (gli ad-blocker e le browser policy lo stoppano), ma il fenomeno migra sui server: cloud VM compromesse, container, pipeline CI/CD, IoT, NAS. Qui è ancora pieno boom.
Nel 2018, milioni di persone hanno scoperto per la prima volta che il loro laptop aveva delle ventole. Aprivano un sito di film pirata, dopo 30 secondi sentivano un rumore familiare a chi lavora con un compilatore. Fu il primo contatto di massa fra utenza non tecnica e "la mia CPU può lavorare per qualcun altro". Una pagina della storia di internet ormai chiusa, ma educativa.
Quando il browser smise di funzionare, gli operatori capirono una cosa banale: i server hanno più CPU dei browser e nessuno li guarda. Da allora il cryptojacking è una piaga silenziosa dell'infrastruttura cloud.
XMRig è un miner Monero open source, performante, multi-piattaforma. Esistono fork, build statiche, build embedded per ARM, varianti minifuscate per evitare detection. Lo strumento è legittimo (lo usano anche miner onesti sul proprio hardware), ma è il binario più trovato sui server compromessi del pianeta.
Gli operatori malevoli lo droppano sotto nomi camuffati: kdevtmpfsi, kinsing, kthreaddi, sshd, java, [kworker/...]. Il nome "kdevtmpfsi" in particolare è così comune da essere diventato un IOC standard nelle alert SIEM.
| Periodo | Vettore dominante | Esempio iconico |
|---|---|---|
| 2017-19 | Browser cryptojacking | Coinhive su siti compromessi |
| 2018-20 | Server esposti senza auth | Hadoop YARN, JBoss, Jenkins, Docker socket |
| 2019-21 | Container e Kubernetes | kubelet aperto, registry pubblici, RBAC permissivo |
| 2020-22 | CI/CD pipeline e cloud | GitHub Actions runner free abusati per minare |
| 2021-23 | Supply chain | Pacchetti npm/PyPI con miner, immagini Docker tampered |
| 2023-26 | Edge / IoT / NAS | Synology, QNAP, router con firmware bucati |
Una panoramica difensiva dei pattern più comuni. Niente ricette: queste informazioni servono a sapere cosa proteggere prima, e cosa cercare durante un audit.
root o utenti default (ubuntu, admin, oracle). Liste pubbliche di password da Mirai e simili sono ancora lo standard./.git/ esposti, .env publicly readable, dashboard Grafana/Prometheus aperte.colors-js vs colorss-js), repository hijack, account compromessi degli autori.--privileged, mount di /var/run/docker.sock dentro il container, Kubernetes con hostPID/hostNetwork non necessari.~/.ssh/known_hosts, ~/.ssh/config e chiavi private senza passphrase per saltare alle macchine vicine.0.0.0.0:2375, un Confluence non patchato. Il cryptojacking è opportunismo industrializzato: bot che scansionano IP a caso 24/7 e sfruttano la prima cosa che trovano. La difesa primaria è non esporre quello che non deve esserlo, prima ancora di pensare a detection.
CPU al 100% costanti, processi con nomi che "sembrano kernel ma non lo sono", traffico verso stratum pool. La parte buona è che il cryptojacking, contrariamente al ransomware, ha indicatori molto evidenti se solo li cerchi.
htop.I nomi più comuni mascherati come kernel-thread:
# Top hit storici (non esaustivo, le campagne cambiano)
kdevtmpfsi
kinsing
kthreaddi
[kworker/0:1] # attenzione: i veri kworker hanno spazio nel nome
xmrig
xmr-stak
sysupdate
network-watchdog
.X11-unix
.configure # nascosti con leading dot in /tmp
Comandi di diagnosi rapida:
# Top processi per CPU sostenuta
ps -eo pid,user,%cpu,%mem,etime,cmd --sort=-%cpu | head -20
# Verifica se i "kernel thread" sono davvero kernel (PPID 2 = kthreadd)
ps -eo pid,ppid,cmd | grep -E 'k(devtmpfsi|insing|worker)'
# Connessioni di rete sospette: stratum pool tipicamente porte 3333/4444/5555/7777/14444
ss -tnp | grep -E ':3333|:4444|:5555|:7777|:14444'
ss -tnp state established | grep -v ':22 |:80 |:443 '
# File aperti dal processo sospetto
lsof -p <PID>
ls -la /proc/<PID>/cwd /proc/<PID>/exe
Anche se uccidi il processo, riparte. Cerca i meccanismi di persistenza:
# Cron di tutti gli utenti
for u in $(cut -f1 -d: /etc/passwd); do
echo "=== $u ==="
crontab -u "$u" -l 2>/dev/null
done
ls -la /etc/cron.* /var/spool/cron/
# systemd unit aggiunte di recente
find /etc/systemd /lib/systemd /usr/lib/systemd -name '*.service' -newer /etc/hostname
# File modificati nelle ultime 7 giorni in directory sensibili
find /etc /usr/local/bin /usr/bin /tmp /var/tmp /dev/shm -type f -mtime -7 2>/dev/null
# Chiavi SSH aggiunte (la persistenza più classica)
find / -name 'authorized_keys' -exec ls -la {} \; 2>/dev/null
# LD_PRELOAD — rootkit user-space
cat /etc/ld.so.preload 2>/dev/null
env | grep LD_
# Profile/bashrc modificati
ls -la /etc/profile.d/
grep -r 'curl\|wget\|base64' /etc/profile.d/ /root/.bashrc /home/*/.bashrc 2>/dev/null
*.minexmr.com (già chiuso ma usato in storia), *.supportxmr.com, *.nanopool.org, pool.minexmr.com, xmr.f2pool.com, moneroocean.stream.La difesa migliore è non farsi infettare. Le seconde migliori sono limitare il danno e rilevare in fretta. Niente magia: igiene operativa.
PasswordAuthentication no, PermitRootLogin no. Considera fail2ban o sshd con port knocking se proprio devi tenerlo esposto.--privileged se non necessario. Mai mount di /var/run/docker.sock dentro container.readOnlyRootFilesystem: true dove possibile.CapBnd, drop di tutto e add solo quello che serve.auditd, Falco, osquery, Wazuh. Falco in particolare ha regole built-in per rilevare cryptojacking pattern (esecuzione di binari da /tmp, scrittura su /etc/passwd, etc.).--privileged di defaultNiente panico, niente kill -9 al volo. Le campagne moderne hanno persistenza multipla e watchdog: se uccidi solo il processo, riparte. Procedi in ordine.
LiME o avml). Salva l'immagine per analisi forense successiva./var/log/auth.log, /var/log/syslog, journalctl --since "30 days ago" esportato.ps auxf, ss -tnp, lsof, netstat -an, last, w, find / -mtime -30 -type f > /tmp/recent.txt (su filesystem read-only o esterno se possibile).sha256sum e cerca su VirusTotal (senza uploadare il file: solo hash, per non avvisare l'attaccante via "query" ai suoi domini di canary se ne ha).La regola d'oro post-incidente:
Le reazioni istintive che peggiorano la situazione. Le abbiamo fatte tutti almeno una volta, idealmente non quando contava.
kill -9 e bastaUccidi il processo, esce qualche minuto e riparte. C'è un cron, un systemd timer, un watchdog, un .bashrc modificato. Devi smontare la persistenza prima del processo, non dopo.
rm -rf /tmp/*Distruggi prove forensi, e probabilmente non risolvi (il binario è già copiato altrove). Inoltre rompi sessioni utente legittime e socket di sistema in /tmp.
L'attaccante ha probabilmente piantato chiavi SSH, modificato sudoers, aggiunto utenti. La password è l'ultimo dei suoi mezzi di accesso.
Non hai modo di garantire che il sistema sia integro. Anche se rimuovi tutto quello che vedi, potrebbe esserci un rootkit kernel-level o LD_PRELOAD invisibile a strumenti standard. Reinstalla.
Perdi la RAM, e con la RAM molte info utili (chiavi in memoria, processi rilevanti, IP attivi). Snapshot prima, poi isolamento di rete, poi spegnimento se necessario.
L'attaccante legge. Se sa che l'hai notato, accelera (esfiltra, distrugge log) o si nasconde meglio (cambia C2, usa nomi diversi). Risolvi prima, racconti dopo — idealmente in un postmortem ragionato.
killall xmrig && rm -rf /tmp/* e via", ma ti dà informazioni vere su come sono entrati — così chiudi davvero la falla invece di aspettare la prossima campagna.
Strumenti che usano davvero gli incident responder. Niente snake oil, niente "antivirus next-gen AI".
Il riassunto da tenere aperto in un'altra tab.
kdevtmpfsi, kinsing, xmrig, fake [kworker]..bashrc, authorized_keys, ld.so.preload.