![]() |
Softwareidee für Antivirenergänzung [Lösungsansätze gesucht]
[EDIT: Für alle, denen das zu viel Text ist: der relevantere Teil (meine konkreten Fragen) befindet sich weiter unten und ist Fett gedruckt.]
Da ich sie selbst nicht umsetzen kann, die Idee aber prinzipiell für brauchbar halte und glaube, dass dies auch für Andere interessant sein könnte, möchte ich euch hier eine Programmidee vorstellen: Ich stelle mir ein Programm vor, das nach Programmstart einen Dateipfad zu einer beliebigen .exe abfragt (den User fragt) und diese Anwendung dann "begleitet" ausführt. Sinn des Programmes soll es sein, dass wenn die gewählte .exe Datei Dateien erstellen möchte, eine andere Datei ausführen möchte (.exe, .bat, .vbs oder irgendetwas anderes), einen Service erstellen möchte, ins Internet gehen oder Änderungen in der Registry vornehmen möchte, dass das Programm dann diese Aktionen unterbindet und den User fragt "darf er das?" und erst wenn der User dies mit "jop, geht in Ordnung" bestätigt, soll die Datei die gewählte Aktion durchführen dürfen. Dabei soll dem User aber auch genau angezeigt werden, welche Dateien, in welchem Verzeichnis und wohin extrahiert werden, was gelöscht wird und zu welchen Seiten/Servern die .exe kommuniziert (bevor die .exe das macht und bevor der User das bestätigt - damit er weiß, was er da bestätigt) Sinnvoll wäre auch, dass dieses Programm dauerhaft im Hintergrund läuft und bei dem Start einer .exe erst fragt, ob die .exe überhaupt gestartet werden soll und dann bei (fast) jeder Kleinigkeit (siehe oben) erneut eine Bestätigung einholt. Damit das Nutzen des favorisierten Browsers nicht zur Tortur wird, sollte die Funktion bestehen, eine bestimmte .exe als "vertrauenswürdig" zu markieren, die dann folglich nicht mehr geprüft wird. Warum das ganze? Heruntergeladene Dateien beinhalten oft unangenehme Überraschungen (z.B. noch viel mehr Programme, die man nie haben wollte oder wunderschöne Werbeanzeigen, die alle 2 Minuten erscheinen etc.), die Antivirenscanner oft nicht sehen. Generell bin ich enttäuscht von Antivirenscannern, weshalb ich diese Lösung als (zumindest für etwas fortgeschrittenere User) sinnvoll ansehe. Da das Projekt recht umfangreich ist, wäre es zu viel verlangt, wenn ich fragen würde, ob das jemand für mich programmiert, aber falls ihr Ideen habt, wie man das umsetzen kann (oder allgemeine Kritik an der Idee), wäre ich euch sehr verbunden. Solltet ihr die Idee für unnütz oder blöd halten, klärt mich bitte auf, warum. Der Vorteil einer solchen Software wäre, dass sie einem erfahrenen Nutzer immer verraten kann, ob man es mit einem Virus zu tun hat oder nicht bzw. wie man das wieder rückgängig machen kann, was die Anwendung "verbrochen" hat. Sollte man der Anwendung die Aktionen gewähren (oder nicht), kann man auch alles, was die App macht / vorhat, zu tun, in eine Logdatei schreiben, damit man später genaueres über den Vorgang erfahren kann. Sollte ich das Projekt irgendwann fertigstellen, werde ich es hier als open Source einstellen Meine konkreten Fragen dazu könnt ihr gerne auch teilweise beantworten: 1. wie stelle ich fest, dass eine Anwendung vor hat, Dateien zu erstellen, ändern, löschen, kopieren, lesen? 1.1 wie kann ich das (temporär) verhindern und erst nach Bestätigung freigeben? 1.2 (wie) kann ich wissen, welche Dateinamen die betreffenden Daten haben? 2. wie stelle ich fest, dass eine Anwendung ins Internet möchte? 2.1 wie kann ich das (temporär) verhindern und erst nach Bestätigung freigeben? 2.2 (wie) kann ich wissen, welche Seiten/Server aufgerufen werden sollen? 3. wie stelle ich fest, dass eine Anwendung irgendeine andere Datei aufrufen möchte? 3.1 wie kann ich das (temporär) verhindern und erst nach Bestätigung freigeben? 3.2 (wie) kann ich wissen, welche Dateien aufgerufen werden sollen? 4. wie stelle ich fest, dass eine Anwendung Dienste erstellen möchte? 4.1 wie kann ich das (temporär) verhindern und erst nach Bestätigung freigeben? 4.2 (wie) kann ich abfragen, welchen Pfad die Datei des zu erstellenden Dienstes hat? 5. Wie kann ich prüfen, ob eine .exe versucht, ausgeführt zu werden? (wenn das Programm dauerhaft im Hintergrund läuft oder geht das auch per Event, das bei .exe Start ausgeführt wird?) Eine ergänzende Idee dazu wäre auch, sowas wie den Root für Windows zu basteln, indem vor jeder kritischen Änderung (etwas in den Autostart schieben, Dateizugriff in %appdata% oder %windir% oder C:\Programme, Service erstellen, etc.) eine (Passwort-)Abfrage stattfindet. Letztere Idee kann optimiert werden, wenn der Nutzer wählen kann, bei welchen Ereignissen er genervt werden will. Vielen Dank für die Mühe, dass du diesen langen Text gelesen hast :) |
AW: Softwareidee für Antivirenergänzung [Lösungsansätze gesucht]
Praktisch alles was du machen willst, ist mit globalen WinAPI Hooks realisierbar. Dazu dürftest du im Netz eine Menge an Informationen finden. Grob beschrieben lenkst du die API Aufrufe aller gestarteten Programme auf eigene Callback-Funktionen um. In diesen Callbacks kannst du nun nach Belieben Input Parameter und Rückgabewerte modifizieren oder auch den Aufruf der originalen API einfach unterlassen.
Am Beispiel von ![]()
Delphi-Quellcode:
Für globale Hooks hast du zwei Methoden:
function MessageBoxWCallback(hWnd: HWND; lpText, lpCaption: LPCWSTR; uType: UINT): Integer; stdcall;
begin if ((uType or MB_ICONERROR) = MB_ICONERROR) then begin // Wir moegen keine Fehlermeldungen Result := IDOK; end else begin // Fuer alles Andere rufen wir die Originalfunktion auf, aber aendern den Titel Result := MessageBoxWOrig(hWnd, lpText, 'Hook Title', uType); end; end;
Beide Methoden haben Vor- und Nachteile. Beim Usermode Hooking benötigst du den Code in den meisten Fällen sowohl als 32-, als auch als 64-Bit Kompilat und musst zudem den Start neuer Prozesse überwachen (gut, das funktioniert mit einem ![]() Fürs Kernelmode Hooking brauchst du einen signierten Treiber. Zudem kann man seit Vista nicht mehr ohne Weiteres die SSDT patchen, da ein neues Sicherheits-Feature namens Patch-Guard integriert wurde. Für viele Fälle stellt Windows allerdings nativ Filter und Callbacks zur Verfügung. Ob sich die Sache lohnt, ist allerdings eine andere Frage: Hooks werden von existierender AntiViren Software oft als schädliche Modifikation erkannt. Außerdem gillt (insbesondere bei Ring3 Hooks): Sofern ein Programm damit rechnet, gehookt zu werden, ist der Aufwand die Hooks zu umgehen nicht sonderlich groß. |
AW: Softwareidee für Antivirenergänzung [Lösungsansätze gesucht]
Zunächst danke für die schnelle Antwort.
Da ich mich auf diesem Gebiet noch nicht bewegt habe und das ganze überwiegend dazu dienen soll, die üblichen Ich_installiere_dir_mal_noch_alles_an_Müll_was_ich _so_finde und Ich_installiere_mich_an_unübliche_Orte_und_habe_ke ine_Deinstallationsroutine Programme etwas zu entkräften, möchte ich mal erfragen, ob es üblich ist, dass diese Programme Hooks bemerken und sich dagegen wehren. Wenn nicht wäre der ring0 Kernelmode Hook das, was ich ausprobieren würde. Dass dieser nicht ohne Weiteres implementiert werden kann, legt nahe, dass es eben doch irgendwie möglich ist. Da du dich da auskennst frage ich einfach mal, um mir die Recherche zu ersparen, ob es ein vertretbarer Mehraufwand beim Nutzen des fertigen Programmes ist und / oder nur die Programmierung weit aufwändiger ist? Da Hooks allgemein offensichtlich recht einfach umgangen werden können, stellt sich mir die Frage, ob es überhaupt möglich ist, das, was ich vor habe, so umzusetzen, dass es nicht umgangen werden kann. Das Problem ist ja unter Windows, dass so gut wie jedes Programm Adminrechte bekommt, wenn es will und der Endnutzer das auch nicht ungewöhnlich finden muss, da jede Installationsroutine Adminrechte braucht, dann aber auch alles tun kann, was sie will. Sinnvoll wäre es, dass man nur Adminrechte für eine spezifische Handlung einfordert (wie bei Linux die root-Abfrage) Die Umsetzung eines solchen Unterfangens stelle ich mir realisierbar vor, glaube aber, dass der Aufwand sich kaum lohnen würde: Ich glaube, dass man dem Admin bzw. der Admingruppe sämtliche Rechte entziehen kann, einen Ersatzadmin erstellt (der mit der Admingruppe nichts zu tun hat), nennen wir ihn Rolf und bei jeder Adminhandlung (Zugriff auf C:\Windows oder regedit zum Beispiel) sagt Windows "nö!" Um das ganze doch tun zu können, könnte man dann die Andwendung nicht als Admin, sondern als Rolf ausführen und innerhalb dieses Rolfkontos könnte das ganze ring3 oder ring0 gehookt werden, da der Hook (meines Wissens) nur als Admin (der dann ja nichts mehr zu melden hat) umgangen werden kann, was aber als Rolf auch nicht drin ist, da Rolf das auch untersagt wird. Ist das so überhaupt umsetzbar und wenn ja, ist es dann auch realistisch, dass das praktische Anwendung finden könnte? (Die Rolflösung müsste natürlich auch von der Software eingerichtet werden, da das keinem normalen Nutzer zuzumuten ist) |
AW: Softwareidee für Antivirenergänzung [Lösungsansätze gesucht]
Zitat:
Zitat:
Wo ist der Unterschied ob das Admin-Konto Admin oder Rolf heißt? Und die Gruppen vereinfachen nur die Zuweisung von Rechten. Anstatt jede 100 Benutzerkonten einzeln zu konfigurieren, konfiguriere ich eine Gruppe und ordne den Benutzern der Gruppe zu. Klar kannst du deinen Rolf keiner Gruppe zu weisen und ihm dann doch wieder alle rechte geben, die ein Admin normalerweise hat. Nur was hast du damit gewonnen? Und ob du in der UAC jetzt dem Admin "Admin" ein gibts oder den Admin "Rolf" spielt keine Rolle. Apropos dein "Nö", das macht Windiws bei aktivierter UAC so wie so und fragt nach einem Benutzerkonto mit den nötigen Rechten. |
AW: Softwareidee für Antivirenergänzung [Lösungsansätze gesucht]
Falls du zu dem Thema noch Informationen brauchst:
Unter Linux gibt es sowas schon lang. Bekannteste Vertreter sind ![]() ![]() Das Erstellen eines solchen Regelsatzes ist jedoch recht aufwendig. Im Allgemeinen wird SELinux dafür in einen Modus versetzt, der alle Zugriffe zulässt. Anschließend wird mitgeloggt und daraus ein Profil erstellt. Man geht also davon aus, dass das Programm während es läuft sicher ist und nur das tut, was es tun soll. Natürlich kann man auch manuell nacharbeiten. Generell ist der Ansatz von der Idee her nicht schlecht. Meiner Meinung nach ist er für Endanwender allerdings denkbar ungeeignet. Der durchschnittliche Benutzer hat keinerlei Ahnung von gar nichts und kann mit Begriffen wie Administrator, Berechtigung, Programmverzeichnis, Exe usw. überhaupt nichts anfangen. Für das Härten eines Servers sieht die Sache anders natürlich dabei aus. Die größte Gefahr stammt daher meiner Meinung nach aus dem Umgang mit ausführbarem Code unter Windows. Wenn ich als erfahrener ITler selbst nicht mehr in der Lage bin, Werbung vom richtigen Downloadbutton auf einer Webseite zu unterscheiden, dann läuft etwas gewaltig schief. Unter Linux fährt man daher seit Jahrzehnten mit Paketlisten. Nahezu alle was ich auf dem Desktop brauche ist mit dem gleichen, einheitlichen Befehl installiert. Software herunterladen und installieren ist vollkommen out und verpönt. Toll wäre es, dies in der Microsoftwelt zu etablieren. Natürlich ist Linux auch nicht Virenfrei. Aber das Einfallstor ist nicht der dumme Nutzer, der die Rechnung.exe aus dem Anhang öffnet. Es sind Bugs in Programmen, die man irgendwann schon in den Griff bekommen wird. Dass ich meine Programme aus bekannten, verifizierten Listen beziehe, ist ein riesiger Vorteil in Sachen Sicherheit und auch Einfachheit. Sorry, das ist jetzt etwas ausgeartet, aber vielleicht interessiert's ja jemanden... |
AW: Softwareidee für Antivirenergänzung [Lösungsansätze gesucht]
Zitat:
Zitat:
Zitat:
Dass das umter Linux schon recht gut umgesetzt wird weiß ich und das ist auch das Vorbild meiner Überlegung, sowas in Windows auch einzubinden. Die Sache mit dem Rolf war nicht so gemeint, dem Admin bloß nen anderen Namen zu geben, sondern dafür zu sorgen, das ein Programm, das Admjnrechte hat, sich nicht ganz frei austoben kann wie als admin üblich. Die "Admin"Rechte wären dann useless, aber der Rolf (an sich auch useless) soll die Schnittstelle zwischen bekannten Adminrechten und dem Nutzer sein, wie in einer halben Sandbox, indem Rolf zwar auch alles gestatten kann, aber im Gegensatz zum bekannten Admin erst nach Durchwinken vom User. Das soll mit dem angesprochenen Hook geschehen, der ja nur mit Adminrechten umgangen werden kann (soweit ich weiß - wenn nicht ist die ganze Überlegung natürlich sinnfrei), was aber nichts wird, da dem Admin die Rechte dazu fehlen. Rolf soll sie aber auch nicht bekommen (den Hook auszuhebeln) und dann klappt das ganze so, dass ich etwas als Admin ausführen kann oder als Rolf und letzterer lässt die Änderung am System nur zu, wenn der Nutzer sein " okay" gibt. Sicherlich ist das dann auch nicht die ultimative Lösung, da die Zielgruppe "ganz unerfahren" logischerweise ausscheidet, die Zielgruppe "hab ich nicht nötig, weil ich weiß was man installieren sollte" auch, aber für "ich kenne mich mit Computern aus, lade mir aber gerne/umabsichtlich Mist runter" wär das genau das richtige. Letztere Zielgruppe ist glaube ich die schrumpfende Mittelschicht der Anwender, für die das genau das richtige wäre. Und es muss ja nicht unbeding die bekannte Rechnung.exe sein. Manchmal lädt man sich ein Programm von Chip.de runter und der Installer schlägt einem standardmäßig aktiviert vor, dies umd das noch gleich mit zu installieren und dann hat man den Salat. Das ist schon häufiger die Ursache gewesen, dass mich Leute gefragt haben, ob ich ihren Müll entfernen kann. Sowas kann mal passieren und wenn man nicht 100% weiß wo das sitzt oder dass das passiert (bzw beides) hat man verloren. Darum halte ich es für halbwegs sinnvoll, auch wenn es die bekanntesten Zielgruppen nicht bedienen kann. Zitat:
|
AW: Softwareidee für Antivirenergänzung [Lösungsansätze gesucht]
Mein Problem mit der UAC ist, dass sie fragt "bla.exe möchte Adminrechte. Ja Nein" was ich haben wollen würde ist dann sowas wie "bla.exe möchte in Verzeichnis xyz und Unterverzeichnissen Lesen und schreiben". Checkboxen mit "Lesen", "Schreiben", "Unterverzeichnisse auch" und Buttons "markiertes erlauben" und "nichts da!"
|
AW: Softwareidee für Antivirenergänzung [Lösungsansätze gesucht]
Das klingt ja nach RBAC & Co. ähnlich wie GRSecurity oder FreeBSD oder oder...
Willst du das wirklich selber bauen...? Das erfordert spitzenmäßige OS Kenntnisse, zumindest wenn das Ganze auch was taugen soll... Ich hätte gerne 'ne SRC-Kopie als Delphi-Code, in den ich mich dann die nächsten 20 Jahre einarbeiten kann... Aber "AV-Ergänzung" finde ich lustig.. die AV-Software macht dann alles wieder kaputt was die Sicherheitssoftware mühsam etabliert hat... Zitat:
Sowas macht hübsch aggressiv... alleine schon was man da für Zeit reinbuttert... Zitat:
Zitat:
Ich glaube, dass man soetwas nur mit extrem starker Nutzungseinschränkung bauen kann. Jede Abfrage/oder Meldung für normle Nutzer wie UAC & Co. sind ohne Bedeutung wenn der Nutzer sie nicht beantworten kann oder versteht was da eigentlich passiert. Ist aber ein interessantes Thema so eine Software für Standard-Windows-Versionen zu bekommen... Groß ist die Auswahl da ja nicht, oder ich hab' bis jetzt an der falschen Stelle geschaut... Vielleicht werde ich in 100 Jahren auch mal so gut, dann greife ich das auf jeden Fall auch auf... Viel Erfolg! |
AW: Softwareidee für Antivirenergänzung [Lösungsansätze gesucht]
Zitat:
Dass das mit der Bestätigung nicht so gut klappt, wenn sich jemand nicht gut auskennt, sieht man daran, dass viele dann einfach UAC Anforderungen ohne zu lesen bestätigen. Wenn dann noch mehr Fragen kommen, wird man erst recht abgestumpft... |
AW: Softwareidee für Antivirenergänzung [Lösungsansätze gesucht]
Zitat:
Gefühlt würde ich sagen dass Anti-Virenprogramme eher (ziemlich wahrscheinlich) Hooks umgehen, Viren oder generell Malware wahrscheinlich nur zum Teil (Ich würde mal unqualifizierte ~10% in den Raum werfen) Hooks umgehen. Bei "normalen" Programmen liegt der Anteil wahrscheinlich unter 1%. Das sind wie gesagt komplett in den Raum geworfene Zahlen, aber ich denke mal dass sie nicht allzu fern von der Realität sind. Zitat:
Außerdem kannst du dann Delphi schon mal vergessen (falls du vor hattest dafür Delphi zu verwenden). Zitat:
Ich würde zumindest mal in Ring3 anfangen und einfach mal Copy oder/und CreateFile hooken und ein bisschen rumtesten ob sich meine Zahlen oben bestätigen. Wenn sich herausstellt (was ich nicht denke), dass jedes 2. Programm deine Hooks umgeht (oder ganz allgemein für deinen Geschmack "zu viele") dann musst du dir die Ring0 Hooks vielleicht doch mal anschauen. Aber würde erstmal Ring3 antesten. Zitat:
Und ich denke wie gesagt, dass es unterm Strich mindestens 90% aller Programme NICHT tun. Was mir aber noch eingefallen ist: Könnte man nicht das umgehen von Hooks umgehen indem man GetProcAddress hookt? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz