Andere Wege

Vielleicht werden Sie sich an dieser Stelle warum der Angreifer nicht versucht seine IP-Adresse zu fälschen und auf diesem Wege durch die Firewall zu kommen. Und in der Tat ist das theoretisch möglich, jedoch mit einigen Einschränkungen verbunden. Zum einen muss eine IP-Adresse bereits in der Whitelist der Firewall freigeschaltet sein, zum anderen muss diese IP-Adresse dem Angreifer bekannt sein. Ist die erste Bedingung erfüllt ist die Zweite für den Angreifer ein Kinderspiel. Mit einem Netzwerksniffer wie Wireshark betrachtet er den Netzwerkverkehr und sucht sich einen Peer, der durch hohe Aktivität auffällt und notiert sich dessen IP- und Mac-Adresse. Seine Pakete nun mit gefälschter Absender Adresse durch das Netzwerk zu schicken würde die Pakete zwar durch die Firewall hinaus bringen, die Antwort Pakete aber würden zwangsläufig zum ursprünglichen Besitzer der IP geschickt werden. Damit das Betriebssystem des Angreifers die Pakete ebenfalls empfangen kann muss der Angreifer seinem Betriebssystem eben diese IP Adresse zuweisen. Da IP- und MAC-Adresse im Netzwerk jedoch gekoppelt sind (eine Abweichung würde hier zu Chaos führen) muss er sowohl die Eine als auch die Andere setzten. Dies ist jedoch ganz leicht mit den Befehlen

ifconfig wlan0 hw ether *ersniffte MAC*

und

ifconfig wlan0 *ersniffte IP*

möglich. Vor dem Ändern der MAC Adresse muss das Netzwerk jedoch kurz mittels

ifconfig wlan0 down

herunter gefahren werden und anschließen wieder neu mit dem WLAN verbunden werden. Jetzt hat der Angreifer erreicht, das sein Client auf Netzwerk-Schicht (IP) identisch zu einem anderen, authentifizierten Client ist. Das Problem verbirgt sich jedoch im TCP Protokoll welches von einem Großteil der Internet Dienste gesprochen wird. TCP ist Verbindungsbasiert was vereinfacht bedeutet das sich zwei Peers vor der Kommunikation zunächst kennen lernen bevor sie Daten austauschen. Dazu gehört auch, dass unbekannte TCP Pakete vom Betriebssystem mit einem Fehler beantwortet werden. Befinden sich zwei Clients mit der gleichen IP im Netzwerk erhält jeder der beiden Clients ständig TCP Pakete von denen er nichts weiß, da der jeweils andere Client die Verbindung etabliert hat. Die Fehlermeldungen die das Betriebssystem daraufhin aussendet führen auf der Gegenseite dann dazu, dass die Verbindung beendet wird. Um dieses Problem zu umgehen muss der Angreifer zwei Sachen beachten. Zum einen muss er sein Betriebssystem daran hindern TCP Pakete auszusenden und zu beantworten. Zum anderen muss er seine eigene Kommunikation auf UDP Beschränken. UDP hat im Gegensatz von TCP den Vorteil, dass es Verbindungslos arbeitet und unbekannte Pakete vom Betriebssystem ignoriert werden. Auf UDP beschränkt sieht das Internet jedoch recht leer aus da, wie bereits erwähnt ein Großteil der Protokolle auf TCP basieren. Die Lösung für dieses Problem ist wieder ein Tunnel. In diesem Falle ein UDP Tunnel, der die gesamte Kommunikation, in UDP-Paketen verpackt, über den Server des Angreifers leitet.

UDP Tunnel

Die einfachste Methode einen UDP-Tunnel zu realisieren stellt die Verwendung von OpenVPN dar. Normalerweise dient OpenVPN dazu verschlüsselte Verbindungen von A nach B über eine unsicheres Netz aufzubauen, kann aber vom Angreifer auch für seine Zwecke benutzt werden. Der Angreifer folgt einer der zahlreichen Anleitungen zu OpenVPN und erzeugt vorab mittels

openvpn --genkey --secret /etc/openvpn/↩
static.key

einen Schlüssel den er sowohl auf seinem Server als auch auf seinem Client speichert. Anschließend genügt

openvpn --secret /etc/openvpn/openvpn.sec↩
 --dev tun1 --ifconfig 192.168.2.1 192.168.2.2 ↩
 --daemon --port 2342

um den OpenVPN UDP Tunnel auf dem Server zu starten. Im kostenpflichtigen WLAN, mit veränderter MAC- und IP-Adresse startet der Angreifer den UDP-Tunnel auch auf dem Client mittels:

openvpn --secret /etc/openvpn/openvpn.sec ↩
--dev tun1 --ifconfig 192.168.2.2 192.168.2.1 ↩
--remote dnsserver.example.tld --daemon --port ↩
2342

Die Domain »dnsserver.example.tld« steht nur beispielhaft für den Server des Angreifers und kann natürlich auch mit jeder beliebigen IP ersetzt werden. Die Hauptarbeit ist jedoch noch nicht getan. Zwar könnte den Angreifer nun mittels »ping 192.168.2.1« seinen Server erreichen, die TCP Kommunikation des anderen Clients von dem der Angreifer die IP gestohlen hat, ist jedoch durch das Betriebssystem des Angreifers massiv gestört. Mittels Firewall unterbindet der Angreifer sämtliche Kommunikation seitens seines Betriebssystem mit der Außenwelt (Listing 1). Einzige Ausnahme: Der UDP-Port 2342, den der Tunnel benutzt.

Listing 1

Firewall-Regeln

iptables -A OUTPUT -o wlan0 -p udp --dport 2342 -j ACCEPT
iptables -A INPUT -i wlan0 -p udp --dport 2342 -j ACCEPT
iptables -A OUTPUT -o wlan0 -j DROP
iptables -A INPUT -i wlan0 -j DROP

Ist dies erledigt muss der Angreifer die Routen noch so setzen, dass nur die UDP Pakete des Tunnels über den Access Point geschickt werden und alle anderen Pakete durch den Tunnel hindurch über den Server des Angreifers geroutet werden.

route add -host Angreifer-IP gw ↩Accesspoint-IP
route add default gw 192.168.2.1

Winziges Problem in diesem Setup ist der DNS, der auf diese Weise nicht mehr erreichbar ist. In dem der Angreifer jedoch in der Datei »/etc/resolve.conf« einen anderen, im Internet verfügbaren DNS Server wie den von OpenDNS (208.67.222.222) einträgt umgeht er auch dieses Problem.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019