Wie Personal Firewalls ausgetrickst werden können

URL: http://home.arcor.de/nhb/pf-umgehen.txt
URL: http://home.arcor.de/nhb/pf-austricksen.html
Last-modified: 2003-04-20

Vorüberlegung

Auch wenn viele Hersteller und etliche Zeitschriften Personal Firewalls als Rundumschutz gegen Hacker und Trojaner verkaufen, sollten wir uns mal ein paar Aspekte im Detail anschauen.

Am besten fangen wir mit der Frage an, wovor dich eine Personal-Firewall eigentlich genau schützen soll?

Im Wesentlichen werden zwei Ziele angestrebt:

Einige PF enthalten noch einen http-Proxy zur Filterung von Werbebannern oder Cookies.

Auch wenn dieser Text (mit den konkreten Beispielen) langsam in die Jahre kommt, sind die prinzipiellen Probleme immer noch aktuell.

Datentransfer von innen nach außen

Einige Beispiele aus dem realen Leben:

1) "Gibt es hier irgendwo hohle Pferde?"

Das Werbebanner-Einblendungsprogramm der Firma Aureate wird vom Setup-Programm der Wirtsanwendung kurzerhand als Netscape Navigator bzw. Internet Explorer Plugin installiert. Als Plugin kommuniziert es nicht direkt mit dem Internet, sondern nutzt die Plugin-Schnittstelle des Browser dafür.

Dadurch umgeht es auf einfache Weise die Probleme, die sonst bei einem Internetzugang über ein Netzwerk auftreten würden. Aureate ist nicht nur um einiges älter als ZoneAlarm, sondern wird von sehr vielen Freeware/Shareware-Programmen wie zum Beispiel von GoZilla und WebCopier verwendet.

Anscheinend greifen neuere Versionen des Werbeflächen-Tools über die Wirtsanwendung auf das Internet zu, sofern es sich bei diesen Programmen um "Internet-Software" handelt. Suchstichwörter: advert.dll, Radiate

2) Ohne viel Aufwand

Ich habe bei einem Bekannten vor einiger Zeit im Temp-Verzeichnis eine HTML-Datei gefunden, die ein paar Bilder aus dem Internet lädt. Die Bild-URLs waren dabei ganz besonders aufgebaut: Einige bestanden unter anderem aus den Dateinamen, die man unter {Start | Dokumente} findet.

Der Realplayer kommuniziert übrigens auf diese Weise unter Umgehung der Firewall mit dem Internet:

C:\WINDOWS\TEMP\RN7080.htm

<HEAD>
  <META HTTP-EQUIV="refresh";
    CONTENT="0;URL=http://presets6.real.com/sitesmenu/rphurl.html?
      xx00xx00x0X0xxx00xXxxxx0x0xxxxxxxXxxxxxxxxx0xxxxxx0xx0xxxx
      xxXxxxx0x00xx0x0xx00xxx0xxxxx0X0X0x0X0xxx0X0xxx0X0000xx0xx
      x0X0xxx0X0xxx0X0X0x0X0Xxx00xxxxxXxxx0xx0x0xxx0xx0x00xxxxX0
      0xxXx0xXxxxx0xxXx0X0X0x0x00x00x0Xxxx
">
</HEAD>

0, X, x repräsentieren Zahlen, Großbuchstaben und Kleinbuchstaben

Besonders heimtückisch ist hierbei, dass ZA vorher die "normale" Kommunikation (Update-Suche?) erkannt und unterbunden hat.

3) Namen sind Schall und Rauch

... und dann fragte die Firewall:

Do you want Microsoft Internet Explorer to access the internet?
Do you want Netscape Navigator to access the internet?
Do you want Microsoft Windows 95 to access the internet?
Do you want DFÜ-Netzwerk to access the internet?
Do you want Zone Alarm to access the internet?

Vernünftig programmierte Spyware wird sich selbst ja kaum als "The ultimative hacking tool" in Windows anmelden.

Wenn man bei der Erzeugung einer .exe-Datei in die Versions-Informationen als Company "Microsoft Corporation" schreibt, stuft die Norton Personal Firewall alle Verbindungsversuche dieses Programms als "Low Risk" ein ("Trusted Company").

4) Domainnamen mit privaten Informationen

Einige Personal Firewalls wie zum Beispiel NPF lassen DNS-Anfragen zur Namensauflösung in IP-Adressen ohne Rückfrage zu. Eine DNS- Anfrage läuft technisch idR. so ab, dass der gesamte Domain-Name zum Beispiel www.arcor.de an den DNS-Server des Zugangsproviders übermittelt wird. Dieser zerlegt den Namen von hinten nach vorne in seine Bestandteile und fragt sich ausgehend von den Root-Servern solange durch, bis er den zuständigen Server gefunden hat.

Wenn man selbst einen DNS-Server für eine Sub-Domain betreibt, bekommt man also alle Anfragen, die auf dieser Subdomain enden: kuendigung-maier.doc.recent-documents.customer-102321.example.com

5) Ab durch die Mitte

Protokoll-Tunnel (Verallgemeinerung von 1.): zum Beispiel IP over E-Mail oder http. Für einen http-Proxy [1] sieht das wie eine ganz normale Web-Seiten-Anforderung aus. Theoretisch kann man jedes Protokoll über jedes andere tunneln, solange man Einfluss auf eine entsprechende Gegenstelle hat. Bei DNS-Abfragen zum Beispiel geht das auch über "viele Ecken".

[1] Proxys verstehen im Gegensatz zu Packetfiltern das jeweilige Protokoll und sind trotzdem gegen Tunnel (fast) machtlos, da sich diese auf Protokollebene korrekt verhalten und lediglich unerwünschte Inhalte transportieren.

6) Manipulation von Webinhalten

Wenn von der Manipulation von Webseiten die Rede ist, bezieht sich das häufig auf Namesverwechselungen, gekaperte Webserver, falsche DNS-Einträge und evtl. übernommene Router. Es gibt aber noch einen ganz anderen Ort, an dem die Webseiten manipuliert werden können: Der lokale Client. Eines dieser Programme ist Gator. Es analysiert die Surf-Gewohnheiten des Users und erzeugt entsprechende Werbeeinblendungen auf fremden Webseiten. Außerdem wertet es die Eingaben in Suchmaschinen aus und platziert auf den Ergebnisseiten zusätzliche Werbelinks.

Wenn man einen Schritt weiter denkt, landet man bei der lokalen Manipulation von Online-Banking-Sessions trotzt verschlüsselter Kommunikation über das Netz. Die PF sieht dabei nur den Browser, der mit einem Webserver regelkonform kommuniziert.

7) An der PF vorbei

Jedes Programm hat unter Windows 9x die Zugriffsrechte auf der selben Ebene wie die PF mit dem Netzwerk zu kommunizieren (also nebenher). Unter Windows NT (2000, XP) gilt das Gleiche, wenn man sich als "Administrator" angemeldet hat; z.B. um Software im guten Glauben zu installieren.

Die Würmer Happy99 und Hybris kommen dem recht nah, in dem sie die WSock32.dll ersetzen. Mittlerweile gibt es auch einen Proof-Of-Concept: http://www.securityfocus.com/archive/1/244026 (Englisch)

8) Angriffe auf die PF selbst

Seit einiger Zeit gibt es die ersten bösen Programme, die Desktop-Firewalls einfach beenden:
http://www.rz.tu-ilmenau.de/~traenk/zaweg.htm
http://de.geocities.com/pseueq/y3k.htm

Außerdem kann man viele Desktop-Firewalls durch ähnlich aussehende Programme ersetzen, indem man im simpelsten Fall den Treiber-Aufruf in der Registry löscht und den Aufruf des User-Frontends mit dem Dateinamen eines entsprechend präparierten Programmes überschreibt.

Fast schon ein alter Hut ist dagegen das automatische Einfügen von neuen Regeln, da bei den meisten PFs normale Benutzerrechte dafür völlig ausreichen:

http://www.heise.de/newsticker/data/pab-18.05.01-001
http://www.heise.de/newsticker/data/pab-01.10.02-000
http://my-forum.netfirms.com/zone/zcode.htm (bestätigt "Yes-Button")

9) Und was dann noch übrig bleibt

Und zum Schluss sind da noch die bösen Programme, die überhaupt nicht mit dem Internet kommunizieren. z.B.: Ein Trojanisches Pferd, das angeblich ein Virenscanner ist (und auch wirklich andere Viren findet) allerdings zusätzlich Zifferndreher in Excel-Tabellen verursacht. Oder das böse Programm ersetzt die Telefonnummer, die an das Modem bzw. die ISDN-Karte gesendet wird, durch eine 0190-Nummer. Und hin und wieder kommt es auch in der heutigen Zeit noch vor, dass Datentransfer auf dem klassischen Wege über Wechseldatenträger (Diskette, CDs/DVDs, USB-Sticks) erfolgt.

Zugriffsmöglichkeiten von außen

Von außen gibt es grob gesagt drei Möglichkeiten, Zugriff auf dein System zu erlangen:

1) Fehlkonfigurationen

Eine Fehlkonfiguration, bei der zum Beispiel die Datei- und Druckerfreigabe nicht nur an die lokale Netzwerkkarte, sondern auch an das Internet-Interface gebunden ist. (Bei diesem Beispiel sind Personal-Firewalls recht erfolgreich). Der Aufwand einer vernünftigen Konfiguration lohnt sich trotzdem: Eine Übersicht über Konfigurationsanleitungen für die gängigen Betriebssysteme befindet sich in der dcsm-FAQ: http://www.stud.tu-ilmenau.de/~traenk/dcsm.htm#Konfiguration.

Viele Fehlkonfigurationen spielen sich auch auf Anwendungsebene ab; zum Beispiel im Browser oder Mailprogramm. Leider sind solche Geschichten (z.B. automatisches Starten von Programmen) häufig die Standard-Einstellung, die man erst mehr oder weniger mühsam ändern muss.

Hier sieht es mit dem Schutz durch PFs sehr schlecht aus, da die PF nicht mitbekommt, wenn ein Programm ungewollt Daten verändert oder löscht. Und wenn das Mailprogramm plötzlich Mails senden will, dann wird die PF es nicht davon abhalten.

2) Bugs

Die zweite große Möglichkeit besteht in der Ausnutzung von Bugs. Ein häufiges Angriffsszenario entsteht, wenn ein Programm die Länge eines Speicherbereiches beim Kopieren/Einlesen nicht prüft und über das Ende seines Puffers hinausschreibt.

Wenn in einer der dahinterliegenden Speicherzellen ein Verweis auf eine Speicheradresse mit Programmcode liegt (Rücksprungadresse bei Funktionen), dann kann diese überschrieben werden. Im simpelsten Fall steht dann dort Müll und es gibt einen "Fehler in Anwendungsprogramm". Mit etwas Mühe ist es in dieser Situation häufig möglich, in die eigenen Daten zu springen, die in Wirklichkeit Programm-Anweisungen in Maschinensprache sind.

Technische Hintergrundinformationen dazu: "Smashing The Stack For Fun And Profit" (Englisch)
oder ein deutscher Text: http://www.heise.de/ct/01/23/216/

Eine Personal Firewall könnte theoretisch solche "zu langen" Daten erkennen und abfangen. Das geht allerdings nur, wenn sie weiß, wonach sie suchen muss. Bevor die Personal Firewall-Hersteller ihre Programme angepasst haben, hat MS (bzw. die Hersteller des fehlerhaften Programms) idR. ihre Sicherheitspatches schon längst veröffentlicht.

Da solche Fehler auch immer mal wieder in Personal Firewalls gefunden werden, kann der vermeintliche Schutz das Loch auch erst aufreißen: http://cert.uni-stuttgart.de/ticker/article.php?mid=888

3) "böse Programme"

Zu guter Letzt könntest du noch eine Fernwartungssoftware oder ein anderes böses Programm gestartet haben; wahrscheinlich im Glauben ein nützliches Programm zu installieren. Allerdings machte es neben den bunten Effekten auf der Webseite (ActiveX) im Hintergrund noch andere Sachen. Oder die Mail von deinem Bekannten ist in Wirklichkeit von dem Wurm verschickt worden, den er im gleichen Irrglauben gestartet hat.

Dagegen sind PF ebenfalls machtlos: Es befindet sich in diesem Fall bereits ein Programm auf deinem Rechner, das die PF so verändern kann, dass sie Verbindungsaufbauten von außen ohne Rückfrage annehmen. Oder noch leichter: Es baut selbst eine Verbindung nach außen auf und holt sich seine Befehle ab. (Damit fällt es in den ersten Abschnitt.)

Weiterführende Informationen

http://www.linkblock.de bietet gibt eine gute Übersicht.

de.comp.security.firewall FAQ von Lutz Donnerhacke: http://www.iks-jena.de/mitarb/lutz/usenet/Firewall.html

Die "Zonealarm-FAQ" von Utz Pflock enthält einige Informationen darüber, wie man als Privatanwender einen Kompromiss zwischen Funktionalität und angestrebter Sicherheit erreichen kann. http://www.pflock.de/computer/za_faq.htm

Situationen, die einige PFs als "Angriff" fehlinterpretieren (engl.): http://www.dslreports.com/forum/remark,2169468~root=security,1~mode=flat

http://www.rz.tu-ilmenau.de/~traenk/dcsm.htm
http://www.team-cauchy.de/personal/
http://www.bauercomputer.de/Technik/spyware.htm
http://www.fefe.de/pffaq/halbesicherheit.txt
http://www.samspade.org/d/persfire.html (Englisch)

Schlussüberlegung

Desktop-Firewalls können für den Fall als Sicherheitsnetz dienen, dass man die "Datei- und Druckerfreigabe" falsch konfiguriert hat oder sich in der Vertrauens-Einschätzung eines sehr schlampig programmierten bösen Programmes vertan hat.

Dieses Netz ist allerdings sehr weitmaschig, so dass man sich darauf nicht verlassen kann. Daraus ergibt sich eine nicht zu unterschätzende neue Gefahr: Viele Leute werden mit dem Wissen, eine PF und einen Virenscanner zu haben, ausnahmsweise ein einziges Mal ein nicht vertrauenswürdiges Programm starten, ...

Zu guter Letzt handelt es sich bei Personal-Firewalls (von ipchains/iptables mal abgesehen) meist um closed-source Produkte, bei denen sich wieder die Vertrauensfrage stellt. Die einer PF zur Verfügung stehenden Daten sind marketingtechnisch sicherlich nicht uninteressant.