Die Schwachstellen des DHCP-Protokolls
Der Inhalt dieses Blogposts ist im Rahmen eine Schulprojektes entstanden. Wir zeigen auf, was die Schwachstellen von DHCP sind, welchen Schaden damit angerichtet werden kann, und wie man sich davor schützt.
Aufbau dieses Artikels
- Ziele des Workshops
- Was ist DHCP?
- Was sind die Schwachstellen von DHCP?
- Wie funktioniert der Angriff?
- Welchen Schaden kann man mit einem Rogue DHCP-Server anrichten?
- Laborarbeit
- Fazit: Wie kann man sich dagegen schützen?
- Quellen
Ziele des Workshops
Nach der Erarbeitung dieses Workshops solltest du folgende Ziele erreichen:
- Der Teilnehmer versteht, wie das DHCP-Protokoll funktioniert und welche Schwachstellen vorhanden sind.
- Der Teilnehmer weiss, wie diese Schwachstellen durch Angreifer ausgenutzt werden können und welchen Schaden man damit anrichten kann.
- Der Teilnehmer weiss, wie leicht es ist einen DHCP-Server mit Anfragen zu überfluten und ist in der Lage einen Rogue DHCP-Server zu erstellen.
- Der Teilnehmer weiss, was man tun kann, um sich vor solchen Angriffen zu schützen.
Der geschätzte Zeitaufwand zur Erarbeitung dieses Workshops beträgt ca. 2.5 Stunden. Dies setzt sich folgendermassen zusammen:
Zeitbedarf | Schritt |
---|---|
10-15 Min | Theorie lesen & verstehen |
75 Min | Virtuelle Maschinen in Betrieb nehmen |
60 Min | Erarbeitung Laborarbeit |
5 Min | Fazit lesen |
Was ist DHCP?
DHCP ist ein Protokoll zur dynamischen Konfiguration von Netzwerkgeräten. DHCP steht für Dynamic Host Control Protocol. Mit einem DHCP-Server ist es möglich die Netzwerkkonfiguration für die Netzwerkgeräte an einem zentralen Ort zu verwalten. Dadurch muss nicht auf jedem Gerät manuell die IP-Adresse und weitere Informationen konfiguriert werden. Die Konfiguration eines Netzwerkgerätes mit DHCP erfolgt in vier Schritten.
Zuerst sendet der Client ein DHCP-Discover Paket als Broadcast an die Adresse 255.255.255.255. Als Quelle verwendet der Client die IP-Adresse 0.0.0.0. Mit diesem Paket fordert der Client eine Netzwerkkonfiguration von den im Netzwerk vorhandenen DHCP-Server an.
Die DHCP-Server im Netzwerk nehmen die Discover Pakete entgegen und senden als Antwort ein DHCP-Offer Paket zurück. Das DHCP-Offer Paket ist ein Angebot vom DHCP-Server mit einer möglichen IP-Adresse und Subnetzmaske für den Client. Zusätzlich wird ein Gültigkeitszeitstempel mitgeschickt.
Der Client nimmt dann das Offer-Paket entgegen und bestätigt den Erhalt sowie die Annahme der IP-Adresse mit einem DHCP-Request-Paket. Dieses Paket wird erneut an alle DHCP-Server im Netzwerk gesendet, damit diese wissen, dass die IP-Adresse vergeben wurde.
Wenn der DHCP-Server, welcher das Offer Paket gesendet hat, nun das Request-Paket vom Client erhält, bestätigt er die erhaltenen Angaben und sendet ein DHCPACK-Paket an den Client zurück. In diesem Paket sind dann weitere Netzkonfigurationen wie der DNS-/ oder WINS-Server enthalten. Es gibt eine Vielzahl an möglichen Optionen, welche mit DHCP konfiguriert werden können.
DHCP-Option | Eigenschaft |
---|---|
1 | Subnetzmaske |
3 | Standardgateway |
4 | NTP-Server |
6 | DNS-Server |
15 | Domain Name |
51 | Leasedauer |
Eine vollständige Liste aller DHCP-Optionen ist unter folgendem Link zu finden: https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml
Falls der DHCP-Server keine freien IP-Adressen mehr hat oder anderweitig ein Problem mit dem Request vorliegt, sendet der DHCP-Server ein DHCP-NAK-Paket an den Client zurück. Damit ist der Prozess ebenfalls abgeschlossen.
Der ganze Prozess kann man sich mit der Abkürzung DORA (Discover, Offer, Request, Acknowledge) merken.
Auf dem DHCP-Server sind sogenannte DHCP-Bereiche, oder auch «Scopes» genannt, konfiguriert. Dies sind IP-Adressbereiche, welche für die dynamischen Verteilung für den DHCP-Server zur Verfügung stehen. Diese IP-Adressen werden dann einfach gesagt an den Client «vermietet» und für eine bestimmte Zeit reserviert. Diese temporäre Zuteilung einer IP-Adresse wird auch «Lease» genannt. Die Dauer wie lange eine IP-Adresse für einen Client reserviert bleibt kann konfiguriert werden und heisst «Leasedauer». Häufig wird eine Leasedauer von 24 Stunden oder auch sieben Tagen verwendet. Beim DHCP-Server unter einem Windows Server beträgt die standardmässige Leasedauer acht Tage. Nach dem Ablauf einer Lease kann dieselbe IP-Adresse wieder einem anderen Netzwerkgerät zugeteilt werden. Wenn ein Netzwerkgerät immer dieselbe IP-Adresse behalten soll, kann auch eine sogenannte «DHCP-Reservierung» angelegt werden. Dabei wird dann einem Client eine IP-Adresse zugeordnet, welche nur immer dieser Client erhält. Diese Zuordnung von IP-Adresse zu Client erfolgt anhand der MAC-Adresse des Clients.
Nachdem die Hälfte der Leasedauer abgelaufen ist, versuchen die Clients jeweils ihre Netzwerkkonfiguration beim DHCP-Server zu verlängern, damit immer eine gültige Netzwerkkonfiguration vorhanden ist. Gelingt dies nicht, verliert der Client nach Ablauf der Leasedauer seine Netzwerkonfiguration und muss eine Neue beantragen.
Was sind die Schwachstellen von DHCP?
Nun kennen wir die grundlegende Funktionsweise von DHCP und können uns ansehen, wo es mögliche Schwachstellen gibt. Da man in der Regel nur einen DHCP-Server hat, handelt es sich hierbei um einen SPOF (Single Point of Failure). Man könnte also einen DOS-Angriff auf den DHCP-Server starten, um diesen lahmzulegen. Somit wird neuen Netzwerkgeräte verhindert eine IP-Adresse zu beziehen und bereits vorhandene Netzwerkgeräte können spätestens nach Ablauf der Lease ebenfalls nicht mehr im Netzwerk kommunizieren. Durch einen reinen DOS-Angriff auf den DHCP-Server hat man jedoch nicht viel gewonnen, da man höchstens den Betrieb der Firma für eine bestimmte Zeit gestört hat.
Es gibt einen weiteren Punkt, welchen für einen Angriff interessanter ist. In der Funktionsweise von DHCP haben wir gesehen, dass das Discover Paket an jedes Gerät im Netzwerk gesendet wird und sich anschliessend der DHCP-Server mit einem Offer-Paket zurückmeldet. Der Client nimmt dann die erste Antwort eines DHCP-Servers entgegen und setzt mit der Antwort dieses DHCP-Servers fort. Nun kann sich ein Angreifer auch als DHCP-Server ausgeben und auf die Anfragen von Clients mit eigener Konfiguration antworten. Einen solchen «falschen» DHCP-Server nennt man auch «Rogue-DHCP-Server». Damit kann dann der Angreifer eine Man-In-The-Middle-Attacke durchführen, indem er den Netzwerkverkehr über seinen eigenen Server umleitet. Somit kann dann der unverschlüsselte Netzwerkverkehr unbemerkt mitgelesen und manipuliert werden. Dies funktioniert, da der Client jeweils den ersten DHCP-Server nutzt, welcher sich bei ihm meldet. Da der «richtige» DHCP-Server jedoch auch noch vorhanden ist, kann nicht gesagt werden, von welchem DHCP-Server der Client seine Netzwerkkonfiguration nun bezieht.
Wie durch die Kombination dieser beiden Schwachstellen nun ein Angriff durchgeführt werden kann, siehst du im folgenden Kapitel.
Wie funktioniert der Angriff?
Der Angreifer startet auf seinem Client ein Skript, welches beim «richtigen» DHCP-Server so viele IP-Adressen anfordert, bis der Bereich voll ist und keine weiteren Leases mehr vergeben werden können. Anschliessend erstellt der Angreifer einen eigenen DHCP-Server, dies ist dann der «Rogue DHCP Server». Sobald nun ein Gerät eine Netzwerkkonfiguration von einem DHCP-Server anfragt, meldet sich der «Rogue DHCP Server» mit einer Konfiguration beim Client und der Client übernimmt diese Konfiguration. Damit lässt sich dann eine Man-In-The-Middle-Attacke durchführen. Der «richtige» DHCP-Server kann sich zwar auch melden, hat jedoch keine freien IP-Adresse mehr in seinem Bereich und kann somit dem Client keine funktionierende Netzwerkkonfiguration zuweisen.
Die Netzwerkkonfiguration des Rogue DHCP-Servers erhält dann beispielsweise den PC des Angreifers als Standardgateway oder als DNS-Server. Dadurch wird der Netzwerkverkehr direkt zum Angreifer gesendet, wo dieser ihn dann mitlesen und manipulieren kann. Mit einem gefälschten DNS-Server ist es auch möglich, die Domains von seriösen Webseiten auf gefälschte Umzuleiten. Da heutzutage der meiste Netzwerkverkehr verschlüsselt über Protokolle wie HTTPS läuft, kann der Angreifer die Daten nicht einfach mitlesen und bei der Umleitung auf eine gefälschte Website erscheint eine Fehlermeldung, da das Zertifikat nicht vertrauenswürdig ist. Um dies zu lösen, muss auf dem Client einem gefälschten Zertifikat des Angreifers vertraut werden. In der Realität kann der Angreifer einen Exploit aus dem Betriebssystem des Opfers ausnutzen und dann ein Skript verwenden, welches mittels PowerShell diesem Zertifikat vertraut.
Welchen Schaden kann man mit einem Rogue DHCP-Server anrichten?
Mit einem Rouge DHCP kann man Geräten eine falsche Netzwerkkonfiguration geben. Über diese Konfiguration können dann Gateway und DNS-Einträge manipuliert werden. Somit kann durch den Angreifer gesteuert werden, wo die Geräte ihre Daten hinschicken. Der Angreifer ist dann der Man-In-The-Middle und kann diese Daten mitlesen oder verändern. Damit kann der Angreifer dann verwendete Zugangsdaten der Opfer oder Zugriff auf Konten bei besuchten Websites erhalten. Das Opfer erfährt davon nichts und obwohl er auf den offiziellen Webseiten unterwegs ist, ist es dem Angreifer möglich seine Daten zu lesen. Es ist auch möglich das Opfer auf eine gefälschte Website umzuleiten, um dort weitere Daten zu erhalten. Je nachdem woran der Angreifer interessiert ist. Mit diesen Daten lässt sich dann den Angreifer erpressen und anderweitig Geld verdienen, indem diese Daten beispielsweise verkauft oder Identitätsdiebstahl begangen wird.
Laborarbeit
In der folgenden Laborarbeit werden wir einen Rogue DHCP Server unter Kali Linux betreiben. Das Ziel ist es aufzuzeigen, wie leicht eine solche Attacke durchgeführt werden kann.
Ich möchte daran erinnern, dass dieses Wissen nur zu Bildungszwecken dient und nicht für illegale Zwecke missbraucht werden darf.
Aufbau
- OPNsense (Als «richtiger» DHCP-Server des Netzwerks, Gateway)
- Kali Linux (Client des Angreifers, dient als Rogue DHCP Server & falsches Gateway/DNS)
- Windows VM (Normaler Client, Rolle des «Opfer-PC»)
Voraussetzungen
- PC mit Windows 10/11 installiert
- VirtualBox installiert
- Internetverbindung für die Downloads
Installation & Konfiguration VMs
Inbetriebnahme OPNsense
- ISO von OPNsense hier herunterladen (Image-Typ: dvd, Mirror: einen Server in deiner Nähe auswählen)
- VirtualBox öffnen und auf „Neu“ klicken, um den Dialog zum Erstellen einer neuen VM öffnen
- Folgende Einstellungen auswählen
Name: Workshop_OPNsense
ISO: Das im ersten Schritt heruntergeladene ISO-Abbild auswählen
Typ: BSD
Version: FreeBSD (64-Bit)
Hauptspeicher: 1024MB (512MB sollte auch ausreichen)
Prozessoren: 2 Cores (unter Windows 11 nötig, damit die VM startet) - Nach dem Anlegen der VM auf "Ändern" klicken
- Unter dem Bereich „Netzwerk“ die folgenden Einstellungen für Adapter 1 & 2 konfigurieren:
Adapter 1 -> Netzwerkadapter aktivieren
Angeschlossen an: NAT oder Netzwerkbrücke
Adapter 2 -> Netzwerkadapter aktivieren
Angeschlossen an: Internes Netzwerk
Name: Workshop - Nun kann die VM mittels „Starten“ gestartet werden
- Warten, bis die Anmeldeabfrage erscheint
- Mit folgenden Zugangsdaten anmelden
Benutzer: installer
Passwort: opnsense
Achtung: Standardmässig ist ein englisches Tastaturlayout aktiviert (y & z sind vertauscht) - Es öffnet sich der Installationsassistent für OPNsense. Hier zuerst das korrekte Tastaturlayout auswählen
- Anschliessend „Install (UFS)“ als Installationsart auswählen
- Die virtuelle Festplatte (16GB) auswählen
- Den Vorgang mit "Yes" bestätigen
- Root Passwort setzen (kann frei gewählt werden)
- Installation abschliessen, indem „Complete Install“ ausgewählt wird
- Die VM startet neu. Es sollte das ISO in VirtualBox ausgeworfen werden, damit nicht erneut vom ISO gestartet wird. Wenn man nicht sicher ist, ob vom ISO oder von der internen Festplatte gestartet wurde, kann die virtuelle Maschine neugestartet werden, nachdem das ISO ausgeworfen wurde. Wenn vom ISO gestartet wurde, lässt sich das auch erkennen, wenn das gesetzte Passwort nicht funktioniert oder das Tastaturlayout nicht gespeichert wurde.
- Anmelden mit root-Benutzer (vorhin gesetztes Passwort verwenden)
- Option 1 (Assign Interfaces) auswählen
- Konfiguration für LAGGS & VLANs überspringen (
n
eingeben/Enter
drücken) - Netzwerkinterfaces anhand der MAC-Adressen richtig zuordnen
- Vorgang mit Y bestätigen
- Die OPNsense VM ist nun soweit bereit. In einem späteren Schritt werden wir die DHCP-Funktion konfigurieren
Inbetriebnahme Kali Linux
- Die vorbereitete Kali Linux VM für VirtualBox hier herunterladen
- Die heruntergeladene VM entpacken und am gewünschten Speicherort abspeichern
- In VirtualBox auf „Hinzufügen“ klicken und die
.vbox
-Datei der heruntergeladenen VM öffnen - In den Einstellungen der VM ebenfalls beim Netzwerkadapter „Internes Netzwerk“ auswählen und denselben Netzwerknamen wie bei der OPNsense festlegen. Zudem unter «Erweitert» den Promiscuous-Modus auf «erlauben für alle VMs» stellen. Dies werden wir später brauchen.
- Anschliessend kann die VM gestartet werden
- Wenn die VM gestartet wurde, mit dem Benutzer kali anmelden
Benutzername: kali
Passwort: kali (bereits vorhanden in der vorbereiteten VM) - Die Tastatureinstellungen öffnen (Kali Logo -> Suchfeld -> Keyboard)
- Lege im Tab «Layout» dein verwendetes Tastaturlayout fest (dies erleichtert die Arbeit in den folgenden Schritten)
- Terminal öffnen
- Auf den Root Benutzer wechseln (ggf. muss der Vorgang mit einer Passworteingabe bestätigt werden)
Befehl:sudo su -
- Nun muss für die VM eine fixe IP-Adresse gesetzt werden, da wir auf dieser VM später unseren „Rogue DHCP-Server“ betreiben wollen
- Führe folgenden Befehl aus, um die Netzwerkkonfiguration zu öffnen
Befehl:nano /etc/network/interfaces
- Es öffnet sich die Datei mit der Netzkonfiguration. Passe die Konfiguration so an, dass die statische IP-Adresse 192.168.1.10 verwendet, wird.
- Die Änderungen an dieser Datei können mit
Ctrl + X
und anschliessendY
gespeichert werden - Starte nun den Netzwerkdienst neu
Befehl:systemctl restart networking.service
- Nun sollte die IP-Adresse fix konfiguriert sein. Dies kannst du mit dem Befehl
ip a
prüfen
Inbetriebnahme Windows
- Lade als erstes das aktuelle Windows 11 ISO von der Microsoft Website herunter
- Klicke nun in VirtualBox erneut auf „Neu“ und fülle die benötigten Angaben aus
- Deaktivierte für die Installation von Windows den Netzwerkadapter in VirtualBox
- Starte die VM und schliesse den Installationsprozess von Windows 11 ab.
Um Windows 11 ohne ein Microsoft Konto zu installieren, kann nachdem die Tastatursprache festgelegt wurde folgendes durchgeführt werden:
Tastaturbefehl:Shift
+F10
Befehl ausführen:oobe\bypassnro
MitEnter
bestätigen
Windows startet anschliessend neu und man kann ein lokales Konto erstellen - Nachdem Windows installiert wurde, fahre die VM herunter und stelle sicher, dass sich die VM ebenfalls im selben Netzwerk befindet, wie die anderen beiden VMs (Internes Netzwerk)
- Starte die Windows VM nun erneut. Standardmässig sollte der Netzwerkadapter bereits auf DHCP eingestellt sein. Hier muss nichts angepasst werden
- Optional können die VirtualBox Gast-Erweiterungen installiert werden, um Copy-Paste und die automatische Anpassung der Bildschirmskalierung zu ermöglichen (rein aus Komfort, spielt für die Durchführung der weiteren Schritte keine Rolle)
"Richtiger" DHCP-Server auf OPNsense konfigurieren
Nun werden wir den DHCP-Server auf der OPNsense konfigurieren. Hierbei handelt es sich um den "richtigen" DHCP-Server, welcher eigentlich die IP-Adressen verteilen soll. Diesen werden wir im späteren Verlauf der Laborarbeit mit Anfragen überfluten.
Erste Anmeldung bei OPNsense
- Öffne auf der Kali VM einen Browser öffnen und besuche 192.168.1.1
- Melde dich mit deinen festgelegten Zugangsdaten bei OPNsense an
- Du wirst vom Setup Wizard begrüsst (falls der Wizard nicht automatisch startet, kann dieser unter System -> Wizard manuell gestartet werden)
- Lege die DNS-Server für dein System fest (es spielt keine Rollen, welche DNS-Server du hier angibst. Wir haben 8.8.8.8 & 1.1.1.1 verwendet)
- Lege die korrekte Zeitzone fest (Europe/Zurich)
- Belasse das WAN-Interface auf DHCP
- Lege die IP-Adresse für das LAN-Interface fest (192.168.1.1/24)
- Schliesse den Wizard mit einem Klick auf «Reload» ab
DHCP aktivieren
- Klicke in der Navigation auf Services -> DHCPv4 -> [LAN]
- Passe nun den DHCP-Bereich auf
192.168.1.100-192.168.1.200
an und stelle sicher, dass der Haken beiEnable
aktiviert ist.
- Nun ist der DHCP-Server auf der OPNsense bereit.
- Unter «Leases» in der Navigation siehst du die verteilten DHCP-Leases
DHCP-Server mit Anfragen überfluten (DHCP Starvation Attack)
Nun werden wir mithilfe des Tools dhcpig
eine DHCP Starvation Attack auf den DHCP-Server der OPNsense starten. Dabei fordert dhcpig
so viele Leases bei der OPNsense an, bis der ganze DHCP-Bereich aufgebraucht ist und somit keine weiteren IP-Adressen mehr verteilt werden können.
- Öffne das Terminal auf deiner Kali VM
- Installiere dhcpig, indem du folgenden Befehl ausführst:
Befehl:sudo apt update && apt install dhcpig -y
- Finde heraus, auf welchem Netzwerkinterface der Angriff gestartet werden soll. Führe dazu den Befehl
ip a
aus. Du erkennst das richtige Interface anhand der von uns gesetzten IP-Adresse
- Starte den Angriff (DHCP Starvation Attack) mit folgendem Befehl:
sudo dhcpig <INTERFACE>
Beispiel:sudo dhcpig eth0
- Der Angriff startet. Du siehst im Terminal, welche IP-Adressen angefragt wurden. Der Prozess dauert einige Minuten, bis alle Leases reserviert wurden. Wenn alle Leases reserviert wurden, wartet das Tool noch einige Sekunden und versucht erneut eine Lease zu erhalten. Wenn das Skript keinen neuen Leases mehr erhält, wird der Prozess abgeschlossen.
- Im Webinterface von OPNsense sind die von
dhcpig
reservierten Leases sichtbar
Wenn wir nun auf dem Windows Client mit ipconfig /renew
versuchen eine IP-Adresse zu erhalten, läuft dieser Prozess in ein Timeout hinaus und es wird ein Fehler angezeigt.
Wenn dies nicht der Fall ist und du trotzdem eine IP-Adresse vom DHCP erhalten hast, hatte dein Windows Client möglicherweise früher bereits eine Lease von deinem DHCP erhalten. Um dies zu verhindern, gebe zuerst deine Lease mit ipconfig /release
frei und prüfe ob auf deiner OPNsense noch eine Lease für deinen Windows Client eingetragen ist. Falls ja, lösche diese Lease aus der Liste. Führe dann erneut das dhcpig
-Tool aus. Versuche nun auf deinem Windows Client erneut eine Netzwerkonfiguration mit ipconfig /renew
zu erhalten. Dieses Mal sollte der Prozess auf ein Timeout hinaus laufen.
Rogue DHCP-Server unter Kali Linux betreiben
Nachdem wir nun alle Leases vom «richtigen» DHCP-Server reserviert haben, können wir damit beginnen unseren eigenen (Rogue) DHCP-Server zu erstellen. Dazu werden wir das Tool Ettercap
verwenden.
Ettercap ist ein Open-Source-Tool, welches verwendet werden kann, um diverse MITM-Attacken (Man-In-The-Middle) durchzuführen. Es bietet auch einige Komfortfeatures wie integriertes Sniffing oder intelligente Analysefunktionen, welche automatisch relevante Pakete finden können. Das Tool kommt bereits vorinstalliert mit Kali Linux mit, daher müssen wir dieses nicht installieren. Auf anderen debian-basierten Linux Distrubtionen lässt sich Ettercap mit folgendem Befehl ganz leicht installieren:
Ein MITM-Angriff inkl. einem Rogue DHCP Server lässt sich mithilfe von Ettercap in einem Befehl starten. Folgendermassen ist die Syntax:
Der Parameter -T wird verwendet, um anzugeben, dass die Ausgabe im CLI anstelle mit dem GUI erfolgen soll. Mit -i wird die Netzwerkschnittstelle definiert, auf welcher der Angriff durchgeführt werden soll. Mit -M wird angegeben, welcher MITM-Modus verwendet werden soll. Hier verwenden wir dhcp um einen Rogue DHCP Server zu betrieben.
Um in unseren Fall also einen Rogue DHCP-Server mit der IP-Adresse unserer Kali VM als DNS-Server und Gateway zu starten, kann folgender Befehl verwendet werden:
Mit diesem Befehl verteilt unser Rogue DHCP Server IP-Adressen im Bereich 192.168.1.50 bis 192.168.1.99. Dadurch können wir anhand der IP-Adresse erkennen, ob diese von unserem Rogue DHCP-Server oder von der OPNsense stammt.
- Öffne das Terminal auf deiner Kali VM
- Führe den eben genannten Befehl aus
- Erneuere anschliessend auf dem Windows Client die IP-Adresse mit
ipconfig /release
undipconfig /renew
. Du solltest nun von deinem Rogue DHCP-Server eine IP-Adresse erhalten haben.
Wenn auf deinem Windows Client nun Pakete versendet werden, laufen diese über die Kali VM als «Man In The Middle». Solange Ettercap
läuft werden im Terminal alle mitgeschnittenen Verbindungen ausgegeben.
Um nun zu sehen, welche Auswirkungen eine Man-In-The-Middle Attacke haben kann, werden wir im nächsten Kapitel eine Webapplikation mit vielen Schwachstellen unter http laufen lassen, während wir mit Ettercap
den Netzwerkverkehr mitschneiden.
Unsichere Webapplikation & MITM
- Öffne ein zweites Terminal auf deiner Kali VM
- Installiere mit folgendem Befehl Docker
Befehl:sudo apt update && sudo apt install docker.io docker-compose
- Erstelle einen Netzwerkadapter für Docker, welcher den Webserver in unserem LAN zur Verfügung stellt.
Befehl:sudo docker network create -d macvlan --subnet 192.168.1.0/24 --gateway 192.168.1.1 -o parent=eth0 lan
- Aktiviere den Promiscuous Mode auf dem Netzwerkadapter der Kali VM (Dies sorgt dafür, dass wir auf einem Netzwerkadapter verschiedene Hosts betreiben können)
Befehl:sudo ip link set eth0 promisc on
- Starte die Webapplikation mit der IP-Adresse
192.168.1.20
Befehl:sudo docker run --name web-dvwa --rm -itd --network lan --ip 192.168.1.20 vulnerables/web-dvwa
- Prüfe nun, ob die Webapplikation erfolgreich gestartet wurde.
Befehl:sudo docker ps
Wenn ein Container in der Liste mit dem Namenweb-dvwa
angezeigt wird, läuft die Webappliaktion. (siehe Bild)
- Öffnen nun auf deinem Windows-Client die IP-Adresse
192.168.1.20
in einem Browser
- Du wirst mit dem Anmeldeformular der Webapplikation begrüsst
Wenn die Webapplikation auf dem Windows Client nicht aufgerufen werden kann, prüfe ob in VirtualBox der Promiscious Modus für die Kali Linux VM aktiviert ist. Starte anschliessend die VM neu und versuche es erneut.
- Melde dich mit folgenden Zugangsdaten an:
Benutzername:admin
Passwort:password
- Nach der Anmeldung landest du auf folgender Seite:
- Du solltest nun im Terminal auf der Kali Linux VM folgende Ausgabe mit dem Passwort sehen (möglicherweise musst du etwas suchen, wenn viele Pakete übertragen wurden):
Um einfacher an die relevanten Daten zu kommen, kann anstelle von Ettercap
auch Wireshark
für das Mitschneiden (Sniffing) des Netzwerkverkehrs verwendet werden. Hierzu ist es jedoch notwendig, Ettercap entsprechend zu konfigurieren, damit dieses nicht den Zugriff auf den Netzwerkadapter sperrt.
Du hast nun gesehen, wie leicht es ist mithilfe einer Man-In-The-Middle Attacke unverschlüsselten Netzwerkverkehr mitzulesen. Da heute der grösste Teil des Netzwerkverkehrs verschlüsselt ist, ist das Risiko eines Datenabflusses bei einer Man-In-The-Middle Attacke heute wesentlich geringer als früher. Das heisst jedoch nicht, dass es unmöglich ist, trotzdem Schaden anzurichten oder an Informationen zu kommen. Der Aufwand ist nur wesentlich grösser. Es ist beispielsweise möglich eine gefälschte Website zu betreiben mit eigenem SSL-Zertifikat. Dann ist die Verbindung verschlüsselt. Der Angreifer muss es dann «nur» noch schaffen, den Client dazu zu bringen, dem SSL-Zertifikat zu vertrauen. Dazu könnte man einen Exploit im Betriebssystem des Clients ausnutzen.
Fazit: Wie kann man sich dagegen schützen?
Es gibt einige Dinge, welche man vorbeugend tun kann, um den Einsatz eines Rogue DHCP Servers zu verhindern oder solche Angriffe schnell zu erkennen. Es handelt sich dabei um folgende Massnahmen:
- DHCP Snooping mit Trusted Ports auf Switches aktivieren. Dadurch werden nur DHCP-Pakete von vertrauten DHCP-Servern zugelassen. Andere DHCP-Pakete werden verworfen. Betroffene Ports können auch automatisch gesperrt werden, sobald verdächtige Aktivitäten erkannt werden.
- DHCP Snooping kann auf Cisco IOS mit folgendem Befehl aktiviert werden:
ip dhcp snooping
- DHCP Snooping kann auf Cisco IOS mit folgendem Befehl aktiviert werden:
- Mit folgendem Befehl wird ein Interface als Trusted markiert:
ip dhcp snooping trust
- Physischen Zugang zum Netzwerk schützen, indem Ports abgesichert werden und keine ungenutzten Ports gepatcht werden.
- Eine Software zum Netzwerkmonitoring einsetzen. Damit lassen sich IP-Konflikte und unübliche Konfiguration im Netzwerk überwachen und erkennen.
- DHCP-Server monitoren, so dass man eine Warnung erhält, wenn ein IP-Pool vollläuft.
- Man sollte ausserdem die eigene Umgebung vollständig dokumentieren und ein Inventar über die eingesetzte Hardware führen. Dadurch lassen sich Anomalien schneller erkennen.
- Wenn ein Active Directory verwendet wird, kann man in der Domäne bekannte DHCP-Server als vertrauenswürdig einstufen. Dann werden innerhalb der Domäne nur diese DHCP-Server akzeptiert.
Wenn bereits festgestellt wurde, dass sich ein Rogue DHCP-Server im Netzwerk befindet, kann man Tools wie Wireshark verwenden, um Netzwerkpakete zu sniffen und somit den Rogue DHCP-Server zu finden. Man sollte vor allem in den Netzwerken suchen, wo sich auch Geräte mit falschen Konfigurationen befinden.
Quellen
- DHCP - Dynamic Host Configuration Protocol
- Dynamic Host Configuration Protocol (DHCP) and Bootstrap Protocol (BOOTP) Parameters
- Rogue DHCP Server | Man-in-the-Middle Attack
- How to Find and Deal with Rogue DHCP Servers | Auvik
- Was ist DHCP? Das Dynamic Host Configuration Protocol erklärt
- DHCP Starvation Attack | DHCP Angriffe | DHCP Server | ProSec GmbH
- Netzwerkmanagement: beste Methoden für DHCP-Server
- Understanding DHCP Options | EfficientIP
- Import-Certificate (pki) | Microsoft Learn
- DHCP Starvation Attack
- dhcpig | Kali Linux Tools
- github.com/kamorin/DHCPig
- Ettercap Home Page
- ettercap(8) - Linux man page
- vulnerables/web-dvwa - Docker Image | Docker Hub
- Docker networking is CRAZY!! (you NEED to learn it)