
Scannen Sie .onion-Versteckdienste mit nmap unter Verwendung von Tor, proxychains und dnsmasq in einem minimalen Alpine-Docker-Container.
Nmap verwenden, um versteckte "Onion"-Dienste im Tor-Netzwerk zu scannen. Minimales Image auf Basis von Alpine, das proxychains verwendet, um nmap zu wrappen. Tor und dnsmasq werden als Daemons über s6 ausgeführt, und proxychains wrappt nmap, um den Tor-SOCKS-Proxy auf Port 9050 zu nutzen. Tor ist außerdem über DNSPort konfiguriert, um DNS-Anfragen anonym auf Port 9053 aufzulösen. dnsmasq ist so konfiguriert, dass es localhost:9053 als autoritativen DNS-Server verwendet. Proxychains ist konfiguriert, um DNS über den lokalen Resolver zu proxyen, sodass alle DNS-Anfragen über Tor laufen und Anwendungen .onion-Adressen auflösen können.
$ 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
Wenn der Container startet, startet er Tor und dnsmasq als Daemons. Das Skript tor_wait wartet dann, bis der Tor-SOCKS-Proxy bereit ist, bevor es Ihren Befehl ausführt.
Standardmäßig werden Argumente an docker run an /bin/nmap übergeben, das nmap mit den Argumenten -sT -PN -n "$@" aufruft, die notwendig sind, damit es über Tor funktioniert (via explainshell.com).
Dies zum Beispiel:
docker run --rm -it milesrichardson/onion-nmap -p 80,443 facebookcorewwwi.onion
wird ausgeführt als:
proxychains4 -f /etc/proxychains.conf /usr/bin/nmap -sT -PN -n -p 80,443 facebookcorewwwi.onion
Zusätzlich zum benutzerdefinierten Skript für nmap gibt es benutzerdefinierte Wrapper-Skripte für curl und nc, die sie in proxychains einbinden, unter /bin/curl und /bin/nc. Um sie aufzurufen, geben Sie einfach curl oder nc als erstes Argument für docker run an. Zum Beispiel:
docker run --rm -it milesrichardson/onion-nmap nc -z 80 facebookcorewwwi.onion
wird ausgeführt als:
proxychains4 -f /etc/proxychains.conf /usr/bin/nc -z 80 facebookcorewwwi.onion
und
docker run --rm -it milesrichardson/onion-nmap curl -I https://facebookcorewwwi.onion
wird ausgeführt als:
proxychains4 -f /etc/proxychains.conf /usr/bin/curl -I https://facebookcorewwwi.onion
Wenn Sie einen anderen Befehl aufrufen möchten, einschließlich des Originals /usr/bin/nmap oder /usr/bin/nc oder /usr/bin/curl, können Sie ihn als erstes Argument für docker run angeben, z.B.:
docker run --rm -it milesrichardson/onion-nmap /usr/bin/curl -x socks4h://localhost:9050 https://facebookcorewwwi.onion
Es gibt nur eine Umgebungsvariable: DEBUG_LEVEL. Wenn Sie sie auf einen anderen Wert als 0 setzen, werden weitere Debug-Informationen ausgegeben (insbesondere die versuchten Verbindungen zu Tor während des Wartens auf den Start). Beispiel:
$ 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