Firewall für Registry entwickeln



  • Hallo, mir ist eben eine Idee eingefallen, ich möchte eine Art Firewall für die Registry erstellen, damit soll verhindert werden das in bestimmte Schlüssel Daten reingeschrieben werden wie z.B. in:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

    Das Programm müsste ganze Zeit im Hintergrund arbeiten, also als Service welcher das schreiben verhindert, hierfür würde doch eine normale Konsolenanwendung ausreichen oder?!?!

    Mein Problem, wie soll verhindert werden das in ein Key reingeschrieben wird, soll das Programm bei Veränderungen handeln und wie oft soll das Programm prüfen ob was geändert wurde?

    Ich bitte um Lösungsansätze 🙂



  • Dann ist es keine Firewall, denn die blockiert ja, sondern ein WatchDog Prozess.

    Nach deinem Ansatz muss der Wachhund bei Schichtbeginn eine Datenbank der interessierenden Keys mit ihren Inhalten haben.

    Mit periodischen Abgleich mit SHGetValue wird dann gebellt, wenn der Inhalt verändert wurde.

    Kenn mich jetzt nicht wirklich damit aus, aber mein Bauch sagt mir, dass dies ein ziemlich schlechter Ansatz ist.



  • man kann doch bestimmt einen Hook setzen auf RegCreateKey oder wie die heißen usw.
    Dann guckst du, ob das iO ist, was gemacht wird, und wenn ja, dann leitest du das ans os weiter.



  • Also deinem Namen nach müsstest du doch einen (Kernel) Filtertreiber schreiben 😉

    Nee also im allgemeinen ist ein Filtertreiber natürlich die "korrekteste" Methode, falls du diese "Firewall" unbedingt im Userspace implementieren willst, kannst natürlich auch einen Service _oder_ eine Konsolenanwendung schreiben (Das ist ein Unterschied!)

    Um dann zu "merken" wann ein Programm etwas in der Registry verändern will, müsstest du alle Programme hooken.
    Da gibt es auch wieder verschiedene Möglichkeiten:

    Da wäre das Verändern des Import Table der Programmes (mir fällt der exakte Name dafür gerade nicht mehr ein), das ist aber relativ unsicher, da deine Firewall z.B. umgangen wird, wenn das Programm die Funktionen über LoadLibrary + GetProAddress holt.
    Zum anderen gibt es auch noch das Verändern des Export Table der Dll die die Funktionen exportiert. Nachteil ist das selbe Problem, wenn das Programm die Funktionen _bevor_ deine Firewall geladen wurde = die Dll gepatched hat.
    Die beste Lösung wäre wahrscheinlich das überschreiben der ersten 5 Bytes der betroffenen Funktionen in der Dll like z.B. "detours".

    Neuer AVs haben solche Ansätze übrigens auch schon implementiert...





  • Dieser Thread wurde von Moderator/in Korbinian aus dem Forum Projekte in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Vielleicht ist ja alles viel einfacher : RegNotifyChangeKeyValue
    🙂



  • Im Programm muss doch ein Timer laufen, welcher in einem bestimmten Intervall mit der Funktion RegNotifyChangeKeyValue prüft ob was verändert wurde, das ist so mein Gedanke. Ist dieser Lösungsansatz in Ordnung?



  • kernel64 schrieb:

    damit soll verhindert werden das in bestimmte Schlüssel Daten reingeschrieben werden wie z.B. in:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

    Wenn man sich etwas mit der Windows-Sicherheit und vorallem da etwas mit der Benutzerverwaltung beschäftigen würde, dann wüsste man, dass Microsoft schon entsprechende Vorkehrungen getroffen hat. Man muss sie nur anwenden. Dann brauch man sich keine Gedanken über solchen überflüssigne Programme zu machen.


Anmelden zum Antworten