Das Über­tra­gungs­pro­to­koll Secure Sockets Layer (SSL) und sein Nach­fol­ger Transport Layer Security (TLS) zählen zu den wich­tigs­ten Bau­stei­nen eines sicheren Web­auf­tritts. Sie ver­schlüs­seln Daten, die Browser und Server via HTTP aus­tau­schen, noch bevor diese ver­schickt werden – selbst bei einem Wechsel von einer ver­schlüs­sel­ten HTTPS- auf eine un­ge­schütz­te Seite. Auf diese Weise wird also nicht nur der stan­dard­mä­ßi­ge Da­ten­trans­fer im Klartext un­ter­bun­den, sondern auch ver­hin­dert, dass ein unter SSL gesetztes Cookie bei einer un­ver­schlüs­sel­ten Ver­bin­dung mit­ge­schickt wird. Die nütz­li­chen Zer­ti­fi­ka­te ga­ran­tie­ren dem an­fra­gen­den Client außerdem die Au­then­ti­zi­tät des Server-Hostnamen. Das Protokoll TLS bietet also in mehr­fa­cher Hinsicht Si­cher­heit, was seinen Einsatz überall dort un­ver­zicht­bar macht, wo sensible Daten über­tra­gen werden.

Generell ist TLS eines der si­chers­ten Pro­to­kol­le und hat sich bisher gegen An­griffs­ver­su­che gut behauptet. Unter be­stimm­ten Be­din­gun­gen sind spezielle Tools (wie bei­spiels­wei­se das zu De­mons­tra­ti­ons­zwe­cken pro­gram­mier­te sslstrip) jedoch dazu imstande, Zugriff auf die Da­ten­über­tra­gung zu gewinnen, bevor die Ver­schlüs­se­lung begonnen hat. Derartige un­be­rech­tig­te Fremd­zu­grif­fe be­zeich­net man als SSL-Stripping.

SSL-Zer­ti­fi­kat kaufen
Sichern Sie sich Ihr SSL-Zer­ti­fi­kat
  • Ver­schlüs­selt die Website-Kom­mu­ni­ka­ti­on
  • Ver­hin­dert Si­cher­heits­war­nun­gen
  • Ver­bes­sert die Google-Plat­zie­rung

Was ist SSL-Stripping?

Bereits 2002 pro­gram­mier­te der Ent­wick­ler Moxie Mar­lin­spike mit sslsniff ein Tool, das die SSL-Ver­schlüs­se­lung aushebeln konnte. Die Proxy-Software er­mög­lich­te es, SSL-Da­ten­strö­me zu in­fil­trie­ren und das Ser­ver­zer­ti­fi­kat gegen ein be­lie­bi­ges eigenes Zer­ti­fi­kat aus­zu­tau­schen. Mar­lin­spike wollte mit seiner Anwendung vor allem auf den Schwach­punkt des Internet Explorers hinweisen, der zum Zeitpunkt der Ver­öf­fent­li­chung von sslsniff für derartige Man-in-the-Middle-Angriffe recht anfällig war. Microsoft konnte die Si­cher­heits­lü­cke daraufhin schließen, und auch andere gängige Clients sind heute in der aktuellen Version und mit der richtigen Kon­fi­gu­ra­ti­on wei­test­ge­hend gegen solche Angriffe gewappnet. Das bereits erwähnte Programm sslstrip stellte Mar­lin­spike 2009 im Rahmen der Security-Konferenz Black Hat DC vor. Wie auch schon sein vor­an­ge­gan­ge­nes Tool ist sslstrip ein Proxy, der sich zwischen Client und Server po­si­tio­niert und versucht, die Zer­ti­fi­zie­rung auf Seiten des Browsers zu umgehen. Zu diesem Zweck durch­sucht das Tool die von Web­ser­vern aus­ge­lie­fer­ten Webseiten gezielt nach ein­ge­bet­te­ten Links und Wei­ter­lei­tun­gen, die auf eine SSL-ge­schütz­te Log-in-Seite verweisen – wie zum Beispiel der folgende Link:

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

Findet der Proxy einen solchen Link, mo­di­fi­ziert er ihn zu einem äqui­va­len­ten HTTP-Link, woraufhin der Nutzer mit seinem Browser bei der Anmeldung anstelle der ver­meint­lich ver­schlüs­sel­ten ganz ge­wöhn­li­che Daten im Klartext ver­schickt. Der po­ten­zi­el­le Angreifer kann dank sslstrip als Zwi­schen­sta­ti­on pro­blem­los mitlesen und so mitunter an ver­trau­li­che In­for­ma­tio­nen gelangen. Da das SSL-Stripping keine ungültige Ver­bin­dung erzeugt, er­schei­nen auch keine Warn­mel­dun­gen. Der User bekommt in der Regel also gar nicht mit, dass er seine Daten un­ver­schlüs­selt überträgt.

Wie wird ein SSL-Strip im­ple­men­tiert?

Egal, ob sslstrip oder eine ähnlich pro­gram­mier­te Anwendung zum Einsatz kommt – es ist zunächst notwendig, dass der Angreifer seinen Proxy zwischen Browser und Webserver schaltet. Nur, wenn die Software überhaupt Da­ten­strö­me abfangen bzw. wei­ter­lei­ten kann, hat sie nämlich auch die Mög­lich­keit, per SSL-Stripping mo­di­fi­zier­te URLs ein­zu­streu­en. Bei der Im­ple­men­tie­rung sind vor allem die folgenden drei Methoden ver­brei­tet:

  1. Un­be­merk­ter Eintrag des Proxys in den Browser-Optionen: Wenn Ihr System ins Visier von Cy­ber­kri­mi­nel­len gerät, ist oftmals gar nicht der ganze Computer, sondern einfach nur der Browser das Ziel. Malware sorgt dann dafür, dass in den Ein­stel­lun­gen au­to­ma­tisch ein externer Proxy-Server ein­ge­tra­gen wird, ohne dass der Nutzer etwas davon mit­be­kommt.
  2. ARP- bzw. NDP-Spoofing: Innerhalb eines Subnetzes kann ein Angreifer auf das so­ge­nann­te ARP-Spoofing (IPv4) bzw. NDP-Spoofing (IPv6) zu­rück­grei­fen, um seinen Proxy ins Spiel zu bringen. Beide Pro­to­kol­le erfüllen den Zweck, IP-Adressen in die ent­spre­chen­den Hard­ware­adres­sen (auch bekannt als MAC-Adressen) auf­zu­lö­sen. Mithilfe ma­ni­pu­lier­ter Nach­rich­ten dieser Pro­to­kol­le kann der Angreifer an­ge­for­der­te Hardware-Adressen durch die seines eigenen Systems ersetzen und an­schlie­ßend die über­tra­ge­nen Da­ten­pa­ke­te abfangen.
  3. Einen eigenen Hotspot be­reit­stel­len: Die dritte Mög­lich­keit 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 bei­spiels­wei­se IP-Adressen an die Nutzer vergeben, aber auch Pakete mitlesen und wei­ter­lei­ten, die über die Grenzen des erstellen Subnetzes hinaus versendet werden. Damit existiert gleich­zei­tig 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 Si­tua­tio­nen ver­än­der­te Links ausgibt und im Er­folgs­fall un­ver­schlüs­sel­te In­for­ma­tio­nen wie zum Beispiel Bank- oder Log-in-Daten des Nutzers liefert.

Kann man SSL-Stripping als Nutzer erkennen?

Server und Browser haben keine Mög­lich­keit, einen SSL-Strip zu erkennen. Beide An­wen­dun­gen gehen davon aus, mit dem ei­gent­lich kon­tak­tier­ten Partner zu kom­mu­ni­zie­ren, weshalb sie die In­te­gri­tät der über­tra­ge­nen Daten nicht an­zwei­feln. 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 ma­ni­pu­lier­te Seiten sind nämlich nur in wenigen Aus­nah­me­fäl­len anhand tech­ni­scher Details oder ihres Designs zu erkennen. Sofern also nicht gerade ein auf­fal­lend feh­ler­haf­tes Layout prä­sen­tiert wird oder er­heb­li­che Ver­zö­ge­run­gen beim Laden der Seite auftreten, sind die Hinweise, dass keine SSL-Ver­schlüs­se­lung statt­fin­det, somit ver­schwin­dend gering.

Die Adress­zei­len von Browsern liefern jedoch seit einiger Zeit solche Hinweise – teilweise auf ganz un­ter­schied­li­che Art und Weise: Um Webseiten mit sicherer Ver­bin­dung zu kenn­zeich­nen, war die Adress­leis­te in älteren Versionen des Internet Explorer von Microsoft bei­spiels­wei­se komplett grün gefärbt. Andere Browser hoben lediglich den vor­an­ste­hen­den Fir­men­na­men farblich hervor, bis diese Kenn­zeich­nungs­art – spä­tes­tens mit den ersten web­fä­hi­gen Mo­bil­ge­rä­ten – durch die heute gängigen Symbole wie das typische Si­cher­heits­schloss abgelöst wurde. Doch auch diese optischen Hinweise ga­ran­tie­ren nicht immer, dass die besuchte Seite nicht durch Tools wie sslstrip ma­ni­pu­liert worden ist. Da ein Angreifer den kom­plet­ten Da­ten­trans­fer kon­trol­liert, ist er durchaus in der Lage, ein ähnliches Symbol als Favicon aus­zu­lie­fern, um die Täuschung perfekt zu machen.

Welche Schutz­mög­lich­kei­ten gibt es?

Die Schwie­rig­keit, ma­ni­pu­lier­te Seiten zu erkennen, macht SSL-Stripping-Angriffe für User so ge­fähr­lich: Die Ver­schlüs­se­lungs­zer­ti­fi­ka­te, die von jedem pflicht­be­wuss­ten Website-Betreiber ein­ge­setzt werden sollten, stehen ei­gent­lich für Si­cher­heit und Ver­trau­ens­wür­dig­keit und nehmen den Besuchern daher die Bedenken, ver­trau­li­che Daten preis­zu­ge­ben. Und prin­zi­pi­ell bietet SSL auch den not­wen­di­gen Schutz, denn die Mög­lich­keit, Da­ten­pa­ke­te mit­zu­le­sen und ab­zu­fan­gen, re­sul­tiert nicht etwa aus einer Si­cher­heits­lü­cke des Pro­to­kolls, sondern daraus, dass die Ver­schlüs­se­lung an sich ver­hin­dert wird. Um sich vor SSL-Strips zu schützen, sollte jeder Nutzer daher den Aufbau ver­schlüs­sel­ter HTTPS-Ver­bin­dun­gen forcieren, zum Beispiel durch die folgenden Mittel:

  1. Manuelle Eingabe der URL: Eine äußerst mühsame, aber er­folg­rei­che Maßnahme ist es, die voll­stän­di­ge HTTPS-URL per Hand ein­zu­ge­ben.
  2. Browser-Er­wei­te­rung: Es gibt ver­schie­de­ne Browser-Er­wei­te­run­gen, die Ihnen dabei helfen, ver­schlüs­sel­te Versionen auf­zu­ru­fen, sofern diese vorhanden sind. Die Er­wei­te­rung HTTPS Ever­y­whe­re greift bei­spiels­wei­se auf Domain- und Re­gel­lis­ten zurück, um jegliche Sei­ten­auf­ru­fe über HTTPS-Ver­bin­dun­gen ab­zu­wi­ckeln. Versionen für Firefox, Firefox for Android, Chrome und Opera finden Sie auf der Website der Elec­tro­nic Frontier Foun­da­ti­on, die die Er­wei­te­rung gemeinsam mit dem Tor-Projekt ent­wi­ckelt und betreut.
  3. Sichere URLs als Le­se­zei­chen speichern: Wenn Sie einen SSL-ge­schütz­ten Web­ser­vice (Online-Banking, Cloud-Speicher etc.) häufiger in Anspruch nehmen, können Sie die HTTPS-Version als Le­se­zei­chen speichern und den Dienst immer über dieses aufrufen. Vor­aus­set­zung ist, dass Sie sich in einem sicheren Netzwerk befinden, wenn Sie das Le­se­zei­chen setzen. An­dern­falls ist es möglich, dass Sie eine bereits ma­ni­pu­lier­te URL in die Fa­vo­ri­ten­lis­te aufnehmen.

Auch als Betreiber eines Web­pro­jek­tes kann man SSL-Stripping aktiv bekämpfen. Ein grund­le­gen­der Schritt kann bei­spiels­wei­se sein, die Ver­schlüs­se­lung für sämtliche Seiten der Präsenz zu ak­ti­vie­ren und die Umleitung ein­ge­hen­der HTTP-Ver­bin­dun­gen auf sichere Seiten zu forcieren. Ähnliches gilt für gesetzte Cookies: Wenn Sie zwecks Web­ana­ly­se nicht auf die prak­ti­schen Da­ten­sät­ze ver­zich­ten wollen, sollten Sie si­cher­stel­len, dass diese nicht über un­ge­si­cher­te HTTP-Ver­bin­dun­gen zu­rück­ge­sen­det werden. Hierfür zeichnen Sie die Cookies einfach mit dem Attribut „Secure“ aus und stellen damit sicher, dass Ihr Server lediglich Rück­mel­dun­gen via HTTPS erhält. Eine weitere Si­cher­heits­maß­nah­me ist der IETF-Standard HSTS, der im folgenden Abschnitt genauer be­leuch­tet wird.

Wie hilft HSTS gegen SSL-Stripping?

Drei Jahre nachdem Mar­lin­spike mit seiner Software sslstrip auf die An­fäl­lig­keit SSL-zer­ti­fi­zier­ter Websites auf­merk­sam gemacht hat, spe­zi­fi­zier­te die IETF (Internet En­gi­nee­ring Task Force) im RFC 6797 den Si­cher­heits­me­cha­nis­mus HSTS (HTTP Strict Transport Security). Dieser er­mög­licht es Web­ser­vern, ver­bin­dungs­auf­bau­en­den Clients mit­zu­tei­len, dass sie die Website für einen be­stimm­ten Zeitraum aus­schließ­lich über eine HTTPS-Ver­bin­dung erreichen. Hierfür nutzt der Server im Header einer ge­wöhn­li­chen HTTP-Antwort das Feld „Strict-Transport-Security“ zuzüglich der Direktive „max-age“, mit der die Gül­tig­keits­dau­er der Anweisung in Sekunden fest­ge­legt wird. Um eine Domain für ein Jahr lang aus­schließ­lich per ver­schlüs­sel­ter Ver­bin­dung er­reich­bar zu machen, muss die HTTP-Antwort des Web­ser­vers bei­spiels­wei­se folgende Zeile enthalten:

Strict-Transport-Security: max-age=31536000

Über den Parameter „in­clude­Sub­Do­mains“ kann man den Befehl zudem auf alle Sub­do­mains der Web­prä­senz ausweiten, sodass auch hier die Nutzung von SSL/TLS forciert wird. Erhält ein Browser vom kon­tak­tier­ten Webserver eine Nachricht mit „Strict-Transport-Security“-Anweisung, werden bei zu­künf­ti­gen Ver­bin­dun­gen zu der be­tref­fen­den Domain au­to­ma­tisch alle un­ver­schlüs­sel­ten Anfragen in ver­schlüs­sel­te um­ge­wan­delt. Lässt sich die Si­cher­heit der Ver­bin­dung nicht ge­währ­leis­ten, erscheint eine Feh­ler­mel­dung und die an­ge­for­der­te Seite wird nicht auf­ge­ru­fen.

HSTS stellt eine dau­er­haf­te Lösung dar, um eine Web­prä­senz und die po­ten­zi­el­len Besucher vor SSL-Strips und ver­gleich­ba­ren Angriffen zu schützen. Bevor der Si­cher­heits­me­cha­nis­mus greifen kann, geht jedoch immer ein al­ler­ers­ter Ver­bin­dungs­auf­bau voraus, der ebenso ma­ni­pu­lier­bar ist, wie es in diesem Artikel bereits be­schrie­ben wurde. Um diesem Problem zu begegnen, hat Google für seinen Browser Chrome eine Preload-Liste ein­ge­führt, die solche Web­pro­jek­te enthält, die aus­schließ­lich über HTTPS abrufbar sind. Andere Browser-Anbieter haben das Prinzip über­nom­men und ebenfalls HSTS-Preload-Listen im­ple­men­tiert, die auf der Chrome-Liste basieren. Um Ihre Web­prä­senz ebenfalls in die Auf­lis­tung ein­zu­tra­gen, können Sie einen Antrag auf der von Google ein­ge­rich­te­ten Pro­jekt­sei­te stellen.

Fakt

Für die Aufnahme in die Preload-Liste müssen bestimmte Vor­aus­set­zun­gen erfüllt sein: So müssen Sie lo­gi­scher­wei­se ein gültiges Zer­ti­fi­kat vorweisen können und auch alle Sub­do­mains über HTTPS laufen lassen. Darüber hinaus muss das HSTS-Feld in den Antworten des Web­ser­vers bei der Haupt­do­main fol­gen­der­ma­ßen gestaltet sein:

  • Die „max-age“-Direktive muss min­des­tens eine Gül­tig­keits­dau­er von 18 Wochen aufweisen (10886400 Sekunden).
  • Die Direktive „in­clude­Sub­Do­mains“ muss spe­zi­fi­ziert sein.
  • Ferner muss die Direktive „preload“ gesetzt werden.
  • Existiert eine Wei­ter­lei­tung, muss auch diese den HSTS-Header enthalten.
Zum Hauptmenü