Write-up zu MitM

Write-up zu MitM #

HTTP / HTTPS Security #

Aufgabenstellung #

Es soll ein Reverse Proxy aufgesetzt werden, der als vor einer beliebigen externen Website steht. Anschliessend sollen die Security Implikationen getestet werden.

HTTP / HTTPS Security #

Grundsätzlich melden sich heutzutage Browser, wenn Credentials auf Websites eingegeben werden, die über HTTP transportiert wurden. Ausserdem melden sich heutzutage Browser, wenn das SSL/TLS Zertifikat nicht mit der Domain übereinstimmt oder aus anderen Gründen ungültig ist.

Ausserdem gibt es noch weitere Sicherheitsmassnahmen wie Secure Cookies, HSTS und HTTP Public Key Pinning.

Mögliche Angriffe als MitM #

Als erstes Hilfsmittel könnte versucht werden, ein DNS Spoofing durchzuführen. Denn dadurch wird der DNS Cache vom Opfer so gefälscht, dass die Domain auf eine vom MitM kontrollierten Server zeigt.

Im Anschluss muss noch ein Reverse Proxy eingerichtet werden, der etwas an das Opfer zurückliefert, was gephisht werden soll.

Stellt sich noch die Frage, ob der Reverse Proxy HTTP oder HTTPS ausliefern soll? Dazu muss unterschieden werden, ob das Opfer zum ersten Mal die Website besucht. HTTPS könnte der Reverse Proxy ausliefern, würde jedoch höchstwahrscheinlich zu Zertifikaten-Fehlern beim Opfer führen. Ein Vorteil von HTTPS jedoch ist, dass Secure Cookies übertragen werden. HTTPS ist ausserdem nötig, wenn der Besucher nicht zum ersten Mal auf der Seite war und der originale Server HSTS aktiviert hatte. HTTP hat den Vorteil, dass das Opfer zwar keine Zertifikate Warnung sieht, aber allenfalls lädt die Seite wegen HSTS nicht. Ausserdem wird bei einem nötigen Login dann eine Warnung dem Opfer angezeigt, dass er auf einer unsicheren Website sei. Bei HTTP Public Key Pinning hat man grundsätzlich verloren, kann aber allenfalls über eine “ähnliche” Domain eine Phishing Attacke machen.

Konkreter Angriff #

  1. Setup eines Reverse Proxy der auf HTTP / HTTPS hört
  2. Konfiguration des Reverse Proxy mit forwarding zu einer legitimen Website
  3. Rewrite der Antwort von der legitimen Website während des Angriffs
  4. Opfer mit DNS Spoofing oder per Mail finden.

SSH Security #

Aufgabenstellung #

Es soll gelernt werden, was eine Man in the Middle (MitM) ist und wie sie verhindert werden kann.

Aufbau der Aufgabe #

Das Opfer verbindet sich zum MitM (auf Port 10022) und dieser verbindet sich wiederum zum Openssh Server (auf Port 22).

                       docker
 +-------------------------------------------------------------+
 |                                                             |
 |                                                             |
 |              +-----------+             +---------------+    |
 |  port 10022  |           |    port 22  |               |    |
 |              | ssh proxy |             |  alpine       |    |
+-------------->+           +-------------+  openssh      |    |
 |              |           |             |  server       |    |
 |              +-----------+             +---------------+    |
 |                                                             |
 |                                                             |
 +-------------------------------------------------------------+

SSH Verbindung #

Eine SSH Verbindung ist grundsätzlich verschlüsselt und das wird in 3 Schritten implementiert:

  1. Client verbindet sich zum Server
  2. Server gibt den Client seinen public Key (RSA, ECDSA etc.)
  3. Client handelt mit dem Server einen sicheren Transportkanal aus (z.B. via AES)

Erst im Anschluss muss sich der Client nun authentifizieren (Mutual authentication). In der Übung wurde es zuerst mit Passwort, dann über ein Zertifikat gemacht. Will man sich als Client mit einem Zertifikat authentifizieren, muss der Server den public key des Client bei sich haben.

Bei der ersten Verbindung zum Server erhält der Benutzer von seiner Software den Fingerprint des Server Zertifikats (public key) angezeigt. Dieses kann er mit dem im Server hinterlegten Zertifikats vergleichen. Tut er das nicht, läuft der Client Gefahr, dass er sich zum falschen Server verbindet.

Mögliche Angriffe als MitM #

Durch die asymmetrische Verschlüsselung ist ein MitM Angriff nicht möglich, da der private key den Client nicht verlässt. Bei einem erfolgreichen MitM Angriff authentisiert sich nämlich der MitM mit Credentials des Clients. Bei einer Authentifizierung durch Passwort ist ein MitM Angriff jedoch möglich, wenn der Client den Fingerprint nicht vergleicht.

Eine 2FA Auth würde den Angriff übrigens auch nicht verhindern, da der MitM den HOTP oder TOTP vom Client erhält. Um zu verstehen wofür 2FA ist, muss ein Threat Model erstellt werden. Um ein MitM Angriff zu verhindern muss der Server und der Client etwas wissen, dass der MitM nicht weiss. Also Zertifikate. Angenommen das Passwort wird gestohlen, der SSH-Agent wird geforwardet, PC wird nicht gesperrt. Wie kann man sich vor diesen Gefahren schützen? Man verwendet einen zweiten Faktor. Das hilft aber nicht gegen MitM, Session Hijacking oder infizierte Clients.

Bettercap #

Aufgabenstellung #

Es soll ein Netzwerk mit einer Windows VM, einem Webserver und einem Man in the Middle aufgebaut werden. Anschliessend soll Arp spoofing, dns spoofing und ssl splitting mit bettercap angewendet werden.

Arp Spoofing #

Bezeichnet das senden von gefälschten (spoofing) ARP-Paketen.

Um den Datenverkehr zwischen zwei Hosts A und B abzuhören, sendet der Angreifer (Host C) an Host A eine manipulierte ARP-Nachricht zur Zuordnung einer bestimmten IP-Adresse. In dieser Nachricht ist seine eigene MAC-Adresse enthalten, so dass Host A zukünftig die Pakete an den Host C, anstelle an Host B sendet. Dasselbe geschieht mit Host B. Der Host C muss nun die von A und B weiterleiten, kann sie aber mitlesen. Der Angreifer arbeitet unbemerkt als Proxy also als Man-in-the-Middle.

Der Angriff findet auf Layer 2 statt und kann mit einer Layer 2 Firewall mitigiert werden. Ein Programm ist zum Beispiel arptables (Layer 2 Version von iptables)

DNS Spoofing #

Um eine Domain zu einer IP Adresse zu übersetzen wird das DNS verwendet. Ähnlich wie beim Arp Spoofing setzt DNS bei der Übersetzung von Domainname zu IP Adresse an (Bei ARP IP Adresse zu MAC). Das Ziel ist, dass das Opfer eine Verbindung zu einer falschen IP Adresse aufbaut.

DNS Spoofing kann verschiedene Ansatzpunkte haben:

  • Auf dem Client - z.B. Virus manipuliert host Datei
  • Auf dem Router - z.B. anderer DNS Server im Router eintragen - Router haben oft default Passwörter.
  • Auf der Verbindung - z.B. in der Cloud
  • Auf dem DNS Server - z.B. bei kompromittierten DNS Servern

SSL Splitting #

SSL/TLS ist eine Punkt zu Punkt Verschlüsselung z.B. zwischen Client und Web Server. Teilweise ist es jedoch sinnvoll, dass z.B. Proxy u.w. eingeführt werden, um den Application Server zu entlasten. Der Client baut dann eine SSL/TLS Verbindung zum Proxy auf und der Proxy baut allenfalls eine Verbindung zum Application Server auf. Aus einer SSL Verbindung werden somit zwei. Das sind jedoch völlig unterschiedliche Verbindungen mit unterschiedlichen Verschlüsselungskeys.

Bei Man in the Middle Attacken will man in der Regel den SSL/TLS Verkehr auch mitlesen. Deshalb fügt man sich als Man in the middle ein und splittet die SSL/TLS Verbindung auf. Das sieht dann so aus:

Client  <-SSL/TLS Verbindung 1->  Attacker  <-SSL/TLS Verbindung 2->  Server

Fragen #

  • Warum konnte bettercap die ftp-Anmeldeinformationen aufzeichnen?
    • Die Verbindung ist unverschlüsselt. Ein Man in the Middle kann deshalb die Verbindung mitlesen.
  • Was sind caplets in bettercap?
    • Das sind Skripte, die die Eingaben in der interaktiven Session automatisieren. Das http-ui cap setzt zum Beispiel listening Adresse/Port, setzt den Username/Passwort und startet dann die API und den Webserver
Calendar December 26, 2021