Wider die Virulenz

M. Reinhardt


In den letzten Jahren sind Computerviren durch die steigende internationale, aber auch die lokale Vernetzung eine echte Gefahr geworden. Dieser Artikel beschreibt die Überlegungen, welche bei der Erstellung eines Antivirenpaketes zu beachten sind, wobei hier anzumerken ist, daß es keinen 100prozentigen Schutz vor Viren geben kann. Am Ende des Artikels findet der Leser noch ein kleines Viren-Wörter-Buch.

Vorab stellen und beantworten wir zunächst die Frage: "Was bezeichnet in der hier geführten Diskussion eigentlich das Wort Virus". Nun, gemeint sind hier nicht Viren im medizinischen Sinn, sondern Computer-Programme, welche ähnliche Verhaltensweisen wie Viren an den Tag legen. Derartige Computer-Viren können nämlich sich selbst reproduzieren und damit zahlreiche Programme in einem System "infizieren" und darüber hinaus Fehlfunktionen verursachen, Datenbestände zerstören, Hardware zerstören sowie sich nachteilig auf Ressourcen wie Speicherplatz und Rechenzeit auswirken.

Welche Überlegungen stehen nun hinter der Erstellung bzw. dem Entwurf eines Antivirenprogrammes. Zunächst gilt einmal folgendes: Die Virensuche sollte schnell und unauffällig möglich sein. Ferner muß im Falle einer Infektion des zu schützenden PCs der gefundene Virus zuverlässig entfernbar sein. Auf der einen Seite steht hier eine hohe Erkennungsrate auf der anderen Seite eine gute Performance, das heißt also, daß für möglichst viele der bekannten Viren überprüft werden muß, ob sie den Datenträger oder aber den Hauptspeicher des Rechners infiziert haben, wobei diese Überprüfung in möglichst kurzer Zeit zu erfolgen hat.

Eine Antivirensoftware muß in sehr kurzen Abständen aktualisierbar und am besten modular aufgebaut sein, damit durch Hinzufügen entsprechender Module neue Viren durch die entsprechenden Routinen erkannt werden können. Denn es können nur bekannte Viren, welche auch entsprechend analysiert wurden, von einem Antivirenprogramm entdeckt werden. Besonders gefährdet ist ein PC durch ständig in Umlauf gebrachte neue Viren, auf die die aktuelle Version des Antivirenprogramms noch nicht reagieren kann.

Ein leistungsfähiges Antivirenprogramm muß folgende Komponenten enthalten:

Weitere Komponenten, welche speicherresident sind und damit in Wechselwirkung mit anderen Programmen stehen können, sind folgende Programme:

Damit der Offlinescanner Viren suchen kann, benötigt er Informationen über die zu erkennenden Viren, die sog. Scandaten. Die gebräuchlichste Methode besteht hier darin, nach für einen Virus charakteristischen Bytefolgen zu suchen. Dabei ist wegen der großen Anzahl von Viren zu beachten, daß die Scandaten so aufbereitet werden, daß ein Scannen der zu untersuchenden Dateien/Datenträger in vertretbarer Zeit ausgeführt werden kann. Die Suchzeit reduziert sich nun dadurch, daß nur an bestimmten Stellen nach Viren gesucht werden muß. Wird ein Scanstring gefunden, sollte festgestellt werden, ob es sich um den angenommenen Virus oder um eine seiner Varianten handelt. Dazu wird bzgl. des invarianten Teils eines Virus, dies ist derjenige Teil, welcher bei jeder Infektion gleichbleibend ist, wie z.B. der Code, der den Virus repliziert oder aber seinen Effekt beschreibt, eine Prüfsumme berechnet, welche dann bei der Suche nach dem Virus verwendet werden wird.

Die oben beschriebenen Scanstrings haben nun aber leider den Nachteil, daß sie nur Viren beschreiben können, welche bei jeder Infektion identisch aussehen. Da nun aber Viren existieren, welche sich vor ihrer Ausführung selbst entschlüsseln, und damit auch nur über wenig invarianten Code verfügen, muß ein Antivirenprogramm in der Lage sein, den Virus selbst zu dekodieren, um den erhaltenen Code dann zu untersuchen. Für ein derartiges Vorgehen muß natürlich der Kodierungsalgorithmus bekannt sein.

Problematischer ist nun die Erkennung von polymorphen Viren, welche jedesmal anders aufgegebaut auftreten. Ihr Aussehen beruht auf einer anderen Reihenfolge der Instruktionen und auf verschiedenen Entschlüsselungsroutinen. Die Erkennung derartiger Viren ist erst mittels einer CPU-Emulation möglich, auf welcher ein Programm solange abgearbeitet wird, bis entschieden werden kann, ob es sich um einen Virus handelt oder nicht. Aufgrund dieses Vorgehens kann ein Virusscan natürlich sehr zeitintensiv werden.

Die sog. Scandaten müssen verschlüsselt abgelegt werden, weil sonst andere Virensuchprogramme diese Informationen anderenfalls als Viren interpretieren würden. Es bietet sich an, Viren sowohl nach Familien, da viele von diesen auf einen Urvirus zurückgehen, als auch hinsichtlich ihres Typs, also danach, ob es sich um einen COM- oder EXE- bzw. um einen Boot-Sektor- oder Partitionstabellen-Virus handelt, einzuteilen.

Neben den schon erwähnten Informationen beinhalten die Scandaten aber auch Daten, welche eine Überprüfung des Speichers auf einen möglichen Virenbefall gewährleisten. Die Verwendung von Scanstrings ist jedoch nur in den Fällen möglich, in denen die notwendigen Informationen über Viren zur Verfügung stehen. Um unbekannte Viren zu finden, bedient man sich der sog. heuristischen Suche, bei der man Indizien sucht, die auf Viren hinweisen.

Beispiele für derartige Indizien sind:

Wichtig ist, daß vor der Überprüfung von Speichermedien bzw. Dateien auch das Antivirenprogramm auf einen möglichen Virenbefall hin überprüft wird. Dieser Test kann darin bestehen, daß für dieses Programm eine Prüfsumme erstellt wird, welche mit der ursprünglich ermittelten verglichen werden kann. Anschließend sollte der Hauptspeicher überprüft werden, wird ein Virus gefunden, so muß der Benutzer des Rechners diesen mit einer schreibgeschützten Diskette booten und den Scanner von einer schreibgeschützten Diskette starten. Wird kein Virus im Hauptspeicher gefunden, so wird die Arbeit mit der Überprüfung weiterer Medien fortgesetzt.

Das Scanresultat sollte in jedem Fall Angaben zur Anzahl der infizierten Dateien, die Anzahl der gefundenen verschiedenen Viren und möglichst deren Bezeichnung aufweisen.

Enthält das Antivirenprogramm auch eine Komponente zur Entfernung von Viren, so muß das Programm so konfigurierbar sein, daß die folgenden Optionen wählbar sind:

Nach der Entfernung eines Virus muß die Datei bzw. der Boot-Sektor erneut gescannt werden, um Mehrfachinfektionen auszuschließen. Von einem Entfernen eines Virus aus einem Programm ist abzuraten, da nicht vorhersagbar ist, wie sich dieses im Vergleich zu seinem ursprünglich nicht infizierten Zustand verhält.

Außerdem kann die Möglichkeit, daß Teile eines Virus in einem solchen Programm bzw. einer Datei verbleiben und bei weiteren Scans entdeckt und dann quasi zu Fehlalarmen führen würden, nicht vollkommen ausgeschlossen werden. Ist jedoch ein Virus nicht automatisch entfernbar, so muß der Benutzer durch das Antivirenprogramm davon unterrichtet werden.

Der Onlinescanner läuft resident im Hintergrund und gibt eine Meldung aus, wenn ein infiziertes Programm gestartet wird.

Die Verwendung von derartigen Scannern ist jedoch problematisch, weil hierfür Teile der unteren 640 KB des Hauptspeichers verwendet werden.

Ein sog. Checksummenprüfer ergänzt den Virenschutz dadurch, daß er Programme während deren Laufzeit auf Veränderungen hin überprüft. Hierzu wird zunächst bei einem nicht infizierten System eine sogenannte kryptographische Prüfsumme bzgl. aller in Frage kommender Dateien erstellt.

Leider ist dieser Schutzmechanismus nicht 100prozentig sicher, weil sog. Tarnkappenviren diesen umgehen können. Diese fangen hierzu alle DOS-Anfragen von Antivirenprogrammen ab und geben die entsprechenden Informationen in verfälschter Weise zurück.


Das kleine Viren-Wörter-Buch

Ansteckung:

Wie in der Medizin bezeichnet man auch hier den Prozeß der Übertragung eines Virus von einem Träger auf einen anderen als Ansteckung. Diese Träger sind hier Datenträger wie z.B. Disketten oder der Hauptspeicher des PC.

Cohen, Fred:

F. Cohen entwickelte 1983 den ersten Computervirus im Rahmen seiner Doktorarbeit mit dem Ziel, seine Theorie über sich selbst reproduzierende Programme zu beweisen.

Entfernen von Viren:

Ein gutes Antivirenprogramm sollte nicht nur Viren entdecken sondern diese auch entfernen.

Probleme bereiten hier Viren, welche einen Teil der von ihnen befallenen Programme überschrieben haben, denn deren ursprünglicher Zustand ist nicht wiederherstellbar, da die bei dem überschreiben von Daten verlorenen Informationen nicht mehr rekonstruiert werden können.

Infektionsteil:

Jeder Virus besteht aus mehreren Teilen, einer von diesen wird Infektions- oder Kopierteil genannt, welcher alle Informationen enthält, die der Virus benötigt, um sich zu verbreiten.

Der andere Teil ist eine Routine, anhand derer der Virus erkennen kann, ob er eine Datei bereits infiziert hat oder nicht.

Ein dritter Teil schließlich ist für schädigende Wirkung verantwortlich, also für etwaige Fehlfunktionen des Systems, für das Löschen von Daten oder das Zerstören von Hardware.

Killerprogramme:

Dies sind Viren, welche z.B. nach einer bestimmten Anzahl von Infektionen die Festplatte eines Rechners z.B. durch Neuformatierung vollständig löschen.

Kryptographische Prüfsumme:

Die Kryptographie ist die Lehre von der Ver- bzw. Entschlüsselung von Informationen.

Eine kryptographische Prüfsumme ist demnach eine mit einem speziellen Algorithmus kodierte Zahl die zur Erkennung dient, ob eine Datei virenverseucht ist oder nicht.

Originalsoftware:

Die Verwendung von Originalsoftware bietet leider keinen Schutz vor Viren, da Fälle bekannt wurden, in denen solche Software auf virenverseuchten Disketten ausgeliefert wurde.

Prüfsummen-Methode:

Diese läßt die Entdeckung sowohl von bekannten als auch von unbekannten Viren zu.

Ein Virenscanner erstellt im ersten Durchlauf nach festgelegten Regeln eine Prüfsumme bzgl. des Datencodes und vergleicht diese mit den bei späteren Ausführungen erzeugten Prüfsummen. Differieren die derart erhaltenen Prüfsummen, ist dies u.U. ein Indiz für einen Virenbefall.

Raubkopien:

Daß Raubkopien als alleinige Ursache für die Verbreitung von Viren genannt werden, muß und kann als Märchen bezeichnet werden (siehe Originalsoftware).

Schreibschutz:

Sie sollten Originaldisketten vor deren erster Verwendung mit einem Schreibschutz versehen.

Desweiteren gilt dies auch, sofern es die von Ihnen ausgeführte Arbeit zuläßt, für alle anderen Disketten.

Virenanzahl:

Zur Zeit sind weltweit ca. 8000 Viren bekannt. Untersuchungen ergeben, daß sich die Zahl der Viren in einem halben Jahr verdoppelt.

Virensuchprogramme:

Dies sind alle Programme, welche Datenträger sowie den Hauptspeicher eines Computers auf einen Virenbefall hin untersuchen.

Zeitbomben:

Dies sind Viren, die z.B. erst an einem bestimmtem Tag aktiv werden.


Literatur:


Ansprechpartner im URZ:Zimmer: Telefon: PMail:
Michael Reinhardt EI: eO-004-1585 heribert.zimmermann
Heribert Zimmermann EI: eO-003-1662 heribert.zimmermann
Alexander Kaltenbacher IN: AS-303-1885 alexander.kaltenbacher
Sybille Bilges IN: AS-303-1886 sybille.bilges
Aufsichten des URZ -1664/-1890