
Escanea servicios ocultos .onion con nmap usando Tor, proxychains y dnsmasq en un contenedor Docker minimalista de Alpine.
Use nmap para escanear servicios ocultos "onion" en la red Tor. Imagen mínima basada en alpine, usando proxychains para envolver nmap. Tor y dnsmasq se ejecutan como demonios a través de s6, y proxychains envuelve nmap para usar el proxy SOCKS de Tor en el puerto 9050. Tor también está configurado mediante DNSPort para resolver solicitudes DNS de forma anónima en el puerto 9053. dnsmasq está configurado con localhost:9053 como servidor DNS autoritativo. Proxychains está configurado para hacer proxy de DNS a través del resolvedor local, de modo que todas las solicitudes DNS pasen por Tor y las aplicaciones puedan resolver direcciones .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
Cuando el contenedor arranca, inicia Tor y dnsmasq como demonios. El script tor_wait espera a que el proxy SOCKS de Tor esté activo antes de ejecutar su comando.
Por defecto, los argumentos de docker run se pasan a /bin/nmap que llama a nmap con los argumentos -sT -PN -n "$@" necesarios para que funcione a través de Tor (vía explainshell.com).
Por ejemplo, esto:
docker run --rm -it milesrichardson/onion-nmap -p 80,443 facebookcorewwwi.onion
se ejecutará como:
proxychains4 -f /etc/proxychains.conf /usr/bin/nmap -sT -PN -n -p 80,443 facebookcorewwwi.onion
Además del script personalizado para nmap, existen scripts envoltorio personalizados para curl y nc que los envuelven en proxychains, en /bin/curl y /bin/nc. Para usarlos, simplemente especifique curl o nc como primer argumento de docker run. Por ejemplo:
docker run --rm -it milesrichardson/onion-nmap nc -z 80 facebookcorewwwi.onion
se ejecutará como:
proxychains4 -f /etc/proxychains.conf /usr/bin/nc -z 80 facebookcorewwwi.onion
y
docker run --rm -it milesrichardson/onion-nmap curl -I https://facebookcorewwwi.onion
se ejecutará como:
proxychains4 -f /etc/proxychains.conf /usr/bin/curl -I https://facebookcorewwwi.onion
Si desea ejecutar cualquier otro comando, incluidos los originales /usr/bin/nmap, /usr/bin/nc o /usr/bin/curl, puede especificarlo como primer argumento de docker run, por ejemplo:
docker run --rm -it milesrichardson/onion-nmap /usr/bin/curl -x socks4h://localhost:9050 https://facebookcorewwwi.onion
Solo hay una variable de entorno: DEBUG_LEVEL. Si la establece en un valor distinto de 0, se imprimirá más información de depuración (específicamente, los intentos de conexión a Tor mientras se espera que arranque). Ejemplo:
$ 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