titel - Wie greift ein Windows-Virenschutzprogramm in den Dateizugriffsprozess ein?




title tag länge 2018 (4)

Das Thema sagt alles. Ein normales Antivirenprogramm muss alle Dateizugriffe abfangen, die Dateien scannen und dann optional den Zugriff auf die Datei verweigern (möglicherweise sogar eine Eingabeaufforderung für den Benutzer anzeigen). Wie kann das gemacht werden?

Ich kenne eine Methode, die API-Hooking genannt wird, aber das ist ein wirklich schmutziger undokumentierter Hack - und als solcher nicht wirklich zuverlässig. Was ist der "offizielle" Weg, dies zu tun?

Alternativ wäre ich daran interessiert, das Laden von ausführbaren Modulen (.DLL, .EXE usw.) abzufangen, nicht nur willkürliche Dateilesevorgänge.



Der Dateizugriff wird mithilfe des Dateisystemfiltertreibers überwacht, der im Kernelmodus arbeitet. Filtertreiber können nicht nur über Dateisystemoperationen benachrichtigt werden, sondern auch die über Filter übergebenen Daten ändern oder Dateisystemanforderungen ablehnen.

Sie können selbst einen Minifilter erstellen, aber die Wartung und Unterstützung Ihres Kernel-Modus-Codes kann nicht trivial sein, insbesondere ohne Kernel-Mode-Entwicklungserfahrung. Eines der Probleme sind Konflikte zwischen verschiedenen Filtern.

Unsere Firma bietet das CallbackFilter Produkt an, das einen gebrauchsfertigen Treiber zur Verfügung stellt und Ihnen ermöglicht, Geschäftslogik, die sich auf die Filterung bezieht, im Benutzermodus zu schreiben.


In den neueren Versionen von Windows (mindestens ab XP) gibt es das Konzept "Filter", das mit MS Filter Manager angezeigt werden kann, (fltmc.exe von einer Eingabeaufforderung)

Dies bietet einen Low-Level-E / A-Hook, auf den AV-Programme zugreifen und sich automatisch registrieren können, um alle E / A-Anforderungen an das Dateisystem zu übergeben. Es ist ein Kit, das Sie die Treiber für eine eigene Filter für entwickeln können.

http://www.microsoft.com/whdc/driver/filterdrv/default.mspx ist ein Ausgangspunkt, um detaillierte Informationen zu erhalten.


Sie können über die Umwege Bibliothek von Microsoft lesen und es kostenlos ausprobieren - es ermöglicht Ihnen, Benutzermodus-Hooks in c # zu schreiben. Du brauchst dich nicht über Fahrer zu informieren:]

Allerdings - für Kernel-Modus Haken - müssen Sie wissen, c und spielen mit dem DDK - atleast afaik: [

Und die meisten modernen Antivirensoftware fängt ziemlich viele Anrufe ab - Registry-API, Thread- und Prozess-API usw. - nicht nur das Dateisystem-API. Wieder - afaik.

edit: Es gibt auch ein paar Open-Source-Rootkits - google sie und sieh, wie sie ihr Hooking durchführen, es wird lehrreich sein.







antivirus