Rogue Proxies - Die unterschätzte Gefahr

Workshop: SSL Stripping erkennen und bekämpfen - Teil 1: Grundlagen und Hintergründe

06.09.2012 von David Reis
Wie man sich gegen Angriffe auf das Address Resolution Protocol wehren kann, gehört zur Grundausbildung eines jeden Administrators. Und sollte doch einmal ein "Man in the Middle" in der Leitung sitzen, so schützt immer noch das als zuverlässig geltende SSL gegen zu große Verluste. Doch SSL lässt sich mit einem kleinen Trick aushebeln!

Seit der Frühzeit des Ethernet und dem Aufkommen des Address Resolution Protocol (ARP) ist dieses eine Achillesferse der Netzwerkkommunikation, zumindest wenn es ungesichert bleibt. Glücklicherweise war die Nachfrage nach einer professionellen Absicherung des ARP entsprechend groß. Heutige Systeme sind daher oft durch entsprechende Maßnahmen geschützt. Dennoch bleibt das sogenannte ARP Poisoning eine der am weitesten verbreiteten Methoden zur Einleitung eines sogenannten "Man-in-the-Middle"-Angriffs (MITM Attack).

Grundlegend: Zweck des ARP

Bei einer solchen Attacke leitet eine nicht befugte, dritte Person die Kommunikation zweier oder mehrerer Gesprächspartner auf ein eigenes System um. Dort werden die Nachrichten abgehört oder verändert. Als Reaktion darauf entwickelten viele Hersteller Sicherheitsstandards, die die Kommunikation verschlüsseln sollten. Das bekannteste zu diesem Zweck entworfene Protokoll ist der Secure Sockets Layer (SSL), der mittlerweile als Transport Layer Security (TLS) bekannt ist. Ursprünglich beschrieb Netscape diesen Standard, inzwischen wird er von allen großen Browsern unterstützt. Nach seinen Vorgaben wird die Identität des Servers dem Nutzer gegenüber durch ein Zertifikat einer unabhängigen Stelle bestätigt.

Theorie und Praxis - Zertifizierung mit SSL Stripping umgehen

In der Theorie ist das Zertifikatesystem ausgesprochen schwer anzugreifen, und nicht umsonst gilt TLS als ein sehr sicheres Protokoll. Doch unter realistischen Bedingungen kann das Konzept leicht durch einen kleinen Trick ausgehebelt werden. Diesen stellte Moxie Marlinspike am Black Hat DC 2009 der Szene der destruktiven Hacker vor. Der Angriff basiert auf einem Rogue Proxy, der die Internetverbindungen des Opfers nicht nur weiterleitet, sondern auch manipuliert. Vom Server kommende "302 Found"-Weiterleitungen auf gesicherte Seiten erreichen dem Konzept zufolge nie den Nutzer, da sie vom Angreifer durch unsichere Verbindungen ersetzt werden.

Simpel: unser Rogue Proxy im Testnetzwerk

Bis heute allerdings findet dieser Angriff nur wenig Beachtung. Die Hauptkritik an TLS zielt auf die Zuverlässigkeit der Zertifikatstellen, die bereits mehrmals Opfer von Angriffen wurden. Dabei ist das sogenannte SSL Stripping im Gegensatz zu klassischen MITM-Angriffen auf TLS auch fähig, Verbindungen zu bereits bekannten Servern ohne Zertifikatfehler oder andere wesentliche Auffälligkeiten abzuhören.

Eine praktische Demonstration soll daher dazu dienen, das Bewusstsein für den Angriff zu stärken. Zum Einsatz kommen hierzu die verbreiteten Tools Ettercap und Wireshark sowie das Skript sslstrip.py selbst.

Bei diesem Artikel handelt es sich um den ersten Teil eines zweiteiligen Workshops. Er wird sich mit den prinzipiellen Grundlagen, den Hintergründen und der Geschichte solcher Angriffe befassen. Der zweite Teil folgt am morgigen Freitag.

Der MITM-Angriff auf ungesicherte Verbindungen

Das frühe Ethernet war ein Paradies für unbefugte Zuhörer: Die damaligen Hubs versandten jedes Paket blind an jedes Interface im Netzwerk. So konnten alle Teilnehmer völlig unbemerkt mitschneiden, was gesendet wurde. Wollte man die Kommunikation jedoch manipulieren, war ein direkter Zugriff erforderlich - der MITM-Angriff war geboren. Mit dem Umstieg der meisten Netze auf geswitchte Verbindungen, die Pakete nur noch selektiv weiterreichen, gewann er weiter an Bedeutung.

Schlechtes Zeichen: gefälschter ARP-Eintrag auf Opferrechner

Wie der Name schon sagt, begibt sich der Angreifer bei MITM-Attacken als Zwischenstelle in die Verbindung zweier Interfaces. Dies kann auf verschiedenen Wegen erfolgen. Sieht man von Vor-Ort-Methoden ab - man könnte den Rechner schlicht mit zwei Netzwerkkarten ausstatten und ihn im abzuhörenden Kabel einbauen -, ist ARP Spoofing oder Poisoning sicherlich die einfachste und bekannteste Methode, diese Position zu erreichen.

Das ARP ist für die Auflösung von Adressen des OSI Layer 3 (IP-Adressen) auf solche des Layer 2a (MAC-Adressen) zuständig. Da Letztere theoretisch eineindeutig sind, ermöglichen sie den beteiligten Interfaces, einander zweifelsfrei zu erkennen. Weil ARP diese Auflösung allerdings mit Broadcasting erreicht, kann jeder Empfänger der Nachricht antworten - auch mit gefälschten Informationen. Selbst das ungefragte Versenden von Antworten ist möglich, denn die eingehenden Zuordnungsdaten werden von vielen Systemen akzeptiert.

Opfer: Unvergifteter ARP Cache
Hier ist alles noch in Ordnung: Die MAC des Routers liegt beim Opfer. In dessen ARP Cache werden die IP-Adressen der einzelnen Rechner den komplexeren MACs zugeordnet. Das ändern wir nun.
Spoofer: Aktivierung des Forwarding
Zunächst aktiviert der Angreifer Forwarding, um alle Pakete transparent an ihr eigentliches Ziel weiterzugeben. Der erste Befehl wäre mit ettercap eigentlich nicht nötig, andere Tools brauchen ihn aber.
Spoofer: Start von Ettercap
Der MITM-Angriff wird mit ettercap eingeleitet, nötigenfalls als root. Der Switch -G aktiviert die GTK-Oberfläche. Auch eine textbasierte Variante existiert. Für einfache Angriffe wie unseren würde übrigens auch das Kommandozeilentool arpspoof reichen.
Spoofer: Einrichtung des Sniffing
Der Sniffer wird angewiesen, unsere Netzwerkkarte abzuhören. Da nur ein Interface verbaut ist, bleibt nur "Unified Sniffing". Hätten wir eine zweite Karte, könnte auch das viel unauffälligere "Bridged Sniffing" gewählt werden.
Spoofer: Nach Computern im lokalen Netz suchen
Per Scan macht sich das Programm mit dem lokalen Netz vertraut. Alternativ kann man die Ziele auch manuell eingeben.
Spoofer: Gefundene Rechner
Wie zu erwarten war, sind die beiden anderen Rechner schnell gefunden. Sie werden nun Zielgruppen zugewiesen.
Spoofer: Rechner auf Liste der Ziele
Üblicherweise landet der Router in einer, die wirklichen Opfer in der anderen Gruppe. Hier fällt die Auswahl leicht.
Spoofer: MITM-Angriff initiieren
ARP Poisoning ist die einfachste Methode, sich in eine Verbindung einzuhängen. In ungesicherten Netzen wie unserem Testnetz reicht sie völlig aus.
Opfer: Vergifteter ARP Cache
Ein voller Erfolg: Der ARP Cache des Opfer hält nun die MAC des Angreifers statt die des Routers vor. Sämtliche Pakete werden umgeleitet. Beim Angreifer übernimmt ettercap das Paket und schickt es an seine Zieladresse weiter.
Spoofer: Wireshark starten
Die Verbindung kann beispielsweise mit Wireshark abgehört werden. Den bekannten Paketsniffer lassen wir auf der Netzwerkkarte des Angreifers lauschen. Im Normalbetrieb greift er alles ab, was hier abläuft. Dies wäre auch mit ettercap möglich, Wireshark ist allerdings um Welten umfangreicher.
Spoofer: Ungefragte ARP Replies
Hier wird das Prinzip schnell deutlich: Niemand fragt nach der MAC der beiden Rechner - und wir senden trotzdem eine Broadcast-"Antwort" mit unserer Adresse. Fast alle Systeme übernehmen diese unkritisch.
Spoofer: Echte Replies überschreiben
Auch Antworten, mit denen die tatsächlichen Inhaber der IP auf eine Anfrage reagieren, überschreiben wir schnell wieder mit der falschen MAC. So gehen uns maximal einige wenige Pakete verloren.
Spoofer: Normaler Traffic
Das Opfer bekommt von alledem nichts mit. Hier installiert es gerade einige Softwarepakete - und der Angreifer liest jedes Bit mit. Der größte Teil des Internetverkehrs läuft in diese Weise ab - entsprechend viele Informationen können Angreifer so gewinnen.
Opfer: Einleitung von AUTH PLAIN
Gefährlich wird dies allerdings erst, wenn sensible Daten in Gefahr geraten. Hier loggt sich das Opfer unverschlüsselt auf einem Dummy-Mailserver ein. Dieser akzeptiert jedes achtstellige Passwort und richtet Mailadressen automatisch ein, wir haben die metaphorischen Hosen also anbehalten.
Spoofer: AUTH PLAIN in Wireshark
Der Angreifer hat keine Probleme, das Login auszulesen. Das Opfer weiß davon nichts - ändert es sein Passwort also nicht regelmäßig, hat der Angreifer unbegrenzten Zugriff auf alle Mails. Wird das Kennwort zudem noch bei anderen Diensten verwendet - etwa gar mit der hier abgehörten Mailadresse -, steht der Abgehörte vor großen Problemen.
Spoofer: AUTH PLAIN in Ettercap
Wem das noch zu kompliziert ist, für den bringt ettercap selbst unter Start -> Start Sniffing einen komfortablen Login-Filter mit. Das Programm bietet noch eine große Menge von weiteren Funktionen und Plugins dieser Art. Deren Anwendung würde allerdings den Rahmen dieses Workshops sprengen.
Opfer: Facebook-Login
Hier stoßen wir mit dieser Methode allerdings an unsere Grenzen: Das Facebook-Login erfolgt verschlüsselt. Bei diesem speziellen Account wurde zudem noch aktiviert, dass die restliche Verbindung kodiert werden soll. Dies kann beispielsweise durch Browser-Plugins wie "HTTPS Everywhere" erzwungen werden.
Spoofer: SSL-Verbindung mit Facebook
Der Angreifer kann nur beobachten, wie die Verbindung von einem Moment auf den anderen vom lesbaren HTTP ins verschlüsselte HTTPS wechselt. Hier ist nichts mehr zu holen.
Opfer: Facebook entsichern
Normalerweise erfolgt nur das Login verschlüsselt - und das im Hintergrund. Der Nutzer sieht also wie bei vielen Webseiten gar nicht, wenn Sicherheitsmaßnahmen brechen. Die SSL-Verbindung für die restliche Datenübertragen schalten wir hier kurz für einen Exkurs ab und loggen uns neu als Opfer ein.
Spoofer: Session Cookie abgreifen
Nach dem verschlüsselten Login muss das Opfer noch für den Server erkennbar sein. Dafür erhält es einen "Session Cookie". Den stiehlt der Angreifer hier, indem er den Datenstrom nach dem entsprechenden Text durchsucht und schlicht den unverschlüsselten Cookie-Text kopiert.
Spoofer: Session Cookie injizieren
Ein kleines Greasemonkey-Skript reicht aus, und der Cookie ist im Browser des Angreifers injiziert.
Spoofer: Facebook-Session gestohlen
Noch ein Druck auf F5, und wir sind angemeldet - ohne Login. Dies nennt sich "Session Stealing", und die Methode funktioniert auch bei ernstzunehmenden Seiten. Ein weiterer, guter Grund für SSL.

Überflutet man also das Netz mit gefälschten ARP-Anworten, so erreicht man, dass statt der MAC-Adresse des eigentlichen Inhabers der IP die des angreifenden PCs angesprochen wird. Auf der Seite des ursprünglichen Gegenübers erfolgt das Gleiche, sodass nun beide Rechner an den Angreifer senden statt an ihren Partner. Dieser braucht die Pakete nur noch jeweils durchzustellen - nachdem er sie gründlich betrachtet oder abgeändert hat. So fängt man beispielsweise eine Verbindung zwischen Desktop und Internet-Gateway ab, um nicht verschlüsselte Passwörter oder auch Session Cookies unauffällig abzugreifen.

Vertrauensbasis durch TLS-Verschlüsselung

Auf das Konzept des MITM-Angriffs reagierte Netscape im Jahr 1994. Neun Monate, nachdem der erste WWW-Browser Mosaic veröffentlicht worden war, wurde SSL 1.0 als rein firmeninternes Protokoll entworfen. Kurze Zeit später erreichte die Version 2.0 auch die Öffentlichkeit. Die Kanonisierung erfolgte schließlich 1999, als die RFC 2246 eine Weiterentwicklung von SSL 3.0 als TLS 1.0 zum Standard erklärte. Spätere Versionsschritte brachten diverse Verbesserungen bei Sicherheit und Funktionsumfang. Aktuell wird TLS 1.2 eingesetzt.

Warnung: Zertifikatfehler auf einer Seite mit einem selbst ausgestellten, falsch dimensionierten und abgelaufenen Zertifikat

SSL und TLS verwendeten im Laufe ihrer Geschichte verschiedene jeweils als stark bekannte Verschlüsselungen, und auch das zurzeit eingesetzte AES gilt als nahezu unangreifbar. Dies verhindert ein Abhören der Kommunikation in Echtzeit - es wird erforderlich, die Sicherung zu umgehen.

Um dies zu verhindern, muss der Benutzer sicher sein können, dass er tatsächlich mit dem Zielserver kommuniziert und nicht mit einer Zwischenstelle. Ein Betreiber eines TLS-fähigen Servers kann aus diesem Grund ein Zertifikat seiner persönlichen Identität erwerben. Dieses wird von einer Certificate Authority (CA) ausgestellt und bestätigt, dass der Server einen bestimmten privaten Schlüssel verwendet. Mit diesem privaten Schlüssel erzeugt der Seitenbetreiber nun eine Signatur, die an den Nutzer übertragen wird. Sie kann mit dem öffentlichen Schlüssel der CA auf ihre Zugehörigkeit zum privaten Schlüssel des Betreibers geprüft werden.

Optional sind zudem sogenannte Extended Validation Certificates (EV Certs) erhältlich, bei denen auch die hinter dem Domain-Namen stehende Firma beleuchtet wird. Auch die technischen Vorgaben für den Herstellungsprozess sind für sie schärfer definiert. Sie werden oft für besonders sicherheitskritische Seiten in Auftrag gegeben und finden sich bei vielen Banken oder Regierungsstellen.

Die Zertifizierung hat zwar den Nachteil, dass sie für teures Geld im Abonnement erworben werden muss, doch sie sichert in einer Vielzahl der Fälle gegen einen MITM-Angriff ab. Denn versucht ein Angreifer nun, sich in eine derart geschützte Kommunikation einzuklinken, so ruft er einen Zertifikatfehler hervor. Die von ihm präsentierte Signatur wurde nicht mit dem privaten Schlüssel des Serverbetreibers erstellt, sondern ist als gefälscht zu erkennen. Zumindest theoretisch.

Schwachstellen der TLS

Eine fortgeschrittene Variante dieses Angriffs besteht darin, auch als Angreifer ein Zertifikat zu erwerben, statt sich selbst eines auszustellen. Doch überzeugend gefälschte Bescheinigungen sind nur mit einigem Aufwand zu bekommen. Sie werden entweder von einer zwielichtigen oder schlecht geführten Zertifikatestelle erworben, oder sie fallen bei einem Angriff auf seriöse Stellen als Beute an. Besonderes Aufsehen erregte in diesem Zusammenhang ein Reseller der Comodo CA, der Zertifikate für jede Seite ohne Prüfung ausstellte und sich zudem mit dem Versenden von Spam ein Zubrot verdiente.

Manche Websites kranken zudem immer noch an einem schon längst behobenen Fehler in OpenSSL. Dieser veranlasste den Zufallsgenerator des Programms, nur noch wenige verschiedene Werte auszugeben. Da diese als Basis für den Private Key dienen, wurden für etwa drei Jahre unwissentlich große Mengen wenig zufälliger Schlüssel zertifiziert. Wurde ein solches Zertifikat nicht mittlerweile ausgetauscht und für ungültig erklärt, ist die betroffene Verbindung nicht wesentlich sicherer als eine unverschlüsselte.

Auch der von manchen CAs verwendete Hash-Algorithmus MD5 erwies sich vor einiger Zeit als unsicher. Aufgrund von Kollisionen war es mit massiver Rechenleistung möglich, gefälschte Signaturen und sogar Zertifikate zu erstellen. MD5 befindet sich allerdings auf dem Rückzug. Außerdem ist es nicht gestattet, den Algorithmus bei der EV-Zertifizierung zu verwenden.

Besonders verheerende, aber auch schnell behobene Schwachstellen in der Browsersoftware erinnern zudem immer wieder daran, dass ein Programm grundsätzlich nie als fehlerfrei betrachtet werden kann. So war es beispielsweise lange möglich, universell gültige Wildcard-Zertifikate auszustellen, indem ein Nullbyte im Host-Name-Bezeichner des Zertifikats platziert wurde.

In der Praxis ist als größte Schwachstelle immer auch der Mensch mit einzubeziehen. Viele Nutzer wurden von den langen Zahlenkolonnen der früher üblichen TLS-Fehler abgeschreckt, lasen den Hinweis gar nicht erst und surften einfach weiter. Irgendwann wurde die Fehlermeldung dann schlicht deaktiviert. Zwar haben die bekanntesten Hersteller die Benachrichtigung mittlerweile behutsam modernisiert, indem verschiedene Browser zum Beispiel ihre Adresszeile der Verbindung entsprechend einfärben. Insbesondere auf EV-Zertifikate reagieren viele Programme deutlich. Doch das Verhalten der User ist infolge der häufigen, früher unverständlichen Fehlermeldungen heute entsprechend abgestumpft.

Soweit zu den Hintergründen und zur Problemstellung für den Angreifer. Damit endet der erste Teil unseres Workshops. Unter anderem wird der zweite Teil mit der Durchführung des Angriffs, seiner Erprobung in der Praxis und den Möglichkeiten zur Abwehr befassen. (dre)