Personal Firewalls

About

Beim Chaos Seminar des Chaos Computer Club Ulm zeigten Alexander Bernauer und Ansgar Wiechers vom Chaostreff Bad Waldsee / CCC Ulm und Jonathan Häberle vom CCC Ulm letzten Montag eine kritische Sicht auf "Personal Firewalls". (Seite des CCC Ulm: Folien, Aufzeichnung, weiterführende Links)

Alexander Bernauer zeigte u.a. eine Remote Shell (oft fälschlicherweise als "Trojaner" bezeichnet), mit der sich ein Computer trotz installierter "Personal Firewall" von einem bösartigen Angreifer fern steuern lässt. Diese wwwsh (www-shell) genannte Hintertür funktioniert nach einem Prinzip, das Volker Birk in der Usenetgruppe de.comp.security.misc vorgestellten Prinzip (siehe www.dingens.org/breakout.c).

Kern des Angriffs ist, dass die wwwsh der "Personal Firewall" Benutzeraktivtät vorgaukelt und somit alles tun kann, was ein Benutzer auch tun kann. Das geschieht unter Ausnutzung der Funktionsweise des Windows-Fenstersystems. So wird in diesem Beispiel der Internet Explorer gestartet und eine Seite aufgerufen, wodurch in die URL kodierte Informationen sowohl aus dem System heraus als auch in das System herein geschleust werden können.

Das System auf dem Test-PC war mit allen aktuellen Sicherheitsupdates versorgt und wie von Microsoft empfohlen konfiguriert. So hatte z.B. der angemeldete Benutzer keine privilegierten Rechte. Dennoch war keine der getesteten "Personal Firewalls" in der Lage, diesen Angriff zu verhindern. Getestet wurden u.a. Symantec Norton, Tiny, Kerio, Outpost und Zone Alarm.

Des weiteren wurde eine Möglichkeit vorgestellt, wie jedes beliebige Programm trotz "Personal Firewall" ins Internet verbinden und somit persönliche Daten heraus schleußen kann. Auch dieser Angriff funktionierte bei allen getesteten "Personal Firewalls".

Wenn auf einem PC die (von den meisten Nutzern unbekannten und auch unerwünschten) Dienste abgeschaltet sind, bietet keine der getesteten "Personal Firewalls" einen zusätzlichen Schutz. Wie man die Dienste abschalten kann beschreibt Torsten Mann auf www.ntsvcfg.de. Eine einfachere Möglichkeit bietet "Windows-Dienste abschalten" vom Chaostreff Bad Waldsee, siehe www.dingens.org

Es wurde nicht nur gezeigt, dass "Personal Firewalls" keinen zusätzlichen Schutz bieten, sondern auch dass sie neue Sicherheitslücken in einem System öffnen können So kann man z.B. einen PC, auf dem Symantec Norton läuft, durch einen gezielten Angriff vom Internet abklemmen. Ein aktuelles Beispiel für solche Sicherheitsprobleme durch "Personal Firewalls" ist ein Fehler im Live Update verschiedener Symantec Produkte. (siehe Heise Security) Dieser Fehler kann zur "Privilege Escalation" genutzt werden, was bedeutet, dass sich ein Angreifer dadurch privilegierte Rechte verschaffen kann.

Das Arbyten mit einer eingeschalteten "Personal Firewall" ist zwar nicht sicherer, dafür aber wesentlich behäbiger und rechenintensiver. Eine aktivierte Norton Personal Firewall 2005 verbrauchte im Test so viel Ressourcen, dass ein Download einer 100MB Datei auf dem Test-PC mehr als doppelt so lange brauchte wie bei deaktivierter "Personal Firewall".

Die gezeigten Schwächen von "Personal Firewalls" sind in der Fachwelt schon länger bekannt. Jetzt wurde die an die Hersteller von "Personal Firewalls" und an Microsoft gerichtete Kritik mit Programmen untermauert, die eindeutig belegen, dass die versprochene Sicherheit nicht vorhanden ist. Der Einsatz einer "Personal Firewall" ist meistens sinnlos und oft gefährlich im Vergleich zum Abschalten unerwünschter Dienste. Der CCC Ulm fordert, dass Endanwender nicht länger über die Schwächen von "Personal Firewalls" hinweg getäuscht werden. Der CCC Ulm fordert außerdem, dass Microsoft endlich ein Sicherheitssystem in sein Fenstermanagementsystem einbaut und sein Betriebssystem mit sicheren Voreinstellungen ausliefert. Insbesondere ist wichtig, dass nur die Dienste aktiviert sind, die auch tatsächlich benötigt werden. Mit Windows Server 2003 hat Microsoft bereits gezeigt, dass sie durchaus in der Lage wären, diesen Weg zu gehen.

wwwsh

wwwsh ist ein Programm, dass es einem Angreifer erlaubt, trotz installierter Personal Firewall beliebige Kommandos mit den Rechten des Benutzers auf einem PC auszuführen. Die Remote Shell verwendet einen Browser als Wirt zur Kommunikation mit dem Internet. Zum Starten und zur Fernsteuerung des Browsers wird dem System Benutzerinteraktion mittels Windows-Fensternachrichten vorgetäuscht. Der Kommunikationsendpunkt ist ein Webserver mit ein paar CGI Skripten.

wwwsh startet zu erst einen Browser. Als Beispielanwendung wurde der Internet Explorer ausgewählt, da er der Standardbrowser auf Windows-Systemen ist. Da manche Personal Firewalls das Starten von Prozessen mittels Bibliotheksfunktionen unterbinden, simuliert wwwsh folgende Benutzereingaben:

  • Drücken des Hotkeys <Win>-<R> zum Öffnen des "Ausführen"-Dialogs
  • Eingabe von "%PROGRAMFILES%\Internet Explorer\IEXPLORE.EXE"
  • Drücken der <Enter>-Taste

Diese Vorgehensweise wurde von Volker Birk in der Usenetgruppe de.comp.security.misc bereits vorgestellt.

Mit Hilfe der Windows-Systembibliotheken holt sich wwwsh eine Referenz auf die URL Zeile des Internet Explorers, so dass diese mittels Fensternachrichten manipuliert werden kann. Zum Ansurfen einer URL schreibt wwwsh die URL mittels der Fensternachricht WM_SETTEXT in die URL Zeile und sendet danach eine WM_KEYDOWN mit dem Parameter VK_RETURN, was dem Drücken der Entertaste entspricht. Als Antwort kommt vom Webserver immer eine HTML Seite mit einem Meta-Refresh, was bewirkt, dass der Browser automatisch eine andere URL ansurft. Diese URL erscheint in der URL Zeile, und kann von dort mit einer WM_GETTEXT Fensternachricht ausgelesen werden. Die Informationen sind für beide Kommunikationsrichtungen base64-kodiert in der URL enthalten. Durch diese Kodierung ist sichergestellt, dass keine unzulässigen Zeichen in der URL auftreten können.

wwwsh fragt regelmäßig beim Webserver nach, ob es ein Kommando zum Ausführen gibt. Dazu lässt das Programm den Browser das CGI Skript "/getCommand.cgi" ansurfen. Als Antwort kommt ein Meta-Refresh auf die URL "/Response/". Falls es ein Kommando zum Ausführen gibt, erscheint dieses base64 kodiert als einziger CGI Parameter. Die maximal erlaubte Länge einer URL beschränkt damit die maximale Länge des Kommandos, was aber für übliche Kommandos kein Problem darstellt. Beim Aufrufen der Response-URL wird vom Webserver eine Seite geschickt, die nur dazu dient, dass der Browser seine Antwort erhält und sonst keine weitere Bedeutung hat.

Das empfangene Kommando wird in einer Shell ausgeführt und das Ergebnis base64 kodiert. Zum Übermitteln der Antwort wird zuerst das CGI Skript "/sendResul.cgi" mit dem Parameter "begin" angesurft. Danach folgen beliebig viele Aufrufe des selben Skriptes mit dem Parameter "data" und anschließendem base64 kodiertem Datenteil. Die Länge der Antwort ist damit quasi unbeschränkt. Ist die Antwort komplett übertragen folgt ein letzter Aufruf des Skriptes mit dem Parameter "end". Bei jedem Aufruf sendet der Webserver einen Meta-Refresh auf die Response-URL. Das dient zur Synchronisation der beiden Seiten.

wwwsh ist lediglich eine Machbarkeitsstudie ("Proof of Concept"), daher wurde kein Wert darauf gelegt, das Browserfenster zu verstecken. Das kann bei Bedarf auf unterschiedliche Arten erreicht werden: Erstens könnte man das Fenster aus dem sichtbaren Bereich des Desktops verschieben. Dann bleibt allerdings der Eintrag in der Startleiste. Zweitens könnte man eine Applikation starten, die wie z.B. ein Spiel im Fullscreen Modus läuft, so dass der komplette Desktop nicht einzusehen ist, und danach erst den Browser starten. Drittens könnte man die Fensternachrichten, die zum Anzeigen des Browserfensters führen (WM_SHOWWINDOW), gezielt abfangen. Das ist ein weiteres Feature der Windows-Systembibliotheken.

Quellcode

wwwsh.tar.bz2

Autoklicker

Der Autoklicker ist ein "Proof of Concept" dafür, dass jedes Programm trotz Personal Firewall Daten ins Internet senden kann. Es werden Benutzerinteraktionen mittels dem Windows-Nachrichtensystem vorgetäuscht.

Gängige Personal Firewalls führen eine Liste mit Programmen, die Daten ins Internet senden dürfen. Versucht ein nicht registriertes Programm, Daten ins Internet zu senden, wird das von der Personal Firewall erkannt. Der Benutzer wird daraufhin gefragt, ob das Programm ins Internet darf, oder nicht. Das geschieht mittels eines Auswahlfensters.

Diese Vorgehensweise ist ein konzeptioneller Fehler, da jedes Programm beliebige Antworten des Benutzers vortäuschen kann. Autoklicker wartet so lange, bis das Fenster auftaucht und sendet ihm entsprechende Fensternachrichten, so dass jedes Programm ins Internet senden darf.

Quellcode

SelfDoS

Die Norton Personal Firewall enthält ein Intrution Detection System (IDS). Es scannt den Netzwerkverkehr nach bekannten Angriffsmustern. Falls ein Angriff erkannt wird, werden jeglicher Datenverkehr zwischen dem "geschützten" Rechner und dem Absender des Angriffs für eine gewisse Zeit unterbunden.

Bereits ein einzelnes UDP-Paket kann als Angriff interpretiert werden. Beispielsweise wird ein auf Port 666 eingehendes UDP-Paket als versuchte Kontaktaufnahme zu einem trojanischen Pferd interpretiert. Fälscht man die Absenderadresse UDP-Pakets kann man somit beliebige Teilnehmer des Internets sperren lassen. Lässt man den DNS Server sperren, ist der PC praktisch vom Internet abgeschnitten.

Quellcode

Für die Demo haben wir das Tool ipsorcery verwendet.