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.