Verhindern von Hooks und Trojaner DLLs ...



  • Hallo,

    ich habe ein kleines Sicherheitsprogramm geschrieben. Nun möchte ich
    verhindern, das z.B. eine Trojaner DLL oder Hook DLL beim starten meines
    Programmes ausgeführt wird. (Diesen Trojaner gibts natürlich noch nicht 😉 )
    Ich stelle mir das so vor:
    Wenn jetzt das Programm geladen wird picke ich alle wichtigen Windows
    DLLs heraus und erlaube sie. Alle anderen DLLs dürfen keine Bindung mit
    meinem Programm eingehen. Vielleicht fliegt dadurch das ein oder andere
    Fenster-Style-Gimmick heraus, dadurch wirds aber sicherer. Zugelassen
    werden also nur relevante Sachen wie z.B.
    ntdll.dll
    kernel32.dll
    msvcrt.dll
    etc.

    Beim Visual Studio sehe ich diese gleich nach starten der Programmdatei,
    das diese geladen wurden.
    Ich suche also eine Art Hack, der das automatische Laden ersetzt.

    mfg
    thenoname



  • Öhh,

    dein Programm lädt/bindet doch die DLLs und nicht die DLLs dein Programm.
    Oder sehe ich da was falsch 😕



  • siehst du richtig, dasshalb soll mein Programm
    das binden verhindern, nicht die DLLs.
    Ich schreib doch nicht alle Microsoft DLLs um 😉



  • Achso,
    vielleicht sollte ich ein wenig in Hooks ausschweifen:
    Ein gesetzter Hook (womit ziemlich viele Trojaner arbeiten)
    besitzt Informationen über den Dateinamen, evtl. Ort und der
    anzuhängenden DLL Datei. D.h. wird mein xyz.exe gestartet wird
    automatisch von Windows die hook.dll integriert. (meist zwischen
    dem xyz.exe und einer Microsoft dll wie z.B. Kernel32.dll)
    Leider weiss ich nicht, wie ich das verhindern kann ??

    cu



  • 100% sicher gehts nicht, aber du kannst selbst Prozesse hooken, z.B. OpenProcess um zu verhindern, dass wer auf dein Prozess zugreift und die Registriy-Funktionen damit keiner die default-dlls erweitern kann.

    Infos findest du hier



  • Nette Seite, kannte ich bis jetzt noch nicht.

    Wäre es vielleicht möglich alle Hooks vor Programmstart zu löschen ?

    Da wäre natürlich die Frage ob es ein Programm gibt, das alle
    eingetragenen Hooks anzeigen kann ...



  • Du kannst Hooks von DLLs nach dem dein Programm gestartet ist wieder rückgänig machen. Aber das ist kein Schutz dagegen, dass solange dein Programm läuft diese hooks nicht wieder aktiviert/eingebaut werden.



  • Wenn die nötigen API-Funktionen bereits gehookt wurden, dann kann man den Hook nicht mehr einfach so loswerden, da man nicht mehr an die echten Funktionen kommt.



  • Solang nur eine DLL hookt kommst du IMMER an die Funktionen heran. Zum "Neuladen" der DLL reichen Native APIs und einige Funktionen selbst schreiben aus. Die Native APIs kann man per DLL nicht ganz hooken, da man über "int 2e" immer an sie ran kommt.



  • Ich sprach eigentlich von import idresstable hooking und die Interrupts kann man als Treiber ja ebenfalls "hooken"

    /Edit: Typo

    /Edit2: Hätte wohl erwähnen sollen, dass ich an import idresstable hooking dachte.


Anmelden zum Antworten