A Case History: Exit Through the Tor
Ultimamente mi è capitato di leggere diversi slogan propagandistici di aziende (le cosiddette “mission aziendali”), cioè dichiarazioni di intenti riassunti a mo’ di slogan in due o tre righe. Questo mi ha spinto a domandarmi: quale dovrebbe essere la mission di una società di cyber sicurezza, quali le sue responsabilità?
Partiamo dal presupposto che, in una società utopica, la cyber sicurezza non avrebbe ragione d’esistere. Ciò che esisterebbe invece, è la difesa della propria individualità in quanto esseri viventi differenti gli uni dagli altri, indubbiamente alla pari sul piano di valori e diritti, ma intimamente unici. Ed è proprio questa unicità che va difesa. La nostra forza come umanità è infatti rappresentata dall’unione delle nostre diversità.
Questo concetto si scontra con l’omologazione di massa, che tende ad annientare gli aspetti di unicità del nostro essere, preferendoci individui fagocitati da una sola mente pensante. Un esempio è il cyber bullismo, un sopruso lampante di male fine a sé stesso, che tende a reprimere ciò che è diverso dal gruppo. Ed è questo, a mio modo di vedere le cose, che la cyber sicurezza dovrebbe fare: proteggere la nostra “intimità”, valorizzandola. Ma come per tutto, è l’utilizzo che si fa di un dato strumento a determinarne la sua natura buona o cattiva.
Erano circa le 19 ed ero appena sopravvissuto a una lunga riunione. Fuori dalla sala meeting due miei colleghi, assieme a un altro signore sulla cinquantina vestito elegantemente e dallo sguardo cupo, mi stavano attendendo. Il mio collega del reparto forensic1 sembrava piuttosto agitato mentre giocherellava con le chiavi dell’auto aziendale, ed il fatto che le avesse con sé già non era un buon presagio.
«Ah eccoti!» esordì il secondo collega, dedicandosi poi alle presentazioni.
Scoprii così che la persona di mezza età era un funzionario di un’agenzia governativa. Pensai che per scomodarsi a quell’ora fosse successo qualcosa di grave.
«Dovremmo andare» tagliò corto l’altro collega, indicando l’uscita.
«Andare dove?» chiesi con aria circospetta.
I miei colleghi guardarono il funzionario, attendendo che fosse lui a svelare l’arcano, ma la risposta fu solo: «Non abbiamo molto tempo».
Viaggiammo in macchina per circa un’oretta, attraversando la città in direzione di uno dei quartieri di periferia. L’alto funzionario raccontò una storia riguardo ad alcune tracce che stavano seguendo, con l’intento di smascherare una fitta rete di traffico di materiale pedopornografico, e parlò di un internet-point che numerosi soggetti tenuti sotto osservazione sembravano frequentare di recente. Certo, potevano irrompere nell’internet-point con distintivo alla mano, sequestrando ed arrestando. Ma loro volevano scavare più nel profondo, con l’obiettivo di arrivare direttamente ai server che ospitavano quel tipo di materiale. Il problema (non da poco) era che lo scambio di informazioni, almeno in parte, avveniva tramite nodi di rete Tor; la restante quantità di scambi era riservata a reti peer to peer il cui accesso avveniva esclusivamente tramite “invito”.
«E io come posso aiutarvi?» domandai.
La risposta alla mia domanda fu una tuta nera incellofanata: «Indossi questa, prego».
«È uno scherzo?»
«Nessuno scherzo, ci stiamo dirigendo all’internet-point sospetto, il proprietario è già lì. Abbiamo simulato una fuga di gas nell’edificio vicino, quindi entreremo come vigili del fuoco incaricati di fare delle verifiche in stato emergenziale. Lei avrà dai sessanta agli ottanta minuti circa, per eseguire delle analisi e recuperare più informazioni possibili. Non abbiamo avuto molto tempo per avvisarla prima, ci spiace».
Spiaceva più a me, ve lo assicuro.
PARTE I – The Onion Router: Tor
Il progetto Tor nacque nel 1997 allo scopo di proteggere le comunicazioni dei servizi segreti degli Stati Uniti. Fu portato avanti dalla DARPA e infine sdoganato al grande pubblico attraverso l’associazione no profit “The Tor Project”. Attualmente, il principale sponsor del progetto è l’organizzazione internazionale per la tutela dei diritti digitali e la libertà di parola.
L’effettivo scopo di Tor è quello di salvaguardare l’anonimato degli utenti, preservando i dati del traffico internet da una possibile analisi. La casualità della distribuzione dei pacchetti attraverso un percorso sconosciuto, passando da router a router, stabilisce di volta in volta una comunicazione criptata e cancella le tracce ad ogni passaggio, rendendo attacchi come il man-in-the-middle quasi impossibili.
La figura 1 mostra uno schema semplificato del funzionamento della rete Tor: l’informazione parte dal nostro computer –> Entra in quello che viene chiamato Entry Guard –> Attraversa successivamente n. Middle Relay(s) in maniera pseudo casuale –> Infine giunge ad un Exit Relay –> da cui il traffico esce in maniera non criptata verso il server di destinazione.
Durante il percorso all’interno della rete Tor, il traffico è completamente criptato. L’Entry Guard (o Entry Relay) conosce l’IP sorgente dell’informazione da trasmettere, ma non conosce che cosa state trasmettendo. L’Exit Relay può esclusivamente leggere il traffico in chiaro (se non è opportunamente criptato), ma non conosce chi lo ha trasmesso.
PARTE II – The Exit Node
Forse qualcuno avrà già intuito che il punto debole di questa rete è il nodo di uscita: se controllassimo l’Exit Node (Relay) potremmo leggere tutto il traffico in chiaro, se non opportunamente criptato.
La lista di “Exit Node” di Tor è in parte pubblica ed è possibile consultarla all’indirizzo:
https://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=1.1.1.1
La pagina HTML che si presenta sui nodi di uscita è solitamente la seguente:
https://gitweb.torproject.org/tor.git/plain/contrib/operator-tools/tor-exit-notice.html
Diviene quindi possibile geolocalizzare i server d’uscita:
I server sono così distribuiti attraverso i continenti:
Lascio a voi le considerazioni derivanti dalla localizzazione della densità dei nodi.
PARTE III – Malicious Router: Install an Exit Node
Fu abbastanza semplice, una volta all’interno dell’internet-point, avere accesso ai PC. Con una versione di Windows 7 discretamente aggiornata, per resettare la password ci vollero pochi minuti[1].
Farò un esempio di ciò che successe quella notte.
Se ipotizzassimo di riuscire a controllare un nodo di uscita delle comunicazioni Tor, in teoria riusciremmo a sniffarne tutto il traffico. Quindi, la prima cosa da fare è creare un nostro Exit Node.
La versione di Debian che ho scelto di utilizzare per il nostro esempio è la seguente:
Potete verificare la vostra utilizzando il comando:
cat /etc/os-release
Come prima cosa è necessario installare l’ultima versione di Tor.
Non essendo supportata di default, è necessario installare l’HTTPS utilizzando il comando:
apt install apt-transport-https
Successivamente nel file sources.list (o in un nuovo file in sources.list.d) vanno aggiunti i seguenti repository:
Adesso, è necessario aggiungere la nostra “gpg key” come firma dei nostri pacchetti, utilizzando il comando:
curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --import
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add -
Se il comando curl non viene eseguito è necessario installarlo con un
sudo apt install curl
Non resta che aggiornare il nostro repository e la nostra key utilizzando:
apt update apt install tor deb.torproject.org-keyring
Ultimata l’installazione possiamo procedere alla configurazione del nostro Exit node, editando il file torrc all’interno della directory /etc/tor
Procediamo inserendo i seguenti campi:
[PortNumber] Specifica la porta Desiderata es. 9001 / 80
[IPV6_ADDRESS] L’indirizzo IPv6
[ExitNodeName] Il nome del nostro nodo di uscita.
Sotto la voce ContactInfo potremmo specificare la nostra mail.
Come spiegavo, [EXIT_NODE_HOME_PAGE] serve per mettere la nostra pagina HTML, che segnala che questo è un nodo di Uscita.
Nel caso non volessimo associare un IPv6, è necessario rimuovere i parametri IPv6, l’ ”ORPort” relativo e l’opzione “ accept6 *:*
Ad esempio:
A questo punto aggiungiamo anche l’auto start nel momento del boot della macchina:
systemctl enable tor
Lanciando il servizio:
systemctl start tor
Se l’operazione va a buon fine, il nostro Exit Node sarà visualizzabile dopo 8/24 ore a questo indirizzo: https://metrics.torproject.org/rs.html
PARTE IV – Tor Code
Mettiamo di voler selezionare un country specifico di uscita per il nostro browser Tor e di voler indirizzare tutto il traffico verso quell’uscita. Dovremmo procedere ancora una volta editando il torrc configuration file, ma questa volta facendolo dai client, specificando l’opzione
ExitNodes {NomedelCountry}
Quindi, se volessimo far uscire tutto il traffico Tor di un determinato client dagli Exit Node italiani ci basterebbe editare il file aggiungendo:
Oppure potremmo specificare il fingerprint di un determinato Exit Node, cercandolo attraverso:
https://metrics.torproject.org/rs.html.
ExitNodes 25.123.XX.XX
ExitNodes $fingerprint
ExitNodes 1ADBDL8C371D17190F0185D7CDA42F30A617B6A7F
Se volessimo, potremmo anche escludere un Exit Node o tutti i nodi di un Continente, utilizzando il comando:
PARTE V – WAITING
Contestualizzando al nostro caso, potremmo dedurre che se un dato gruppo di Exit Node fosse monitorato costantemente, si riuscirebbe a sniffare buona parte del traffico in maniera relativamente semplice.
Così, quella notte, gran parte del traffico dell’Internet-Point fu forzato a convergere verso degli Exit Node fasulli. In questi nodi l’attività di rete fu monitorata ininterrottamente per circa due settimane. Questo diede alle forze dell’ordine la possibilità di accumulare le prove necessarie per il sequestro dei server e l’arresto delle differenti persone coinvolte, colpevoli di crimini contro minori.
Note
[1] Per chi fosse interessato vi rimando ad un mio articolo dove ho fatto già spiegato l’utilizzo di questa tecnica: https://www.ictsecuritymagazine.com/articoli/a-case-history-come-ho-risolto-un-sabotaggio-interno/.
[2] Fonte di esempio figure 2 & 3: Hacker-Target.
Articolo a cura di Vincenzo Digilio
Ha lavorato come Network System Administrator, Security Auditor, System Integrator, Penetration Tester per importanti client, enti governativi ed agenzie spaziali. Seguendo progetti come calcolo distribuito, security resource implementation in aree nuclearizzate, adeguamenti di security policy e Security Engineering per la selezione d’importanti fornitori al fine d’implementare sistemi di sicurezza per diverse Multinazionali. Ha tenuto corsi di tecniche Hacking, studiando in contemporanea per il corso di Laurea in Sicurezza delle reti Informatiche. È attualmente impiegato in progetti classificitati in ambito spaziale di Cyber Sicurezza; nella ricerca di vulnerabilità, sviluppo di exploit e whitebox / black box Penetration Testing. Coordina, inoltre il RedTeam della società Cyber Division di cui e’ uno dei fondatori. È consulente in materia di Global Security Policy Statement, Risk management e Data Breach Investigation. È intervenuto in diversi casi di compromissione dati, analisi forensi, system breach e attacchi hacking al fine di mitigare la situazione. Crede nella libertà d’informazione e nel diritto alla privacy.