Bitcoin, the famous peer-to-peer infrastructure supporting the homonym crypto-currency, offers pseudo-anonymity of the entities involved in a trans- action. Payers and payees are represented by addresses, they can own or con- trol. Exploiting this characteristic, malicious agents can exchange payments without any external monitoring. The absence of a link between pseudonyms and their owners thus represents the intrinsic limit during the analysis of transactions. In this work, we propose BitAnalyzer: a framework that tries to break the Bitcoin pseudo-anonymity by grouping the addresses that are likely to be controlled by the same real-world entity and by semantically tagging them. BitAnalyzer performs an in-memory, heuristic-based clustering process; af- ter which, by both statically scanning a database and on-the-fly crawling websites, the framework links the target addresses to real-world information about their controllers. While clustering the addresses, BitAnalyzer iden- tifies, transaction by transaction, those to be grouped together. Existing proposals offer ways for such identification step, but not evaluated. We here show how a confusion matrix can be derived from a consistent dataset of transactions by both exploiting an outdated client bug and making a rea- sonable assumption on the transactions, applying the conclusions during the clustering. We validate BitAnalyzer with a dataset of real-world addresses linked to various families of ransomwares. For instance, a connection is found among seven input addresses, three of them belonging to CryptoLocker.
Bitcoin è una infrastruttura, un sistema di pagamento e una moneta nati nel 2009 dal progetto proposto dal creatore sotto le pseudonimo di Satoshi Nakamoto. Nonostante un primo periodo di relativa notorietà, questo innovativo metodo di pagamento è oggigiorno adottato da persone in tutto il mondo, forum online e communities sono nate a supporto e sostegno della diffusione della criptovaluta. Il sistema sottostante è distribuito, non prevede terze parti ed è basato sullo scambio di Bitcoins tramite transazioni tra utenti. Questi sono rappresentati da uno o più pseudonimi, chiamati indirizzi o addresses. Composti da una chiave pubblica e una privata, essi non hanno necessità di alcuna informazione da parte dei proprietari, che possono quindi effettuare pagamenti senza essere direttamente riconoscibili. L'infrastruttura per sè prevede lo scambio della moneta da una transazione all'altra, in quanto un utente può spendere una certa quantità di Bitcoin solo se in uscita da una transazione precedente. Gli indirizzi saranno solo una temporanea giacenza tra esse. Tale rete i pagamenti porta il protocollo ad essere basato su un libro mastro comune, o common ledger. Tale storico dei pagamenti è fisicamente implementato tramite l'utilizzo della ''blockchain'', che tutti i nodi nella rete devono avere: una collezione temporalmente ordinata di blocchi tra loro criptamente legati ad accumulo. La blockchain può quindi solo crescere, è composta da blocchi che crescono in numero man mano che vengono generati. I blocchi contengono le transazioni prodotte dai clienti nella rete. Perchè queste vengano validate, esse devono essere analizzabili e quindi non criptate. Avendo a disposizione l'intera blockchain, possiamo analizzarne le transazioni contenute. Per ogni transazione, ne siamo in grado di osservare gli input, gli output e le relative quantità. Le tipologie di input e output dipenderanno dal sistema di riscatto prestabilito, ma, nella maggior parte dei casi, essi conducono alla conoscenza degli indirizzi dei partecipanti allo scambio, informazione alla base della nostra analisi. La pseudo-anonimità presentata da Bitcoin pone dunque un forte grado di libertà ad attori malevoli del mondo digitale. Creatori di ransomwares, mercati neri, scammers e chiunque abbia bisogno di un metodo di pagamento sicuro e svincolato da terze parti può adottare l'utilizzo di questa moneta senza nessuna apparente tracciabilità. BitAnalyzer si pone come obiettivo di rompere tale pseudo-anonimità. Esso raggruppa tutti gli indirizzi che presumiamo appartenere allo stesso utente o entità con l'utilizzo delle informazioni ottenute dalla blockchai, costruendo poi, da fonti esterne, un ponte tra un determinato indirizzo e l'utente che lo controlla. Ciò, come poi esposto da alcuni esempi, porterà al raggruppamento di indirizzi appartenenti alla stessa famiglia di ransomware sotto l'unica entità osservando solamente le transazioni che li coinvolgono. Il metodo di clusterizzazione degli indirizzi è basato su due euristiche. La prima prevede che tutti gli input ad una generica transazione siano controllati dalla stessa entità. La seconda si basa sulla caratteristica per cui tutti gli input a una transazione devono essere spesi, o l'eventuale resto viene devoluto al creatore del blocco; identificando l'output di resto, possiamo quindi considerarne il relativo indirizzo e aggiungerlo al gruppo di indirizzi generato dalla prima euristica. L'assunzione è che esista un unico output di resto, coerentemente con l'esistenza di un'unica entità dietro il pagamento. L'individuazione certa dell'output di resto è possibile fino al gennaio 2013 a causa di un bug del programma client della rete Bitcoin, per il quale tale output è sempre posto all'inizio dell'elenco. Purtroppo, quest'informazione non è più valida e diverse euristiche sono state proposte. In questo elaborato presenteremo come, procedendo con un'analisi delle performance di queste, abbiamo costruito un'infrastruttura capace di stimare la matrice di confusione di un determinato metodo per l'individuazione di tale output. L'informazione, transazione per transazione, verrà poi proposta ad una efficiente struttura dati contenuta in memoria principale. Data la consistente mole di dati presentata dalla blockchain, tale design è proposto per incentivare gli aspetti di velocità di percorrenza delle transazioni e recupero dei risultati, purtroppo a scapito delle necessità di hardware. L'ultima fase è composta dall'analisi semantica dei risultati. Adottati vari scrapers per fonti online e non solo, abbiamo a disposizione un database dal quale avere informazioni riguardanti un determinato indirizzo. A latere, una batteria di scripts per ricerche online provvederà a cercare informazioni su siti fornendo al momento l'indirizzo richiesto. Limiti e vantaggi dell'approccio sono infine mostrati, soffermandosi sulle necessità ed il design di hardware e software del tool, e mostrando esperimenti condotti dato un dataset di indirizzi noti. Tale dataset comprende indirizzi estratti da ransomware noti alla comunità scientifica. Tra le famiglie proposte vi sono CryptoLocker, 7ev3n, SAM-SAM, WannaCry e DMALocker. Tramite gli esperimenti condotti, abbiamo ritrovato indirizzi appartenenti a quest'ultime essere raggruppati assieme. Proponiamo infine una validazione di BitAnalyzer da un punto di vista semantico. Tramite l'applicazione del modulo sviluppato, abbiamo ritrovato un gruppo di indirizzi come appartenenti a famiglie di ransomware che già conoscevamo, confermando l'efficacia del framework.
BitAnalyzer : a framework for extracting intelligence from the blockchain
GNECCO, ENRICO
2017/2018
Abstract
Bitcoin, the famous peer-to-peer infrastructure supporting the homonym crypto-currency, offers pseudo-anonymity of the entities involved in a trans- action. Payers and payees are represented by addresses, they can own or con- trol. Exploiting this characteristic, malicious agents can exchange payments without any external monitoring. The absence of a link between pseudonyms and their owners thus represents the intrinsic limit during the analysis of transactions. In this work, we propose BitAnalyzer: a framework that tries to break the Bitcoin pseudo-anonymity by grouping the addresses that are likely to be controlled by the same real-world entity and by semantically tagging them. BitAnalyzer performs an in-memory, heuristic-based clustering process; af- ter which, by both statically scanning a database and on-the-fly crawling websites, the framework links the target addresses to real-world information about their controllers. While clustering the addresses, BitAnalyzer iden- tifies, transaction by transaction, those to be grouped together. Existing proposals offer ways for such identification step, but not evaluated. We here show how a confusion matrix can be derived from a consistent dataset of transactions by both exploiting an outdated client bug and making a rea- sonable assumption on the transactions, applying the conclusions during the clustering. We validate BitAnalyzer with a dataset of real-world addresses linked to various families of ransomwares. For instance, a connection is found among seven input addresses, three of them belonging to CryptoLocker.File | Dimensione | Formato | |
---|---|---|---|
2018_12_GNECCO.pdf
accessibile in internet solo dagli utenti autorizzati
Descrizione: Testo della tesi
Dimensione
2.26 MB
Formato
Adobe PDF
|
2.26 MB | Adobe PDF | Visualizza/Apri |
I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.
https://hdl.handle.net/10589/144867