🍺 Buy me a beer
🧋

Monero per Svogliati

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.

01 / 12

Cos'è Monero (e perché esiste)

La crypto privacy-by-default. Bitcoin con il sipario tirato. Zero indirizzi pubblici tracciabili, zero importi visibili, zero block explorer che ti vede.

💡 L'analogia delle buste

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".

📚 La storia in 30 secondi

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.

🕵

Ring Signatures

Ogni firma viene mescolata con N firme decoy presenti on-chain. Non si può capire quale sia la "vera".

🔒

Stealth Addresses

Ogni transazione genera un indirizzo monouso. Nessuno vede il tuo indirizzo "principale" sulla blockchain.

🔢

RingCT

Anche gli importi sono nascosti, dimostrati validi via zero-knowledge proof (Bulletproofs+).

🧠

RandomX

Algoritmo di mining ottimizzato per CPU. Rende ASIC e GPU farm poco competitivi. Ed è qui che inizia il problema.

🎯

Decoy by default

Non è un'opzione "privata" come ZCash. Su Monero tutte le transazioni sono private. Sempre.

Hard fork periodici

Ogni 6 mesi circa: aggiorna il protocollo, rompe gli ASIC eventualmente sviluppati, mantiene CPU mining vivo.

🏦️

No supply cap stretto

Dopo l'emissione iniziale, c'è tail emission di 0.6 XMR/blocco per sempre. Garantisce ricompensa ai miner.

🌍

Open source

Codice trasparente, sviluppo guidato da community. Nessuna fondazione padrona.

ℹ️ Privacy ≠ illegalità Monero esiste perché la sorveglianza finanziaria è un problema reale anche per chi non fa nulla di male. Detto questo, le caratteristiche che servono al giornalista in regime autoritario servono benissimo anche al ransomware operator. Questa guida tratta entrambi i lati: il primo è il perché del progetto, il secondo è perché un sysadmin nel 2026 deve sapere riconoscerlo sui propri server.
02 / 12

Architettura tecnica — CryptoNote v2 + RandomX

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.

⚙️ Specifiche di base

ParametroValoreConfronto Bitcoin
Block time~2 minuti10 minuti
Block sizeDinamico (penalty oltre la media)~1-4 MB fissi
Algoritmo PoWRandomX (CPU-friendly)SHA-256 (ASIC-only)
Modello accountStealth address + view keyUTXO trasparente
PrivacyDefault e obbligatoriaPseudo-anonimato (cluster facili)
Indirizzi95 caratteri base5834-62 caratteri
Tail emission0.6 XMR/blocco per sempreHalving fino a 21M
Hard forkOgni ~6 mesiSolo se la community vuole

🧠 RandomX — il motivo per cui esiste cryptojacking

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.

🔑 Le tre chiavi di un wallet Monero

  • Spend key (privata): firma le transazioni in uscita. Se la perdi, perdi i fondi. Se te la rubano, perdi i fondi.
  • View key (privata, ma condivisibile): permette di vedere le transazioni in entrata, senza poter spendere. Utile per audit, per la contabilità aziendale, per dimostrare un pagamento. È la cosa più vicina a un "estratto conto" in Monero.
  • Public address: derivato dalle due chiavi. Lo dai a chi ti deve pagare. Sulla blockchain non appare direttamente: appaiono solo gli stealth address generati per ogni transazione.
⚠️ La view key è solo la metà del puzzle Anche con view key, non puoi sapere chi ha mandato i soldi (ring signatures), né quanto vale ogni decoy. Vedi solo gli output a te destinati. La privacy non si rompe condividendo la view key: serve solo a darti uno strumento di audit a senso unico.
03 / 12

Perché è la moneta preferita di chi non vuole farsi vedere

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.

🛡️

Privacy non opzionale

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.

💻

Mining su CPU qualsiasi

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.

🏦️

Exchange & off-ramp

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.

🚨 Cosa si paga in XMR oggi (purtroppo)

  • Riscatti ransomware: la maggior parte dei gang famosi accetta o preferisce XMR (alcuni offrono sconto se paghi in Monero invece che in Bitcoin).
  • Cryptojacking payout: i miner illegali su server compromessi vanno tutti su pool Monero.
  • Mercati illegali: dopo il declino dei marketplace su Bitcoin, XMR è diventato lo standard de-facto.
  • Servizi privacy legittimi: VPN che non vogliono associare un pagamento al cliente, servizi journalism, donazioni a progetti dissidenti.
  • Curiosità tecnica: esiste anche chi lo usa per pagamenti normali, perché pensa che la privacy finanziaria sia un diritto. Ma è minoranza rumorosa.
04 / 12

Coinhive — l'epoca d'oro del cryptojacking nel browser

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.

Settembre 2017

Nasce Coinhive

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%.

Ottobre 2017

The Pirate Bay lo usa (senza dirlo)

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%.

2018

Cryptojacking di massa

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.

Marzo 2019

Coinhive chiude

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.

2019–oggi

Si sposta sui server

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.

💡 Il momento "chi ha messo le ventole nei laptop?"

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.

05 / 12

Post-Coinhive — XMRig sui server, l'era moderna

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 — il miner di riferimento

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.

🌍 L'evoluzione dei vettori (alta vista)

PeriodoVettore dominanteEsempio iconico
2017-19Browser cryptojackingCoinhive su siti compromessi
2018-20Server esposti senza authHadoop YARN, JBoss, Jenkins, Docker socket
2019-21Container e Kuberneteskubelet aperto, registry pubblici, RBAC permissivo
2020-22CI/CD pipeline e cloudGitHub Actions runner free abusati per minare
2021-23Supply chainPacchetti npm/PyPI con miner, immagini Docker tampered
2023-26Edge / IoT / NASSynology, QNAP, router con firmware bucati
📊 Numeri che fanno riflettere Secondo report ricorrenti dei principali vendor cloud (AWS, GCP, Azure security blogs) e di MITRE/SANS, il cryptojacking è la singola post-exploitation più comune su VM cloud compromesse. Più del ransomware, più del data exfiltration, più del C2. Perché? Perché è silenzioso, monetizzabile subito, e non richiede negoziazione con la vittima.
06 / 12

Come finisce sul tuo server — vettori di ingresso

Una panoramica difensiva dei pattern più comuni. Niente ricette: queste informazioni servono a sapere cosa proteggere prima, e cosa cercare durante un audit.

🔌 Vettori esterni (la rete)

  • Servizi esposti senza autenticazione: Docker socket su TCP, kubelet, Redis, MongoDB, Elasticsearch, Hadoop YARN, JBoss, Jenkins, Kibana, Confluence Data Center senza fix CVE recenti. Il tema ricorrente: pannelli di gestione esposti pubblicamente.
  • SSH con credenziali deboli: brute-force su root o utenti default (ubuntu, admin, oracle). Liste pubbliche di password da Mirai e simili sono ancora lo standard.
  • RCE recenti non patchate: Log4Shell, Spring4Shell, Confluence OGNL, vBulletin, vari WordPress plugin, GitLab template injection. Le campagne di mass scanning partono entro ore dalla disclosure.
  • API pubbliche scoperte: /.git/ esposti, .env publicly readable, dashboard Grafana/Prometheus aperte.

📦 Supply chain (il pacchetto fidato)

  • Pacchetti npm/PyPI/RubyGems con miner: tiposquatting (colors-js vs colorss-js), repository hijack, account compromessi degli autori.
  • Immagini Docker pubbliche tampered: build "nginx-unofficial" con XMRig dentro, mirror di immagini ufficiali con modifiche.
  • Action GitHub di terzi con codice malevolo richiamato in workflow CI.
  • Plugin WordPress/Magento/Joomla da repository non ufficiali.

🏫 Cloud e CI/CD (i compute gratis)

  • GitHub Actions, GitLab CI, CircleCI free tier abusati: account fake (spesso compromessi) che lanciano miner nei runner. I provider hanno implementato detection negli anni, ma il gioco continua.
  • Credenziali cloud leakate: chiavi AWS/GCP committate in repository pubblici. I bot che le harvestano spawn-ano istanze GPU/CPU per minare in pochi minuti.
  • Lambda/Cloud Functions: meno comune, ma esistono campagne che abusano di runtime serverless con timeout lunghi.
  • Container con privilegi eccessivi: --privileged, mount di /var/run/docker.sock dentro il container, Kubernetes con hostPID/hostNetwork non necessari.

🔗 Lateral movement (il salto al vicino)

  • SSH key collection: una volta compromessa una macchina, gli operatori cercano ~/.ssh/known_hosts, ~/.ssh/config e chiavi private senza passphrase per saltare alle macchine vicine.
  • Cloud metadata service abuse: leggere il metadata IMDSv1 (se non disabilitato) per ottenere credenziali instance role.
  • Container escape: bug noti del runtime (runc CVE-2019-5736 era il classico) per uscire dal container e atterrare sull'host.
💡 L'80% degli incidenti reali è ovvio in retrospettiva Un Redis aperto su Internet, una credenziale AWS in un commit pubblico, un Docker socket su 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.
07 / 12

Come capire se sei infetto — i segnali

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.

🔥 Sintomi macroscopici

  • Load 1m / 5m / 15m sempre alto anche in assenza di traffico applicativo. Soprattutto se il pattern è piatto (mining = lavoro costante, non a picchi).
  • Bolletta cloud impazzita: vCPU ore, network out (verso pool stratum), egress traffic più alto del solito.
  • Throttling del provider cloud: AWS/GCP/Hetzner spesso rilevano cryptojacking e sospendono o limitano l'istanza. Riceverai una mail.
  • Calo di performance dell'app legittima: l'utente reclama, e tu apri htop.
  • Ventole sempre al massimo su hardware fisico.

🔍 Cosa cercare nei processi

I nomi più comuni mascherati come kernel-thread:

bash — nomi sospetti tipici
# 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:

bash — check rapido
# 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

📋 Persistenza — dove si nasconde

Anche se uccidi il processo, riparte. Cerca i meccanismi di persistenza:

bash — check 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

📡 Indicatori di rete

  • Connessioni a IP non documentati verso porte 3333/4444/5555/7777/14444 (stratum classiche).
  • DNS query verso pool noti: *.minexmr.com (già chiuso ma usato in storia), *.supportxmr.com, *.nanopool.org, pool.minexmr.com, xmr.f2pool.com, moneroocean.stream.
  • Traffico verso wallet/proxy server custom: spesso gli operatori non si collegano direttamente a un pool pubblico ma a un loro proxy che inoltra. Il dominio è quindi "qualunque", ma il protocollo stratum+tcp è riconoscibile dal pattern.
  • Picco di traffico TCP outbound dopo un orario specifico (quando l'attaccante avvia la campagna).
🔧
NetForge → Packet Sniffer ha anomaly detection per scansioni e protocolli sospetti, e il modulo Network Scanner ti mostra connessioni stabilite, ASN remoto e geolocation, utile per individuare a colpo d'occhio un endpoint stratum verso un ASN che non dovrebbe esserci.
08 / 12

Come difenderti — hardening proattivo

La difesa migliore è non farsi infettare. Le seconde migliori sono limitare il danno e rilevare in fretta. Niente magia: igiene operativa.

🏠 Riduci la superficie d'attacco

  • Niente servizi di gestione su Internet pubblico. Mai. Docker socket, Kubernetes API, Redis, MongoDB, Elasticsearch, Jenkins, Grafana admin: tutto su VPN o bastion. Se serve esposto, almeno con auth forte e mTLS.
  • SSH: solo chiavi, mai password. PasswordAuthentication no, PermitRootLogin no. Considera fail2ban o sshd con port knocking se proprio devi tenerlo esposto.
  • Patcha entro 48 ore ogni CVE critico su software esposto. I bot scansionano in tempo reale.
  • Disabilita IMDSv1 su AWS, usa solo IMDSv2. Su GCP/Azure equivalenti.
  • Network segmentation: il database backend non deve poter parlare con Internet in uscita. Niente egress se non strettamente necessario. Consulta la guida VLAN e Networking.

🔐 Container e Kubernetes hardening

  • Mai --privileged se non necessario. Mai mount di /var/run/docker.sock dentro container.
  • runAsNonRoot sempre, readOnlyRootFilesystem: true dove possibile.
  • NetworkPolicy per limitare il traffico pod-to-pod e l'egress verso Internet.
  • Pod Security Admission (o Gatekeeper/Kyverno) per rifiutare manifest insicuri.
  • Image signing & admission control: solo immagini firmate (cosign + policy).
  • Image registry interno mirror di Docker Hub: previene tampering e tira giù le immagini una sola volta.

🛡️ MAC, capabilities e sandbox

  • AppArmor o SELinux attivo: profili per servizi esposti che non hanno bisogno di syscall esotiche. Vedi guida AppArmor.
  • seccomp profile: blocca syscall non necessari. Default Docker copre molto, custom è meglio.
  • Capabilities ridotte: CapBnd, drop di tutto e add solo quello che serve.
  • Read-only filesystem dove non serve scrivere. Tipicamente i container web no, ma molti microservizi sì.

📊 Detection e alerting

  • Alert su CPU sostenuta >80% per >30 minuti su servizi che non dovrebbero. Banale e potentissimo.
  • Egress firewall con allowlist: il tuo backend non chiama 51.15.x.x:3333. Se lo fa, bloccalo (e indaga).
  • DNS sinkhole / RPZ con feed che includono pool mining. Vedi DNS Sicuro.
  • EDR open-source: 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.).
  • Cloud security tools: AWS GuardDuty, GCP Security Command Center, Azure Defender. Hanno detection specifiche per CryptoCurrency:EC2/BitcoinTool.
  • Billing alert: una soglia di spesa giornaliera/mensile salva milioni di euro al mondo cloud ogni anno.

Da fare

  • Esporre il minimo indispensabile
  • SSH solo via chiave, fail2ban
  • Patching entro 48h sui CVE critici
  • Egress firewall con allowlist
  • AppArmor/SELinux su servizi esposti
  • Image signing & registry interno
  • Billing alert + CPU sustained alert
  • Backup off-site (al di là del cryptojacking)

Da evitare

  • Pannelli admin su 0.0.0.0
  • Password come autenticazione SSH
  • Container --privileged di default
  • IMDSv1 attivo su AWS
  • Egress senza policy
  • Pacchetti npm/PyPI senza pin di versione
  • Credenziali cloud committate (anche in repo privati)
  • "Lo controllo dopo, ora va che è un piacere"
09 / 12

Sei già infetto — cosa fare adesso

Niente panico, niente kill -9 al volo. Le campagne moderne hanno persistenza multipla e watchdog: se uccidi solo il processo, riparte. Procedi in ordine.

🔬 Step 1 — Triage senza distruggere prove

  • Snapshot della VM (cloud) o memory dump (con LiME o avml). Salva l'immagine per analisi forense successiva.
  • Salva log critici: /var/log/auth.log, /var/log/syslog, journalctl --since "30 days ago" esportato.
  • Foto dello stato: 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).
  • Hash dei binari sospetti con 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).

🚰 Step 2 — Isolamento

  • Stacca dalla rete (security group/firewall) ma non spegnere la macchina: la RAM contiene info utili.
  • Revoca credenziali che possono essere state esfiltrate: SSH key dell'utente, token cloud, secret di app, password dei DB.
  • Audit su altre macchine della stessa rete o cluster: il lateral movement è reale.

🔥 Step 3 — Reinstalla, non "ripulire"

La regola d'oro post-incidente:

  • Considera la macchina compromessa irrecuperabile. Non ti puoi fidare di binaries, kernel modules, init scripts.
  • Wipe e reinstall da zero, idealmente con un'immagine immutabile e infrastructure-as-code (Terraform + Ansible/cloud-init).
  • Ripristina i dati da un backup pre-infezione, controllato. Non dal filesystem della VM compromessa.
  • Cambia tutte le credenziali che la macchina conosceva, anche se "sembra che non siano state usate".
⚠️ Il cryptojacking spesso viene insieme ad altro Il cryptojacking visibile (CPU al 100%) è spesso il payload meno preoccupante. Sotto ci può essere data exfiltration, backdoor SSH, web shell, o credenziali rubate vendute a un secondo gruppo. Considera ogni cryptojacking come un indicatore generale di compromissione: il tuo server è open buffet, non solo un mining rig altrui.
10 / 12

L'errore classico — cosa NON fare

Le reazioni istintive che peggiorano la situazione. Le abbiamo fatte tutti almeno una volta, idealmente non quando contava.

kill -9 e basta

Uccidi 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.

❌ Cambiare solo la password root

L'attaccante ha probabilmente piantato chiavi SSH, modificato sudoers, aggiunto utenti. La password è l'ultimo dei suoi mezzi di accesso.

❌ "Pulire" e tenere la macchina

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.

❌ Spegnere la macchina subito

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.

❌ Pubblicare i dettagli su Twitter

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.

💡 La disciplina paga Un incident response fatto bene richiede un'ora in più rispetto al "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.
11 / 12

Tool e link utili

Strumenti che usano davvero gli incident responder. Niente snake oil, niente "antivirus next-gen AI".

🔬 Detection & runtime

  • Falco (CNCF): runtime detection per Linux/K8s, regole pronte per cryptojacking.
  • auditd: il classico audit syscall di Linux. Scomodo da configurare, ma standard.
  • osquery: query SQL su stato del sistema. Comodissimo per fleet di server.
  • Wazuh: SIEM open source con agente, regole, dashboard.
  • chkrootkit e rkhunter: vecchi ma ancora utili per scan rapidi.
  • Lynis: audit di hardening Linux. Non è detection ma copre molto del "perché sei stato bucato".

🔎 Forensics & analisi

  • LiME + Volatility 3: dump RAM e analisi.
  • avml (Microsoft): memory acquisition portabile.
  • YARA con regole pubbliche per XMRig e varianti.
  • VirusTotal: hash lookup (non upload se non sei sicuro).
  • MalwareBazaar (abuse.ch): hash database open.
  • strace / ltrace: per capire cosa fa un binario sospetto in sandbox.

🌞 Cloud-native

  • AWS GuardDuty: detection CryptoCurrency:EC2/BitcoinTool built-in.
  • GCP Security Command Center: equivalente per Google Cloud.
  • Azure Defender for Cloud: equivalente per Azure.
  • Trivy (Aquasec): vulnerability scanner per container e IaC.
  • kube-bench: CIS benchmark per Kubernetes.

📚 Riferimenti

  • MITRE ATT&CK T1496 — Resource Hijacking: tassonomia delle tecniche.
  • SANS Internet Storm Center: diary giornalieri con IOC freschi.
  • abuse.ch URLhaus e ThreatFox: feed IOC pubblici.
  • NVD: il database CVE ufficiale (anche aggregabile da NetForge).
  • The Monero Project (getmonero.org): documentazione del protocollo, lato "legittimo".
🛡️
NetForge include un Full Audit con check di compliance, header di sicurezza, fingerprint servizi e CVE matching, e il Network Scanner con SNMP audit e traceroute ASN per smascherare traffico verso ASN sospetti. Utile sia per audit periodico difensivo, sia per capire cosa hai esposto prima che lo trovi qualcun altro.
12 / 12

Cheat Sheet — Monero in 10 righe

Il riassunto da tenere aperto in un'altra tab.

🧋 Su Monero

  • Privacy by default: ring signatures + stealth address + RingCT. Non opzionale.
  • RandomX: PoW CPU-friendly. Per questo è la moneta del cryptojacking.
  • Tre chiavi: spend (firma), view (vede in entrata), public address.
  • Hard fork ogni ~6 mesi: rompe ASIC, cambia regole.
  • Tail emission: 0.6 XMR/blocco per sempre, niente cap stretto.

🛡️ Sul cryptojacking (lato difensivo)

  • Sintomo principale: CPU 100% costante, load piatto, bolletta cloud impennata.
  • Nomi binari tipici: kdevtmpfsi, kinsing, xmrig, fake [kworker].
  • Connessioni di rete: porte 3333/4444/5555/7777/14444 verso pool stratum.
  • Persistenza tipica: cron, systemd unit, .bashrc, authorized_keys, ld.so.preload.
  • Vettore #1 nel cloud: servizio di gestione esposto pubblicamente o credenziale leakata.
  • Prevenzione > cura: niente admin panel su Internet, SSH solo a chiave, patch <48h, egress allowlist.
  • Se infetto: snapshot → isola → reinstalla. Non "ripulisci".
  • Cryptojacking visibile = compromissione totale. Cambia tutte le credenziali.
La sintesi Monero è un progetto tecnico interessante, con motivazioni legittime di privacy. La scelta di RandomX (CPU mining) lo ha reso involontariamente la moneta dell'opportunismo industriale. Per il sysadmin la lezione è semplice: se le tue macchine non dovrebbero essere mining rig, qualunque CPU sostenuta è un alert. E qualunque servizio esposto pubblicamente è un'opportunità che qualcuno, da qualche parte del mondo, sta già scansionando.