
Esegui scansioni di servizi nascosti .onion con nmap utilizzando Tor, proxychains e dnsmasq in un contenitore Docker alpine minimale.
Usa nmap per scansionare i servizi "onion" nascosti sulla rete Tor. Immagine minima basata su alpine, che utilizza proxychains per avvolgere nmap. Tor e dnsmasq vengono eseguiti come demoni tramite s6, e proxychains avvolge nmap per utilizzare il proxy SOCKS di Tor sulla porta 9050. Tor è anche configurato tramite DNSPort per risolvere in modo anonimo le richieste DNS sulla porta 9053. dnsmasq è configurato con questo localhost:9053 come server DNS autoritativo. Proxychains è configurato per fare da proxy DNS attraverso il resolver locale, quindi tutte le richieste DNS passeranno attraverso Tor e le applicazioni potranno risolvere gli indirizzi .onion.
$ docker run --rm -it milesrichardson/onion-nmap -p 80,443 facebookcorewwwi.onion
[tor_wait] Wait for Tor to boot... (might take a while)
[tor_wait] Done. Tor booted.
[nmap onion] nmap -p 80,443 facebookcorewwwi.onion
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib/libproxychains4.so
[proxychains] DLL init: proxychains-ng 4.12
Starting Nmap 7.60 ( https://nmap.org ) at 2017-10-23 16:17 UTC
[proxychains] Dynamic chain ... 127.0.0.1:9050 ... facebookcorewwwi.onion:443 ... OK
[proxychains] Dynamic chain ... 127.0.0.1:9050 ... facebookcorewwwi.onion:80 ... OK
Nmap scan report for facebookcorewwwi.onion (224.0.0.1)
Host is up (2.7s latency).
PORT STATE SERVICE
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 3.58 seconds
All'avvio del contenitore, vengono lanciati Tor e dnsmasq come demoni. Lo script tor_wait attende che il proxy SOCKS di Tor sia operativo prima di eseguire il comando.
Di default, gli argomenti di docker run vengono passati a /bin/nmap che chiama nmap con gli argomenti -sT -PN -n "$@" necessari per farlo funzionare tramite Tor (via explainshell.com).
Ad esempio, questo:
docker run --rm -it milesrichardson/onion-nmap -p 80,443 facebookcorewwwi.onion
verrà eseguito come:
proxychains4 -f /etc/proxychains.conf /usr/bin/nmap -sT -PN -n -p 80,443 facebookcorewwwi.onion
Oltre allo script personalizzato per nmap, esistono script wrapper personalizzati per curl e nc per avvolgerli in proxychains, situati in /bin/curl e /bin/nc. Per chiamarli, basta specificare curl o nc come primo argomento di docker run. Ad esempio:
docker run --rm -it milesrichardson/onion-nmap nc -z 80 facebookcorewwwi.onion
verrà eseguito come:
proxychains4 -f /etc/proxychains.conf /usr/bin/nc -z 80 facebookcorewwwi.onion
e
docker run --rm -it milesrichardson/onion-nmap curl -I https://facebookcorewwwi.onion
verrà eseguito come:
proxychains4 -f /etc/proxychains.conf /usr/bin/curl -I https://facebookcorewwwi.onion
Se si desidera chiamare qualsiasi altro comando, incluso l'originale /usr/bin/nmap o /usr/bin/nc o /usr/bin/curl, è possibile specificarlo come primo argomento di docker run, ad esempio:
docker run --rm -it milesrichardson/onion-nmap /usr/bin/curl -x socks4h://localhost:9050 https://facebookcorewwwi.onion
Esiste una sola variabile d'ambiente: DEBUG_LEVEL. Se impostata a un valore diverso da 0, verranno stampate ulteriori informazioni di debug (in particolare, i tentativi di connessione a Tor durante l'attesa dell'avvio). Esempio:
$ docker run -e DEBUG_LEVEL=1 --rm -it milesrichardson/onion-nmap -p 80,443 facebookcorewwwi.onion
[tor_wait] Wait for Tor to boot... (might take a while)
[tor_wait retry 0] Check socket is open on localhost:9050...
[tor_wait retry 0] Socket OPEN on localhost:9050
[tor_wait retry 0] Check SOCKS proxy is up on localhost:9050 (timeout 2 )...
[tor_wait retry 0] SOCKS proxy DOWN on localhost:9050, try again...
[tor_wait retry 1] Check socket is open on localhost:9050...
[tor_wait retry 1] Socket OPEN on localhost:9050
[tor_wait retry 1] Check SOCKS proxy is up on localhost:9050 (timeout 4 )...
[tor_wait retry 1] SOCKS proxy DOWN on localhost:9050, try again...
[tor_wait retry 2] Check socket is open on localhost:9050...
[tor_wait retry 2] Socket OPEN on localhost:9050
[tor_wait retry 2] Check SOCKS proxy is up on localhost:9050 (timeout 6 )...
[tor_wait retry 2] SOCKS proxy UP on localhost:9050
[tor_wait] Done. Tor booted.
[nmap onion] nmap -p 80,443 facebookcorewwwi.onion
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib/libproxychains4.so
[proxychains] DLL init: proxychains-ng 4.12
Starting Nmap 7.60 ( https://nmap.org ) at 2017-10-23 16:34 UTC
[proxychains] Dynamic chain ... 127.0.0.1:9050 ... facebookcorewwwi.onion:443 ... OK
[proxychains] Dynamic chain ... 127.0.0.1:9050 ... facebookcorewwwi.onion:80 ... OK
Nmap scan report for facebookcorewwwi.onion (224.0.0.1)
Host is up (2.8s latency).
PORT STATE SERVICE
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 4.05 seconds