
Scannez les services cachés .onion avec nmap en utilisant Tor, proxychains et dnsmasq dans un conteneur Docker alpine minimal.
Utilisez nmap pour scanner les services cachés « onion » sur le réseau Tor. Image minimale basée sur Alpine, utilisant proxychains pour encapsuler nmap. Tor et dnsmasq sont exécutés comme démons via s6, et proxychains encapsule nmap pour utiliser le proxy SOCKS de Tor sur le port 9050. Tor est également configuré via DNSPort pour résoudre anonymement les requêtes DNS vers le port 9053. dnsmasq est configuré pour utiliser ce localhost:9053 comme serveur DNS autoritaire. Proxychains est configuré pour proxyfier le DNS via le résolveur local, afin que toutes les requêtes DNS passent par Tor et que les applications puissent résoudre les adresses .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
Lorsque le conteneur démarre, il lance Tor et dnsmasq comme démons. Le script tor_wait attend ensuite que le proxy SOCKS de Tor soit opérationnel avant d'exécuter votre commande.
Par défaut, les arguments passés à docker run sont transmis à /bin/nmap qui appelle nmap avec les arguments -sT -PN -n "$@" nécessaires pour fonctionner via Tor (via explainshell.com).
Par exemple, ceci :
docker run --rm -it milesrichardson/onion-nmap -p 80,443 facebookcorewwwi.onion
sera exécuté comme :
proxychains4 -f /etc/proxychains.conf /usr/bin/nmap -sT -PN -n -p 80,443 facebookcorewwwi.onion
En plus du script personnalisé pour nmap, des scripts d'encapsulation personnalisés pour curl et nc existent pour les encapsuler dans proxychains, dans /bin/curl et /bin/nc. Pour les appeler, indiquez simplement curl ou nc comme premier argument à docker run. Par exemple :
docker run --rm -it milesrichardson/onion-nmap nc -z 80 facebookcorewwwi.onion
sera exécuté comme :
proxychains4 -f /etc/proxychains.conf /usr/bin/nc -z 80 facebookcorewwwi.onion
et
docker run --rm -it milesrichardson/onion-nmap curl -I https://facebookcorewwwi.onion
sera exécuté comme :
proxychains4 -f /etc/proxychains.conf /usr/bin/curl -I https://facebookcorewwwi.onion
Si vous souhaitez appeler une autre commande, y compris les originales /usr/bin/nmap ou /usr/bin/nc ou /usr/bin/curl, vous pouvez la spécifier comme premier argument à docker run, par ex. :
docker run --rm -it milesrichardson/onion-nmap /usr/bin/curl -x socks4h://localhost:9050 https://facebookcorewwwi.onion
Il n'y a qu'une seule variable d'environnement : DEBUG_LEVEL. Si vous la définissez sur une valeur autre que 0, davantage d'informations de débogage seront affichées (plus précisément, les tentatives de connexion à Tor en attendant son démarrage). Exemple :
$ 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