dimis linkdump

Posts tagged ‘firefox’

Nach einem aktuellen Blogartikel  – Staatliche SSL MITM Angriffe – erscheint die heutige Meldung bei Heise “Verwaistes Root-Zertifikat sorgt für Verwirrung” gleich in einem ganz anderen Licht. CIA? FBI oder Homeland? Für wen wurde dieses Zertifikat wohl ausgestellt? ;)

Kurz zum Löschvorgang:

Extras => Einstellungen => Erweitert => Zertifikate anzeigen => “RSA Security Inc” expandieren und “RSA Security 1024 v3″  löschen.

Eine interessante Idee hatten die Security-Spezialisten von ha.ckers.org. In ihrem aktuellen Blogartikel schreiben sie über eine Möglichkeit wie man z.B das interne Netz eines Surfers über den Browser auf die existenz aktiver Hosts überprüfen könnte.
Hierzu wird natürlich kein echtes ICMP-Packet durch den Browser generiert, sondern ein so genannter Cross-Origin Request an jeden einzelnen Host abgesetzt. Mit dieser Methode will das W3C den Authoren von Webapplicationen eine sichere Möglichkeit bieten, die so geannte Same Origin Policy zu umgehen.

Wie funktioniert das “ping” sweeping?

Diese Methode bediehnt sich eines einfachen Gedankens: Eine IP hinter der ein Host steckt, kann schneller reagieren als eine IP hinter der kein Host steckt. (Wie denn auch, wer soll da reagieren?)

Das W3C verbietet im Entwurf zu Cross Origin Request ganz deutlich, dass keine Informationen an den User ausgegeben werden dürfen, wenn das status flag nicht auf success steht.

Hosting specifications also need to ensure not to reveal anything until the status flag is set to success to prevent e.g. port scanning.

Indirekt tut es der Browser halt trotzdem:

Hier wichtigste Teil des Javascripts:

1:  function processRequest () {
2:    if (req.readyState == 4) {
3:    var d2 = new Date;
4:    var time = d2.getTime() – d.getTime();
5:         if (time < 18000) {
6:             if (time > 10) {
7:                 log (“Exists: ” + url + ” at ” + time + “ms.”);
8:             }
9:         } else {
10:           log (“Doesn’t exist: ” + url + ” at ” + time + “ms.”);
11:       }
12:  }
13: }

Im vorderen Teil des Skripts (hier nicht abgebildet) wird das neue XMLHTTPRequest-Objekt ( req ) sowie die Startzeit des Skripts ( d ) erzeugt.

Wenn der Request beendet ist (Zeile 2) vergleicht das Skript die Anfangs- und Endzeit (d und d2). Wenn die Hosts innerhalb von 10 – 18000 Millisekunden geantwortet haben, dann werden sie als Online deaklatiert.

Diese unterschiedlichen Zeiten entstehen dadurch, dass jeder aktive Host, egal ob er auf Port 80 erreichbar ist oder nicht, dem Browser schneller eine Reaktion auf die Anfrage liefern kann als ein Host der nicht im Netzwerk vorhanden ist. Wenn ein Host nicht im Netzwerk erreichbar ist, läuft der Browser einfach in einen Timeout. Der dauert natürlich deutlich länger…

Es gibt 3 Möglichkeiten, wie ein aktiver Host auf eine Anfrage durch den Browser reagieren kann:

  • Er schickt ein RST/FIN-Paket, weil auf diesem Port kein Dienst lauscht.
  • Er lässt eine Verbindung zu, weil ein HTTP-Server auf dem Port lauscht.
  • Er verwirft das Paket einfach.

Punkt 1 und 3 sind für das Skript ok und geben den Host als aktiv aus. Punkt 3 verfälscht das Ergebnis allerdings enorm. Dieser Fall entsteht durch eine aktive Firewall , die die Pakete einfach verwirft statt diese mit RST zu beantworten. Die Windows-Firewall (ab SP2 XP) ist z.B. so eingestellt. Genauso kann natürlich auch eine iptables-Firewall unter Linux eingestellt sein…

Link zum Test:

http://ha.ckers.org/weird/xhr-ping-sweep.html

Wer selbst ein wenig rumprobieren will, kann sich die Seite einfach abspeichern und im Quelltext das Array “sites”, entsprechend seiner IP-Range im lokalen Netzwerk, anpassen.

Definition Clickjacking:

Clickjacking ist eine Technik, bei der ein Computerhacker den Nutzer einer Internetseite dazu veranlasst scheinbar harmlose Mausklicks und/oder Tastatureingaben durchzuführen. Die entsprechende Internetseite wurde dabei allerdings vorher so manipuliert, dass ein unsichtbares oder nur sehr kurz sichtbares Fenster über der Stelle liegt, an der der Nutzer seine Eingaben tätigt.

wikipedia.de

Und nun ein berühmtes Video zum Thema Clickjacking (funktioniert inzwischen nicht mehr – Adobe hat reagiert):

Es gibt wahrscheinlich hunderte Arten von Clickjacking. Bei dem Video oben wird einem User ein Spiel vorgegaukelt. In Wahrheit schaltet er den Zugriff auf seine Webcam über Flash frei.

Eine andere Art hat ein User namens “MrDoug” demletzt veröffentlicht. Diese funktioniert nur im Firefox (und Chrome) und ist einfach und doch genial. Ich habe euch eine kleine Vorführung programmiert, basierend auf der Veröffentlichung von “MrDoug”:

http://it-blogger.net/files/clickjacking.htm

Man beachte dabei, dass Firefox hier einen echten Link erkennt und auch als Ziel “www.google.de” anzeigt. (links unten im Bild). Eigentlich ist der Link auch ein “echter” Link mit Ziel www.google.de. Allerdings weiß der Browser nicht, was nach dem Klick auf den Link passiert:

  1. Über Javascript wird, nach dem Klick auf den Link, die Position des Mauszeigers ermittelt. Genauer: Die Abstände des Mauszeigers nach oben und nach links.

    Clickjacking - Vorführung

    Clickjacking - Vorführung

  2. Nachach wird, auch über Javascript, ein div-Container genau an die vorher ermittelte Stelle des Mauszeigers plaziert. D.h. unter dem Mauszeiger liegt nun eine kleine Fläche (2 x 2 Pixel). Für diese kleine Fläche wurde vorher über Javascript definiert, dass sobald der Mauszeiger diese Fläche berührt, eine andere Webseite geladen wird. (Im Beispiel www.it-blogger.net).  (Ich habe die Fläche schwarz eingefärbt – d.h. sie ist am Anfang links oben sichtbar und nach den Klick, findet Ihr sie direkt unter eurem Mauszeiger. Ihr müsst genau hinschauen ;) )
  3. Da sich ja nun die kleine Fläche direkt unter unserem Mauszeiger befindet, bedeutet das für den Browser, dass www.it-blogger.net geladen werden soll. Genau das macht der Browser dann auch. Er läd www.it-blogger.net statt www.google.de – obwohl www.google.de als Linkziel angezeigt war.

Statt www.it-blogger.net könnte man natürlich auch jede Seite mit Ref-Links oder sonst irgendwas laden – die User würden das erst nach dem Klick merken.

Das Ganze funktioniert momentan im Firefox und Chrome. Opera und der IE laden brav die richtige Seite…

RSS-Feed Creative Commons License