Bitcoin Forensics – HackInBo Spring Edition 2016

di | 20 Maggio 2016

Bitcoin Forensics ad HackInBoDurante la conferenza HackInBo Spring Edition del 16 maggio 2016 a Bologna ho tenuto un talk sulla Bitcoin Forensics, illustrando gli aspetti tecnici e investigativi della criptomoneta e approfondendo le tecniche d’intelligence sulla blockchain, sugli indirizzi Bitcoin e sulle transazioni.

I Bitcoin sono ormai sempre più utilizzati, oltre che da utenti legittimi, dalla criminalità organizzata e nell’ambito del mercato alternativo di merce illegale noto come “dark web”. La presentazione illustra le basi delle crittovalute (wallet, indirizzi, chiavi private, chiavi pubbliche, transazioni, blockchain, etc…) fino ad approfondire i motivi che rendono il Bitcoin un protocollo anonimo ma nello stesso tempo tracciabile. Un’ambivalenza questa che permette a chi vuole rimanere nascosto di utilizzare pseudonimi per celare la propria identità e a chi vuole certificare apertamente pagamenti o incassi di farlo con altrettanta facilità. Vengono approfonditi gli aspetti tecnici e investigativi – che sono poi alla base della cosiddetta “Bitcoin Forensics”  o “Bitcoin Intelligence” – con la presentazione di alcune applicazioni interessanti dei sistemi basati su blockchain, come la notarization e gli smart contract. Per chiudere, vengono accennate le problematiche di sicurezza e ai rischi della criptomoneta mostrando l’utilizzo illecito che ne viene fatto nell’ambito dell’ormai tristemente noto fenomeno dei ransomware, la tipologia di trojan che cripta i documenti e richiede alle vittime un riscatto.

Nella giornata di domenica invece ho tenuto un laboratorio pratico sul Bitcoin, i partecipanti del corso hanno sperimentato la creazione e l’utilizzo di wallet online e offline, la generazione di chiavi private e pubbliche anche tramite linea di comando con successiva importazione ed esportazione per l’utilizzo in diversi contesti. I partecipanti hanno eseguito transazioni anche tramite servizi di money laundering o siti di gioco che si sono esercitati a tracciare per valutarne l’anonimato, hanno imparato come utilizzare la blockchain per attribuire data certa ai documenti e scoperto come eseguire un monitoraggio gli indirizzi e le transazioni. Al termine del laboratorio sulla bitcoin forensics, gli allievi hanno creato degli indirizzi “vulnerabili” per farsi rubare i (milli)bitcoin e inseguire l’autore del furto.

Bitcoin Forensics - Paolo Dal Checco (HackInBo, 14 maggio 2016)

Bitcoin Forensics
Aspetti tecnici e investigativi della criptomoneta
Paolo Dal Checco, Consulente Informatico Forense
Studio Associato Di.Fo.B

Chi sono
– PhD @UniTO nel gruppo di Sicurezza delle Reti e degli Elaboratori
– Professore a Contratto di Sicurezza Informatica @UniTO (SUISS)
– Consulente Informatico Forense (Perizie Informatiche) per Privati, Aziende, Avvocati, Procure, Tribunali, F.F.O.O.
– Tra i fondatori dell’Associazione DEFTA (www.deftlinux.net) e ONIF (www.onif.it)
– Direttivo Associazione IISFA, socio Tech & Law, Clusit
– paolo@dalchecco.it – @forensico – @studiodifob
– dalchecco.it, difob.it, bitcoinforensics.it, ransomware.it

Cosa dicono del Bitcoin 😉

Cosa è il Bitcoin
– ‘B’ maiuscola, il protocollo, ‘b’ minuscola, l’unità di moneta
– Rete di pagamento digitale ideata nel 2009 da un anonimo “Satoshi Nakamoto”, basata sulla sulla crittografia (“crittovaluta”) e in particolare:
– Algoritmo di firma digitale asimmetrica ECDSA
– Algoritmi di hashing SHA256 e RIPEMD 160
– Peer to peer, nessun ente centralizzato
– Limite di generazione BTC: 21 MLN raggiunto nel 2140
– Controvalore in valuta fiat stabilito dal mercato

Assenza di autorità centrale

Terminologia
– Chiave privata: 256 bit, il codice da cui viene generato l’indirizzo, passando tramite la chiave pubblica generata da quella privata. Posso dimostrare di averla firmando un messaggio.
– Chiave pubblica: 512 bit, derivata dalla chiave privata tramite algoritmo a chiave pubblica/privata ECDSA a Curve Ellittiche. Posso verificare un messaggio firmato con chiave privata.
– Indirizzi/address bitcoin: 160 bit, 27-34 caratteri alfanumerici eccetto alcuni. Gli indirizzi vengono derivati dalle chiavi pubbliche dell’utente, derivate dalle chiavi private.

Terminologia
– Wallet: Il portafoglio che raccoglie i diversi indirizzi/address bitcoin, più facile da gestire rispetto a lavorare direttamente con indirizzi/transazioni
– Hot/Cold Wallet
– Wallet Deterministici

Attenzione ai Brainwallet
– https://en.bitcoin.it/wiki/Brainwallet
– http://brainwallet.org (https://brainwallet.github.io)
– Esiste ancora offlinebitcoins.com (USE AT YOUR OWN RISK)

Terminologia
– Blockchain: il libro mastro delle transazioni, pubblico, condiviso, decentralizzato, viene composto autonomamente in base al concetto di “proof of work”
– Blocco: unità che compone la blockchain, contiene centinaia di transazioni verificate e “compattate” in un unico elemento che viene legato inscindibilmente tramite hash alla blockchain. Per essere attaccato alla Blockchain deve essere eseguito un opportuno calcolo sul blocco definito “mining”.

Terminologia
– Transazione: passaggio irreversibile di una certa quantità di bitcoin da un indirizzo all’altro, che viene firmata, trasmessa dal client alla rete, inserita nella blockchain e diventa pubblica

Transazioni
– Le transazioni possono avere più input e più output

Transazioni e wallet

Transazioni e change address
– Le transazioni UTXO vanno spese per intero → change address
– Sicurezza: una volta che un indirizzo è stato usato per versare bitcoin non dovrebbe più essere riciclato
– Privacy: non si sa a chi hai pagato ed è più complesso risalire al balance del tuo wallet
– Stesso change address
– Change address diverso

Fee
– Fee basate sulle priorità: pochi bitcoin o bitcoin troppo recenti (con pochi blocchi di anzianità) richiedono fee
– Fee basati sulla dimensione della tx:
– 148 * number_of_inputs + 34 * number_of_outputs + 10

Terminologia
– Minatori: coloro che si offrono di raccogliere le transazioni che avvengono nel mondo in un blocco, verificarle e aggiungerle alla blockchain, il libro mastro, ottenendo una ricompensa per la chiusura del blocco e una commissione (volontaria) per ogni transazione inserita nel blocco

Da chiave privata a indirizzo Bitcoin

Formato degli indirizzi bitcoin
– 26-35 caratteri, “Base 58 check” encoded
– Inizia con 1 o 3 (per i multisig)
– Numeri e caratteri casuali eccetto lettrera ‘o’ maiuscola (“O”), lettera ‘i’ maiuscola (“I”) lettera “elle” minuscola (“l”) e il numero “zero” (“0”) per evitare ambiguità
– Regex: ^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$

Come generare indirizzi
– Se si usa un wallet, ci pensa lui
– Tool come bitcoin-tool, sx-tools
– Siti web (sconsigliato) o script da usare offline (Brainwallet, Bitaddress, ec…)
– A mano… (0.96 h/d)
– Online o via js/script
– Online o via js/script

Vanity Addresses
– Indirizzi “personalizzati” che contengono una parte di testo scelto (1PAoLoLmzFVj8ALj6mfBsbifRoD4miY36v)
– bitcoinvanitygen.com (online)
– https://github.com/samr7/vanitygen (codice)

Paper Wallet

Bitcoin Forensics
– Deriva dalla Computer e Network Forensics
– Applicazione delle best practices di alle indagini sul mondo Bitcoin.
– Elementi tradizionali (es. analisi di un PC su cui è stato installato un wallet)
– Elementi innovativi (intelligence su transazioni presenti nella blockchain)
– Blockchain: la prova è pubblica, immutabile, precostituita, già “forense”

Strumenti: blockchain explorers
– Scelta tra online e offline/locale (con copia blockchain)
– NB: gli strumenti online di visualizzazione e analisi blockchain sono comodi ma informano il gestore circa le nostre ricerche
– Online: blockexplorer.com, blockchain.info, blockr.io
– Blocchi (anche quelli doppi)
– Transazioni (spese e non spese)
– Indirizzi e transazioni (prima comparsa di un ADDR, saldo, etc…)
– Taint Analysis
– Statistiche
– Tag
– Elenco di block explorer: https://docs.google.com/spreadsheets/d/1Ku9Nlo_TwhE_gLX3oDmRURbvc_iB_7j90MyfCG69zLw/edit?pli=1#gid=0

Come osservare le transazioni
– Attenzione a non riporre fiducia nell’IP indicato nella transazione su Blockchain.info

Strumenti: Bitcoin forensics
– Bitiodine
– Spagnuolo, Maggi, Zanero
– Crawl di siti di scambio bitcoin per raccogliere indirizzi
– Raggruppa indirizzi in wallet
– Analisi del percorso di collegamento tra indirizzi

Strumenti: Bitcoin Disk Forensics
– Magnet Forensics (indirizzi, chiavi, transazioni, wallet, etc…)
– http://www.magnetforensics.com
– KeyHunter (chiavi private)
– https://github.com/pierce403/keyhunter
– BTScan (indirizzi, chiavi private, chiavi pubbliche)
– https://gist.github.com/chriswcohen/7e28c95ba7354a986c34/download
– BTC Recover (brute force di wallet)
– github.com/gurnec/btcrecover

Artefatti per bitcoin forensics
– File di log dei client
– IP locale (!)
– Transazioni
– Etc…
– Cache del browser
– Web wallet history
– Paper wallet (!)

DEFTCoin
– Ci sono già diverse distro (alcune un po’ obsolete) dedicate al Bitcoin (CoinOS, Electrum Live CD, Paper-BTC, Live Miner, BTC Vault, BitBuntu, Bitkey, etc…)
– Perché non crearsi una stazione di lavoro (live o installed) per Bitcoicon Forensics e Intelligenge con… DEFT?
– Ovviamente potremo concentrarci sui tool più utili, usando Tor Browser preinstallato (che offre socks5 sulla 9150 invece che la 9050)

DEFTCoin: Electrum (+ Tor)
– Possibilità di usare Bitcoin su rete anonima Tor
– wget https://download.electrum.org/Electrum-2.0.4.tar.gz
– decomprimere tgz e poi nel folder “python electrum”
– Per usare Tor, avvio Tor Browser e setto proprietà Network via cmdline o GUI
– ./electrum -s 56ckl5obj37gypcu.onion:50001:t -p socks5:localhost:9150 –verbose

DEFTCoin: Bitcoin Core (+ Tor)
– Anche Bitcoin-Core può essere utilizzato su rete anonima Tor
– wget https://bitcoin.org/bin/bitcoin-core-0.10.0/bitcoin-0.10.0-win32.zip
– vi /root/.bitcoind/bitcoin.conf
– rpcuser= deftuser
– rpcpassword=deftpassword
– txindex=1 (facoltativo)
– ./bitcoin-qt
– Oppure ./bitcoind –daemon e poi ./bitcoin-cli stop per uscire
– Consigliato utilizzare blockchain pre-scaricata (da torrent o meglio ancora da un altro client)
– Per usare Tor, avvio Tor Browser
– ./bitcoin-qt -proxy 127.0.0.1:9150 –onlynet=tor
– ./bitcoin-qt -proxy 127.0.0.1:9150 –onion=hiddenservice.onion:port
– https://en.bitcoin.it/wiki/Fallback_Nodes

DEFTCoin: Bitcoin Core (+ Tor)

DEFTCoin: tool per bitcoin forensics
– BX libBitcoin Explorer (ex SX Tools)
– github.com/libbitcoin/libbitcoin-explorer
– Bitcoin-Tools
– github.com/gavinandresen/bitcointools
– BTC Recover (brute force di wallet)
– github.com/gurnec/btcrecover
– BTCScan (indrizzi, chiavi private, wallet, etc…)
– https://gist.github.com/chriswcohen/7e28c95ba7354a986c34/download
– KeyHunter (chiavi private)
– https://github.com/pierce403/keyhunter
– Bitcoin Sneak Peak
– Chrome Extension
– Bulk Extractor (si possono personalizzare le regexp…)
– github.com/simsong/bulk_extractor (ma c’è già)

DEFTCoin: risorse per bitcoin forensics
– Block Explorer
– blockr.io, blockchain.info, blockexplorer.com
– Bitcoin Intelligence
– coinalytics.co/tools/tracker.html
– coinalytics.co/tools/explorer.html
– coinalytics.co/api/blockstem.html
– www.walletexplorer.com
– Bitiodine
– www.bitiodine.net
– Web Wallet

Anonimato dei wallet e delle transazioni
– Esistono mixer appositi di terze parti
– Si paga commissione, c’è il rischio di essere derubati
– Utilizzo di wallet online degli exchange tradizionali
– Coinjoin/SharedCoin, CoinSwap
– Talvolta pongono limiti su quantità massima di BTC “ripulibili”
– Le transazioni sono pubbliche e così anche gli indirizzi
– E’ possibile incrociare i dati della blockchain
– Il punto debole sono gli endpoint:
– Dove entra moneta fiat per diventare bitcoin (vale anche per il mining anche se non entra moneta fiat)
– Dove da Bitcoin si ritorna a moneta fiat

Come vengono “ripuliti” i bitcoin
– Tumblers/Mixers via web anche su Tor con Onion address
– Attenzione che non tutti i tumbler funzionano
– Attenzione che non si sa chi ci sia dietro i tumbler

Come vengono “ripuliti” i bitcoin

Oltre le transazioni
– Il Bitcoin e i sistemi basati sulla Blockchain permettono di fare molte più cose delle semplici transazioni
– Da un certo punto di vista, estremizzando potrebbero anche essere viste come “effetto collaterale” di altre funzionalità acanzate, come:
– Smart Contracts
– Marche Temporali
– Domain Registration
– Colored Coins
– Messaging

Bitmessage
– Chat sicure e private tramite un meccanismo simile al Bitcoin
– Purtroppo l’utilizzo che ne viene fatto non è sempre buono

Bitmessage
– Il fatto che i criminali comunichino comunque può portare dei vantaggi…

Bitmessage
– .. ovviamente quando capiscono di essere stati tracciati non la prendono bene.

Messaggi nella blockchain
– www.eternitywall.it
– blockchain-pen.mkvd.net

Blockchain per marche temporali
– http://www.proofofexistence.com
– http://eternitywall.it/notarize

Oltre le transazioni economiche…
– Il meccanismo della BlockChain può essere utilizzato per innumerevoli fini: smart contracts, marche temporali, scambio dati e… registrazione di domini web
– Siamo abituati a Whois, register, DNS, sequestro, confisca, etc… ma con I domini .bit tutto potrebbe cambiare (un po’ come con i BTC)
– Namecoin: usare la blockchain per attribuire domini
– La proprietà è garantita dalla chiave privata
– Il registro è pubblico e distribuito
– Client “Namecoin” oppure via web (es. getdotbit.com)
– Per i browser: www.freespeechme.org (scarica la namechain…)

Oltre le transazioni economiche…
– Costi irrisori di registrazione e aggiornamento:
– Ad oggi 1 NMC = 0.0011 BTC = 0.37 EUR
– Registrazione: 0.2 NMC
– Aggiornamento o rinnovo: 0.005
– Ogni sei mesi è necessario rinnovare oppure il dominio si libera
– Blockchain via web: namecha.in o namecoin.webbtc.com
– Nomi di dominio: http://namecha.in/d/domain
– Utilizzati anche per fornire indirizzi “umani” a onion service di Tor
– es. blackmarket.bit → dsiewrkwerosdf.onion

Cybersquatting su Namecoin
– Comunicano tramite BitMessage
– Fanno uno “sconto sostanziale” per il recupero del dominio se si dimostra di aver contribuito allo sviluppo del protocollo…

2 pensieri su “Bitcoin Forensics – HackInBo Spring Edition 2016

  1. Alessandro Colangeli

    Salve, è stata per caso fatta una Registrazione video del laboratorio pratico sul Bitcoin ?
    Ringrazio

    Rispondi

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *