Ogni volta che ci sono operazioni come la recente DisruptTor – che ha portato a una retata di venditori di sostanze e altre merci illegali nel cosiddetto dark web – c’è chi si interroga sulla solidità della rete Tor. Che sia possibile deanonimizzare gli utenti di Tor non è un mistero, lo stesso gruppo che porta avanti il progetto infatti segue con grande attenzione tutti gli sviluppi in questa direzione. Ma come è possibile farlo se un utente utilizza una connessione cifrata e segue un percorso casuale?
Per capirlo, vediamo come funziona la rete Tor e la deanonimizzazione, in termini pratici.
Tor e l’attacco DisrupTor
Tor (The Onion Router) è un progetto, attivo oramai da quasi un ventennio, che offre ai propri utenti una piattaforma per comunicazioni anonime. Tor viene spesso presentato come uno strumento per proteggere la propria privacy online e anche come un tool per aggirare la censura in Paesi repressivi, o per aiutare dissidenti, whistleblower e attivisti a comunicare in maniera sicura. Tuttavia, ha di fronte alcune tipologie di attaccanti e di attacchi che rendono possibile deanonimizzare utenti in certe situazioni, come ora andiamo a vedere.
Alcuni giorni fa, dopo l’ennesima operazione di polizia internazionale tra Europa e Stati Uniti, chiamata operazione Disruptor da Europol, alcuni si sono chiesti se avesse fatto leva su vulnerabilità di questo protocollo. A giudicare dagli elementi emersi e dagli stessi comunicati Europol, sembra che gli investigatori abbiano capitalizzato i dati e le informazioni ottenute da un precedente raid contro un mercato della droga online, Wall Street Market. E in quel caso i suoi amministratori erano stati individuati attraverso errori nell’uso delle VPN e di opsec.
Tor, cos’è l’Onion Routing
In linea generale il principio di funzionamento dietro la rete Tor è semplice: un utente che vuole collegarsi a Google usando Tor stabilisce una connessione cifrata con un nodo di ingresso della rete (chiamato Guard), questo nodo trasmette il contenuto a una serie di nodi interni (chiamati relay) scelti casualmente, ed infine l’ultimo nodo (chiamato Exit node) stabilisce la connessione con Google. Questo processo avviene in maniera completamente trasparente per l’utente che, al di là della potenziale latenza dovuta all’utilizzo del circuito con multipli relay, non noterà alcuna differenza.
Courtesy of: https://medium.com/coinmonks/tor-nodes-explained-580808c29e2d
Quello che avviene dietro le quinte è invece estremamente più complesso, perché il team di Tor ha inserito una serie di misure, pensate per rendere il più difficile possibile l’associazione tra la connessione del client verso la rete Tor e la connessione della rete Tor al server finale.
In uno scenario normale, infatti, l’utente si collegherebbe direttamente verso il server del servizio richiesto: Google, Facebook etc. che sono in grado di conoscere con esattezza l’identità (ovvero l’indirizzo IP) del richiedente. Quando la connessione attraversa la rete TOR i dati vengono fatti transitare attraverso vari Relay node, che abbiamo appena visto, con l’intento non solo di proteggere l’identità dell’utente sul server finale, ma anche di assicurare che nessun altro osservatore esterno possa dedurre la destinazione ultima dell’utente.
Questa è anche la differenza principale tra utilizzare Tor ed utilizzare una VPN. Nel caso delle VPN il provider stesso ha infatti sempre accesso all’identità dell’utente, e alla relativa destinazione, nel caso di Tor i relay node non sanno mai cosa stanno trasportando e quindi, anche volendo, gli operatori di questi server non potrebbero dedurre l’identità del richiedente. O almeno questa è la teoria.
Deanonimizzazione
Ogni volta che nuovi attacchi vengono pubblicati, gli sviluppatori rapidamente introducono delle modifiche e migliorie al network per ridurre o mitigare il rischio di deanonimizzazione. Tuttavia, nonostante l’altissimo livello di competenza del gruppo di sviluppo di Tor, la battaglia ultimamente sembra favorire gli attaccanti.
Sono vari gli attori che hanno interesse a deanonimizzare o interferire con le operazioni degli utenti di Tor, li possiamo riassumere in:
- Agenzie governative (per fini di indagini e controllo)
- Organizzazioni private (che offrono servizi di monitoring ed identificazione)
- Organizzazioni criminali (che attaccano la rete per fini di lucro)
Dall’altro lato invece abbiamo una rete di volontari che mette a disposizione la propria banda e potenza di calcolo al servizio di una miriade di utenti che, per varie ragioni, sono in cerca di anonimato. È chiara quindi l’asimmetria delle risorse in gioco: la rete Tor è tutt’altro che enorme, ed i budget degli attaccanti appena elencati sono ordini di grandezza superiori a quelli della fondazione che si occupa di mantenere il progetto. In parole povere chi attacca ha molta più potenza di fuoco rispetto a coloro che lavorano per rendere la rete sicura.
Tipologie di attacco
In pratica, quindi, come è possibile deanonimizzare un utente che utilizza una connessione cifrata e che segue un percorso casuale? Gli attacchi pubblicati negli anni sono numerosi ma possiamo comunque dividerli in due macrocategorie:
- Attacchi attivi
- Software exploitation
- Volumetrici
- Attacchi passivi
Gli attacchi attivi che fanno uso di exploit sono mirati ad un bacino ristretto di utenti e vengono utilizzati, per lo più da agenzie governative, per deanonimizzare gli utenti e gli operatori di determinati servizi. Questo tipo di attacchi non prende di mira la rete Tor ma in generale il software utilizzato dagli utenti per navigarla. Tor, infatti, come parte del proprio Tor Bundle, utilizza una versione modificata di Firefox ed è lì che si concentrano questo tipo di attacchi.
Almeno dal 2011 l’FBI ha iniziato a compromettere attivamente server che ospitavano servizi all’interno della rete TOR, al fine di inserire degli exploit che venivano poi serviti agli utenti del servizio e utilizzati per installare del malware sulle proprie macchine. Questo tipo di deanonimizzazione è attivo e, per quanto ne sappiamo, non viene eseguito su larga scala.
Gli attacchi attivi volumetrici fanno invece uso di sessioni dati e volumi creati ad-hoc per tentare di deanonimizzare sia utenti che hidden services, ne vedremo a breve alcuni esempi.
Gli attacchi passivi consentono invece agli operatori di eseguire analisi su un’ampia parte del traffico Tor e deanonimizzare contemporaneamente un più ampio numero di utenti. Il concetto alla base, se non entriamo nel dettaglio, è facile da capire e verte essenzialmente sulla quantità di traffico che un operatore più osservare.
Come detto sopra, la rete Tor non è enorme questo vuol dire che, anche con un budget contenuto, è possibile inserire sul network una quantità grande a piacere di nodi civetta, che hanno il solo scopo di monitorare il traffico degli utenti. Di per sé questo potrebbe non sembrare un problema, i dati sono infatti sempre cifrati, ma spesso l’obiettivo è identificare l’utente, non il contenuto delle connessioni.
Nodi malevoli
Supponiamo di aver a che fare con un utente che utilizza il Tor Browser per connettersi ad un sito internet, e proviamo a capire cosa possono conoscere le varie parti che facilitano questo processo.
- Il provider della connessione Internet saprà immediatamente che l’utente sta utilizzando Tor e il volume di traffico, ma non saprà dove sta andando.
- Il Guard node, ovvero il punto di ingresso, conoscerà l’identità – indirizzo IP – dell’utente, il volume ed il nodo successivo.
- I relay node non avranno nessuna informazione sull’utente, conosceranno soltanto il volume di traffico della sessione in corso.
- L’exit node può potenzialmente vedere l’intero traffico verso il server finale (se la connessione è in chiaro) ed in ogni caso ne conosce l’indirizzo di destinazione.
- Il server finale non conoscerà (direttamente) l’identità dell’utente, ma avrà completo controllo sulla sessione, ovvero può inviare all’utente qualunque contenuto desideri.
Una volta chiarito il gioco delle parti, proviamo a capire cosa è necessario per tentare una deanonimizzazione. È chiaro che i nodi di ingresso e di uscita sono quelli con più potenziale di analisi, perché in grado di osservare direttamente il traffico da ambo i lati. Un attaccante potrà quindi inserire – ricordiamo che Tor è una rete libera di volontari, quindi non ci sono vincoli alla partecipazione – una quantità arbitraria di nodi, col solo fine di tenere traccia delle connessioni in ingresso ed in uscita. Controllare un Exit node è particolarmente interessante perché si presta a vari tipi di operazioni. Alcune organizzazioni criminali, ad esempio, utilizzano questa strategia per intercettare, e modificare, il traffico degli utenti di servizi di criptovalute e mixer, al fine di deviare i fondi verso il proprio portafoglio.
Immaginiamo a questo punto di poter controllare il traffico in ingresso su tutti i Guard node e quello in uscita da tutti gli Exit node, a quel punto diventerebbe triviale correlare le connessioni in ingresso con quelle in uscita – specie su trasferimenti di dati non piccoli – monitorando i volumi di traffico in ambo le direzioni, ma questo scenario è anche poco plausibile. Più plausibile è invece controllare una fetta rilevante del traffico in ingresso ed in uscita. Un’analisi del 15 settembre 2020 riporta l’esistenza di 3244 Guard node, 1970 Exit nodes e ben 1372 nodi che funzionano sia da Guard che Exit (il 42% del totale!). Numeri tutt’altro che enormi, è quindi chiaro che l’obiettivo di ottenere visibilità su una fetta importante della rete Tor è ben raggiungibile, ed in tutto ciò è Tor stesso a darci una mano.
Supponendo di controllare il 10% di questi nodi ci si aspetterebbe di avere il 10% di probabilità di iniziare la propria sessione su un Guard ostile, il 10% di probabilità di capitare su un Exit node ostile ed una probabilità complessiva dell’1% di capitare in una sessione dove entrambi i nodi sono compromessi, un rischio accettabile? In verità Tor aggiorna il proprio circuito circa ogni dieci minuti, mentre i Guard node vengono cambiati più lentamente. Ciò vuol dire che dopo un’ora di utilizzo avremo quasi il 50% di probabilità di utilizzare uno di questi nodi ostili.
Quando ci si trova su due nodi ostili, diventa possibile monitorare almeno il volume di traffico della sessione, questo rende abbastanza semplice collegare quest’ultima all’utente che l’ha stabilita. Con tecniche simili diventa anche possibile effettuare l’unmasking degli hidden service, ovvero quei servizi che esistono soltanto all’interno della rete Tor.
Il 10% utilizzato per questo esempio non è un tirato a caso, è anzi la quantità minima di nodi ostili che, secondo una stima effettuata ad agosto, sono attualmente attivi sul network di Tor.
Capacità di uscita complessiva dei nodi Tor malevoli identificati
Come vediamo in figura, a giugno i nodi malevoli rappresentavano ben il 22% della capacità totale – in uscita – del network. Successivamente alla loro rimozione, gli attaccanti hanno rapidamente ripopolato la loro infrastruttura, tornando a riottenere il 20% di capacità in poco meno di due mesi.
Deanonimizzare gli utenti Tor, come funziona
Ma come funziona la deanonimizzazione in termini pratici? Supponiamo di avere il seguente scenario:
- 1 rete Tor formata da 4 nodi
- 1 nodo che funge sia da Guard che da Exit
- 3 Relay
- Abbiamo il controllo del nodo Guard+Exit
Gli utenti si collegano al nostro Guard fittizio con una connessione cifrata, quindi dal traffico in ingresso non potremo sapere nulla, se non il loro indirizzo IP.
Le cose cambiano invece per il traffico in uscita perché conosciamo la risorsa che è stata richiesta dagli utenti, pur non potendo conoscere l’identità del richiedente, dal momento che la connessione viene fatta transitare sui 3 relay in ordine casuale. Sappiamo però che i relay scelti non cambieranno per tutta la durata della sessione TCP.
Per piccoli trasferimenti, la nostra mini-rete Tor offrirà una copertura sufficiente, fintanto che la rete viene utilizzata da abbastanza utenti. Mentre per trasferimenti più grandi saremo in grado di effettuare una correlazione volumetrica. Immaginiamo quindi un utente che inizi a scaricare un file voluminoso, dal momento che la sessione TCP sarà la stessa per tutta la durata del download possiamo semplicemente calcolare il volume di dati che dal server finale transitano verso il nostro Exit node, e misurare la quantità di traffico che dal Guard transita verso tutti gli utenti.
Con un’osservazione sufficientemente lunga riusciremo a fare l’unmasking dell’utente, dal momento che soltanto una connessione avrà in comune su ambo i punti, ovvero dall’utente al Guard e dal Server verso l’Exit, lo stesso volume di traffico in quel frangente temporale. Questo problema è difficile da mitigare perché Tor non può effettuare un’efficace decorrelazione temporale – ovvero consegnare un pacchetto dopo un intervallo di tempo arbitrariamente lungo – né tantomeno un forte masking volumetrico – ovvero far transitare una mole di dati significativamente differente da quella che l’utente richiede. Questo semplice esempio dovrebbe anche chiarire l’importanza del problema dei Guard malevoli.
Deanonimizzare un hidden service
Gli Hidden Services sono servizi accessibili solo all’interno della rete Tor e che godono dell’anonimato fornito dall’infrastruttura, tuttavia anche in questo caso la deanonimizzazione diventa possibile sotto certe condizioni. A titolo di esempio immaginiamo di nuovo una rete fittizia così formata:
- 1 Guard
- 3 Relay
- 1 Hidden Service
- Noi controlliamo il Guard
Sulla rete Tor ogni Guard è anche un relay, questa duplicità di ruoli ci tornerà utile. Dal nostro Guard malevolo vedremo una serie di connessioni in ingresso ed in uscita, ma non sapremo (direttamente) se un utente/servizio ci sta utilizzando come Guard o come Relay. Gli scenari, durante l’analisi di una connessione, sono quindi tre:
- La sessione appartiene ad un utente
- Fa parte di un circuito di relay
- Appartiene ad un Hidden Service
La cosa più semplice da fare è eliminare il caso 2, per far questo dobbiamo semplicemente confrontare l’indirizzo IP della connessione con quelli presenti nelle liste pubbliche di nodi Tor conosciuti. Rimaniamo quindi con il caso 1 ed il caso 3, ma anche in questo caso una correlazione volumetrica e temporale ci daranno una mano.
I pattern di traffico di un utente e di un servizio sono infatti molto diversi: tipicamente un utente resta attivo sul network per un periodo di tempo inferiore rispetto ad un Hidden Service. Il secondo elemento utile è la tipologia di attività: osservando il volume di traffico fatto da un utente vedremo tipicamente attività network (a basso volume) all’inizio della sessione Tor, una pausa fino all’accesso di un servizio e poi una serie di scambi tra il servizio e l’utente. Nel caso di un Hidden Service vedremo invece un volume più elevato, rispetto a quello di un utente, all’inizio della sessione – dovuto dalla procedura di registrazione dell’Hidden Service con la rete – e poi una pausa fino all’arrivo del primo client.
Con le dovute semplificazioni questo è come, in maniera totalmente passiva, un Guard malevolo può identificare se una connessione appartiene ad un utente, ad un relay o ad un Hidden Service.
Giunti a questo punto sappiamo come identificare un Hidden Service, ma non sappiamo ancora di quale servizio si tratti, e su Tor attualmente ne sono attivi più di 10.000. Un’analisi passiva ci dirà soltanto se l’Hidden Service a cui siamo connessi è un grosso exchange oppure no, semplicemente osservando le moli di dati che transitano attraverso di noi. Per identificare l’Hidden Service dobbiamo aguzzare l’ingegno e spostarci nella categoria degli attacchi volumetrici attivi.
Il primo passo è quello di estrarre gli indirizzi di tutti gli Hidden Service disponibili da una delle varie liste pubbliche disponibili online.
Il secondo passo consiste nell’effettuare l’upload di un file di dimensione nota verso tutti gli indirizzi della lista – ed è completamente irrilevante che l’upload vada o meno a buon fine sul servizio di destinazione – e analizzare il traffico sul nostro Guard. Se identifichiamo sul nostro nodo una sessione dati, comparabile in dimensione a quella del file inviato in upload, avremo associato l’indirizzo di destinazione della sessione all’hidden service della lista. Questa procedura, secondo i ricercatori, può essere completata in circa 10 minuti su 10.000 hidden services.
Accesso e Visibilità
Come dicevamo all’inizio, è difficile combattere una battaglia così profondamente asimmetrica, dove la differenza delle risorse in gioco si misura in ordini di grandezza. Oltretutto la struttura completamente open di Tor non aiuta necessariamente a mitigare questi fenomeni. Chiunque più affittare server dedicati, a costi estremamente contenuti, ed entrare a far parte della rete con fini differenti.
Singolo blocco di nodi Tor aggiunti il 23 settembre
In figura vediamo un lotto di 20 server attivati sulla rete Tor pochi giorni prima della stesura di questo articolo, appartenenti ad un provider di server lituano. Allo stato attuale non riportano nessuna informazione di contatto e per quanto ne sappiamo potrebbero tanto essere malevoli quanto assolutamente genuini. Questa è la battaglia che il team di Tor si trova a dover combattere ogni giorno, quella tra attaccanti con capacità di automazione e budget importanti verso un gruppo – comparabilmente – con capacità di analisi ridotte. Il sito di Tor propone una pagina dove segnalare i nodi malevoli, tuttavia questo approccio, stando ai dati dei ricercatori, al momento non sembra essere sufficiente.
Conclusioni
In conclusione, Tor rimane un progetto di estremo interesse, come si evince pure dalle risorse investite nel corso del tempo da parte degli attaccanti per cercare di deanonimizzarne gli utenti. È una piattaforma adeguata a mantenere un certo livello di anonimato, specie su sessioni brevi, a basso traffico e verso servizi non utilizzati in maniera massiva. Per moli di traffico più importanti o verso servizi ad alta frequentazione, l’anonimato è tutt’altro che assicurato perché, come abbiamo appena visto, le capacità di deanonimizzazione degli attaccanti aumentano in maniera significativa. Anche per dissidenti e attivisti può essere una carta pericolosa da giocare. Vista la facilità con cui è possibile identificare, da parte degli ISP, quali utenti stanno accedendo al circuito di Tor, non è difficile immaginare scenari, in Stati autoritari, dove il solo accesso possa attirare attenzioni tutt’altro che desiderate.
L’anonimato in rete è oggi più un obiettivo a cui aspirare nel tempo che una meta realmente raggiungibile. Noi, gli utenti, siamo monitorati ad ogni livello e da ogni possibile servizio di cui facciamo uso. Le principali nazioni hanno infrastrutture di analisi che si estendono su scala globale, e quasi tutti i Paesi hanno capacità di tracciatura capillare sul proprio territorio. Restar fuori dalle maglie di questa rete è quasi impossibile, e gli interessi pendono piuttosto nella direzione opposta. Oggi facciamo tutti parte del mercato della sorveglianza, un controsenso se si pensa che la rete era nata per il libero scambio delle informazioni, e invece si è trasformata nel più potente strumento di controllo mai creato.