Mit Computerviren verhält es sich ähnlich wie mit Fortsetzungen von großen Kinofilm-Klassikern: Wenn man es am wenigsten erwartet, suchen sie uns abermals heim — und sind schrecklicher als beim ersten Mal.
Es ist nicht lange her, da lief vielen ST-Anwendern schon beim Begriff »Virus« ein kalter Schauer über den Rücken: Die kleinen Programme stellten eine Bedrohung jedes Systems dar, Schutzmaßnahmen waren noch nicht sehr verbreitet. Auch wenn sich für die Mehrheit unter Ihnen mittlerweile die Aufregung gelegt hat und meist Ruhe und Frieden auf dem Bootsektor eingekehrt ist, besteht leider noch immer kein Anlaß zur endgültigen Entwarnung. Denn noch innerhalb der letzten zwölf Monate haben sich bemerkenswerte Dinge ereignet, von denen ich Ihnen berichten möchte.
Wie Sie vielleicht wissen, bin ich der Autor eines Programms, das einmal unter dem Namen »Virus Destruction Utility« bekannt war. Mittlerweile - inzwischen sind ungefähr zwei Jahre vergangen - wird es kommerziell vertrieben. Das Programm läßt sich also nicht mehr direkt bei mir beziehen. Aus Gründen, die sich meinem Verständnis entziehen, wurde das Programm damals von der Firma auf den lieblichen Namen »Atari ST Virus Killer« (im folgenden kurz AVK genannt) umgetauft.
Derzeit ist die Version 4.1 im Handel. Im Vergleich zu ihrem Vorgänger habe ich sie völlig umgeschrieben: Sie ist mittlerweile vollkommen STE-kompatibel, die letzten kleinen Fehler sind beseitigt, die Methode zur Disketten-Immuni-sierung verbessert. AVK 4.1 erkennt nun Viren schneller, die die Vektoren des Betriebssystems »verbiegen«. Alle Dateien auf der Diskette sind stark komprimiert, denn das Programm ist wieder gewachsen: Es erkennt 533 Bootsektoren, darunter 42 Bootsektor-Viren und fünf Link-Viren, 304 Bootsektoren lassen sich reparieren. Version 4.2, an der ich momentan arbeite, kann wieder etwas mehr, wie auf den folgenden Seiten zu lesen ist.
Mit dem Erscheinen des TT stand die heikle Frage im Raum: »Laufen ST-Viren auf dem TT oder nicht?« Nun, die Antwort ist einfach: Ein paar tun's, andere nicht. Viele Viren benutzen undokumentierte System-Variablen, so daß sie auf dem TT nicht funktionieren. Die meisten Viren überprüfen während eines Trap-Aufrufs jedoch die Anzahl der Bytes, die sich auf dem Prozessor-Stack befinden. Allerdings legt der 68030-Prozessor des TT bei einem TRAP-Aufruf 2 Byte mehr auf dem Stack ab. Doch das wissen ST-Viren nicht, sie geraten gewaltig durcheinander und funktionieren letztendlich nicht. Obwohl ich bisher noch keine praktischen Erfahrungen mit dem TT sammeln konnte, schätze ich, daß 90 Prozent der heutigen ST-Viren auf dem TT nicht einwandfrei funktionieren.
Ja, es hört sich paradox an - und ich glaubte auch nicht daran, als ich das erste Mal von diesem neuen Virus-Typ hörte. Aber, wie sich schnell zeigte, gibt es für Bootsektor-Viren eine Methode sich zu installieren, obwohl der eigentliche Bootsektor nicht direkt ausführbar ist.
Doch eins nach dem anderen: Beim Einschalten liest das ST-TOS den Bootsektor des Boot-Laufwerks (Diskette oder Festplatte) und schaut nach, ob seine Prüfsumme dem Wert $1234 entspricht. Ermittelt das TOS diesen Wert, so ist der Bootsektor »ausführbar« und ein JSR (Jump to SubRoutine) wird auf seinen Code ausgeführt. Mit anderen Worten: Der ST führt das im Bootsektor befindliche Programm aus und, sollte es sich um einen Virus handeln, installiert diesen in seinem Arbeitsspeicher. Was aber passiert, wenn der Bootsektor nicht ausführbar ist? Nun, das System liest den Bootsektor in jedem Fall in seinen Speicher - und zwar an die Adresse der Systemvariablen »Dskbufp«, dem Diskettenpuffer. Auch wenn das TOS diesen Code nicht ausführt, befindet er sich dennoch im Arbeitsspeicher des Atari ST.
Als nächstes führt das System einen nicht-dokumentierten Check der Reset-resistenten Programme durch, wobei eine weitere undokumentierte TOS-Funktion zum Einsatz kommt, die sich des »magischen« Langworts $12123456 und einer 512-Byte Speichergrenze bedient. Wie es der Zufall so will, gehört zu diesem Check ausgerechnet der Speicherbereich, in dem sich der Diskettenpuffer befindet - und eben hier befinden sich die gerade gelesenen Daten des Bootsektors.
Werfen Sie einmal einen Blick auf die Tabelle.
In der linken Spalte habe ich die TOS-Versionen angeführt, auf die sich die rechts davon folgenden Angaben beziehen (die Tabelle umfaßt alle existierenden TOS-Versionen mit Ausnahme des TT-Betriebssystems). Die zweite Spalte gibt Auskunft über die hexadezimale Adresse des Diskettenpuffer-Zeigers, wie er in der Dskbufp-System-Variable (Langwort-Ad resse $1C6) steht. Die dritte Spalte ist das Ergebnis einer kleinen Rechnung und bestimmt den Offset des Bootsektors, auf dem sich das Langwort $12123456 befinden muß, um mit der entsprechenden TOS-Version zu funktionieren (entfernen Sie dafür einfach das Minuszeichen).
Sollten dem Langwort die passenden Werte am passenden Offset des Bootsektors folgen, führt der ST das im Bootsektor befindliche Programm aus. Im Klartext: Der Virus läßt sich installieren, obwohl er sich auf einem nicht-ausführbaren Bootsektor befindet. Da der im Bootsektor zur Verfügung stehende Speicherplatz sehr gering ist, lädt so ein Bootsektor-Virus oft den Rest-Virus von anderen Sektoren nach - er befindet sich beispielsweise in den letzten Sektoren der File Allocation Table (FAT) oder des Directories.
Ziemlich gemeine Viren, nicht? Die meisten Viren-Killer fielen bis vor Kurzem auf diesen Trick hinein und gaben mit einer »100% Viren-frei«-Meldung vermeintliche Entwarnung - mein AVK dachte bis zur Version 3.9 genauso. Doch das ist Vergangenheit.
Auch wenn diese Viren sehr gefährlich sind - die neuen Virenkiller finden und vernichten sie.
Also doch noch keine völlige Entwarnung: Der »böse Geist« der ST-Viren lebt noch immer. Aber sind dies nicht eher die letzten Zuckungen von etwas endgültig zum Tode verurteiltem? (am)
TOS Version | Dskbufp | Offset off $200 page boundary |
---|---|---|
TOS 1.0 (Altes TOS) | $167A | -$186 off $1800 |
TOS 1.2 (Blitter-TOS) | $16DA | -$126 off $1800 |
TOS 1.4 (Rainbow-TOS) | $181C | -$1E4 off $1AOO |
TOS 1.6 (STE-TOS) | $181C | -$1E4 off $1A00 |
Tabelle. »Dskbufp«-Adressen der unterschiedlichen TOS-Versionen