Leaktests zur Bewertung der Schutzqualität von Firewalls

Eine Firewall ist eine zusätzliche Sicherheitskomponente, die umso aktueller wird, je schneller immer neue Schadprogramme entwickelt werden. Der Einsatz einer Firewall ermöglicht die Blockierung von unerwünschtem Netztraffic – sowohl des eingehenden als auch des ausgehenden Traffics. Die Zuverlässigkeit der Kontrolle des ausgehenden Traffics und die Wirksamkeit des Schutzes vor Informationslecks können mit Hilfe von Leaktests, die Gegenstand der vorliegenden Analyse sind, überprüft werden..

Definition Firewall

Ein modernes komplexes Schutzsystem sollte dem User die Möglichkeit bieten, den Netztraffic zu kontrollieren, d.h. die Daten, die von auf dem Computer laufenden Anwendungen über das Netz empfangen oder gesendet werden. Die Komponente, die diese Kontrolle ermöglicht, heißt Firewall. Es gibt sowohl Software- als auch Hardware-Firewalls (http://de.wikipedia.org/wiki/Firewall). Der vorliegende Aufsatz beschäftigt sich ausschließlich mit Software-Firewalls.

Es gibt eine Vielzahl sowohl kommerzieller und als auch kostenloser Software-Firewalls. Eine Firewall, die am Gateway installiert ist (dem Server, der den Traffic zwischen den verschiedenen Netzwerken weiterleitet), heißt Server- oder Netzwerk-Firewall. Eine Firewall, die auf dem Computer des Anwenders installiert ist, nennt sich Personal Firewall, denn diese Firewall schützt ausschließlich den Computer des Users. In der letzten Zeit werden Personal Firewalls immer öfter in komplexe Schutzsysteme von PCs integriert. So ist beispielsweise auch in der Anwendung Kaspersky Internet Security 7.0 eine Firewall enthalten.


Abb. 1. Komponente „Firewall“ in KIS 7.0

Um ihre Hauptfunktion, die Kontrolle des Netztraffics, ausführen zu können, verwenden Firewalls Regellisten, auf Grund derer Netzaktivität für verschiedene Anwendungen zugelassen oder verboten wird. Jede Regel kann verschiedene Parameter beinhalten, wie etwa die Richtung der weiterzuleitenden Daten, das Datenübertragungsprotokoll (IP, TCP, UDP, ICMP und andere), IP-Adressen und Ports der lokalen und entfernten Computer, die am Datenaustausch beteiligt sind.

Bezieht sich die Kontrollregel der Netzaktivität auf alle Anwendungen im System, so spricht man von einer Paketregel.


Abb. 2. Beispiel für Regeln für die Anwendung Microsoft Outlook in KIS 7.0

Moderne Firewalls können in zwei Modi laufen: ohne Anwenderanfragen und mit Anfragen. Im Modus „ohne Anfragen“ bietet die Firewall folgende Optionen:

  1. jegliche Aktivität erlauben, die nicht durch die Regeln verboten ist;
  2. jegliche Aktivität verbieten, die nicht durch die Regeln erlaubt ist;
  3. jegliche Netzaktivität verbieten.

Als wichtigster Funktionsmodus wird der Modus mit Anwenderanfragen angesehen, der so genannte Lernmodus. Tritt Netzaktivität auf, die unter keine der vorher aufgestellten Regeln fällt, öffnet die Firewall in diesem Modus ein Dialogfenster, mittels dessen der Anwender die Aktion einmalig erlauben oder verbieten oder aber eine neue Regel für den entsprechenden Typ von Netzaktivität erstellen kann.


Abb. 3. Beispiel eines Dialogfensters im Lernmodus der Firewall in KIS 7.0

Auf dem Computer eines durchschnittlichen Anwenders befinden sich für gewöhnlich mehrere Dutzend Anwendungen, die alle unterschiedliche Netzaktivität verursachen. Die manuelle Erstellung einer Liste, die die Netzaktivität der einzelnen Programme beschreibt, ist daher äußerst arbeitsaufwändig. Aus diesem Grund liefern alle Firewall-Hersteller vorinstallierte Grundregeln für bekannte Netzanwendungen, wie z.B. Internet Explorer, Microsoft Outlook, Generic Host Process for Win32 Services (svchost.exe), Microsoft Application Error Reporting (dwwin.exe) und viele andere.


Abb. 4. Liste der vorinstallierten Regeln für Anwendungen der Firewall in KIS 7.0

Die Kontrolle der ausgehenden Daten und der Schutz vor Informationslecks auf einem Computer durch eine Firewall lässt sich folgendermaßen grafisch darstellen:


Abb. 5. Funktionsprinzip Firewall

Die Firewall errichtet eine „Mauer“ zwischen den Anwendungen auf dem Computer des Users und anderen Computern im lokalen Netzwerk und im Internet. Für bekannte (vertrauenswürdige) Anwendungen (engl.: trusted applications, in Abbildung 5 grün unterlegt) existieren Erlaubnisregeln („Lücken“ in der Mauer), die es ihnen ermöglichen, Daten durch die Firewall in die Außenwelt zu versenden. Netzaktivität aller anderen Anwendungen wird von der Firewall unterbunden („Kollision mit der Mauer“), so dass diese Anwendungen ihre Daten nicht nach außen senden können – ebenso wenig wie sie Daten von außen empfangen können. Der Anwender hat dabei die Möglichkeit, zu jeder Zeit neue Regeln zu erstellen (und so neue „Löcher“ in die „Mauer“ zu schlagen), die die Anwendungen im Folgenden zum Datenaustausch innerhalb des Netzes nutzen können.

Einige Firewalls enthalten auch eine Komponente zum Schutz vor Netzattacken. Diese Komponente analysiert den ein- und ausgehenden Netztraffic auf das Vorhandensein von Netzpaketen, die mit den Grundschablonen bereits bekannter Netzpakete übereinstimmen. Die detaillierte Betrachtung dieser Komponente wird Gegenstand einer separaten Analyse sein.

Wie sorgen Firewalls für mehr Sicherheit?

Eine Firewall baut eine zusätzliche „Schutzschicht“ auf, die Schadsoftware stoppen kann, selbst wenn diese von der Antivirus-Komponente eines komplexen Schutzsystems nicht erkannt wurde. Dieser Fall kann eintreten, wenn die Beschreibung eines Schadprogramms noch nicht in den Antivirus-Datenbanken erfasst wurde (und der traditionelle Signatur-basierte Ansatz daher nicht greift) und das Schadprogramm sich nicht eindeutig gefährlich oder auch nur auffällig verhält (so dass auch die Komponente zur Verhaltensanalyse nicht wirksam wird).

Vor welchen Malware-Typen kann eine Firewall schützen? Im Prinzip vor allen derzeit verbreiteten Typen von Schadprogrammen. Auch wenn diese Antwort recht gewagt erscheinen mag, so entspricht sie doch der Realität: Die Funktion der meisten Schadprogramme ist mit Netzaktivität verbunden, so dass sie folglich mit Hilfe einer Firewall blockiert werden können.

Netzwürmer verbreiten Kopien ihrer selbst über lokale und/oder globale Netze.

Trojanische Programme, die zum gegenwärtigen Zeitpunkt 91,4% aller existierenden Schadprogramme stellen, nutzen innerhalb ihres „Lebenszyklus“ ebenfalls den Datenaustausch über Netzwerke. Zu den trojanischen Programmen zählen die folgenden Malware-Klassen:

  • Backdoor – Werkzeuge zur entfernten (remote) Administration von Computern im Netz. Die Steuerung eines Backdoors erfolgt von einem entfernten Computer und eine Firewall kann sämtliche Funktionen schädlicher Programme dieses Typs problemlos blockieren.
  • Trojan-PSW – Programme, die verschiedene Informationen von einem infizierten Computer stehlen. Nach dem Diebstahl vertraulicher Informationen muss der Trojaner diese auf irgendeine Art an den Hacker weiterleiten. An diesem Punkt kommt die Firewall zum Tragen, denn sie kann den Versuch, Daten zu versenden, unterbinden und so die Anwenderdaten schützen.
  • Trojan-Downloader – Programme, die neue Malware-Versionen, Trojaner und Werbeprogramme auf den Opfercomputer laden und dort installieren. Die gesamte Funktionalität von Schadprogrammen dieser Kategorie basiert auf dem Datenaustausch im Netz und sie können daher problemlos mit Hilfe einer Firewall blockiert werden.
  • Trojan-Proxy – Programme, die sich verdeckt anonymen Zugriff auf verschiedene Internet-Ressourcen verschaffen. Üblicherweise werden sie zum Versand von Spam eingesetzt. Ebenso wie die vorhergehende Klasse trojanischer Programme können Trojan-Proxys auf Grund ihrer Netz-Aktivität leicht blockiert werden.
  • Trojan-Spy – Programme, die den User des infizierten Computers ausspionieren. Über die Tastatur eingegebene Informationen, Screenshots, Listen aller aktiven Anwendungen und Aktionen des Anwenders werden von dem Schadprogramm in einer Datei auf der Festplatte gespeichert und in Abständen an den Hacker weitergeleitet. Mit Hilfe einer Firewall kann der Versand von Daten durch ein unbekanntes Programm verhindert werden. Auf diese Weise gelangen die vom Anwender gestohlenen Daten nicht zum Autor des Schadprogramms.

Es sei angemerkt, dass Firewalls keinen Schutz vor klassischen Computerviren bieten.

Viren nutzen – im Gegensatz zu Würmern – keine Netzservices zum Eindringen in andere Computer und sie müssen – im Gegensatz zu Trojanern – keine Daten weiterleiten oder Befehle empfangen.

Firewalls sind eine schwer zu umgehende Schutztechnologie. Während ein Virenautor die Schadprogramme unter heimischen Bedingungen auf Möglichkeiten der Umgehung von Antivirus-Programmen und Technologien der Verhaltensanalyse testen und seine Machwerke so lange verändern kann, bis sie von den o.g. Schutzkomponenten nicht mehr erkannt werden, ist es wesentlich schwieriger eine Firewall auszutricksen. Denn wenn die Funktion eines Programms Netzaktivität beinhaltet, lässt es sich nur äußerst schwer vor dem „Auge“ der Firewall verbergen. Die einzige Möglichkeit zur Umgehung von Firewalls besteht in der Ausnutzung von Sicherheitslücken.

Definition Sicherheitslecks und Leaktests

Ein Sicherheitsleck (leak) ist eine Technologie zur Umgehung der Kontrollmechanismen der Netzaktivität einer Firewall, die es Anwendungen, für die keine Erlaubnisregeln in der Regelliste der Firewall existieren, ermöglicht, ungehindert Daten nach außen zu versenden. Die Firewall blockiert in diesem Fall weder den Datenversand noch informiert sie den Anwender im Lernmodus über die entsprechende Netzaktivität.

Eine richtig eingestellte Firewall sollte keinerlei Sicherheitslücken zulassen und jegliche ein- und ausgehende Netzaktivität identifizieren. Daher werden zur Beurteilung der Funktionsqualität von Firewalls zwei Kriterien herangezogen: die Qualität der Kontrolle der eingehenden Daten (inbound protection – Schutz vor äußerem Eindringen in den Computer) und die Kontrollqualität der ausgehenden Daten (outbound protection – Schutz vor Informationslecks auf dem Computer).

Zur Überprüfung der Schutzqualität, die eine Firewall vor dem Eindringen in den Computer bietet, werden normalerweise verschiedene Scanner offener Ports verwendet (z.B. ShieldsUP! http://www.grc.com/default.htm, Quick test http://www.pcflank.com/test.htm und andere).

Zur Analyse der Schutzqualität einer Firewall vor Sicherheitslecks kommen Leaktests zum Einsatz – kleine, nicht schädliche Programme, die eine oder mehrere Sicherheitslücken produzieren. Solche Programme werden im Wesentlichen von Forschern und Experten auf dem Gebiet IT-Sicherheit geschrieben.

Es liegt auf der Hand, dass die einzige Möglichkeit Lecks zu verursachen in der Ausnutzung bereits bestehender „Lücken in der Mauer“ (Erlaubnisregeln) für bekannte Anwendungen besteht. Die Firewall muss allerdings zunächst davon „überzeugt“ werden, dass die entsprechende Netzaktivität tatsächlich von einer vertrauenswürdigen Anwendung initiiert wird. Zu diesem Zweck existiert eine Vielzahl von Methoden, die im Folgenden genauer betrachtet werden. Zunächst einmal beschäftigen wir uns aber näher mit den grundlegenden Prinzipien der Anwendungsausführung in modernen Betriebssystemen.


Abb. 6. Demonstration einer Sicherheitslücke

Prinzipien der Anwendungsausführung in modernen Betriebssystemen

Der Zentralprozessor eines PCs ist in der Lage, Instruktionssätze auszuführen, die im Arbeitsspeicher des Computers abgelegt sind. Die Instruktionssätze sind in Ausführungsthreads eingeteilt, die bestimmten Prozessen zugeordnet werden können, welche sich aktuell im Arbeitspeicher befinden.

Ausführbare Dateien enthalten Instruktionssätze des Prozessors, deren Start zum Erscheinen eines neuen Prozesses im System führt. Außerdem kann ein Prozess auch durch einen anderen Prozess erzeugt werden. Das Betriebssystem unterstützt einen Prozessbaum im Arbeitsspeicher.

Anzumerken ist auch, dass in dem Adressraum der meisten Prozesse im System nicht nur der Code der ausführbaren Datei vorhanden ist, sondern auch der Code einer Vielzahl von Dynamisch gelinkten Bibliotheken – DLL, Dynamic Link Library. Diese Bibliotheken werden zum Schreiben einiger allgemeiner Funktionen verwendet, die für verschiedene Anwendungen unerlässlich sind. Für die Entwickler der Anwendungen entfällt so die Notwendigkeit, ein und denselben Programmcode für verschiedene ausführbare Dateien zu kopieren. Eine einzige Bibliothek kann in die Adressräume verschiedener Prozesse geladen werden.


Abb. 7. Ausführungsprinzip von Anwendungen

Klassifizierung von Sicherheitslecks

Klassifizierung von Sicherheitslecks

Im Folgenden werden die Technologien näher betrachtet, die von schädlichen Programmen verwendet werden können, um eine Firewall „zu täuschen“. Als Ausgangssituation wird die in Abb. 8 dargestellte Konstellation gewählt: Im Arbeitsspeicher befinden sich der Firewall bekannte Prozesse vertrauenswürdiger Anwendungen und ein Prozess einer unbekannten (schädlichen) Anwendung.


Abb. 8. Ausgangssituation zur Organisation von Sicherheitslücken

Der Versuch einer unbekannten Anwendung Netzaktivität im eigenen Namen zu initiieren, wird blockiert oder die Firewall öffnet ein Dialogfenster mit einer Anfrage an den Anwender.

Es gibt 3 grundlegende Methoden, den Firewall-Schutz zu umgehen:

  1. Die Firewall wird getäuscht, indem man sie davon „überzeugt“, dass die Netzaktivität von einer der vertrauenswürdigen Anwendungen initiiert wird. Zu diesem Zweck tauscht man die ausführbare Datei einer der vertrauenswürdigen Anwendungen auf der Festplatte aus oder tauscht im Speicher die Daten eines unbekannten Prozesses gegen die eines vertrauenswürdigen Prozesses aus.
  2. Der Code wird im Namen einer vertrauenswürdigen Anwendung ausgeführt, indem die dll oder einfach ein kleiner Teil des Codes der unbekannten Anwendung in den Adressraum eines vertrauenswürdigen Prozesses einschleust wird.
  3. Verwendung von dokumentierten Schnittstellen, die von den vertrauenswürdigen Anwendungen zur Verfügung gestellt werden. Bei der Verwendung solcher Schnittstellen geht die Netzaktivität von den vertrauenswürdigen Anwendungen aus, obgleich die Aktivität nicht von diesen kontrolliert wird. So können über diese Schnittstellen Daten nach außen gesendet werden, ohne dass die Firewall eine Warnmeldung ausgibt.

Zur Umsetzung der oben genannten drei Methoden existieren sechs Technologien zur Organisation von Sicherheitslecks:

№№ Methode 1
(Täuschung)
Methode 2
(Codeausführung im Namen einer vertrauenswürdigen Anwendung)
Methode 3
(Verwendung dokumentierter Schnittstellen)
1 Substitution    
2   Launching  
3   DLL injection  
4   Code injection  
5     Browser services
6     System services

Es folgt eine genauere Betrachtung der genannten Technologien und ihrer Umsetzungsvarianten.

Technologien zur Organisation von Sicherheitslecks

Substitution

Austausch der ausführbaren Datei einer vertrauenswürdigen Anwendung auf der Festplatte oder Austausch der Daten des unbekannten Prozesses gegen Daten eines vertrauenswürdigen Prozesses im Speicher.

Der Sinn der Substitution besteht darin, die Firewall davon zu „überzeugen“, dass die Netzaktivität von einem der vertrauenswürdigen Prozesse initiiert wird.

Es lassen sich vier Subtitutionsmethoden unterscheiden:

  • Austausch der ausführbaren Datei eines vertrauenswürdigen Prozesses auf der Festplatte (umgesetzt im Leaktest Runner, s. Abschnitt „Leaktests“);
  • Ersetzung des Namens der Datei der unbekannten Anwendung mit dem Namen der Datei eines vertrauenswürdigen Prozesses (Leaktest);
  • Austausch im Speicher der Daten des bereits geladenen Prozesses der unbekannten Datei gegen die Daten eines vertrauenswürdigen Prozesses (Coat).


Abb. 9. Austausch der ausführbaren Datei eines vertrauenswürdigen Prozesses auf der Festplatte

Launching

Start einer vertrauenswürdigen Anwendung mit den Parametern der Befehlszeile. Diese Methode gründet sich darauf, dass die meisten Browser die Adresse einer Website, die geöffnet werden soll, in Form des Parameters der Befehlszeile empfangen können. Wenn sich seitens des Webservers auf der entsprechenden Website ein Skript befindet (z.B. cgi), so können in der Adresszeile auch Parameter übermittelt werden, die mit dem Input des jeweiligen Skripts übertragen werden. In diesen Parametern könnten ebenso vertrauliche Informationen übermittelt werden, die beispielsweise von einem Spionageprogramm gestohlen wurden. Dabei wird die gesamte Netzaktivität vom Browser im Standardmodus produziert, was durch die Firewall-Regeln grundsätzlich erlaubt wird.

Damit der Anwender das Erscheinen des Browserfensters nicht bemerkt, wird der Browser normalerweise im „verborgenen“ Modus gestartet (Ghost, TooLeaky, Wallbreaker [1]).

Zudem besteht die Möglichkeit, den Browser nicht über den Schadcode selbst, sondern mit Hilfe anderer Anwendungen zu starten:

  • Start des Browsers durch den Shell-Prozess Windows Explorer.exe (Wallbreaker [2]);
  • Start des Browsers durch den Shell-Prozess Windows Explorer.exe, der wiederum durch den Befehlsinterpreter cmd.exe gestartet wird (Wallbreaker [3]);
  • Start des Browsers unter Ausnutzung des Mechanismus zum Start von Tasks nach Zeitplan in Windows (Wallbreaker [4]); die Reihenfolge der Aufrufe stellt sich in diesem Fall folgendermaßen dar: AT.exe -> Svchost.exe-> Cmd.exe->Explorer.exe-> IExplore.exe.

Die folgende Abbildung zeigt das Schema dieser Methode zur Organisation von Sicherheitslücken:


Abb. 10. Start einer vertrauenswürdigen Anwendung mit den Parametern der Befehlszeile

DLL Injection

Einschleusung einer dynamischen Bibliothek in den Adressraum eines vertrauenswürdigen Prozesses. Diese Methode basiert auf dem Laden einer zu einem Schadprogramm gehörigen dynamischen Bibliothek in den Adressraum eines vertrauenswürdigen Prozesses. Es gibt viele Arten, diese Methode umzusetzen – die wichtigsten werden im Folgenden aufgeführt:

  • Installation eines Hooks, dessen Code sich in der dynamischen Bibliothek befindet (CPILSuite [2,3], FireHole, pcAudit, pcAudit2);
  • Eintrag in der System-Registry in der dll-Liste, die für jeden neuen Prozess automatisch vom System geladen wird – Key AppInit_DLLs (Jumper).

Beide aufgeführten Umsetzungsarten sind legal und dokumentiert.

Die folgende Abbildung zeigt das Schema der beschriebenen Methode:


Abb. 11. Einschleusung einer dynamischen Bibliothek in einen vertrauenswürdigen Prozess

Code Injection

Code-Einschleusung in den Adressraum eines vertrauenswürdigen Prozesses ohne Verwendung einer dynamischen Bibliothek. Diese Methode basiert auf der Einschleusung von ausführbarem Code in den Adressraum eines vertrauenswürdigen Prozesses. Die im Folgenden von dem fremden Code verursachte Netzaktivität stellt sich für die Firewall als Netzaktivität des akzeptierten, bekannten Programms dar. Im Gegensatz zu der vorhergehenden Methode ist diese Operation selbst aber schon recht verdächtig, obgleich es auch dokumentierte Methoden zur Einschleusung von Code in einen fremden Prozess gibt. Die Code-Einschleusung wird manchmal von gewöhnlichen Programmen (wie etwa Debuggern) eingesetzt, in den meisten Fällen jedoch von Schadsoftware.

Es gibt viele Möglichkeiten, Code in einen fremden Prozess einzuschleusen. Einige davon sind im Folgenden aufgeführt:

  1. Laden eines vertrauenswürdigen Prozesses in den Speicher und Veränderung des Prozessspeichers (AWFT [1], CPIL, DNStest). Dabei kann vorsorglich versucht werden, die Operation vor Entdeckung durch die Firewall zu schützen, indem die Hooks gelöscht werden (CPILSuite[1]);
  2. Aufspüren eines im Speicher geladenen vertrauenswürdigen Prozesses und die Einschleusung von Code in diesen (Thermite);
  3. Laden eines vertrauenswürdigen Prozesses in den Speicher und Erzeugung eines Remote-Threads in diesem (AWFT [2,3]);
  4. Laden eines vertrauenswürdigen Prozesses in den Speicher, Erzeugung eines Remote-Threads in diesem und das Laden eines weiteren vertrauenswürdigen Prozesses aus diesem Thread und Veränderung seines Speichers vor der Ausführung (AWFT [4,5,6]);
  5. Ausnutzung der Funktion SetThreadContext zur Erlangung der Kontrolle über einen Thread in einem vertrauenswürdigen Prozess (CopyCat).

Am häufigsten werden hier die Prozesse von Internet-Browsern angegriffen (Internet Explorer und andere – Tests AWFT [1,2,4], CopyCat, Thermite) sowie System-Shells (explorer.exe – Tests AWFT [3,4], CPIL, CPILSuite [1]) und der Prozess svhost.exe – der Hauptprozess für Windows-Services, die aus dynamischen Bibliotheken geladen werden (Test DNStest).

Die Abb. unten zeigt das Schema dieser Methode zur Erstellung von Sicherheitslücken:


Abb. 12. Einschleusung von schädlichem Code in einen vertrauenswürdigen Prozess

Browser Services

Ausnutzung von Programmschnittstellen zur Steuerung des Internetbrowsers. Die Methode basiert auf der Ausnutzung verschiedener Mechanismen, die in Windows zum interprozessualen Zusammenwirken verschiedener Komponenten/Anwendungen realisiert sind. Diese Mechanismen schließen die folgenden Aktionen ein:

  1. Versenden von Windows-Meldungen an das Browserfenster. Auf diese Weise verändert sich die Bedeutung in der Adresszeile des Browsers und mit der Betätigung der Enter-Taste wird auf die eingefügte Adresse umgeleitet (Breakout).
  2. Ausnutzung der DDE-Schnittstelle des Browsers – Ausnutzung der Mechanismen des dynamischen Datenaustausches DDE (Dynamic Data Exchange, http://de.wikipedia.org/wiki/Dynamic_Data_Exchange ). Die Bibliothek DDE wurde entwickelt, um die Möglichkeiten des Windows-Meldungen-Systems zu erweitern. Sie ermöglicht es zwei Anwendungen während der Ausführung dynamisch Daten auszutauschen. (Die Unterstützung von DDE in verschiedenen Versionen des Internet Explorers wird in dem Artikel http://support.microsoft.com/kb/q160957 beschrieben) (Surfer, ZAbypass, WB [1,3,4]; CPILSuite [3]);
  3. Verwendung des Browsers als Automatisierungsserver (OLE-Automatisierung, basierend auf dem COM-Modell, http://de.wikipedia.org/wiki/Object_Linking_and_Embedding, http://de.wikipedia.org/wiki/Component_Object_Model). Bei der OLE-Automatisierung handelt es sich um eine erweiterte DDE-Technologie. Es gibt zwei COM-Komponenten des Microsoft Internet Explorers in äußeren Anwendungen http://msdn2.microsoft.com/en-us/library/aa741313.aspx):
    • WebBrowser Control, umgesetzt in der Datei shdocvw.dll (OSfwbypass),
    • Schnittstelle MSHTML, umgesetzt in mshtml.dll (PCFlank).

Die folgende Abbildung zeigt das Schema dieser Methode zur Organisation von Sicherheitslücken:


Abb. 13. Ausnutzung von Programmschnittstellen zur Steuerung des Browsers

System Services

Ausnutzung von Programmschnittstellen in den Systemdiensten. Diese Methode ist der vorhergehenden recht ähnlich. Der Unterschied zwischen den beiden Ansätzen besteht darin, dass in diesem Fall Programmschnittstellen genutzt werden, die von Komponenten des Betriebssystems und nicht vom Internetbrowser zur Verfügung gestellt werden. In den Betriebssystemen Windows XP und WindowsVista gibt es mindestens drei derartige Schnittstellen:

  1. Systemdienst BITS (Background Intelligent Transfer Service, http://msdn2.microsoft.com/en-us/library/Aa362827.aspx). Der Dienst zum intelligenten Download von Dateien, der von den Services Windows Update und Windows Server Update genutzt wird, ermöglicht den Download von Patches und Updates im Hintergrundmodus ohne die Übertragungskanäle zu überlasten. Der Download wird dabei im Falle einer Verbindungsunterbrechung automatisch aktualisiert (BITSTester).
  2. Die Funktion Windows DNS API (http://msdn2.microsoft.com/en-us/library/ms682100.aspx) kann zur Organisation einer rekursiven DNS-Anfrage an den Namensserver im Internet genutzt werden. Mit dem Inhalt des DNS-Pakets könnten noch zusätzliche Daten übermittelt werden, unter anderem auch vertrauliche Anwender-Informationen. Ein Hacker, der einen der Namensserver kontrolliert, die solche DNS-Anfragen bearbeiten, kann solche Informationen empfangen, indem er so ein speziell aufgebautes Paket bearbeitet (DNSTester);
  3. Die Schnittstelle zur Steuerung der Desktopelemente und Windows Wallpaper (IActiveDesktop http://msdn2.microsoft.com/en-us/library/ms647199.aspx) ermöglicht die Erstellung einer Windows html-Site als Desktop-Wallpaper, wenn Windows Active Desktop aktiviert wird. Die html-Site kann Elemente enthalten, die auf äußere Ressourcen verweisen, was bei der Aktivierung neuer Desktop-Wallpaper zum Laden dieser Ressourcen führt (Breakout2).

Unterschiede zu bestehenden Klassifizierungen von Sicherheitslecks

Die oben beschriebene Klassifizierung unterscheidet sich leicht von anderen derartigen Klassifizierungen von Sicherheitslücken auf Websites, die auf die Analyse von Sicherheitslecks spezialisiert sind.

Die erste uns bekannte Website, auf der eine systematisierte Untersuchung von Sicherheitslecks veröffentlicht wurde, ist http://www.firewallleaktester.com Eine Klassifizierung von Sicherheitslücken findet man unter http://www.firewallleaktester.com/categories.htm.

Im Jahr 2006 erschien die zweite derartige Site – http://www.matousec.com – zu deren Hauptprojekten „Die Untersuchung von personal Firewalls unter Windows“ gehört (http://www.matousec.com/projects/windows-personal-firewall-analysis/introduction-firewall-leak-testing.php). Die Klassifizierung von Sicherheitslücken auf dieser Site ist der unter http://www.firewallleaktester.com sehr ähnlich, dennoch gibt es einige Unterschiede, welche in der folgenden Tabelle aufgeführt sind.

In unserer Klassifizierung sind die folgenden Methoden nicht enthalten:

№№ Methode auf der Site www.firewallleaktester.com Methode auf der Site www.matousec.com
1 Hidden rules (Verborgene Regeln) Default Rules (Standard-Regeln)
2 Direct network interface use (Direkter Gebrauch der Netz-Schnittstelle) Own Protocol Driver (Eigener Protokoll-Treiber)
3 Timing attack (Zeit-Attacke)  
4 Recursive requests (Rekursive Anfragen)
5 Registry injection (Eindringen in die Registry)  
6 Methodensammlung Windows Messaging + OLE Windows Messages und OLE Automation, DDE
7   Unhooking

Im Folgenden wird begründet, warum die in der Tabelle aufgeführten Methoden in unserer Klassifizierung nicht berücksichtigt werden:

  1. Bei der Methode „Verborgene Regeln“ handelt es sich nicht um eine Sicherheitslücke im eigentlichen Sinne (siehe oben, Definition von Sicherheitslecks), da hier keine Technologie zur Umgehung der Kontrolle der Netzaktivität durch die Firewall zum Einsatz kommt. Das Wesen dieser Methode liegt in der Überprüfung verschiedener Paketregeln (die für alle Anwendungen im System gelten), die von der Firewall per Standardeinstellung verwendet werden. Ist einer der Netzwerkports für alle Anwendungen offen, so kann er auch von einem Schadprogramm zur Datenübertragung nach außen genutzt werden.
  2. Die Methode „Direkter Gebrauch der Netz-Schnittstelle“ basiert auf der Umgehung der Filtermechanismen des Netz-Traffics auf „unterer“ Ebene. Hier wird ein alternativer Stack der Netzwerktreiber geschrieben, der zusammen mit den System-Stacks (TCP/IP und andere) die vom Netzadapter kommenden Pakete bearbeitet. Diese Methode wird in unserer Klassifizierung nicht berücksichtigt, da es zum gegenwärtigen Zeitpunkt nicht eine Umsetzung (Leaktest) gibt, die unter den aktuellen Betriebssystemen Windows XP/Vista läuft. Zudem ist das Erscheinen neuer Leaktests oder gar schädlicher Programme, die diese Methode einsetzen höchst unwahrscheinlich, da sie wesentlich schwieriger umzusetzen ist als andere Methoden zur Organisation von Sicherheitslücken. Es sei jedoch angemerkt, dass es drei Leaktests gibt, die unter dem veralteten Betriebssystem Windows 9x laufen und diese Methode verwenden:
    • MbTest (Autor – “mbcx8nlp”, 2003), verwendet die Bibliothek Winpcap,
    • Outbound (Autor – HackBusters, 2001),
    • YALTA [2] (Autor – Soft4ever, 2001).
  3. Die Methode „Zeit-Attacke“ wird in unserer Klassifizierung nicht als eigene Kategorie aufgeführt, da die von ihr verwendete Technologie (Neustart des eigenen Prozesses zur Veränderung des PID – des Prozessidentifikators) es derzeit praktisch nicht ermöglicht auch nur eine Firewall zu umgehen.

  4. Die Methode „Rekursive Anfragen“ zählt in unserer Qualifikation zu den Methoden der Gruppe System Services.

  5. Die Methode „Eindringen in die Registry“ ist gemäß unserer Klassifizierung Bestandteil der Kategorie DLL Infection, da das Wesen dieser Methode sich nicht darauf gründet, in die Registry einzudringen, sondern eine dynamische Bibliothek in einen vertrauenswürdigen Prozess einzuschleusen. Tatsächlich ist dies unter anderem mit Hilfe eines speziellen Schlüssels der Systemregistry möglich.

  6. Die unter der Überschrift „Windows Messaging + OLE“ zusammengefassten Methoden finden sich in unserer Klassifizierung in den Gruppen Browser Services und System Services. Diese Einteilung erscheint uns logischer, da sie nicht die technische Umsetzung (Versenden von Meldungen usw.) beschreibt, sondern das Wesen der Technologie zur Organisation von Sicherheitslücken auf einer höheren Ebene: Die Verwendung von Programmschnittstellen der Browsersteuerung oder von Netzdiensten des Betriebssystems.

  7. „Unhooking“ . Die Idee hinter dieser Methode sieht folgendermaßen aus: Firewalls zum Schutz vor verschiedenen Sicherheitsleck-Technologien verwenden Hooks. Werden diese Abfänger der Systemfunktionen gelöscht, so bietet die Firewall keinen Schutz mehr vor Sicherheitslecks. Wie aus der Beschreibung deutlich wird, handelt es sich bei dieser Methode nicht um eine Sicherheitslücke als solche und wird daher in der Klassifizierung nicht berücksichtigt. Wird das Unhooking zusammen mit einer beliebigen anderen, realen Methode eingesetzt, so ist es allerdings möglich, die Schutzqualität einer Firewall vor der gegebenen Methode unter schwerstmöglichen Bedingungen zu testen, indem eine Situation imitiert wird, in der schädlicher Code der Firewall aktiven Widerstand leistet.

Verwendung von Sicherheitslecks in Schadprogrammen

Noch vor wenigen Jahren wurden Firewalls zum Schutz von PCs nur recht selten eingesetzt. Daher verwendeten nur vereinzelte Schadprogramme Sicherheitslecks zur Umgehung von Firewalls. In jüngster Zeit setzen die Autoren von Schadsoftware allerdings immer häufiger das Mittel der Automatisierung ein, um innerhalb kürzester Zeit neue Exemplare ihrer Programme zu erhalten. Der Strom neuer Malware schwillt daher beständig an. Vor diesem Hintergrund spielen zusätzliche Schutzmechanismen für den PC eine immer größere Rolle und die Popularität von Firewalls wächst entsprechend.

Angesichts der zunehmenden Verbreitung von Firewalls setzen die Malware-Autoren immer häufiger Sicherheitslecks zur Umgehung des Firewallschutzes ein. In der folgenden Tabelle sind Beispiele für reale Schadprogramme aufgeführt, die jede einzelne der 6 wichtigsten Methoden zur Organisation von Sicherheitslecks abdecken.

№№ Methode Schadprogramm Entdeckungsdatum Beschreibung
1 Substitution Backdoor.Win32.Bifrose.aer 26. März 2007 Kopiert sich selbst anstelle des Programms MSN Messenger («C:Program FilesMSN Messengermsnmsgr.exe»)
2 Start durch Parameter der Befehlszeile Trojan-Spy.Win32.Agent.se 26. Juni 2007 Startet den Internet Explorer mit nicht sichtbarem Fenster und übermittelt in der Befehlszeile den Pfad zu einer HTML-Datei
3 Einschleusung einer dynamischen Bibliothek Trojan-Spy.Win32.Goldun.pq 11. Juni 2007 Registriert die DLL im Registry-Key AppInit_DLLs und fängt mit dessen Hilfe den Internet-Traffic ab
4 Code-Einschleusung in einen vertrauenswürdigen Prozess Trojan-Spy.Win32.Delf.uc 19. Januar 2007 Erstellt einen Thread im Prozess winlogon.exe und versendet in diesem Thread Daten ins Internet
5 Steuerung des Internetbrowsers Trojan-PSW.Win32.LdPinch.bix 04. Januar 2007 Nutzt zum Versenden der gesammelten Daten die COM-Schnittstelle IWebBrowser2
6 Nutzung von System-Diensten Trojan-Downloader.Win32.Nurech.br 08. Juni 2007 Mit Hilfe des System-Dienstes BITS werden Daten ins Internet übermittelt, die den User identifizieren (Seriennummer der Festplatte)
  • Über die Parameter der Befehlszeile des Browsers kann nur eine begrenzte Datenmenge übertragen werden, doch die Technologie BITS ermöglicht es einem Schadprogramm auch eine besonders schwere Datei vom Anwendercomputer herunterzuladen;
  • Bei den Methoden „Einschleusung einer dynamischen Bibliothek“ und „Einschleusung von Programmcode in einen vertrauenswürdigen Prozess“ handelt es sich nicht ausschließlich um Methoden zur Umgehung von Firewalls. Diese Methoden ermöglichen nämlich nicht nur den verborgenen Datenversand im Namen eines vertrauenswürdigen Prozesses, sondern auch die Durchführung einer Vielzahl von anderen Operationen;
  • Die Nutzung von Schnittstellen zur Steuerung des Browsers (z.B. WebBrowser control) ermöglicht nicht nur den Datenversand im Namen des Internet Explorers. Mit Hilfe dieser Methode können zudem viele andere Aktionen durchgeführt werden: die Steuerung einer geöffneten Kopie des Browsers (es ist z.B. möglich, alle Fenster zu schließen, in denen die Adresse nicht alle vorgegebenen Bedingungen erfüllt), die Modifikation eines in ihm geöffneten Dokumentes, Entfernung eines Mitteilungsfensters im Browser usw.

Leaktests

Die folgende Tabelle gibt eine Übersicht über die derzeit bekannten Leaktests mit Verweisen auf die von ihnen eingesetzte Methode. Die meisten dieser Leaktests stehen auf den Sites http://www.matousec.com/projects/windows-personal-firewall-analysis/introduction-firewall-leak-testing.php oder http://www.firewallleaktester.com zum Download bereit.

№№ Name Autor Methode Jahr
1 AWFT [6] Jos Pascoa Code injection 2005
2 BITSTester Tim Fish System services 2006
3 Breakout Volker Birk Browser services keine Angabe
4 Breakout2 Volker Birk System services keine Angabe
5 Coat David Matousec Substitution 2006
6 CopyCat «Bugsbunny» Code injection keine Angabe
7 CPIL Comodo Code injection 2006
8.1 CPILSuite [1] Comodo Code injection + Launching 2006
8.2 CPILSuite [2] Comodo DLL injection + Launching 2006
8.3 CPILSuite [3] Comodo DLL injection + Browser services 2006
9 DNStest Jarkko Turkulainen Code injection 2004
10 DNStest Jarkko Turkulainen System services 2004
11 FireHole Robin Keir DLL injection 2002
12 FPR (38) David Matousec [unhooking] keine Angabe
13 Ghost Guillaume Kaddouch Launching keine Angabe
14 Jumper Guillaume Kaddouch DLL injection 2006
15 LeakTest Steve Gibson Substitution 2002
16 OSfwbypass Debasis Mohanty Browser services 2005
17 pcAudit Internet Security Alliance DLL injection 2002
18 pcAudit2 Internet Security Alliance DLL injection keine Angabe
19 PCFlank www.pcflank.com Browser services 2006
20 Runner David Matousec Substitution 2006
21 Surfer Jarkko Turkulainen Browser services 2004
22 Thermite Oliver Lavery Code injection 2003
23 TooLeaky Bob Sundling Launching 2001
24 Wallbreaker [4] Guillaume Kaddouch Launching 2004
25 YALTA Soft4ever [default rules] 2001
26 ZAbypass Debasis Mohanty Browser services 2005

Die folgende Tabelle zeigt die Verteilung der Leaktests gemäß unserer Klassifizierung:

№№ Technologie Leaktests
1 Substitution Coat, LeakTest, Runner
2 Launching Ghost, TooLeaky, Wallbreaker
3 DLL injection CPILSuite [2, 3], FireHole, Jumper, pcAudit, pcAudit2
4 Code injection AWFT, CopyCat, CPIL, CPILSuite [1], DNStest, Thermite
5 Browser services Breakout, OSfwbypass, PCFlank, Surfer, ZAbypass
6 System services BITSTester, Breakout2, DNStester

Bedeutung der Ergebnisse von Leaktests

Welchen Vorteil bringen nun solche mit Hilfe von Leaktests durchgeführten Vergleichstests von Firewalls? In erster Linie zeigt sich hier natürlich die Integrationsqualität des Schutzsystems bei der Auswahl einer komplexen Lösung zum Schutz des Anwendercomputers.

Derzeit beschränken sich die Hauptkriterien bei der Auswahl einer Schutzlösung für Heimanwender meist nur auf das Erkennungsniveau und die Reaktionszeit des Produkts (beispielsweise bei den Tests http://www.av-comparatives.org, http://www.av-test.de). Zur Beurteilung der Qualität eines modernen Schutzsystems ist dies jedoch nicht ausreichend. Es gibt eine Vielzahl weiterer Charakteristika, denen die Autoren der Vergleichstest leider zu wenig Beachtung schenken, unter anderem: die Qualität der „proaktiven“ Komponente des Antivirus-Programms, die Effektivität der Wiederherstellung eines infizierten Systems, der Widerstand gegenüber aktiven Rootkits, die Selbstschutzqualität des Produkts und vieles mehr. Bei der Auswahl eines komplexen Schutzprodukts sollten auch solche Komponenten wie Spamschutz und Firewall einer Analyse unterzogen werden.

Wie bereits erwähnt, gründet sich die Qualität einer Firewall auf zwei Komponenten, nämlich die Kontrolle der eingehenden Daten und die Kontrolle der ausgehenden Daten. Gute Werte in Tests zur Kontrolle der ausgehenden Daten lassen den Schluss zu, dass es sich bei der entsprechenden Firewall nicht allein um eine „Zugabe“ zu dem Antivirus-Programm handelt, sondern dass diese ein zusätzliches Schutzniveau gewährleistet. So bietet eine derartige Firewall unter anderem die Möglichkeit, das Versenden vertraulicher Anwenderdaten an den Hacker sogar in dem Fall zu verhindern, wenn das Antivirus-Programm das entsprechende trojanische Programm nicht blockieren konnte.

Unserer Meinung nach gewähren Produkte, die in den Testreihen http://www.matousec.com/projects/windows-personal-firewall-analysis/leak-tests-results.php die Bewertung „very good“ oder „excellent“ erhalten haben, den Anwendern Schutz auf hohem Niveau. Bei Produkten mit den Bewertungen „good“ oder gar „poor“ bzw. „very poor“ hingegen haben die Autoren von Schadprogrammen die freie Auswahl unter den Methoden zur Umgehung der in diese Produkte integrierten Firewalls.

Fazit

Die Firewall wird mehr und mehr zu einer unverzichtbaren Komponente komplexer Schutzsysteme. Selbst die modernsten Betriebssysteme, wie etwa Windows Vista, sind nicht in der Lage selbstständig alle Typen von Sicherheitslecks zu blockieren (wir weisen darauf hin, dass in die Betriebssysteme Windows, beginnend mit Windows XP SP2, eine Firewall integriert ist, deren Funktionen in Windows Vista entscheidend erweitert wurden).

Den Ergebnissen einer im März 2007 von Guillaume Kaddouch durchgeführten Testreihe zufolge (http://www.firewallleaktester.com/articles/vista_and_leaktests.html), wurden von dem Betriebssystem Windows Vista Ultimate 64-Bit in der Standardeinstellung lediglich 9 Leaktests blockiert (die blockierten Leaktests sind in der Tabelle grün unterlegt).

№№ Name Anmerkungen
1 Substitution Coat, LeakTest, Runner
2 Launching Ghost, TooLeaky, Wallbreaker
3 DLL injection CPILSuite [2, 3], FireHole, Jumper, pcAudit, pcAudit2
4 Code injection AWFT, CopyCat, CPIL, CPILSuite [1], DNStest, Thermite
5 Browser services Breakout, OSfwbypass, PCFlank, Surfer, ZAbypass
6 System services BITSTester, Breakout2, DNStester

Zweifellos ist das neue Betriebssystem auf Grund einer Reihe von Verbesserungen, wie etwa UAC, IE Protected Mode, Service Hardening und Kernel Patch Protection (Vista x64), sicherer als seine Vorgängermodelle. Um ein ausreichendes Schutzniveau vor Sicherheitslecks gewährleisten zu können, müssen jedoch selbst unter Windows Vista ergänzende Schutzprogramme hinzugezogen werden.

In der Zukunft werden Schadprogramme neue Methoden zur Umgehung der Schutzmechanismen des Betriebssystems und auch der bestehenden Schutzlösungen einsetzen. Daher wird die Bedeutung von Firewalls als zusätzliche Schutzkomponente auch weiterhin zunehmen. Dabei werden die Malware-Autoren immer intensiver Technologien zur Organisation von Sicherheitslecks verwenden, um den Firewallschutz zu umgehen. Vor diesem Hintergrund ist die Durchführung von Leaktests als Werkzeug zur Bewertung der Schutzqualität von Computern unerlässlich.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.