Alles anzeigen
Ich verweise mal hierrauf:
http://blog.fefe.de/?ts=afa06cee
und das is nur einer der gründe...
Außerdem muss man verstehen wie Antiviren Funktionieren: Sie erkennen bekannte Viren, Würmer etc. Da diese bekannt sind, sind auch die Sicherheitslücken bekannt und sollten gefixed worden sein. (Also alles up to date halten). Natürlich versuchen sie auch unbekannte Schadware zu finden, aber das funktioniert ziemlich unzuverlässig, das fällt kaum ins Gewicht.
Damit die Antiviren arbeiten können, werden für sie ziemlich viele Sicherheitsvorkehrungen ausgehebelt, prinzipbedingt. Das kann ausgenützt werden, also machen sie das System eher unsicher. Wenn man sich mit den gängigen Hackmethoden auskennt, kann man sich auch recht gut dagegen schützen. Sicher sind Systeme ja nie, dafür sind sie viel zu komplex...
Aber mir is das auch zu doof weiter zu erläutern, das ist ein sehr komplexes Thema, dass ich auch nicht ganz überblicke, ich verlasse mich da auch viel auf fefe's aussagen. Aus meiner und auch seiner Sicht sind die Antiviren halt ziemliche Geldmacherrei..
ioctl ist ein Systemaufruf, der im Prinzip die Datenein- und Ausgabe steuert. ioctl kommuniziert mit dem jeweiligen Gerätetreiber, der dann wiederum die Daten bereitstellt, die dann letztendlich der CPU zur Berechnung zur Verfügung gestellt werden. ioctl agiert im Kernelspace, wohingegen der Treiber im Userspace agiert, es sei denn, es handelt sich um einen strikt monolithischen Kernel (alte Linux-Versionen), dann läuft auch der Treiber im Kernelspace. Die Trennung von Kernel- und Userspace diente allerdings ursprünglich nicht der Sicherheit, sondern der Stabilität des Systems.
Dass Antiviren-Software auch im Kernelspace agieren muss, versteht sich eigentlich von selbst, denn sonst gäbe es einen Speicherbereich, der von Viren beliebig in Beschlag genommen werden könnte. Durch einen eigenen ioctl kann der Treiber der Antivirenengine direkt mit der Speicherverwaltung des Kernels kommunizieren, was auch wichtig ist, da API-Aufrufe beispielsweise durch ein Rootkit manipuliert sein könnten. Die Tatsache, dass der Antiviren-Kerneltreiber nur selten upgedated wird liegt an der Tatsache, dass sich dessen Arbeitsweise praktisch nicht ändert.
Dass das Schreiben in den Kernelspace über Pokes gemacht wird ist auch logisch, denn das könnte ein Virus auch, außerdem wäre es sonst nur über die API möglich, was unsicher wäre oder vom Kernel nicht gestattet wird. Dass der Windows Defender keinen eigenen ioctl hat, liegt daran, dass er den ioctl vom Kernel benutzen kann (er kommt ja schließlich von Microsoft). Code Signing ist übrigens auch kein wirksamer Schutz, da jedes Zertifikat gehackt oder geklaut werden kann.
Antiviren-Software muss Sicherheitsmechanismen aushebeln, da dies genau das ist, was Malware macht. Das kann natürlich ausgenutzt werden, weswegen eine anständige Antiviren-Software bei jeder Initialisierung einen Selbsttest ausführt.
Klar, Virenscanner kennen nur bekannte Muster, die heuristische Suche ist auch noch lange nicht perfekt, das wichtigste ist allerdings der Virenwächter, der die ganze Zeit über im Hintergrund läuft und nach virentypischem Verhalten Ausschau hält. Durch Code-Morphing oder Obfuscating kann sich ein Schädling auf der Festplatte tarnen und zeigt erst beim Aufruf seine wahre Gestalt. Genau dann schreitet der Virenwächter ein.
Wie Mr. Freeze schon sagte, gibt es kostenlose Antiviren-Software, die in der Regel besser ist, als ihr Ruf. Sie sollte nur einen Virenwächter besitzen und sie muss eventuell richtig konfiguriert werden, da manchmal aus Performancegründen etwas unsicherere Voreinstellungen getroffen werden.
Allerdings muss ich grundsätzlich zustimmen, dass ein Antivirenprogramm allein nicht ausreicht. Der Anwender muss sein System pflegen und sollte verdächtige Webseiten meiden.
(P.S.: das Thema ist wirklich sehr komplex und mir raucht jetzt der Schädel, deswegen sage ich nur: Antiviren-Software ist wie poppen mit Gummi - klar stört da was und er kann platzen, aber im Zweifelsfall nie ohne :wink: )