PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HYPERLiNK-SPOOFiNG



HurricanX
22.10.2004, 22:05
HYPERLiNK-SPOOFiNG
der Angriff auf die SSL-Server-Authetifikation

1.) Einführung
2.) Der Hintergrund des Hyperlink-Spoofing
3.) Die Hyperlink-Spoofing-Attacke "bei der Arbeit"
4.) Massnahmen gegen das Hyperlink-Spoofing
5.) Die laengerfristige Loesung gegen das Hyperlink-Spoofing
6.) Abschliessend


1.) Einführung

In diesem Paper moechte ich euch mal eine etwas andere Angriffsform
naeher bringen, welche den Angriff auf das HTTP Protokoll nutzt. Man
richtet diesen Angriff gegen das Server-Authentikationsprotokoll
Secure Socket Layer (SSL), welches in gesicherten Browsern wie z. B.
denen von Netscape, Microsoft, Opera und anderen verwendet wird.

Ein "man-in-the-middle"-Hacker kann den Server dazu missbrauchen, sich
mit einem vorgetaeuschten Server zu verbinden. Dabei wird dem Browser
das uebliche Erscheinungsbild einer gesicherten Sitzung geboten.

Ihr wisst nicht was ein "man-in-the-middle"-Hacker ist? Pech ;) Nein,
unter einem "man-in-the-middle"-Hacker versteht man eine Technik, bei
der man sich in den Paketstrom zwischen Server und Clinet
einschleusst. Ein weiteres Risiko des Hyperlink-Spoofing (ein
vorgetaeuschter Hyperlink) besteht darin, dass der Anwender (z. B. ein
Bank- oder Datenbank-Client) "boesartige" Java-Applets vom Server
herunterlaedt, weil er glaubt, die Applets wuerdem vom echten Server
stammen.

Das Hyperlink-Spoofing nutzt ein Sicherheitsloch, weil die meisten
Browser digitale Zertifikate verwenden, um Websitzungen zu sichern.
Das Hyperlink-Spoofing richtet sich nicht gegen die kryptografische
Ebene oder den Ablauf von SSL. Deshalb kann dieser Angriff auch gegen
andere mit digitalen Zertifikaten gesicherte Applikationen gerichtet
werden.

Internet Explorer + 3x, Netscape Navigator + 4x sind anfaellig
gegenueber dieser Angriffsart. Es sind auch andere Browser und
SSL-Proxies anfaellig fuer Hyperlink-Spoofing, das mag unter anderem
schon an fehlerhafter Konfiguration liegen. Techniken, die ebenfalls
mit Zertifikaten arbeiten, wie signierter Code oder signierte Applets,
sind davon nicht betroffen.

Angreifer koennen jeden SSL-Server verkoerpern, indem sie sich nach
den ueblichen Konventionen fuer Zertifikate richten oder auf die zuvor
aufgelisteten Browser zugreifen. Darueber hinaus sind auch
Server-Zertifikate wie die von Verisign anfaellig, wenn Browser wie
Internet Explorer oder Netscape Navigator eingesetzt werden.
Modifikationen der serverseitigen Software machen diese Art des
Angriffes weniger erfolgreich. Langfristig ist es die beste Loesung,
sowohl den Zertifikatsinhalt als auch den normalen Web-Browser zu
modifizieren. Wie schon zuvor ausgefuerhrt, sind Client-Zertifikate,
das Java-Applet-Signieren und die von Server fuer Code verwendeten
Zertifikate, wie bei ActiveX Controls, nicht betroffen.


2.) Der Hintergrund des Hyperlink-Spoofing

Wenn ein Anwender eine SSL-Verbindung aufbaut, vereinbaren der Browser
und der Server ein Protokoll, um den Server und optional den Client zu
athentizieren. Die Hyperlink-Spoofing-Methode zielt ausschliesslich
auf die Server-Authentikation ab. Waehrend der Initialschritte des
SSL-Protokollaufbaus erhaelt der Client vom Server ein Zertifikat
angeboten. Es handelt sich dabei um eine Struktur, die mit einer
digitalen Signatur versehen ist, in der der oeffentliche Schluessel
des Servers mit bestimmten Attributen verbunden ist.

SSL verwendet einen Domain-Name-Server-(DNS-)Namen im Zertifikat.
Alternativ dazu kann das Zertifikat einen Platzhalter anstelle des
vollstaendigen Namens enthalten(er koennte www.bnd.de oder *.bnd.de
lauten). Durch den korrekten Protokollaufbau und das Praentieren eines
gueltigen Zertifikats, dem der Client vertraut, stellt der Server fuer
den Browser sicher, dass er ueber den korrespondierten privaten
Schluessel verfuegt. Der Browser akzeptiert diese Pruefung und weiss
nun, dass der Server wirklich er ist bzw. dass er das Recht hat, den
gezeigten DNS-Namen zu fuehren. Fuer das Hyperlink-Spoofing ist SSL
nicht das eignetliche Problem. Statt dessen sind der Inhalt der
Zertifikate und die Anwenderschnittstelle des Browsers die kritischen
Punkte.


3.) Die Hyperlink-Spoofing-Attacke "bei der Arbeit"

Die Hyperlink-Attacke kann erfolgreich sein, weil die meisten Anwender
Verbindungen nicht mit DNS-Namen oder URLs herstellen, sondern ueber
Hyperlinks. Der aktuelle Entwicklungsstandsstand von SSL reicht nur
zum Pruefen des Serveranteils in der URL, jedoch nicht zum Pruefen des
Hyperlinks, auf den der Anwender klickte.

Genauso wie DNS-Namen gegenueber dem DNS-Spoofing anfaellig sind (ein
DNS-Server "luegt" bezueglich seiner Internet-Adresse), so sind URLs
das Zielobjekt fuer das Hyperlink-Spoofing, bei der eine Website ueber
den DNS-Namen einer URL unwahre Angaben macht. Beide Spoofing-Formen
steuern einen auf die falsche Site. Hyperlink-Spoofing laesst sich vom
technischen Standpunkt aus betrachtet leichter durchfuehren als das
DNS-Spoofing. Beispielsweise koennte man dem Browser des Opfers
folgendes mit auf den Weg geben:

Klicken Sie hier fuer kostenlose Angebote aller Art.

Man sieht einen Link, der verspricht, dass es dort kostenlose Angebote
aller Art gibt. Wenn man darauf klickt, wird man zu einem anderen
gesicherten Server geschickt(attacking.com) und landet im Verzeichnis
infogatherer. Die heutige Browser-Generation stellt fest, ob es sich
um eine gesicherte Verbindung handelt, und zeigt dies entsprechend an.
Dennoch hat man das Opfer ueberlistet. Man benutzt dazu einige Tricks
auf die ich spaeter noch zurueckkomme.

Nun hat man zwar eine "vertrauliche" Verbindung, aber leider mit dem
falschen Server. Natuerlich bietet die infogathering-Site keine
kostenlosen Angebote. Statt dessen befindet man sich mitten in einem
Angriff. Der Angreifer hat dafuer gesorgt, dass die Website wie das
Original aussieht - das man sonst zur Eingabe einer Kreditkartennummer
auffordert, bevor man die eigentlichen kostenlosen Angebote erhaelt.

Wenn man sich in die Tiefen seines Browsers begibt, und den Source des
Dokuments oder die Dokumentinformationen betrachtet, wird man
feststellen, dass es sich bei der authentizierten Identitaet
keineswegs um den Server handelt, den man erwartet hat.

Als Serverzertifikate weitere Verbreitung fanden, wurde das
Aufrechterhalten der Server-Authentikation pradoxerweise schwieriger
und nicht einfacher. Weil mehr Server ueber Zertifikate verfuegen,
haben Angreifer eine groessere Auswahl fuer das Umleiten des
leichtsinnigen Surfers. Ausserdem schalten viele Anwender den
Zertifikatsdialog ab, weil der man jedesmal von dem Browser gewarnt
wird, wenn man eine neue Website ansteuert. Darueber hinaus ist es
nicht besonders hilfreich, ein gesichertes Dokument anzufordern, wenn
man weiss, dass jede Verbindung und jedes Dokument gesichert sind. Mit
anderen Worten: Das Verifizieren der Serververbindung wird
ausschliesslich bedeutungslos.

Abgesehen von der umfangreichen Authentikation gibt es keine
Ueberwachungsaufzeichnung, mit der der Anwender nachvollziehen
koennte, was beim Hyperlink-Spoofing geschehen ist. Im guenstigsten
Fall zeigt das Logbuch des Browsers das es einen HTTP-(oder
HTTPS-)GET-Befehl an den echten und einen anderen an den gefaelschten
Server gab. Mit etwas Glueck koennte sich im lokalen Cache noch die
veraenderte Seite finden lassen. Tatsaechlich kann der Angreifer die
Seite aber sehr leicht mit dem PRAGMA-Befehl aus dem Cache entfernen.
Waehrend eines Spoofing-Angriffs tritt die zweite GET-Anforderung auf,
weil die erste einen inkorrekten, verfaelschten Inhalt hatte. Leider
ist es auch mit dem besten aller Logbuecher nicht moeglich, das
Initiieren des zweiten GET-Befehls durch die zweite Seite zu
verifizieren. Der zweite GET-Befehl koennte durch einen Bookmark oder
mit einem anderen Fenster verursacht worden sein. Sogar wenn man
vollig ist, das man keine Bookmarks verwendet, koennte das Falsifikat
immer noch von einem Cache (auch von einem Nachbarcache des ISP)
stammen. Man kann zwar vermuten, dass die Website von einem Angreifer
ist, belegen kann man es aber nicht (obwohl man moeglicherweise die
Schritte wiederholen koennte, die einen zur Spoofing-Site brachte, und
dann den Angreifer in flagranti zu ertappen).

Es liegt nicht im Interesse des Angreifers, einen zu seiner
gesicherten Seite zu locken (weil man damit das Zertifikat des
Angreifers ermitteln wuerde und somit ein grosser Schritt zur
Ermittlung seiner Identitaet gemacht waere). Der Angreifer schickt
einen zur SSL-Box von jemand ganz anderen, vielleicht sogar zu einer
Site, zu der man wirklich will. Mit anderen Worten wuerde die URL
/attackseite anstelle von /sichereseite lauten. Diese Art der
"verbogenen" Adressierung erfolgt hauptsaechlich bei virtuell
aufgebauten Websites oder Websites, bei denen die URL ein CGi-Script
oder eine Java-Klasse angibt, die von einem Angreifer legitimierte
kontrolliert wird. (Um fair zu bleiben: SSL wurde nicht konzipiert, um
diese Ebene der Sicherheitsfragen auch noch abzudecken. Es ist nur
dazu gedacht Websites zu authentizieren).


4.) Massnahmen gegen das Hyperlink-Spoofing

Falls man bereits Web-gestuetzte Applikationen einstetzt, die sich auf
die Server-Authentikation verlassen, und man kann nicht auf ein Update
des Internet-Software-Providers warten, besteht die einzige derzeit
machbare Loesung darin, den Anwender auf einer wirklich gesicherten
Seite starten zu lassen. Die Anwender koennen dann den Empfangslinks
vertrauen und der Angreifer ist nicht mehr in der Lage, einen in
gefaehrliche Bereiche zu schicken.

Eine gesicherte Seite ist eine Seite, auf deren Integritaet man sich
verlassen kann. In der Praxis bedeutet dies, dass man eine lokale
HTML-Seite oder eine gesicherte Seite auf einem SSL-Server verwendet.

Falls man den Brwoser eines Anwenders dafuer vorsehen, eine SSL-Seite
zu oeffnen, muss man die URL fuer die Seite auf einen Weg versenden,
der schwierig, am besten so gut wie gar nicht, zu unterbrechen ist (z.
B. auf einer Diskette oder einem Brief per Post ;). Andernfalls stellt
die Seite einen Ansatzpunkt fuer den Angriff dar, den man verhindern
wollte. Alle Links, die aus dieser Seite herausfuehren, muessen den
Anwender zu vertrauenswuerdigen Sites weiterleiten. Ausserdem sollte
es sich bei allen um SSL-Links handeln. Man legt fest, welche Sites
man als vertrauenswuerdig einstuft. Dazu orientiert man sich am besten
an den folgenden zwei Kriterien:

1. Die Site wird gesichert betrieben (das bedeutet, die gesamte Site
ist gegen Angriffe und das Abfangen von Seiten gesichert).

2. Die Site bedient nur Hyperlinks zu gesichert betriebenen Sites.

Das erste Kriterium trifft fuer die meissten Sites nicht zu. Deshalb
ist der gesicherte Zugriff auf Seiten nur fuer Intranet-Applikationen
moeglich, die sich hinter einer Firewall befinden, oder fuer
Applikationen, bei denen die Anwender nur auf die firmierten
betriebenen Sites zugreifen und deshalb den Zugriff auf das Internet
nicht benoetigen.

Alternativ kann man ein relativ unverwechselbares Objekt auf einer
Website unterbringen. Beispiele sind die Zertifikate Verisign Java und
Microsoft Athenticode. Weil Verisign die Zertifikate und die
zugehoerigen Applets aus einem numerischen Hash der Website erzeugt,
ist es fuer Angreifer sehr schwer, das Zertifikat zu simulieren.

Die dritte Moeglichkeit leasst sich recht schnell realisieren. Die
meisten Webbrowser bieten Sicherheitsoptionen an. Eine dieser Optionen
ermoeglicht es, Site-basierte Zertifikate einzusehen. Man sollte sich
einfach mal die Optionen die einem der Browser bietet, sie sind
zahlreich, sehr genau anschauen, damit eine grosse Sicherheit
gewaehrleistet wird.

Die vierte Moeglichkeit einer Abhilfe waere die Verwendung von
gesicherten Bookmarks. Sicherheitsbeauftragte testen und verifizieren
jedes gesicherte Bookmark, bevor es in die entsprechende Datei des
Browsers aufgenommen wird. Zusaetzlich sollte jedes Bookmark nur
manuell weitergegeben werden, z. B. auf einer Diskette. Die
gesicherten Bookmarks koennen besonders gekennzeichnet werden, damit
jedem Anwender klar wird, womit er es zu tun hat. Hier muesste durch
ein Plug-In fuer den Browser eine Grundlage geschaffen werden, die das
Vewenden gesicherter Bookmarks erzwingt. Ein gesichertes Lesezeichen
koennte aus einem Hyperlink-Text, von Bildern oder von URL´s
abgeleitet werden. Ein entsprechender Eintrag koennte so aussehen:

"*KryptoKom*:**.kryptokom.de*"

"Sieht" der Browser einen Link mit dem Text "KryptoKom", dann prueft
er, ob es in der Domaene kryptokom.de ein Server-Zertifikat gibt. Er
stellt damit gleichzeitig sicher, dass die Verbindung wirklich zu
Kryptokom.de aufgebaut wird. Bei der Verbindung mit einer anderen Site
wuerde der Browser den Anwender davor warnen, dass die mit ihm
verbundene Domaene identisch mit der von ihm erwarteten ist. Optional
koennte die Verwendung entsprechender Lesezeichen erzwungen werden, so
dass Anwender nur mit den Sites Verbindungen herstellen koennen, bei
denen die Namen der Domaenen uebereinstimmen. Diese Loesung sorgt
dafuer, dass die Anwender die Sicherheitsmassnahmen fuer ihre Browser
konfigurieren, um auf die "lokalen" hochwertigen Dienste zuzugreifen,
und verhindern, dass weniger trainierten Anwender zufaellig
ungeschuetzte Informationen verschicken.

Grundsaetzlich behebt die Lesezeichenloesung die Luecke zwischen dem
Link-Text und dem URL-Domaenennamen. Jeder der zuvor besprochenen
Loesungsansaetze versucht, das Mapping zu ersetzen oder dem Anwender
zu versichern, dass das Mapping korrekt ist. Dies ist aber nicht der
einzige Weg, gesichertes Mapping fuer Web-Adressen bereitzustellen.
Man koennte z. B. auch einen gesicherten Internet-Verzeichnisdienst
oberhalb der zertifizierten Website-Protokolle anlegen. Leider wuerde
dies aber auch bedeuten, eine kuenstliche Ebene des Weiterleitens
zwischem dem Link, der Identitaet der Site und der Site selbst (dem
privatem Schluessel) herzustellen, damit wuerden nicht nur einige der
anderen Loesungssaetze in Frage gestellt, sondern es waere auch
schwieriger, die Sicherheit der Links zu garantieren. Keiner der
diskutierten Loesungsansaetze kann verhindern, dass eine Verbindung zu
beliebigen Diensten im Netz hergestellt wird. Ausserdem hilft keine
der gezeigten Loesungen gegen Adressverbiegungen innerhalb einer Site.

5.) Die laengerfristige Loesung gegen das Hyperlink-Spoofing

Das Hyperlink-Spoofing stellt ein hohes Risiko fuer die
Datensicherheit dar, wenn sich Anwender im Internet bewegen. Das
grundlegende Problem mit dem Hyperlink-Spoofing besteht darin, dass
die von SSL bereitgestellten Zertifikate falsche Informationen
enthalten, den Namen des DNS-Servers. Der DNS-Name ist mehr ein
technisches Detail als die URL, die selbst wiederum mehr ein
technisches Detail ist, als der Hyperlink, auf den der Anwender
klickt. Mit der zunehmenden Zahl technisch untrainierter Anwender im
Internet sollte weniger technische Inhalte von den Zertifikaten
angezeigt werden.

Die meissten Anwender greifen auf das Internet mit Hilfe von URLs und
nicht von DNS zu und gehen davon aus, dass hinter einer URL schon der
erwartete Partner zu finden ist.

Der durchschnittliche User versteht die Bedeutung der DNS nicht,
weshalb die Authentikation von DNS-Namen wenig oder gar keinen Sinn
hat. Viele Anwender kennen ueber die in Print-Medien oder im TV
veroeffentlichten URLs wie www.firma.de hinaus keine weitergehenden
URL-Konstrukte. Darueber hinaus sind die aktuellen Weiterentwicklungen
wie "freundliche URLs" im Internet Explorer bei denen auf die gesamte
Site mit minimalen Aenderungen in der Anzeige der URL zugegriffen
wird, ein weiterer Schritt in den Unterschied zwischen dem, was der
Anwender angezeigt bekommt und dem Server-Zertifikat.

Das von den Internet-Verantwortlichen zu loesende Problem ist, was ein
Zertifikat zertifizieren soll. Dies ist einerseits von der Applikation
abhaengig. Bei einigen Applikationen (z. B. Befehlszeilen-FTP) ist der
DNS-Name gut fuer das Anzeigen des Zertifikats geeignet, wie er vom
Anwender ohnehin eingetippt wurde. Beim Betrieb eines Browsers sollte
das Zertifikat jedoch das Hyperlink-Bild, den Text oder eine andere
Besonderheit der Website enthalten, die dem Browser durch die
zertifizierte Seite uebermittelt wird, moeglicherweise ueber den Tag .
Das Zertifikat koennte die folgenden Informationen enthalten:

- repraesentative Bilder (Firme- und Produktlogos, Gesichter von
Leuten)
- englische (die haeufigste Serversprache) oder national-sprachliche
Redewendundgen, die sich gut als Links einsetzen lassen. Dabei waere
zu beruecksichtigen, ob der Aufbau durch die das Zertifikat
ausstellende Autoritaet oder durch die Applikation bestimmt wird.

Obwohl URLs im wesentlichen fuer das Web zugreifende Applikationen
sehr nuetzlich sind, wuerden sie innerhalb von Zertifikaten
Platzhalter oder Ausdruecke enthalten. Man sollte beachten, dass
dieser URL-Typ meist Intranet-Applikationen oder Daten repraesentiert
und deshalb wahrscheinlich eher durch eine
Intranet-Zertifikationsautoritaet als durch Internet-Dienste wie
Verisign zertifiziert wird.

Enthaelt das Zertifikat ein Bild, kann es vom Browser in ein
Dialogfenster plaziert und angezeigt werden. Es koennte auch im
Bild-Fenster anstelle der Logos von Netscape oder des Internet
Explorers angezeigt werden. Dies wuerde dem Anwender permanent zeigen,
mit wem er verbunden ist. Selbst technisch weniger Trainierte kennten
feststellen, dass man nicht mit der Seite verbunden ist, mit der man
verbunden sein wollte.

Ausserdem koennte der Browser mit wenigen Aenderungen Zertifikate
automatsich pruefen. Folgt der Anwender einem Link mit einem Bild,
koennte der Browser das enthaltene Zertifikat pruefen. Erscheint das
Bild nicht, erhaelt der Anwender eine Warnung. Folgt der Anwender
einem Textlink, untersucht der Browser die Funktion des Texts. So
koennte der Browser z. B. das Zertifikat fuer einen Zeichenkettenteil
des Text-Links oder eine bekannte Hash-Funktion des Links pruefen. Das
Verifizieren des Bildes oder des Textlinks wuerde dem Anwender die
gesicherte Erkenntnis liefern, dass der Link in einer
Ende-zu-Ende-Relalion einwandfrei ist und kein Spoofing zulaesst.

ah@primepage.de | http://xaitax.de | PGP: http://xaitax.de/xaitax.asc

[EOF]

xaitax (alexander hagenah