SSL-Stripping: Grundlagen und Schutzmöglichkeiten

Das Übertragungsprotokoll Secure Sockets Layer (SSL) und sein Nachfolger Transport Layer Security (TLS) zählen zu den wichtigsten Bausteinen eines sicheren Webauftritts. Sie verschlüsseln Daten, die Browser und Server via HTTP austauschen, noch bevor diese verschickt werden – selbst bei einem Wechsel von einer verschlüsselten HTTPS- auf eine ungeschützte Seite. Auf diese Weise wird also nicht nur der standardmäßige Datentransfer im Klartext unterbunden, sondern auch verhindert, dass ein unter SSL gesetztes Cookie bei einer unverschlüsselten Verbindung mitgeschickt wird. Die nützlichen Zertifikate garantieren dem anfragenden Client außerdem die Authentizität des Server-Hostnamen. Das Protokoll TLS bietet also in mehrfacher Hinsicht Sicherheit, was seinen Einsatz überall dort unverzichtbar macht, wo sensible Daten übertragen werden.

Generell ist TLS eines der sichersten Protokolle und hat sich bisher gegen Angriffsversuche gut behauptet. Unter bestimmten Bedingungen sind spezielle Tools (wie beispielsweise das zu Demonstrationszwecken programmierte sslstrip) jedoch dazu imstande, Zugriff auf die Datenübertragung zu gewinnen, bevor die Verschlüsselung begonnen hat. Derartige unberechtigte Fremdzugriffe bezeichnet man als SSL-Stripping.

SSL-Zertifikate von IONOS!

Wahren Sie dank SSL-Zertifikaten die Geheimhaltung Ihres Online-Verkehrs und stärken Sie das Vertrauen Ihrer Kunden in die Sicherheit Ihrer Webseite.

Geprüfte Sicherheit
Bis zu 256-bit Verschlüsselung
Einfache Aktivierung

Was ist SSL-Stripping?

Bereits 2002 programmierte der Entwickler Moxie Marlinspike mit sslsniff ein Tool, das die SSL-Verschlüsselung aushebeln konnte. Die Proxy-Software ermöglichte es, SSL-Datenströme zu infiltrieren und das Serverzertifikat gegen ein beliebiges eigenes Zertifikat auszutauschen. Marlinspike wollte mit seiner Anwendung vor allem auf den Schwachpunkt des Internet Explorers hinweisen, der zum Zeitpunkt der Veröffentlichung von sslsniff für derartige Man-in-the-Middle-Angriffe recht anfällig war. Microsoft konnte die Sicherheitslücke daraufhin schließen, und auch andere gängige Clients sind heute in der aktuellen Version und mit der richtigen Konfiguration weitestgehend gegen solche Angriffe gewappnet.

Das bereits erwähnte Programm sslstrip stellte Marlinspike 2009 im Rahmen der Security-Konferenz Black Hat DC vor. Wie auch schon sein vorangegangenes Tool ist sslstrip ein Proxy, der sich zwischen Client und Server positioniert und versucht, die Zertifizierung auf Seiten des Browsers zu umgehen. Zu diesem Zweck durchsucht das Tool die von Webservern ausgelieferten Webseiten gezielt nach eingebetteten Links und Weiterleitungen, die auf eine SSL-geschützte Log-in-Seite verweisen – wie zum Beispiel der folgende Link:

<a href="https://example.com/login.php">

Findet der Proxy einen solchen Link, modifiziert er ihn zu einem äquivalenten HTTP-Link, woraufhin der Nutzer mit seinem Browser bei der Anmeldung anstelle der vermeintlich verschlüsselten ganz gewöhnliche Daten im Klartext verschickt. Der potenzielle Angreifer kann dank sslstrip als Zwischenstation problemlos mitlesen und so mitunter an vertrauliche Informationen gelangen. Da das SSL-Stripping keine ungültige Verbindung erzeugt, erscheinen auch keine Warnmeldungen. Der User bekommt in der Regel also gar nicht mit, dass er seine Daten unverschlüsselt überträgt.

Wie wird ein SSL-Strip implementiert?

Egal, ob sslstrip oder eine ähnlich programmierte Anwendung zum Einsatz kommt – es ist zunächst notwendig, dass der Angreifer seinen Proxy zwischen Browser und Webserver schaltet. Nur, wenn die Software überhaupt Datenströme abfangen bzw. weiterleiten kann, hat sie nämlich auch die Möglichkeit, per SSL-Stripping modifizierte URLs einzustreuen. Bei der Implementierung sind vor allem die folgenden drei Methoden verbreitet:

  1. Unbemerkter Eintrag des Proxys in den Browser-Optionen: Wenn Ihr System ins Visier von Cyberkriminellen gerät, ist oftmals gar nicht der ganze Computer, sondern einfach nur der Browser das Ziel. Malware sorgt dann dafür, dass in den Einstellungen automatisch ein externer Proxy-Server eingetragen wird, ohne dass der Nutzer etwas davon mitbekommt.
  2. ARP- bzw. NDP-Spoofing: Innerhalb eines Subnetzes kann ein Angreifer auf das sogenannte ARP-Spoofing (IPv4) bzw. NDP-Spoofing (IPv6) zurückgreifen, um seinen Proxy ins Spiel zu bringen. Beide Protokolle erfüllen den Zweck, IP-Adressen in die entsprechenden Hardwareadressen (auch bekannt als MAC-Adressen) aufzulösen. Mithilfe manipulierter Nachrichten dieser Protokolle kann der Angreifer angeforderte Hardware-Adressen durch die seines eigenen Systems ersetzen und anschließend die übertragenen Datenpakete abfangen.
  3. Einen eigenen Hotspot bereitstellen: Die dritte Möglichkeit setzt voraus, dass das Gerät, auf dem der Proxy-Server läuft, auch als Router fungieren kann. Als Standard-Gateway inklusive DHCP-Server kann dieser dann beispielsweise IP-Adressen an die Nutzer vergeben, aber auch Pakete mitlesen und weiterleiten, die über die Grenzen des erstellen Subnetzes hinaus versendet werden. Damit existiert gleichzeitig also auch die perfekte Basis für SSL-Stripping.

Nachdem er seinen Proxy in Position gebracht hat, muss der Angreifer für den SSL-Strip selbst im Prinzip nicht mehr viel tun: Er lässt das Tool laufen, das in den passenden Situationen veränderte Links ausgibt und im Erfolgsfall unverschlüsselte Informationen wie zum Beispiel Bank- oder Log-in-Daten des Nutzers liefert.

Kann man SSL-Stripping als Nutzer erkennen?

Server und Browser haben keine Möglichkeit, einen SSL-Strip zu erkennen. Beide Anwendungen gehen davon aus, mit dem eigentlich kontaktierten Partner zu kommunizieren, weshalb sie die Integrität der übertragenen Daten nicht anzweifeln. Für Nutzer verhält sich die Situation recht ähnlich, denn auf den ersten Blick scheint der Website-Besuch wie gewünscht zu verlaufen. SSL-Stripping manipulierte Seiten sind nämlich nur in wenigen Ausnahmefällen anhand technischer Details oder ihres Designs zu erkennen. Sofern also nicht gerade ein auffallend fehlerhaftes Layout präsentiert wird oder erhebliche Verzögerungen beim Laden der Seite auftreten, sind die Hinweise, dass keine SSL-Verschlüsselung stattfindet, somit verschwindend gering.

Die Adresszeilen von Browsern liefern jedoch seit einiger Zeit solche Hinweise – teilweise auf ganz unterschiedliche Art und Weise: Um Webseiten mit sicherer Verbindung zu kennzeichnen, war die Adressleiste in älteren Versionen des Internet Explorer von Microsoft beispielsweise komplett grün gefärbt. Andere Browser hoben lediglich den voranstehenden Firmennamen farblich hervor, bis diese Kennzeichnungsart – spätestens mit den ersten webfähigen Mobilgeräten – durch die heute gängigen Symbole wie das typische Sicherheitsschloss abgelöst wurde. Doch auch diese optischen Hinweise garantieren nicht immer, dass die besuchte Seite nicht durch Tools wie sslstrip manipuliert worden ist. Da ein Angreifer den kompletten Datentransfer kontrolliert, ist er durchaus in der Lage, ein ähnliches Symbol als Favicon auszuliefern, um die Täuschung perfekt zu machen.

Welche Schutzmöglichkeiten gibt es?

Die Schwierigkeit, manipulierte Seiten zu erkennen, macht SSL-Stripping-Angriffe für User so gefährlich: Die Verschlüsselungszertifikate, die von jedem pflichtbewussten Website-Betreiber eingesetzt werden sollten, stehen eigentlich für Sicherheit und Vertrauenswürdigkeit und nehmen den Besuchern daher die Bedenken, vertrauliche Daten preiszugeben. Und prinzipiell bietet SSL auch den notwendigen Schutz, denn die Möglichkeit, Datenpakete mitzulesen und abzufangen, resultiert nicht etwa aus einer Sicherheitslücke des Protokolls, sondern daraus, dass die Verschlüsselung an sich verhindert wird. Um sich vor SSL-Strips zu schützen, sollte jeder Nutzer daher den Aufbau verschlüsselter HTTPS-Verbindungen forcieren, zum Beispiel durch die folgenden Mittel:

  1. Manuelle Eingabe der URL: Eine äußerst mühsame, aber erfolgreiche Maßnahme ist es, die vollständige HTTPS-URL per Hand einzugeben.
  2. Browser-Erweiterung: Es gibt verschiedene Browser-Erweiterungen, die Ihnen dabei helfen, verschlüsselte Versionen aufzurufen, sofern diese vorhanden sind. Die Erweiterung HTTPS Everywhere greift beispielsweise auf Domain- und Regellisten zurück, um jegliche Seitenaufrufe über HTTPS-Verbindungen abzuwickeln. Versionen für Firefox, Firefox for Android, Chrome und Opera finden Sie auf der Website der Electronic Frontier Foundation, die die Erweiterung gemeinsam mit dem Tor-Projekt entwickelt und betreut.
  3. Sichere URLs als Lesezeichen speichern: Wenn Sie einen SSL-geschützten Webservice (Online-Banking, Cloud-Speicher etc.) häufiger in Anspruch nehmen, können Sie die HTTPS-Version als Lesezeichen speichern und den Dienst immer über dieses aufrufen. Voraussetzung ist, dass Sie sich in einem sicheren Netzwerk befinden, wenn Sie das Lesezeichen setzen. Andernfalls ist es möglich, dass Sie eine bereits manipulierte URL in die Favoritenliste aufnehmen.

Auch als Betreiber eines Webprojektes kann man SSL-Stripping aktiv bekämpfen. Ein grundlegender Schritt kann beispielsweise sein, die Verschlüsselung für sämtliche Seiten der Präsenz zu aktivieren und die Umleitung eingehender HTTP-Verbindungen auf sichere Seiten zu forcieren. Ähnliches gilt für gesetzte Cookies: Wenn Sie zwecks Webanalyse nicht auf die praktischen Datensätze verzichten wollen, sollten Sie sicherstellen, dass diese nicht über ungesicherte HTTP-Verbindungen zurückgesendet werden. Hierfür zeichnen Sie die Cookies einfach mit dem Attribut „Secure“ aus und stellen damit sicher, dass Ihr Server lediglich Rückmeldungen via HTTPS erhält. Eine weitere Sicherheitsmaßnahme ist der IETF-Standard HSTS, der im folgenden Abschnitt genauer beleuchtet wird.

Wie hilft HSTS gegen SSL-Stripping?

Drei Jahre nachdem Marlinspike mit seiner Software sslstrip auf die Anfälligkeit SSL-zertifizierter Websites aufmerksam gemacht hat, spezifizierte die IETF (Internet Engineering Task Force) im RFC 6797 den Sicherheitsmechanismus HSTS (HTTP Strict Transport Security). Dieser ermöglicht es Webservern, verbindungsaufbauenden Clients mitzuteilen, dass sie die Website für einen bestimmten Zeitraum ausschließlich über eine HTTPS-Verbindung erreichen. Hierfür nutzt der Server im Header einer gewöhnlichen HTTP-Antwort das Feld „Strict-Transport-Security“ zuzüglich der Direktive „max-age“, mit der die Gültigkeitsdauer der Anweisung in Sekunden festgelegt wird. Um eine Domain für ein Jahr lang ausschließlich per verschlüsselter Verbindung erreichbar zu machen, muss die HTTP-Antwort des Webservers beispielsweise folgende Zeile enthalten:

Strict-Transport-Security: max-age=31536000

Über den Parameter „includeSubDomains“ kann man den Befehl zudem auf alle Subdomains der Webpräsenz ausweiten, sodass auch hier die Nutzung von SSL/TLS forciert wird. Erhält ein Browser vom kontaktierten Webserver eine Nachricht mit „Strict-Transport-Security“-Anweisung, werden bei zukünftigen Verbindungen zu der betreffenden Domain automatisch alle unverschlüsselten Anfragen in verschlüsselte umgewandelt. Lässt sich die Sicherheit der Verbindung nicht gewährleisten, erscheint eine Fehlermeldung und die angeforderte Seite wird nicht aufgerufen.

HSTS stellt eine dauerhafte Lösung dar, um eine Webpräsenz und die potenziellen Besucher vor SSL-Strips und vergleichbaren Angriffen zu schützen. Bevor der Sicherheitsmechanismus greifen kann, geht jedoch immer ein allererster Verbindungsaufbau voraus, der ebenso manipulierbar ist, wie es in diesem Artikel bereits beschrieben wurde. Um diesem Problem zu begegnen, hat Google für seinen Browser Chrome eine Preload-Liste eingeführt, die solche Webprojekte enthält, die ausschließlich über HTTPS abrufbar sind. Andere Browser-Anbieter haben das Prinzip übernommen und ebenfalls HSTS-Preload-Listen implementiert, die auf der Chrome-Liste basieren. Um Ihre Webpräsenz ebenfalls in die Auflistung einzutragen, können Sie einen Antrag auf der von Google eingerichteten Projektseite stellen.

Fakt

Für die Aufnahme in die Preload-Liste müssen bestimmte Voraussetzungen erfüllt sein: So müssen Sie logischerweise ein gültiges Zertifikat vorweisen können und auch alle Subdomains über HTTPS laufen lassen. Darüber hinaus muss das HSTS-Feld in den Antworten des Webservers bei der Hauptdomain folgendermaßen gestaltet sein:

  • Die „max-age“-Direktive muss mindestens eine Gültigkeitsdauer von 18 Wochen aufweisen (10886400 Sekunden).
  • Die Direktive „includeSubDomains“ muss spezifiziert sein.
  • Ferner muss die Direktive „preload“ gesetzt werden.
  • Existiert eine Weiterleitung, muss auch diese den HSTS-Header enthalten.