Attenzione: post a scopo didattico. Non mi assumo alcuna responsabilità riguardo all'uso che ne farete.
L’anonimato è uno dei requisiti
fondamentali quando si effettua un penetration test su una macchina remota.
Ogni volta che usiamo strumenti di hacking, stabiliamo una connessione con il
bersaglio inviando pacchetti contenenti il nostro indirizzo ip. Qualora esso
venga rilevato da un sysadmin o da un dispositivo software/hardware per la
sicurezza, il minimo che può succedere è che il nostro fornitore di servizi ci
chieda conto del traffico anomalo.
Nel post precedente ho accennato
alla rete Tor e al modo in cui, tramite il sistema “onion routing”, riesce a camuffare
la provenienza geografica dei pacchetti. Oggi vedremo come lanciare un Port
scanning totalmente anonimo per conoscere i servizi in esecuzione sull’host e
individuare eventuali vulnerabilità. Per chi non lo sapesse, il Port scanning è
una delle fasi più importanti in un attacco informatico. Prima di capire come
si svolge, chiariamo velocemente il concetto di “porta”.
Internet può essere paragonato a
una grande città fatta di strade (gli indirizzi ip) e numeri civici (le porte).
Quando ci si connette a www.ebay.com, il nostro
client invia una richiesta al server 66.135.209.52 in ascolto sulla porta 80,
che è quella utilizzata dai siti web. In tutto esistono più di 65000 porte, di
cui le prime 1024 “standard”, cioè riservate a servizi specifici (ad esempio,
la porta 20 gestisce il trasferimento dati, la porta 443 le connessioni https e
così via). Il Port scanning consente di determinare quali sono (se ci sono) le
porte aperte bussando a ognuna di esse.
Poiché si tratta di una tecnica molto rumorosa, al fine di non lasciare tracce nei log di sistema, faremo passare tutto il traffico all’interno del circuito Tor. Per il nostro esperimento userò una macchina virtuale Kali Linux con i seguenti tools:
Poiché si tratta di una tecnica molto rumorosa, al fine di non lasciare tracce nei log di sistema, faremo passare tutto il traffico all’interno del circuito Tor. Per il nostro esperimento userò una macchina virtuale Kali Linux con i seguenti tools:
- Tor
- Proxychains
- Nmap
Come prima cosa, andremo a installare Tor dai
repository di Kali:
Una volta terminata l’installazione, lanciamo il daemon e controlliamo lo stato:
apt-get update
apt-get install tor
Una volta terminata l’installazione, lanciamo il daemon e controlliamo lo stato:
service tor start
service tor status
Se tutto è andato a buon fine dovrebbe apparirvi questa schermata:
PROXYCHAINS
Per poter utilizzare Tor in combinazione con un Port scanner (e non solo), avremo bisogno di reindirizzare le richieste dell’applicazione sulla porta
apt-get update
apt-get install proxychains
In seguito, possiamo apportare
alcune modifiche al file di configurazione che si trova in /etc/proxychains.conf.
Di default, il programma sfrutta un concatenamento rigoroso, ma ciò comporta che
tutti i proxy da noi elencati dovranno essere attivi. Se stiamo usando Tor,
lasciamo così com’è, altrimenti commentiamo il valore strict_chain e
de-commentiamo dynamic_chain:
Ora portiamoci in fondo allo script e sostituiamo il protocollo SOCKS4 con il più sicuro e moderno SOCKS5:
Ora portiamoci in fondo allo script e sostituiamo il protocollo SOCKS4 con il più sicuro e moderno SOCKS5:
socks5 127.0.0.1 9050
È probabile che incontreremo una situazione in cui il Port scanning fallisce poiché l’endpoint di Tor rileva la nostra attività e ci blocca. In tal caso, basterà semplicemente aggiungere uno o più server proxy pubblici (meglio se di tipo SOCKS5) alla fine della lista. Il traffico attraverserà la rete
Tor fino ad essere inoltrato ai proxy che abbiamo scelto, secondo quest’ordine:
client<-->tor<-->proxy1<-->proxy2<-->server
DNS LEAK
Il problema più grande con le
applicazioni che usano Tor è la cosiddetta perdita di dati DNS (o DNS leak). La
maggior parte degli utenti crede che basti nascondere l’indirizzo ip per
navigare in incognito. In realtà, il funzionamento di Internet è assai più
complesso e una miriade di fattori può seriamente compromettere il nostro anonimato.
Uno di questi è proprio il Domain Name System (DNS), ossia il meccanismo che
associa i vari nomi di dominio agli indirizzi ip corrispondenti. Anche se il
traffico sarà instradato su Tor, il sistema operativo continuerà a inviare
richieste ai server dns del nostro ISP, i quali terranno traccia di ogni
singola attività online.
Per ovviare a questa "falla", Proxychains utilizza uno script che si trova in /usr/lib/proxychains3/proxyresolv, impostato per risolvere gli hostnames tramite il server 4.2.2.2 di Level 3 Communications. È possibile scegliere il proprio
DNS modificando il file proxyresolv dopo avergli dato i permessi necessari.
Portiamoci ora sul
sito www.dnsleaktest.com e vediamo se
ci sono perdite. Da terminale, lanciamo i comandi:
service tor start
proxychains [my-browser] www.dnsleaktest.com
L'indirizzo ip che vedremo è quello del nodo di uscita di Tor:
Cliccando su Extended test possiamo
sapere quali server DNS stiamo interpellando. Se solo uno di questi appartiene
al nostro ISP, vuol dire che c’è una perdita:
Dai risultati del test, sembra che sia tutto ok: nessun DNS rilevato è riconducibile a noi.
Nmap
Dai risultati del test, sembra che sia tutto ok: nessun DNS rilevato è riconducibile a noi.
Nmap
Arrivati a questo punto, non ci
resta che introdurre il nostro Port scanner, preinstallato su tutte le
principali distro Linux dedicate al pentesting. Nmap offre un’infinita di tecniche
per eseguire una scansione utile e personalizzata, ma anche qui c’è da stare
attenti, poiché alcune di esse usano pacchetti raw (grezzi) che bypassano la
rete Tor stabilendo una connessione diretta con il bersaglio. È il caso, per
esempio, del SynScan, attivo di default per velocizzare la scansione, oppure
del PingScan, che inviando pacchetti raw ICMP di tipo “echo”, serve a
determinare se un host è disponibile.
Per le vostre scansioni consiglio
di usare il seguente comando:
proxychains nmap -sT -Pn -sV -p [porte da scansionare]
-sT: esegue una scansione TCP
completa in modo che i pacchetti possano attraversare la rete Tor
-Pn: disabilita il rilevamento
dell’host (ping)
-sV: fornisce maggiori
informazioni sui servizi attivi
-p : indica le porte da
scansionare
In ogni caso, possiamo aggiungere
un’eccezione al firewall per “droppare” i pacchetti in uscita che arriveranno a destinazione rivelando il nostro indirizzo ip:
iptables –A OUTPUT --dest [ip-target] –j DROP
Nel prossimo articolo spiegherò
come configurare un proxy trasparente per avere tutto il sistema sotto la rete
Tor.
Nessun commento:
Posta un commento