Inhaltsverzeichnis

Arbeitsweise

Wie sein biologisches Vorbild benutzt ein Computervirus die Ressourcen seines Wirtes und schadet ihm dabei häufig. Auch vermehrt es sich meist unkontrolliert. Durch vom Virenautor eingebaute Schadfunktionen oder auch durch Fehler im Virus kann das Virus das Wirtssystem bzw. dessen Programme auf verschiedene Weisen beeinträchtigen, von harmloseren Störungen bis hin zu Datenverlust.

Viren brauchen, im Gegensatz zu Computerwürmern, einen Wirt um ihren Schadcode auszuführen. Viren haben keine eigenständigen Verbreitungsroutinen, d. h. ein Computervirus kann nur durch ein infiziertes Wirtsprogramm verbreitet werden. Wird dieses Wirtsprogramm aufgerufen, wird – je nach Virentyp früher oder später – das Virus ausgeführt, das sich dann selbst in noch nicht infizierte Programme weiterverbreiten oder seine eventuell vorhandene Schadwirkung ausführen kann.

Heutzutage sind Computerviren fast vollständig von Würmern verdrängt worden, da fast jeder Rechner an Rechnernetze (lokale Netze und das Internet) angeschlossen ist und die aktive Verbreitungsstrategie der Würmer in kürzerer Zeit eine größere Verbreitung ermöglicht. Viren sind nur noch in neuen Nischen von Bedeutung.

Computervirentypen

Bootviren

Bootviren zählen zu den ältesten Computerviren. Diese Viren waren bis 1995 eine sehr verbreitete Form von Viren. Ein Bootsektorvirus infiziert den Bootsektor von Disketten und Festplattenpartitionen oder den Master Boot Record (MBR) einer Festplatte.

Der Bootsektor ist der erste physische Teil einer Diskette oder einer Festplattenpartition. Festplatten haben außerdem einen so genannten Master Boot Record oder MBR. Dieser liegt wie der Bootsektor von Disketten ganz am Anfang des Datenträgers. Bootsektoren und MBR enthalten mit den Boot-Loadern die Software, die von einem Rechner direkt nach dessen Start ausgeführt wird, sobald die Firmware bzw. das BIOS den Rechner in einen definierten Startzustand gebracht hat. Üblicherweise laden Boot-Loader das installierte Betriebssystem und übergeben diesem die Kontrolle über den Computer.

Wie beschrieben sind Boot-Loader Programme, die vor dem Betriebssystem ausgeführt werden und deshalb für Viren sehr interessant: Bootviren können in das Betriebssystem, das nach ihnen geladen wird, eingreifen und dieses manipulieren oder dieses komplett umgehen. Dadurch können sie sich z. B. auf Bootsektoren eingelegter Disketten verbreiten.

Lädt ein Rechner nicht den MBR der Festplatte sondern den infizierten Bootsektor einer Diskette, versucht das enthaltene Bootvirus meist, sich in den MBR der Festplatte zu verbreiten, um bei jedem Start des Computers ohne Diskette aktiv werden zu können.

Bootviren haben jedoch mit den technischen Limitierungen, die mit dem Speicherort „Bootsektor“ bzw. vor allem „MBR“ einhergehen, zu kämpfen: sie können maximal 444 Bytes groß sein, sofern sie nicht noch weitere Teile auf anderen Teilen der Festplatte verstecken. (Der MBR ist nach Industrienorm einen Sektor, also 512 Byte groß, aber einige Bytes werden für die Hardware- und BIOS-Kompatibilität verbraucht.) Außerdem müssen sie die Aufgaben des Boot-Loaders übernehmen, damit das System funktionsfähig bleibt, was von dem ohnehin schon sehr geringen Platz für die Virenlogik noch weiteren Platz wegnimmt. Da sie vor einem Betriebssystem aktiv werden, können sie außerdem nicht auf von einem Betriebssystem bereitgestellte Funktionen wie das Finden und Öffnen einer Datei zurückgreifen.

Seit 2005 gibt es auch Bootsektorviren für CD-ROMs. Diese infizieren bootfähige CD-ROM-Image-Dateien (ISO-Images). Es ist technisch möglich, ein Bootsektorvirus für einen USB-Stick oder für ein LAN-Netzwerk zu erstellen, dies ist aber bis 2005 noch nicht geschehen.

Heutzutage gibt es beinahe keine Bootsektorviren mehr, da BIOS und Betriebssysteme meistens einen gut funktionierenden Schutz vor ihnen haben. Zwar gibt es Bootsektorviren, die diesen Schutz umgehen können, doch ist ihre Verbreitung im Allgemeinen sehr langsam. Durch die technischen Probleme, die mit diesem Virentyp einhergehen, fordern sie vom Virenautor außerdem deutlich mehr Wissen und Programmierfertigkeiten, während sie zugleich seine Möglichkeiten stark einschränken.

Dateiviren/Linkviren

Linkviren oder Dateiviren sind der am häufigsten anzutreffende Virentyp. Sie infizieren ausführbare Dateien oder Programmbibliotheken auf einem Betriebssystem.

Um eine ausführbare Datei zu infizieren, muss das Virus sich in diese Wirtsdatei einfügen (oft direkt am Ende, da dies am einfachsten ist). Außerdem modifiziert das Virus die Wirtsdatei so, dass das Virus beim Programmstart aufgerufen wird. Eine spezielle Form von Linkviren wählt eine andere Strategie und fügt sich in eine bestehende Programmfunktion ein.

Zu den verschiedenen Arten von Linkviren siehe Infektionsarten.

Makroviren

Makroviren benötigen Anwendungen, die Dokumente mit eingebetteten Makros verarbeiten. Sie befallen Makros in nicht-infizierten Dokumenten oder fügen entsprechende Makros ein, falls diese noch nicht vorhanden sind.

Makros werden von den meisten Office-Dokument-Typen verwendet, wie z. B. in allen Microsoft-Office- sowie OpenOffice.org-Dokumenten. Aber auch andere Dokument-Dateien können Makros enthalten. Sie dienen normalerweise dazu, in den Dokumenten wiederkehrende Aufgaben zu automatisieren oder zu vereinfachen.

Häufig unterstützen Anwendungen mit solchen Dokumenten ein spezielles Makro, das automatisch nach dem Laden des Dokuments ausgeführt wird. Dies ist ein von Makroviren bevorzugter Ort für die Infektion, da er die höchste Aufruf-Wahrscheinlichkeit hat. Wie Linkviren versuchen auch Makroviren, noch nicht infizierte Dateien zu befallen.

Da die meisten Anwender sich nicht bewusst sind, dass z. B. ein Textdokument ausführbare Inhalte und damit ein Virus enthalten kann, gehen sie meist relativ sorglos mit solchen Dokumenten um. Sie werden sehr oft an andere Anwender verschickt oder sogar auf öffentlichen Servern zum Herunterladen angeboten. Dadurch können sich Makroviren recht gut verbreiten. Um das Jahr 2000 herum stellten sie die größte Bedrohung dar, bis sie darin von den Computerwürmern abgelöst wurden.

Ein Schutz gegen Makroviren besteht darin, dafür zu sorgen, dass nur zertifizierte Makros von der Anwendung ausgeführt werden. Dies ist insbesondere für (größere) Unternehmen und Behörden von Interesse, wo eine zentrale Zertifizierungsstelle Makros zum allgemeinen Gebrauch vor deren Freigabe überprüft und akzeptierte Makros zertifiziert.

Es empfiehlt sich weiterhin, das automatische Ausführen von Makros in der entsprechenden Anwendung auszuschalten.

Skriptviren

Ein Skript ist ein Programm, welches nicht durch einen Kompilierer in Maschinensprache übersetzt wird, sondern durch einen Interpreter Schritt für Schritt ausgeführt wird. Ein Skript wird häufig auf Webservern verwendet (z. B. in Form der Skriptsprache Perl oder PHP) bzw. durch in Webseiten eingebettet Skriptsprachen (z. B. JavaScript).

Ein Skript wird gerne in Webseiten zusätzlich zu normalem HTML oder XML eingesetzt, um Funktionen zu realisieren, die sonst nur unter Zuhilfenahme ausführbarer Programme auf dem Server (CGI-Programme) realisierbar wären. Solche Funktionen sind zum Beispiel Gästebücher, Foren, dynamisch geladene Seiten oder Webmailer. Skriptsprachen sind meist vom Betriebssystem unabhängig. Um ein Skript auszuführen, wird ein passender Interpreter – ein Programm, das das Skript von einer für den Menschen lesbaren Programmiersprache in eine interne Repräsentation umsetzt und dann ausführt – benötigt. Wie alle anderen Viren auch sucht das Skriptvirus eine geeignete Wirtsdatei, die es infizieren kann.

Im Falle von HTML-Dateien fügt sich das Skriptvirus in einen speziellen Bereich, dem Skriptbereich, einer HTML-Datei ein (oder erzeugt diesen). Die meisten Browser laden diesen Skriptbereich des HTML-Dokuments um ihn schließlich ausführen. Diese speziellen Skriptviren verhalten sich also fast genauso wie die oben beschriebenen Makroviren.

Unix-, Mac-OS-X- und Linux-Systeme benutzen für die Automatisierung vieler Aufgaben ein Skript, welches z. B. für eine Unix-Shell wie bash, in Perl oder in Python geschrieben wurde. Auch für diese Skriptsprachen gibt es Viren, die allerdings nur Laborcharakter haben und in der „freien Wildbahn“ so gut wie nicht anzutreffen sind. Auch können sie nicht wie in HTML eingebettete Skriptviren versehentlich eingefangen werden, sondern man muss – wie bei einem Linkvirus – erst ein verseuchtes Skript auf sein System kopieren und ausführen.

Mischformen

Nicht alle Computerviren fallen eindeutig in eine spezielle Kategorie. Es gibt auch Mischformen wie zum Beispiel Viren, die sowohl Dateien als auch Bootsektoren infizieren (Beispiel: Kernelviren) oder Makroviren, die auch Programmdateien infizieren können. Bei der Zusammensetzung ist beinahe jede Variation möglich.

Techniken

Arbeitsspeicher

Speicherresidente Viren verbleiben auch nach Beendigung des Wirtprogramms im Speicher. Unter MS-DOS wurde eine Technik namens TSR (Terminate and Stay Resident) verwendet, in Betriebssystemen wie Windows, Unix oder Unix-ähnlichen Systemen (Linux, Mac OS X) erzeugt das Virus einen neuen Prozess. Das Virus versucht dem Prozess in diesem Fall einen unverdächtig wirkenden Prozessnamen zu geben oder seinen Prozess komplett zu verstecken. Gelegentlich versuchen diese Viren auch Funktionen des Betriebssystems zu manipulieren oder auf sich umzuleiten, sofern das Betriebssystem dieses ermöglicht bzw. nicht verhindert.

Selbstschutz der Viren

Stealthviren

Computerviren dieser Art ergreifen besondere Maßnahmen, um ihre Existenz zu verschleiern. So werden Systemaufrufe abgefangen, so dass zum Beispiel bei der Abfrage der Größe einer infizierten Datei die Größe vor der Infektion angegeben wird (manche Viren verändern die ursprüngliche Größe auch gar nicht, weil sie sich in unbenutzte Bereiche der Datei kopieren) oder auch beim Lesen der Datei die Daten der ursprünglichen Datei zurückgeben.

Verschlüsselte Viren

Dieser Typ von Viren verschlüsselt sich selbst. Der Schlüssel kann dabei von Infektion zu Infektion variieren. Das soll Antivirenprogramme daran hindern, einfach nach einer bestimmten Zeichenfolge in Dateien suchen zu können. Die Routine zum Entschlüsseln muss aber naturgemäß in normaler Form vorliegen und kann von Antivirenprogrammen erkannt werden.

Polymorphe Viren

Diese Art von Viren ändern ihre Gestalt von Generation zu Generation, teilweise vollkommen. Das geschieht oft in Kombination mit Verschlüsselung – hierbei wird eine variable Verschlüsselung benutzt. Ein Teil des Virus muss jedoch in unverschlüsselter Form vorliegen, um bei der Ausführung den Rest zu entschlüsseln. Um auch diesen Teil variabel zu gestalten, wird die Entschlüsselungsroutine bei jeder Infektion neu erstellt. Die Routine, die die Entschlüsselungsroutine immer neu erstellt, befindet sich dabei selbst im verschlüsselten Teil des Virus und kann zum Beispiel voneinander unabhängige Befehle austauschen und Operationen mit verschiedenen Befehlssequenzen kodieren, so dass verschiedene Varianten entstehen.

Metamorphe Viren

Dieser Computervirentyp verändert bei einer Ausführung den eigenen Code. Im Gegensatz zu polymorphen Viren, die nur die Gestalt des Codes (durch variable Verschlüsselung oder Permutation) ändern, wird bei dieser Technik der Virus temporär in die Source-Code Form zurückgeschrieben (Disassembler), welcher verändert wird, und danach wieder kompiliert wird. Diese Technik ist möglich, da die Assemblersprache für einen Befehl verschiede Möglichkeiten bietet, diesen auszuführen. Zum Beispiel kann der Befehl mov eax, 0x0 in xor eax, eax oder sub eax, eax umgewandelt werden. Der Vorteil dieser Viren ist, dass sie am schwersten zu entdecken sind, da die Befehlsfolge des Virus sich vollkommen ändert. Da diese Technik sehr viel Arbeit und Wissen benötigt, sind diese Viren sehr selten. Beispiele sind Win32.ZMist, Win32.MetaPHOR, Win32.SK oder DOS.ACG.

Retroviren

Sie zielen darauf ab, Virenschutzprogramme und Personal Firewalls zu deaktivieren. Da sie sich dadurch nicht nur selbst vor Entdeckung schützen, sondern auch anderen Schadprogrammen Tür und Tor öffnen, gelten sie als sehr gefährlich.