Internet: Malware: Viren
Ein Computervirus ist ein sich selbst verbreitendes kleines Schadprogramm, welches sich in andere Computerprogramme (die Wirtsprogramme) einschleust und sich damit reproduziert. Das Wirtsprogramm kann ein Anwendungsprogramm oder auch eine Komponente des Betriebssystem sein. Die Bezeichnung „Computervirus“ wird umgangssprachlich auch für Computerwürmer und Trojanische Pferde genutzt, da es oft Mischformen gibt und für Anwender der Unterschied kaum zu erkennen ist.
Wie „befällt“ ein Virus das Wirtsprogramm?
[Bearbeiten]Der Virus-Programmcode ist nur wenige hundert Byte lang. Er hängt sich an das „Wirtsprogramm“ hinten an. Das Wirtsprogramm wird dadurch länger. Kennt man die ursprüngliche Länge des Wirtsprogramms, kann man an der Längenänderung nicht nur den Befall eindeutig erkennen, sondern auch den konkreten Virus, denn jeder Virus hat eine spezifische Länge.
Noch ist der Virus nur ein nutz- und wirkungsloser Ballast am Wirtsprogramm. In der zweiten Phase der Infektion wird der erste Befehl im Wirtsprogramm durch einen sogenannten „Sprungbefehl“ zum Viruscode ersetzt. Dadurch wird anstelle des Wirtsprogramms zuerst der Viruscode ausgeführt, der sein böses Werk verrichtet. Danach wird der beim Einnisten des Virus überschriebene erste Befehl des Wirtsprogramms nachgeholt und nach einem Sprung zum zweiten Befehl des Wirtsprogramms wird zuletzt der Rest des Wirtsprogramms ausgeführt.
Welche Aufgaben führt der Viruscode aus? Ein Virus besteht aus zwei Komponenten:
- einem Infektionsteil, der die Weiterverbreitung sichert,
- einem Schadensteil.
Jedesmal wenn das infizierte Wirtsprogramm ausgeführt wird, sucht der Virus nach einem noch unversehrten Programm und infiziert es ebenfalls. Je höher die Zahl der infizierten Programme, desto schneller steigt die Zahl der Neuinfektionen. Sendet man ein infiziertes Programm an einen anderen PC („Ich schicke dir im Anhang ein tolles Programm!“), verbreitet sich die Infektion auch dort. Es gibt nicht wenige Viren, welche die Autostartprogramme von USB-Memory-Sticks und externen Festplatten befallen können. Wenn man einen infizierten Stick in einen anderen PC steckt und die Autostart-Funktion erlaubt, wird auch dieser PC infiziert.
Wie beginnt die Infektion?
[Bearbeiten]Sie haben einen USB-Stick gefunden, vor dem Haus oder in der Firma auf dem Gang. Was würden Sie tun? Schnell mal in einen PC stecken und schauen, was darauf ist und wem er gehört? Das ist eine beliebte Methode, eine Firma gezielt zu schädigen.
Stecken Sie den unbekannten Stick nur in einen PC mit einem aktuellen Antivirenprogramm, von dem Sie wissen, dass er jeden eingesteckten Stick untersucht. Lassen Sie kein Autostart-Programm.
Es könnte auch Experimentiertrieb sein, gepaart mit Verantwortungslosigkeit, oder ein Mitarbeiter könnte sich an seinem letzten Arbeitstag für seine Entlassung rächen. Hauptsächlich aber kommen Viren im Huckepack von Trojanern oder als E-Mail-Anhang daher.
Was ist so schlimm an einem Virus?
[Bearbeiten]Befallene Programme werden länger und brauchen mehr Platz auf der Festplatte. Jedes infizierte Programm beginnt seine Arbeit mit der Suche nach weiteren Opfern, was um so länger dauert, je kleiner die Anzahl der noch nicht infizierten Programme geworden ist. Der PC wird deutlich langsamer. Zudem ist das Verschieben des ersten Programmbefehls B1 ans Ende des Viruscodes nicht unproblematisch, manche Programme funktionieren nach der Infektion nicht mehr. Es gibt auch „überschreibende“ Viren, bei denen es gar nicht geplant ist, dass ein Programm nach der Infektion noch funktioniert. Solche Viren sind einfacher zu programmieren. Was macht der typische Nutzer, wenn ein Programm nicht startet? Er macht noch ein paar weitere Startversuche, und noch ein paar Programme werden infiziert. Mehr ist nicht nötig für die Weiterverbreitung.
Die ersten Viren in den 80er Jahren wurden wohl hauptsächlich aus Spass und zur Demonstration des eigenen Könnens entwickelt. Die Schadfunktionen reichten von relativ harmlos (Spinner oder Würmer krochen über den Bildschirm) über Crasher-Viren, die Systemabstürze verursachen, bis zu richtig bösen Viren, die Dateien und Festplatten löschen. Heutigen Viren geht es vor allem um Passwörter, TAN, E-Mail-Adressen und Fernzugriff.
Ganz wichtig für einen Virus ist es, nicht aufzufallen. Je länger ein Virus unbemerkt bleibt, desto erfolgreicher kann er sich verbreiten. Deshalb ist entweder der Schadensteil unauffällig oder ein offensichtlicher Schaden wird erst einige Tage nach der Infektion oder an einem Stichtag ausgeführt, z. B.
- 11 Tage nach der Infektion oder wenn der 13. eines Monats auf einen Freitag fällt,
- nach dem 10. Neustart des PC,
- wenn das infizierte Programm zufällig exakt zur vollen Minute gestartet wird.
Kann ein Virus den Computer beschädigen?
[Bearbeiten]Im Prinzip ja. In der Hauptplatine ist ein Startprogramm eingebaut, das mit einem BIOS-Update aktualisiert werden kann. Auch Grafikkarte, DVD-Brenner und andere Baugruppen haben ein aktualisierbares Startprogramm. Ein Virus kann das Startprogramm löschen. Seit 1988 gibt es den CIH-Virus, der am 26. April jedes Jahres − dem Jahrestag der Tschernobyl-Katastrophe − das BIOS löscht. Einen solchen Schaden könnte nur noch der Hersteller reparieren, und das wäre wahrscheinlich teuer als ein Neukauf. Zum Glück sind solche Angriffe BIOS-spezifisch und funktionieren nur bei sehr wenigen Hauptplatinen. Es hat auch Viren gegeben, die intakte Bereiche der Festplatte als defekt markiert haben. Doch es ist extrem unwahrscheinlich, dass Sie von einem „Hardware-Destroy-Virus“ betroffen werden: Sie sind extrem selten, denn sie bringen dem Schöpfer des Virus keinen finanziellen Vorteil.
Kann man den Verursacher finden? Im Prinzip ja. Das Windows-Dateisystem NTFS speichert für jede Datei sekundengenau, wann sie zuletzt verändert worden ist und unter welchem Benutzernamen. Daher lässt sich im Prinzip feststellen, in welcher Reihenfolge die Dateien infiziert worden sind und welche Datei die zuerst infizierte gewesen ist. Doch das ist aufwändig, denn eine Windows-Installation besteht aus etwa 100 000 Dateien.
Doch selbst wenn Sie herausbekommen haben, in welchem E-Mail-Anhang der Virus gesteckt hat − was nützt Ihnen das? Etwas zu wissen und es ohne jeden Zweifel vor Gericht beweisen zu können ist ein großer Unterschied. Digitale Dateien lassen sich manipulieren. Außerdem sitzt der Täter im Ausland und benutzt einen unter falschem Namen angemieteten Server in einem Land, dass keine Auskünfte über seine Kunden gibt.
Virenkennungen
[Bearbeiten]Man versucht, eine charakteristische Zeichenfolge (Befehlsfolge) zu finden, die im Virus vorkommt. Diese wird dann als Virenmuster = Kennung = Signatur an die Antivirenprogramme weltweit verteilt. Die Programmierer der Antivirenhersteller müssen aber sehr aufpassen: Diese Kennung darf in keinem von den vielen tausenden Anwendungsprogrammen vorkommen, sonst würde eine nützliche Anwendung fälschlicherweise als verseucht behandelt werden (sogenannte „falsch-positive“ Erkennung).
Mutierende Viren
[Bearbeiten]In jedem Programm gibt es viele in sich abgeschlossene Blöcke, die voneinander unabhängig sind und deshalb in beliebiger Reihenfolge im Programm angeordnet werden können. Auch innerhalb der Blöcke, auf der Ebene der Maschinensprachebefehle gibt es Variationsmöglichkeiten: Die Reihenfolge kann verändert werden, ohne die Funktion zu ändern. Am Beispiel einer Rechenaufgabe: Statt „Addiere zwei zu einer Zahl und verdopple sie“ hätte „verdopple die Zahl und addiere vier“ das gleiche Ergebnis, auch „Addiere eins, verdopple, addiere zwei“ oder „addiere drei, subtrahiere eins und verdopple“ wären gleichwertig. Der Hacker könnte jede Woche oder jeden Tag eine solche kleine Änderung an seinem Virus vornehmen (und anschließend mit den neuesten Antivirenprogrammen prüfen, ob der geänderte Virus noch erkannt wird). Es gibt sogar Viren, die derartige Modifikationen automatisch vornehmen. Das nennt man „mutierende Viren“.
Tarnkappen-Viren
[Bearbeiten]Um die Funktionsweise von Tarnkappenviren verstehen zu können, muss ich Ihnen zuerst einige (stark vereinfachte) Erläuterungen zur Treiberinstallation in den Tiefen des Betriebssystems zumuten. Wenn es Sie nicht interessiert, überspringen Sie einfach diese und die nächste Seite.
Das erste Betriebssystem für den PC kam von Microsoft und nannte sich „Disk Operation System“, abgekürzt „DOS“. Fortschritte in der Speichertechnologie zwangen Microsoft, in kurzen Abständen neue Versionen des Betriebssystems herausbringen, um die jeweils neuesten Speichermedien verwalten zu können:
- MS-DOS 1.0 (1981) konnte mit Disketten von 160 kByte arbeiten. Festplatten waren für den PC noch nicht vorgesehen, denn die preiswerteste Festplatte, die ST506 mit 5 MByte Kapazität, kostete 1500 Dollar.
- MS-DOS 1.1 (1982) wurde nötig, um größere Disketten mit 360 kB nutzen zu können.
- MS-DOS 2.0 (1983) konnte Festplatten bis 10 MByte verwalten. Eine 5 MB Festplatte kostete 400 Dollar.
- MS-DOS 2.11 (1984) konnte mit Disketten von 720 kB arbeiten.
- MS-DOS 3.0 (1984) unterstützte Disketten von 1,2 MB und erstmals auch Festplatten bis 20 MB.
- MS-DOS 3.2 (1986) ermöglichte Festplatten bis 32 MB.
- MS-DOS 4.0 (1988) ermöglichte 2 GByte Festplatten.
Jede neue Version des Betriebssystems wurde umfangreicher und jedesmal gerieten die Unterprogramme auf neue Speicheradressen. Damit die Anwendungen die benötigten Unterprogramme des Betriebssystems finden konnten, richtete Microsoft eine Adresstabelle ein. Jeder PC mit Microsoft-Betriebssystem hat eine Liste, die sogenannte „Interrupt Vektor Tabelle“, in der die Adressen der Treiber und anderer Unterprogramme stehen. Die Interruptvektortabelle befindet sich am Anfang des Arbeitsspeichers und hat 256 Einträge zu je 32 Bit.
Wenn ein Anwendungsprogramm Daten lesen will, schickt es einen Auftrag an das Betriebssystem, z. B.: „Sektor 20135 auf Datenträger E: schreiben“. Das geschieht in Form eines „Software-Interrupts 13“, mit dem das Unterprogramm 13 des Betriebssystems aufgerufen wird, das in allen Microsoft-Betriebssystemen für alle Disketten- und Festplattenzugriffe zuständig ist. Der dreizehnte Eintrag in der Interruptvektortabelle enthält die Adresse, wo sich das Unterprogramm (der Treiber) für alle Disketten- und Festplattenzugriffe befindet.
„Interrupt“, deutsch: Unterbrechung, heißt es, weil das Anwenderprogramm seine Arbeit so lange unterbrechen muss, bis das Betriebssystem die Anforderung ausgeführt (die Daten gelesen) hat.
Für jeden Fortschritt der Speichertechnologie musste Microsoft einen neuen Treiber programmieren und eine neue Version des Betriebssystems herausbringen. Wer eine größere Festplatte gekauft hatte, musste zähneknirschend ein neues Betriebssystem kaufen, um die volle Kapazität der neuen Festplatte nutzen zu können. Die Hersteller mussten lange warten, bis sie ihre Neuentwicklungen verkaufen konnten, denn wer kauft eine größere Festplatte, wenn das Betriebssystem sie noch nicht nutzen kann? Microsoft beschloss, die Programmierung der Treiber an die Hersteller der Hardware zu delegieren. Wollte der Hersteller eine neue Hardware verkaufen, musste er dafür selbst die Anpassung ans Betriebssystem, einen „Treiber“, programmieren und seinen Treiber mit einem Installationsprogramm ins Betriebssystem integrieren. Nun konnten auch Nutzer eines älteren Betriebssystems ihr System mit einem neuen Treiber „nachrüsten“, um moderne Geräte anzuschließen.
Microsoft schuf eine einfache Möglichkeit, die im Betriebssystem enthaltenen Treiber durch bessere zu ersetzen. Um ein neuartiges Speichermedium einzubinden (z. B. einen Blu-ray-Brenner), manipulierte das Treiberinstallationsprogramm die Adresse von Interrupt 13 in der Interruptvektortabelle. Die ursprüngliche Adresse wird aufbewahrt und durch die Adresse des neuen Blu-ray-Treibers ersetzt. Falls der Treiber einmal deinstalliert wird, kann die ursprüngliche Adresse wiederhergestellt werden. Jedesmal, wenn ein Anwendungsprogramm irgendwelche Daten lesen oder schreiben will, schickt es einen Interrupt 13 an das Betriebssystem, der nun aber zum neuen Blu-Ray-Treiber umgeleitet wird. Der Blu-ray-Treiber prüft, ob die Anfrage an das Blu-Ray-Laufwerk gerichtet ist. Wenn nicht, wird die Anfrage an die ursprüngliche Treiberadresse im Betriebssystem weitergereicht.
Diese Adress-Ersetzung kann mehrmals nacheinander geschehen. Ein Antivirenprogramm würde die Adresse des Blu-ray-Treibers durch eine eigene ersetzen, um die zu schreibenden Daten zu prüfen, ob ein Virus darin steckt. Wenn nicht, wird zum Blu-ray-Treiber weitergeleitet, der den Schreibauftrag selbst ausführt oder zum Standardtreiber des Betriebssystems weiterleitet.
Wie nutzt ein Tarnkappenvirus diesen Mechanismus?
Im Jahr 1986 tauchte der Virus „Brain.A“ auf. Er kopierte den Bootsektor (so heißt der erste Sektor der Festplatte, der das Startprogramm des Betriebssystems enthält) von Sektor 0 nach dem unbenutzten Sektor 15 und infizierte dann den originalen Boot-Sektor. Er klinkte sich in den Interrupt 13 ein und war dadurch in der Lage, jeden Festplattenzugriff zu überwachen. Wenn ein Programm (z. B. ein Antivirenprogramm) den Boot-Sektor kontrollieren wollte, zeigte der Virus diesem Programm die vorsorglich in Sektor 15 bereitgestellte unbeschädigte Kopie und behauptete, es würde Sektor 0 angezeigt. Das Antivirenprogramm konnte deshalb keine Infektion finden.
Viren, die solche Tarntechniken nutzen, werden als „Stealth-Viren“ (Tarnkappenviren) bezeichnet.
Brain.A war der erste Schädling, der so etwas wie Rootkit-Techniken verwendete.
Mehr über den Interrupt 13 für Interessenten: Interrupts_80x86/_INT_13