Einführung
An öffentlichen Plätzen oder in Cafes gibt es oft öffentliche Hotspots. Manchmal verlangen diese eine Registrierung oder sind nur nutzbar, wenn man bezahlt. Interessant dabei ist, dass DNS-Anfragen auch ohne Anmeldung aufgelöst werden. Jetzt kann man den gesamten Traffic über DNS tunneln und so ohne Anmeldung im Internet surfen.
Voraussetzung
- Ein DNS-Server
- Ein Server, welcher für den Tunnel verantwortlich ist
- Ein Client
- Die Software OzymanDNS von Dan Kaminsky
Einrichtung DNS-Server
Auf dem DNS-Server eine Zonendelegierung angelegt:
dnstunnel.example.org. IN NS ns.server2.example.org.
ns.server2.example.org. IN A 42.23.05.21
Die IP-Adresse 42.23.05.21
entspricht dabei dem Server, welcher für den
DNS-Tunnel verantwortlich ist.
Installation der Software OzymanDNS
Auf dem Tunnel-Server und auf dem Client muss die Software OzymanDNS von Dan Kaminsky installiert werden. Als Voraussetzung für diese Software werden Perl-Bibliotheken für DNS und für die Base32/Base64 Codierung benötigt. Folgendermassen können diese über die Paketverwaltung installiert werden:
Unter Arch Linux:
sudo pacman -S perl-net-dns
yaourt -S perl-mime-base32
yaourt -S perl-mime-base64
Unter Debian:
sudo aptitude install libnet-dns-perl
sudo aptitude install libmime-base32-perl
sudo aptitude install libmime-base64-perl
Dann wird die Software heruntergeladen (Auf dem Tunnel-Server und auf dem Client):
wget http://s3.amazonaws.com/dmk/ozymandns_src_0.1.tgz
Und danach entpackt:
$ tar -xvzf ozymandns_src_0.1.tgz
aska.pl
droute.pl
geta.pl
nomde.pl
glance.c
Einrichtung Tunnel-Server
Auf dem Tunnel-Server wird die Software OzymanDNS von Dan Kaminsky gestartet.
sudo ./nomde.pl -i 0.0.0.0 dnstunnel.example.org
Verwenden des Tunnels
Der Client kann jetzt ganz einfach eine SSH-Verbindung zum Tunnel-Server herstellen. Dabei ist zu beachten, dass die Subdomain sshdns vor die Tunnel-Domäne geschrieben wird und dass man als Host den localhost angibt:
ssh -o ProxyCommand="./droute.pl sshdns.dnstunnel.example.org" username_server2@localhost
Jetzt hat man bereits eine SSH-Session auf den Tunnel-Server offen.
Verwenden des Tunnels als SOCKS-Proxy
Mit SSH kann man ganz einfach einen SOCKS-Proxy erstellen:
ssh -D 8080 -N -f -o ProxyCommand="./droute.pl sshdns.dnstunnel.example.org" username_server2@localhost
Im Webbrowser kann jetzt als SOCKS-Proxy localhost auf Port 8080
eingetragen
werden.
Was wird übertragen
Mit tcpdump
sieht man sehr gut, dass der gesamte Traffic über DNS TXT-Ressource-Records ausgetauscht wird:
emanuel@discordia:~
$ sudo tcpdump port domain
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
19:55:01.972425 IP 10.0.0.100.53055 > homeserver.duss.xy.domain: 16680+ TXT? 4744-24063.id-31410.down.sshdns.dnstunnel.example.org. (61)
19:55:01.972788 IP 10.0.0.100.45578 > homeserver.duss.xy.domain: 21284+ PTR? 10.0.0.10.in-addr.arpa. (40)
19:55:01.978312 IP homeserver.duss.xy.domain > 10.0.0.100.45578: 21284* 1/1/1 PTR homeserver.duss.xy. (98)
19:55:01.978381 IP 10.0.0.100.57785 > homeserver.duss.xy.domain: 17573+ PTR? 100.0.0.10.in-addr.arpa. (41)
19:55:01.986232 IP homeserver.duss.xy.domain > 10.0.0.100.57785: 17573 NXDomain* 0/1/0 (106)
19:55:01.989063 IP 10.0.0.100.34507 > homeserver.duss.xy.domain: 155+ TXT? 23848-14105.id-52787.down.sshdns.dnstunnel.example.org. (62)
19:55:02.113795 IP homeserver.duss.xy.domain > 10.0.0.100.53055: 16680 1/1/0 TXT `` `` (96)
19:55:02.127387 IP homeserver.duss.xy.domain > 10.0.0.100.34507: 155 1/1/0 TXT `` `` (97)
19:55:04.686581 IP 10.0.0.100.39743 > homeserver.duss.xy.domain: 27552+ TXT? 4744-46997.id-31410.down.sshdns.dnstunnel.example.org. (61)
19:55:04.823762 IP homeserver.duss.xy.domain > 10.0.0.100.39743: 27552 1/1/0 TXT `` `` (96)
19:55:06.005887 IP 10.0.0.100.37415 > homeserver.duss.xy.domain: 64196+ TXT? 23848-57440.id-52787.down.sshdns.dnstunnel.example.org. (62)
19:55:06.183955 IP homeserver.duss.xy.domain > 10.0.0.100.37415: 64196 1/1/0 TXT `` `` (97)
19:55:08.019211 IP homeserver.duss.xy.domain > 10.0.0.100.37457: 55047 1/13/0 A 174.143.142.58 (271)
19:55:08.043757 IP homeserver.duss.xy.domain > 10.0.0.100.37457: 61460 0/1/0 (94)
19:55:08.701239 IP 10.0.0.100.51678 > homeserver.duss.xy.domain: 27523+ TXT? 4744-698.id-31410.down.sshdns.dnstunnel.example.org. (59)
19:55:08.840241 IP homeserver.duss.xy.domain > 10.0.0.100.51678: 27523 1/1/0 TXT `` `` (94)
19:55:10.021281 IP 10.0.0.100.48429 > homeserver.duss.xy.domain: 48196+ TXT? 23848-40142.id-52787.down.sshdns.dnstunnel.example.org. (62)
19:55:10.161332 IP homeserver.duss.xy.domain > 10.0.0.100.48429: 48196 1/1/0 TXT `` `` (97)
19:55:12.717222 IP 10.0.0.100.36828 > homeserver.duss.xy.domain: 35283+ TXT? 4744-24488.id-31410.down.sshdns.dnstunnel.example.org. (61)
19:55:12.856288 IP homeserver.duss.xy.domain > 10.0.0.100.36828: 35283 1/1/0 TXT `` `` (96)
19:55:14.036261 IP 10.0.0.100.46071 > homeserver.duss.xy.domain: 6736+ TXT? 23848-52187.id-52787.down.sshdns.dnstunnel.example.org. (62)
19:55:14.174095 IP homeserver.duss.xy.domain > 10.0.0.100.46071: 6736 1/1/0 TXT `` `` (97)
19:55:16.734383 IP 10.0.0.100.52763 > homeserver.duss.xy.domain: 26146+ TXT? 4744-8838.id-31410.down.sshdns.dnstunnel.example.org. (60)
19:55:18.052329 IP 10.0.0.100.58725 > homeserver.duss.xy.domain: 17293+ TXT? 23848-45884.id-52787.down.sshdns.dnstunnel.example.org. (62)
19:55:18.195326 IP homeserver.duss.xy.domain > 10.0.0.100.58725: 17293 1/1/0 TXT `` `` (97)
19:55:18.752778 IP 10.0.0.100.57793 > homeserver.duss.xy.domain: 27305+ TXT? 4744-2538.id-31410.down.sshdns.dnstunnel.example.org. (60)
19:55:18.891504 IP homeserver.duss.xy.domain > 10.0.0.100.57793: 27305 1/1/0 TXT `` `` (95)
19:55:22.069854 IP 10.0.0.100.52682 > homeserver.duss.xy.domain: 45231+ TXT? 23848-21518.id-52787.down.sshdns.dnstunnel.example.org. (62)
19:55:22.208718 IP homeserver.duss.xy.domain > 10.0.0.100.52682: 45231 1/1/0 TXT `` `` (97)
19:55:22.767600 IP 10.0.0.100.43772 > homeserver.duss.xy.domain: 56593+ TXT? 4744-12830.id-31410.down.sshdns.dnstunnel.example.org. (61)
19:55:22.964026 IP homeserver.duss.xy.domain > 10.0.0.100.43772: 56593 1/1/0 TXT `` `` (96)
19:55:26.085406 IP 10.0.0.100.57741 > homeserver.duss.xy.domain: 39143+ TXT? 23848-26195.id-52787.down.sshdns.dnstunnel.example.org. (62)
19:55:26.225206 IP homeserver.duss.xy.domain > 10.0.0.100.57741: 39143 1/1/0 TXT `` `` (97)
19:55:26.786028 IP 10.0.0.100.57263 > homeserver.duss.xy.domain: 18543+ TXT? 4744-39657.id-31410.down.sshdns.dnstunnel.example.org. (61)
19:55:26.931594 IP homeserver.duss.xy.domain > 10.0.0.100.57263: 18543 1/1/0 TXT `` `` (96)
Weitere Tipps und Tricks
- Zum schnellen Umschalten der Proxy-Einstellungen eignet sich das Firefox-Plugin FoxyProxy
- Da die Verbindung nicht sehr schnell ist, kann man mit dem Firefox-Plugin User Agent Switcher den User Agent auf z. B. iPhone ändern, was die Auswirkung hat, dass oft eine mobile Version der Seite geladen wird.
- Mit
ssh -C
kann man die Verbindung komprimieren und somit den zu übertragenen Traffic verkleinern - Mit der Software tsocks kann man jedes Programm mit einem vorgegebenen Proxy starten