Perché dovrebbe interessarti?
I criminali utilizzano Bitcoin e altre criptovalute per gestire pagamenti per la vendita di dati rubati, servizi di hacking come DDoS e pagamenti di ransomware. Se vuoi seguire il denaro e comprendere meglio gli autori delle minacce, dovrai comprendere Bitcoin e come analizzare le transazioni Bitcoin.
È importante tenere il passo con la tecnologia utilizzata dai criminali in modo da essere meglio attrezzati per comprendere nuovi cambiamenti e sviluppi. Inoltre, con più persone che analizzano Bitcoin e la blockchain, ci sono più opportunità di sviluppare nuovi strumenti e tecniche per difendersi dai cattivi.
Storicamente i criminali sono stati i primi ad adottare le nuove tecnologie perché le innovazioni tendono ad essere adottate per prime dove l’attrito è maggiore e c’è un incentivo. I criminali sono stati tra i primi a scoprire usi creativi per le automobili (mentre la maggior parte della polizia utilizzava biciclette o cavalli), i telefoni cellulari e i cercapersone, e sono ovviamente pionieri nei modi di sfruttare Internet, Tor, la crittografia e ora Bitcoin. Se i criminali sono i primi ad adottare una tecnologia, allora coloro che cercano di comprenderli e contrastarli dovrebbero essere al secondo posto.
Terminologia Bitcoin per un analista di malware
Prima di parlare di analisi, voglio assicurarmi che tu abbia familiarità con alcuni termini e concetti di base di Bitcoin. È straordinariamente facile scoprire Bitcoin se hai già familiarità con i concetti comuni di InfoSec come la crittografia a chiave pubblica e l’hashing. Questa sezione è solo una panoramica. Se vuoi una comprensione più profonda, ti incoraggio a leggere l’articolo originale su Bitcoin (sono solo 9 pagine!).
Bitcoin è essenzialmente un registro pubblico: tiene traccia di chi possiede cosa. Il registro stesso è chiamato blockchain. La blockchain è speciale perché, a differenza di un foglio di calcolo condiviso pubblicamente, puoi aggiungere elementi alla blockchain solo se segui le regole. Le regole sono state create con una comprensione della teoria dei giochi che viene rigorosamente applicata dalla matematica per garantire l’equità. Inoltre, è decentralizzato, il che significa che nessuna autorità centrale controlla la rete e non è possibile sovvertire la rete con la coercizione di una singola entità. La blockchain utilizza gli hash delle chiavi pubbliche anziché i nomi delle persone per registrarne la proprietà. In questo modo, è in qualche modo anonimo, sebbene esistano modi per correlare gli indirizzi e alcuni modi limitati per mappare gli indirizzi con le identità effettive.
Estrazione
I nuovi bitcoin vengono creati mediante un processo chiamato mining. Questo tende ad essere il processo più interessante e misterioso. Dopotutto, estraendo un blocco, il minatore viene ricompensato con 25 Bitcoin. Agli attuali tassi di mercato, vale oltre $ 25.000 USD. Questo di solito attira l’attenzione della gente. Un blocco è una raccolta di transazioni bitcoin (registrazioni di persone che inviano bitcoin), un hash del blocco precedente e un numero casuale (nonce) che, una volta sottoposto ad hashing, produce un valore che inizia con un numero di 0 bit. Ad esempio, supponiamo che tu abbia un blocco simile a questo:
caleb sends joe 1.2 btc
udi sends joe 0.3 btc
joe sends aidan 1.5 btc
nonce: 0
Se dovessi salvarlo in un file (senza ritorno a capo alla fine) e calcolare l’hash SHA256, l’hash sarebbe: b5b6ee30fae42aa131a84f705e5d7cf59133b3954e53c79b05c13a328b8d6f8a
. Puoi controllarti (su un Mac) con shasum -a 256 block.txt
. Il primo byte di questo blocco di esempio è 0xb5
che in binario è 10110101
. Questo ha zero iniziali 0 bit. Se incrementi il nonce a 4
l’hash del blocco diventa 01bdf748aeb6443595d1d29fc348418f4b4b2bbe5287c53e892735f467702308
e il primo byte è 00000001
che ha 7 iniziali 0 bit.
Se il numero target di 0 bit fosse veramente alto, diciamo 50 bit, non avresti modo di saperlo a priori quale nonce funzionerebbe! Dovresti semplicemente eseguire l’hashing di molti, molti blocchi con un nonce incrementale finché non trovi un valore nonce che fornisca il numero target di 0 bit iniziali. Quando un minatore Bitcoin crea un blocco valido (l’hash ha abbastanza 0 bit iniziali), lo annuncia alla rete e dimostra che il minatore ha dovuto lavorare molto duramente. Questo è il motivo per cui si dice che l’estrazione mineraria venga utilizzata prova del lavoro perché trovare un blocco valido richiede molto hashing e se ne hai uno, dimostra che hai fatto il lavoro per trovarlo.
Una volta inclusa una transazione in un blocco valido, diventa parte della blockchain. Diventa verità. In ogni momento ci sono migliaia di transazioni non confermate in attesa di essere incluse in un blocco appena estratto. Puoi vederne l’elenco qui: Transazioni non confermate. Il protocollo Bitcoin regola automaticamente la difficoltà target in modo che venga estratto un blocco, in media, ogni 10 minuti.
Se desideri giocare tu stesso con il mining, ecco uno script Python che simula il mining. Puoi regolare la difficoltà aumentando il livello TARGET
valore.
import sys
import hashlib
TARGET = 16
def generate_blocks(transactions):
block_base = 'n'.join(transactions)
nonce = 0
while nonce < sys.maxint:
yield '{}nnonce: {}'.format(block_base, nonce)
nonce += 1
def hash_block(block):
h = hashlib.sha256()
h.update(block)
return h.digest()
def digest_to_binstr(digest):
return ''.join(map(lambda o: format(o, '08b'), map(ord, digest)))
transactions = [
'caleb sends joe 1.2 btc',
'udi sends joe 0.3 btc',
'joe sends aidan 1.5 btc',
]
target_str = '0' * TARGET
attempts = 0
for block in generate_blocks(transactions):
attempts += 1
digest = hash_block(block)
binstr = digest_to_binstr(digest)
if binstr[0:TARGET] == target_str:
print("Mined block with {} difficulty after {} attempts!n{}nHash: {}".format(TARGET, attempts, block, binstr, binstr))
break
Ecco come appare una volta eseguito:
$ ./fake-mine.py
Successfully mined block with 16 difficulty after 78169 attempts!
caleb sends joe 1.2 btc
udi sends joe 0.3 btc
joe sends aidan 1.5 btc
nonce: 78168
Hash: 0000000000000000000100011000110010001011110101011000101000011000101000101101001000100010110110000011010001000110101101110111110100110001100100011001000111001011111100111110111100101110010001110101100000000110001101101111101001101110011000000001101100110000
Con una difficoltà target pari a 16, sono stati necessari oltre 78.000 tentativi prima di trovare un nonce che producesse un blocco valido.
Transazioni
I Bitcoin sono tutti posseduti da un indirizzo derivato da una chiave pubblica. Inviare Bitcoin in realtà significa semplicemente riassegnarli a un’altra chiave pubblica e ciò avviene trasmettendo una transazione. Una transazione include un hash sia della chiave pubblica di destinazione che di uno o più hash delle monete che possiedi (transazioni precedenti). Questi due elementi sono firmati con la tua chiave privata per dimostrare che ne sei il proprietario.
Un dettaglio importante per i ricercatori in materia di sicurezza è che le transazioni vengono trasmesse su Internet. Se si desidera mappare le identità sulle chiavi pubbliche che spendono monete, avere l’indirizzo IP del client che ha inviato le monete potrebbe essere molto informativo. Siti come Blockchain.info includono l’indirizzo IP da cui è stata inoltrata una transazione all’interno della rete peer-to-peer, ma questo è solo un proxy molto approssimativo dell’IP del cliente reale e potrebbe non essere nemmeno correlato allo stesso paese come cliente. Per ricerche su come ottenere effettivamente l’indirizzo IP, consulta la deanonimizzazione dei client nella rete Bitcoin P2P.
Piscine minerarie
Il mining da solo in Bitcoin è difficile perché, a meno che tu non abbia investito molti soldi in attrezzature, probabilmente non riuscirai mai a estrarre un blocco e tutti i tuoi sforzi per farlo sarebbero sprecati. I pool minerari si sono sviluppati per consentire ai miner più piccoli di combinare il loro potere di hashing. Se qualcuno estrae un blocco, la ricompensa viene solitamente distribuita in proporzione al contributo di ciascun minatore. I contributi vengono misurati registrando il numero di volte in cui un minatore risolve un blocco con una difficoltà target inferiore rispetto a Bitcoin.
Il malware che estrae Bitcoin di solito lo fa contribuendo a un pool. Tuttavia, l’estrazione di Bitcoin è molto meno comune rispetto all’estrazione di altre criptovalute come Monero perché l’estrazione di Bitcoin è troppo difficile per essere redditizia. Inoltre, Monero ha il vantaggio di essere progettato per essere molto più anonimo di Bitcoin.
Se il malware si connette a un pool, dovresti essere in grado di identificare l’indirizzo Web del pool e le credenziali del lavoratore. Le credenziali del lavoratore vengono utilizzate dal pool per sapere quale indirizzo dovrebbe ricevere i pagamenti. Ogni pool è leggermente diverso, ma alcuni utilizzano indirizzi di pagamento per i nomi utente dei lavoratori. Se possibile, desideri ottenere l’indirizzo utilizzato dal malware perché ti consente di eseguire analisi aggiuntive.
Analisi di un indirizzo Bitcoin
Se riesci a mettere le mani su un indirizzo Bitcoin associato a una campagna malware, puoi controllarne l’attività. Se c’è attività, sai che ci sono ancora macchine che vengono infettate. Se l’indirizzo non ha attività per un lungo periodo e poi riprende ad avere attività, significa che c’è stata una nuova campagna e dovresti iniziare a indirizzare le risorse nella ricerca di nuovi campioni. La quantità di attività sull’indirizzo dà anche un’idea del successo del malware e del numero di macchine che ha infettato.
Un esempio reale di analisi di un indirizzo associato al ransomware è nel nostro rapporto CryptXXX: New CryptXXX Variant Discovered. L’indirizzo per il pagamento del ransomware era 18e372GNwjGG5SYeHucuD1yLEWh7a6dWf1. Secondo la richiesta di riscatto del malware, il pagamento deve essere di 1,2 bitcoin o un multiplo a seconda del tempo impiegato dalla vittima per pagare. Sapendo questo, possiamo esaminare le transazioni verso l’indirizzo di riscatto e vedere il numero e l’importo dei pagamenti a questo indirizzo. Se avessimo monitorato gli indirizzi IP delle transazioni, avremmo potuto anche avere un’idea della distribuzione geografica delle vittime, il che avrebbe potuto fornire informazioni su chi veniva preso di mira. Con una migliore idea di chi è preso di mira e perché, è più semplice configurare e distribuire gli honeypot per provare a raccogliere nuovi campioni.
Poiché tutti i pagamenti a questo indirizzo sono avvenuti nell’arco di circa due mesi, si può presumere che l’indirizzo fosse per una singola campagna e che debbano esserci altri indirizzi associati a campagne precedenti e future. Se monitori la blockchain e raggruppi gli indirizzi associati, potresti trovare nuovi indirizzi di pagamento prima di trovare campioni. Ciò aiuterebbe un analista di malware a restringere la ricerca per raccogliere nuovi campioni da analizzare e garantire la copertura del rilevamento. Non esistono strumenti di clustering di indirizzi gratuiti e chiavi in mano, ma è un campo di ricerca attivo. Per ulteriori informazioni, consulta L’irragionevole efficacia del clustering di indirizzi e BitSniffer.
Il monitoraggio del flusso di bitcoin è reso più difficile dall’uso dei bicchieri. Si tratta di servizi che prendono bitcoin da molti utenti, li mescolano più volte a molti indirizzi diversi e poi li ridistribuiscono ai proprietari originali. Ancora una volta, non esistono strumenti “punta e clicca” per svelare il groviglio creato dai bicchieri, ma esiste una ricerca sull’argomento. Per ulteriori informazioni, leggi Sondaggio sui servizi di mixaggio Bitcoin: tracciamento di Bitcoin anonimi.
Personalmente ho trovato alcuni interessanti malware legati a Bitcoin semplicemente cercando stringhe che assomigliano a indirizzi o stringhe di connessione al pool minerario. Quando questi tipi di ricerche vengono combinati con altri tipi di analisi statica, possono costituire un’interessante fonte di potenziale malware. Questa presentazione fornisce alcuni buoni esempi di ricerca di stringhe e artefatti relativi a Bitcoin e include anche le regole di Yara: Tracciare bit di monete nel disco e nella memoria.
Riepilogo
Spero che dopo aver letto questo tu abbia una migliore comprensione di come funziona Bitcoin e che tu sia armato di alcune nuove tecniche di analisi per il prossimo ransomware o malware correlato alla criptovaluta che farai a pezzi. Spero anche che questa introduzione alle varie analisi e ricerche forensi sui Bitcoin ti ispiri a creare alcuni nuovi strumenti e tecniche di analisi che potrebbero aiutare tutti nel settore a tenere il passo con i cattivi.
Per saperne di più sulle minacce più recenti e su come proteggersi da esse, iscriviti al nostro blog.