Skip to main content


Windows Filtering Platform (Praxis)

Was können Entwickler mit der Windows Filtering Platform anfangen? Lohnt sich die notwendige Einarbeitung? Wenn Sie eine Anwendung entwickeln, die auf das Netzwerk zugreifen muss, lautet die Antwort: Ja, es lohnt sich. Es ist sogar notwendig, da die WFP in einer zukünftigen Windows-Version die vor Vista verwendeten und im Laufe der Zeit entstandenen Teillösungen für Eingriffe in den Netzwerkverkehr vollständig ersetzen wird. Aber lassen sich mit der WFP interessante neue Anwendungen entwickeln? Sehr wahrscheinlich ja, denn durch die WFP sind Zugriffe auf den Netzwerkstrom sehr viel einfacher möglich als in den Windows-Versionen vor Vista. Dies sollte Anlass genug sein, über mögliche neue Anwendungsfälle nachzudenken.

Übrigens führt der Name "Windows Filtering Platform" etwas in die Irre – Sie können darüber nicht nur den Netzwerkverkehr filtern, sondern ihn auch manipulieren oder einfach nur beobachten.

Beispiele für Filter

Für die Entwicklung von Callout-Filtern benötigen Sie das Windows Driver Kit (WDK). Microsoft liefert darin auch vier Beispiele für die WFP:

Zur Manipulation von Daten gibt es zwei Möglichkeiten: Zum einen können sie direkt im Filter geändert werden, "Inline Edit" genannt, zum anderen können sie "Out-of-Band" gefiltert werden. Dabei werden die Pakete geklont und die ursprünglichen Pakete blockiert, vom zuständigen Shim also verworfen. Die geklonten Pakete werden dann manipuliert und später wieder in den TCP/IP-Stack eingeschleust, wo sie dann an Stelle der ursprünglichen Pakete weitergeleitet werden.

Der Unterschied zwischen den beiden Varianten: Die Inline-Methode ist die einfachere und schnellere Lösung, läuft aber vollständig im Kernel Mode ab, während bei der aufwändigeren Out-of-Band-Methode die Daten auch in den User Mode weitergeleitet und dort untersucht werden können, ohne dass der TCP/IP-Stack während der Untersuchung blockiert wird.

Application Layer Enforcement (ALE)

Application Layer Enforcement (ALE) ist eine Sammlung von WFP-Kernel-Mode-Layern zur zustandsbehafteten (stateful) Filterung. Durch zustandsbehaftete Filterung ist es möglich, nur Pakete mit einem bekannten Verbindungszustand durchzulassen oder zu blockieren. So können z.B. nur eingehende Pakete durchgelassen werden, die die Antwort auf ein vorheriges ausgehendes Paket sind.

Gefiltert werden kann zum einen auf Basis von lokaler oder entfernter Adresse und Port sowie dem Protokoll, zum anderen auf Grund der Anwendungs-, Benutzer- und Maschinen-ID. Dadurch kann z.B. eine Autorisierung auf Grundlage der Benutzer-ID realisiert werden (Pakete nicht autorisierter Benutzer werden dann blockiert).

IPsec und die WFP

Über die WFP kann auch die Konfiguration der sicheren Datenübertragung über IPsec vorgenommen werden. Dabei sind genauere Einstellungen als über die sonst dafür genutzte Microsoft Management Console (MMC) für die Windows Firewall. Einmal konfiguriert, wird IPsec in die WFP integriert und erweitert die von der Application Layer Enforcement Autorisierungsschicht auswertbaren Informationen um Daten wie z.B. die Identität des entfernten Benutzers und der entfernten Maschine.

Auf die richtige Filterung kommt es an

Wenn Sie die WFP nutzen, müssen Sie darauf achten, wo und wie sie filtern. Je weiter unten im TCP/IP-Stack sie filtern, desto mehr darüber liegende Schichten mit wahrscheinlich noch mehr Filtern können die von Ihrem Filter durchgelassenen Pakete noch ausfiltern. Umgekehrt sieht es aus, wenn Sie ihren Filter auf einer der oberen Schichten installieren. Eventuell sind Pakete, die Sie interessieren würden, bereits ausgefiltert, bevor sie Ihren Filter überhaupt erreichen. Je nachdem, was Sie mit Ihrem Filter erreichen wollen, wird im Allgemeinen nur eine bestimmte Schicht für die Filterung in Frage kommen. Sollten sie die Wahl zwischen mehreren Schichten haben, können Sie wählen, was Ihnen wichtiger ist: Möglichst viele Pakete zu untersuchen, von denen evtl. nur ein Teil der akzeptierten den TCP/IP-Stack passiert, oder weniger Pakete zu untersuchen, die aber mit höherer Wahrscheinlichkeit ihr Ziel erreichen.

Während Sie keinen Einfluss auf die Filterung in anderen Schichten haben, können Sie die Entscheidung auf der eigenen Schicht in gewissen Grenzen beeinflussen. Die Filter Arbitration ist für die Interaktion der Filter untereinander zuständig. Grundsätzlich gelten für die Filterung zwei Regeln: Der gesamte Netzwerkverkehr wird gefiltert, es gibt keine Möglichkeit, die Filter einer bestimmten Schicht zu umgehen. Mehrere Anwendungen können den Netzwerkverkehr auf der gleichen Schicht filtern, z.B. erst eine Firewall und dann ein Intrusion Detection System.

Auf jeder Schicht werden die Filter, wie schon beschrieben, nach ihrer Priorität sortiert und der Reihe nach von der höchsten zur niedrigsten Priorität durchlaufen. Jeder Filter kann die Daten freigeben, unbewertet an den nächsten Filter weiterreichen oder blockieren. Entscheidet ein Filter auf "Blockieren", wird damit eine vorherige Freigabe überschrieben und die Filterung beendet: Das Paket wird blockiert.

Damit Programme, die auf einen offenen Port angewiesen sind, wie z.B. Universal Plug and Play (UPnP), funktionieren, gibt es die Möglichkeit, über das Flag FWPS_RIGHT_ACTION_WRITE das Überschreiben der eigenen Entscheidung zur Weiterleitung durch Filter mit niedrigerer Priorität zu verbieten (Hard Permit). Unter Umständen kann aber auch das umgangen werden, indem ein Filter über ein sog. Veto das Paket trotzdem blockiert. Dies ist ein Hinweis auf einen Konflikt in der Konfiguration und wird entsprechend protokolliert und gemeldet.

Wollen Sie sicher gehen, dass bestimmte Pakete auf jedem Fall den gesamten TCP/IP-Stack durchqueren, müssen Sie auf jeder Schicht dafür sorgen, dass sie durch einen Hard Permit weitergeleitet werden. Verzichten Sie darauf, kann ein Paket gegebenenfalls auf höheren Schichten ausgefiltert werden.

Jetzt lassen Sie ihrer Phantasie freien Lauf – wie können Sie mit solchen Funktionen ihre bisherigen Programm erweitern, welche neuen Anwendungszwecke fallen Ihnen ein?

Weiterführende Links

[1] MSDN Library: Windows Filtering Platform


 

Autor des Artikels

Dipl.-Inform. Carsten Eilers ( www.ceilers-it.de) ist als freier Berater und Coach für IT-Sicherheit und technischen Datenschutz tätig und als Autor verschiedener Artikel und des Buches "Ajax Security" bekannt.  Seinen Blog finden Sie hier.

 



These postings are provided "AS IS" with no warranties, and confers no rights. Use of included code samples are subject to the terms specified at Microsoft - Information on Terms of Use. The content of these security articles are the own personal opinions from Carsten Eilers.

Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur -Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die -Website verlassen.

Möchten Sie teilnehmen?