Wie / abfangen Pakete zu analysieren, bevor sie durch das OS gesendet / empfangen werden?
-
12-09-2019 - |
Frage
Ich habe immer gefragt, wie Software-Firewalls unter der Decke arbeiten, und möchte in der Lage sein, meine eigenen benutzerdefinierten Tools zu schreiben, Pakete zu analysieren oder abfangen, bevor sie durch das Betriebssystem gesendet oder empfangen werden. Ich bin ziemlich mit Kern-Networking-Prinzipien vertraut; Ich habe keine Ahnung, wo ich anfangen soll, wenn ich Software schreiben wollen, die innerhalb des Netzwerk-Stack passt ähnlich wie Firewalls tun. Könnte mir jemand ein paar Hinweise geben?
Es würde mich besonders interessiert, wenn diese C # erreicht werden kann, aber ich kann auch andere Sprachen tun. Ich bin in erster Linie auf Windows konzentriert, würde aber gerne wissen, ob es auch dort keine Cross-Plattform-Bibliotheken waren.
Bearbeiten einen NDIS-Treiber (wie Wireshark tut) klingt wie eine gute Option, und Vista Paketfilterfunktionen ordentlich klingen, aber wie Firewalls es tun, sagen wir, auf Windows XP? Sie müssen keine speziellen Treiber installieren, die ich kenne.
Lösung
Andere Tipps
Wie ich mich erinnere es sich um einen NDIS-Treiber zu schreiben. Dieser sitzt praktisch auf der NIC (Network Interface Card), und Sie haben die absolute Kontrolle über was in geht oder kommt aus dem NIC vor allem anderen -. Bis in die Ethernet-Paketebene
Das kann nicht mit C # erfolgen. Sie müssen wirklich C oder C ++ für diese Aufgabe verwenden.
UPDATE : Ich habe die letzte in Windows XP Tagen. Ich sehe von einer anderen Antwort gibt es eine neue, und wie es aussieht, einfachere API, wenn Sie Windows Vista ab.
Nicht sicher, ob es „vor dem O / S“, sondern sich auch und die Wireshark Bibliothek nutzt, libpcap .
Hier finden Sie aktuelle WinPcap - es verwendet einen NDIS-Treiber seine Paketfilterfunktionen zu implementieren. Diese Bibliothek kann wahrscheinlich eine ausgezeichnete Basis für jede Packet Inspection / Firewall-Programm zur Verfügung stellen Sie schreiben wollen würde, und es ist Open-Source. Aus http://www.winpcap.org/docs/docs_40_2/html/group__internals .html :
Als erstes wird ein Erfassungssystem muss Umgehen der Betriebssysteme Protokollstapel, um die für den Zugriff auf Rohdaten im Netzwerk Durchfuhr. Dies erfordert einen Bereich innerhalb laufenden der Kern des OS, Interaktion direkt mit den Netzwerkschnittstellentreiber. Dieser Teil ist sehr systemabhängig, und in unserer Lösung wird realisiert, wie ein Gerätetreiber, genannt Netgroup Paketfilter (NPF); wir bieten an verschiedene Versionen des Treibers für Windows 95, Windows 98, Windows ME, Windows NT 4, Windows 2000 und Windows XP. Diese Treiber bieten sowohl grundlegende Features wie Paketerfassung und Injektion sowie fortgeschrittenere diejenigen wie ein programmierbarer Filter System und eine Überwachungsmaschine. Das Zuerst kann eine verwendet werden, eine beschränken erfassen Sitzung auf eine Teilmenge der Netzwerkverkehr (beispielsweise ist es möglich, nur den FTP-Datenverkehr zu erfassen erzeugt von einem bestimmten Host), der zweite bietet eine leistungsstarke, aber einfacher Mechanismus zu verwenden, zu erhalten, Statistiken über den Verkehr (zum Beispiel ist es möglich, die Netzlast zu erhalten oder die Menge der ausgetauschten Daten zwischen zwei Hosts).