Kleines Sicherheitsprogramm erstellen...
-
Ich möchte eine kleines Sicherheitsprogramm erstellen ala Antivirus oder AntiSpyware, interessiere mich brennend für Sicherheitssoftware. Nun weiß ich nicht genau wie ich anfangen sollte, hat jemand eine Idee, z.B. in WinAPI wie ich sowas realisieren sollte. Es muss nicht viel anfangs können, aber es sollte Dateien indentifizieren können nach bestimmten Kriterien auflisten oderso.
Hoffe ihr könnt mir paar tipps geben

-
Dieser Thread wurde von Moderator/in Korbinian aus dem Forum Projekte 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.
-
Ich glaube du brauchst sowas wie file hooks, damit du dein programm anspringen lassen kannst, wenn windows auf eine datei zugreift.
-
Wenn ich richtig verstanden habe, liegt doch der Scanner zwischen dem Betriebssystem und dem Benutzer, also wenn der Benutzer auf eine Datei zugreifen möchte wird diese von Scanner erstmal überprüft oder?
Ich müsste vielleicht erstmal alle Zugriffe vom Benutzer realisieren und auswerten, damit müsste ich dann weitermachen.
Habt ihr noch welche wichtige Informationen bzw. WinAPI Funktionen die ich verwenden sollte???
-
Dann tauche mal teif ins eingemacht und fangmal hier an zu lesen:
Filter Driver
http://msdn.microsoft.com/en-us/library/aa490247.aspx
-
Du solltest mit einer Scanengine anfangen welche Dateien, Prozesse und deren geladenen Module(DLLS), Registryeinträge etc pp überprüfen kann.
Wenn du dann irgendwas erkennen kannst. Kannst du über On-Access methoden nachdenken. Viel wichtiger ist aber erst mal das dein On-Demand Scanner funktioniert

Eine Möglichkeit für On-Access wäre z.B. Shellexecute Hooks auf Windowssystemen vor Vista oder z.B. "File System Filter Drivers" die sollten auch auf Vista System laufen.
Für die Scanengine könntest du dich von ClamAV inspirieren lassen, wobei du dich da noch nicht zusehr inspirieren lassen solltest da die engine nicht sonderlich sauber geschrieben wurde.
BR
Vinzenz
-
Da hast du dir ja mal einen Bereich ausgesucht..

Hab da vielleicht ein paar Anreize für deine Todo Liste:
Um vorallem Trojaner zu unterbinden müsstest du folgende Dinge tun:kernel32.dll, ntdll.dll, user32.dll auf intigrität prüfen (ob hooks in form von detours, int3 oder hardware breakpoints, Import Address Table gesetzt wurden),
da diese oft zum verstecken vor dem User benutzt wird (findfirstfile/nextfile).Dann gilt es (vorallem in Hinsicht auf rootkits) das Laden von Treibern zu überwachen. Du setzt also selbst hooks auf diverse API's. Natürlich darfst du auch nicht vergessen, das Treiber auch über Exploits geladen werden können

Dann musst du noch davon ausgehen, dass es eventuell doch mal ein rootkit in den arbeitsspeicher schafft ;). Also scannst du diverse Tables im kernel (sdt/idt) und natürlich die nativen api's im kernel auf hooks.
Außerdem solltest du dir die Prozesseliste einmal im Usermode über die normalen API's holen, sie aber auch aus dem Kernel heraus aus einer Liste beziehen. Somit kannst du eventuell versteckte Prozesse finden.Desweiteren sollte man noch das ausführen einiger API's auf bestimmte Prozesse überwachen. Z.B. wäre ich bei einem call von WriteProcessMemory auf die explorer oder winlogon.exe schon sehr misstrauisch

Habe ich schon erwähnt das du dein Antivirus auch noch protecten musst ?
Wäre ja sonst ein leichtes Spiel für den Angreifer...
Also schön die eigenen Gesetzten hooks scannen und jeglichen access auf dein Antivirus (OpenProcess oder ähnliches) unterbinden.Das waren nun so die Dinge, die mir grad eingefallen sind... da fehlt sicher noch einiges... ist also ein ziemlich umfangreiches und vorallem anspruchsvolles Unterfangen :p