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.

Die Schwachstellen des DHCP-Protokolls
💡
Der Inhalt dieses Posts ist im Rahmen eines Schulprojektes entstanden und wurde etwas für den Blog angepasst. Die ursprüngliche Zielgruppe waren Informatiker Plattformentwicklung im 4. Lehrjahr.
Die in diesem Blogpost enthaltenen Informationen und gezeigten Angriffe dienen nur zu Ausbildungszwecken und dürfen nicht für bösartige Aktivitäten genutzt werden. Es wird keine Haftung übernommen, für Schäden, welche durch die Inhalte dieses Blog-Posts entstehen.

Aufbau dieses Artikels

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.

Funktionsweise DHCP

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.

Zeichnung "Single Point of Failure"

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.

MITM-Attacke

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.

MITM in Kombination mit einem Proxy

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

Aufbau der Laborarbeit
  • 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

  1. ISO von OPNsense hier herunterladen (Image-Typ: dvd, Mirror: einen Server in deiner Nähe auswählen)
  2. VirtualBox öffnen und auf „Neu“ klicken, um den Dialog zum Erstellen einer neuen VM öffnen
  3. 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)
  4. Nach dem Anlegen der VM auf "Ändern" klicken
  5. 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
  6. Nun kann die VM mittels „Starten“ gestartet werden
  7. Warten, bis die Anmeldeabfrage erscheint
  8. Mit folgenden Zugangsdaten anmelden
    Benutzer: installer
    Passwort: opnsense
    Achtung: Standardmässig ist ein englisches Tastaturlayout aktiviert (y & z sind vertauscht)
  9. Es öffnet sich der Installationsassistent für OPNsense. Hier zuerst das korrekte Tastaturlayout auswählen
  10. Anschliessend „Install (UFS)“ als Installationsart auswählen
Auswahl des Dateisystems für OPNsense
  1. Die virtuelle Festplatte (16GB) auswählen
Virtuelle Festplatte für Installation
  1. Den Vorgang mit "Yes" bestätigen
  2. Root Passwort setzen (kann frei gewählt werden)
  3. Installation abschliessen, indem „Complete Install“ ausgewählt wird
  4. 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.
ISO-Abbild in VirtualBox auswerfen
  1. Anmelden mit root-Benutzer (vorhin gesetztes Passwort verwenden)
CLI-Optionen nach Anmeldung bei OPNsense
  1. Option 1 (Assign Interfaces) auswählen
  2. Konfiguration für LAGGS & VLANs überspringen (n eingeben/Enter drücken)
  3. Netzwerkinterfaces anhand der MAC-Adressen richtig zuordnen
  4. Vorgang mit Y bestätigen
  5. Die OPNsense VM ist nun soweit bereit. In einem späteren Schritt werden wir die DHCP-Funktion konfigurieren

Inbetriebnahme Kali Linux

  1. Die vorbereitete Kali Linux VM für VirtualBox hier herunterladen
Bereits installierte Kali Linux VM auf der offiziellen Website
  1. Die heruntergeladene VM entpacken und am gewünschten Speicherort abspeichern
  2. In VirtualBox auf „Hinzufügen“ klicken und die .vbox-Datei der heruntergeladenen VM öffnen
  3. 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.
Promiscuos-Modus in VirtualBox
  1. Anschliessend kann die VM gestartet werden
  2. Wenn die VM gestartet wurde, mit dem Benutzer kali anmelden
    Benutzername: kali
    Passwort: kali (bereits vorhanden in der vorbereiteten VM)
  3. Die Tastatureinstellungen öffnen (Kali Logo -> Suchfeld -> Keyboard)
  4. Lege im Tab «Layout» dein verwendetes Tastaturlayout fest (dies erleichtert die Arbeit in den folgenden Schritten)
Tastaturlayout in Kali Linux einstellen
  1. Terminal öffnen
  2. Auf den Root Benutzer wechseln (ggf. muss der Vorgang mit einer Passworteingabe bestätigt werden)
    Befehl: sudo su -
  3. 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
  4. Führe folgenden Befehl aus, um die Netzwerkkonfiguration zu öffnen
    Befehl: nano /etc/network/interfaces
  5. Es öffnet sich die Datei mit der Netzkonfiguration. Passe die Konfiguration so an, dass die statische IP-Adresse 192.168.1.10 verwendet, wird.
Netzwerkkonfiguration /etc/network/interfaces
  1. Die Änderungen an dieser Datei können mit Ctrl + X und anschliessend Y gespeichert werden
  2. Starte nun den Netzwerkdienst neu
    Befehl: systemctl restart networking.service
  3. Nun sollte die IP-Adresse fix konfiguriert sein. Dies kannst du mit dem Befehl ip a prüfen
Ausgabe von ip a

Inbetriebnahme Windows

  1. Lade als erstes das aktuelle Windows 11 ISO von der Microsoft Website herunter
  2. Klicke nun in VirtualBox erneut auf „Neu“ und fülle die benötigten Angaben aus
  3. Deaktivierte für die Installation von Windows den Netzwerkadapter in VirtualBox
Netzwerkadapter in VirtualBox deaktivieren
  1. 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
    Mit Enter bestätigen
    Windows startet anschliessend neu und man kann ein lokales Konto erstellen
  2. 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)
  3. Starte die Windows VM nun erneut. Standardmässig sollte der Netzwerkadapter bereits auf DHCP eingestellt sein. Hier muss nichts angepasst werden
  4. 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

  1. Öffne auf der Kali VM einen Browser öffnen und besuche 192.168.1.1
  2. Melde dich mit deinen festgelegten Zugangsdaten bei OPNsense an
  3. Du wirst vom Setup Wizard begrüsst (falls der Wizard nicht automatisch startet, kann dieser unter System -> Wizard manuell gestartet werden)
OPNsense Setup Wizard
  1. 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)
  2. Lege die korrekte Zeitzone fest (Europe/Zurich)
Zeitzone festlegen
  1. Belasse das WAN-Interface auf DHCP
  2. Lege die IP-Adresse für das LAN-Interface fest (192.168.1.1/24)
  3. Schliesse den Wizard mit einem Klick auf «Reload» ab
Wizard abschliessen

DHCP aktivieren

  1. Klicke in der Navigation auf Services -> DHCPv4 -> [LAN]
DHCP-Einstellungen in der Benutzeroberfläche von OPNsense
  1. Passe nun den DHCP-Bereich auf 192.168.1.100-192.168.1.200 an und stelle sicher, dass der Haken bei Enable aktiviert ist.
DHCP-Einstellungen
  1. Nun ist der DHCP-Server auf der OPNsense bereit.
  2. Unter «Leases» in der Navigation siehst du die verteilten DHCP-Leases
Verteilte 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.

  1. Öffne das Terminal auf deiner Kali VM
  2. Installiere dhcpig, indem du folgenden Befehl ausführst:
    Befehl: sudo apt update && apt install dhcpig -y
Installation dhcpig
  1. 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
Netzwerkinterface erkennen
  1. Starte den Angriff (DHCP Starvation Attack) mit folgendem Befehl:
    sudo dhcpig <INTERFACE>
    Beispiel: sudo dhcpig eth0
  2. 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.
Output von dhcpig
  1. Im Webinterface von OPNsense sind die von dhcpig reservierten Leases sichtbar
Reservierte DHCP-Leases nach Ausführung von dhcpig

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.

Fehlermeldung beim Anfordern einer IP-Adresse auf dem Windows-Client

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 Logo, Bildquelle: www.ettercap-project.org

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:

apt install ettercap-graphical -y

Ettercap auf einem debian-basierten Linux installieren

Ein MITM-Angriff inkl. einem Rogue DHCP Server lässt sich mithilfe von Ettercap in einem Befehl starten. Folgendermassen ist die Syntax:

sudo ettercap -T -i <INTERFACE> -M dhcp:<DHCP-RANGE>/<SUBNETMASK>/<DNS-SERVER>

Ettercap Syntax MITM-Angriff

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:

sudo ettercap -T -i eth0 -M dhcp:192.168.1.50-99/255.255.255.0/192.168.1.10

Befehl um eine MITM-Attacke mit Ettercap zu starten, Parameter ausgefüllt

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.

  1. Öffne das Terminal auf deiner Kali VM
  2. Führe den eben genannten Befehl aus
Output von Ettercap
  1. Erneuere anschliessend auf dem Windows Client die IP-Adresse mit ipconfig /release und ipconfig /renew. Du solltest nun von deinem Rogue DHCP-Server eine IP-Adresse erhalten haben.
IP-Konfiguration des Windows-Clients

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

  1. Öffne ein zweites Terminal auf deiner Kali VM
  2. Installiere mit folgendem Befehl Docker
    Befehl: sudo apt update && sudo apt install docker.io docker-compose
  3. 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
  4. 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
  5. 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
  6. Prüfe nun, ob die Webapplikation erfolgreich gestartet wurde.
    Befehl: sudo docker ps
    Wenn ein Container in der Liste mit dem Namen web-dvwa angezeigt wird, läuft die Webappliaktion. (siehe Bild)
Der Container mit der Webapplikation läuft
  1. Öffnen nun auf deinem Windows-Client die IP-Adresse 192.168.1.20 in einem Browser
URL auf Windows Client öffnen
  1. Du wirst mit dem Anmeldeformular der Webapplikation begrüsst
Anmeldeformular der Webapplikation DVWA

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.

Promiscuos-Modus in VirtualBox
  1. Melde dich mit folgenden Zugangsdaten an:
    Benutzername: admin
    Passwort: password
  2. Nach der Anmeldung landest du auf folgender Seite:
Seite nach Anmeldung bei der Webapplikation
  1. 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):
Auszug aus dem mitgeschnittenen Netzwerkverkehr mit eingegebenen Zugangsdaten

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
    • 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