Programm >> VIRUS-CONTROL V1.3 << VIRUS-CONTROL V1.3 - ein ausgezeichnetes ANTI-VIRUS-Programm !! --------------------------------------------------------------- Ich erkläre hiermit VIRUS-CONTROL V1.3 als PUBLIC-DOMAIN !! ----------------------------------------------------------- Hallo Amigafreunde, es existieren bereits eine Vielzahl von Anti-Virus-Programmen. Dennoch weist jedes dieser Programme Schwächen auf. Ich habe daher ein eigenes Anti-Virus-Programm entwickelt, welches eine sehr große Leistungsvielfalt aufweist. Dennoch ist die Bedienung sehr einfach. Es folgt nun ein grober Abriß der Leistungen meines Anti- Virus-Programmes (im folgenden VIRUS-CONTROL genannt) - lauffähig auf allen Amigatypen - 100 % Assembler - resetfest - gefahrloses Booten von Virus-Disketten durch Bootsimulation - FastRam-Abschaltung beim Booten möglich - Disketten werden beim Einlegen überprüft - Schutz vor Link-Viren durch File-Schutz-Kennung - Bootblock-ASCII-Anzeige - Bootblock kann in ein File abgespeichert werden - Bootblock kann mit einem File überschrieben werden - es kann auch der Commodore-Original-Bootblock, - oder ein NoFastMemoryBootblock geschrieben werden - Inaktivieren(NoBoot) und Reaktivieren(Boot) von Virusdisketten - sekündliche Überprüfung der Systemvektoren durch eigenen Task - Entfernen eines Virus durch Vektoren-Restauration - Schreibzugriff auf Bootblock in Lesezugriff umwandelbar - verdächtiger Bootblock kann als ungefährlich archiviert werden - verdächtiger Bootblock kann mit einem Namen archiviert werden - der Zugriff auf Files kann kontrolliert werden - es können zusätzliche Parameter beim Starten angegeben werden -f S:NoWarning, S:VirusName nicht durchsuchen -c kein grünes Farbsignal bei Disk-Einlegen -t bereits eingelegte Disketten nicht überprüfen -o File-Zugriffs-Kontrolle Dem Programm liegt der ausführlich dokumentierte Sourcecode bei. VIRUS-CONTROL ist durchdacht und kompakt programmiert. Dennoch wird eine Programmlänge von 13 KB erreicht, da trotz sparsammer Intuition-Programmierung für die Intuition-Strukturen bereits 5 KB benötigt werden. Eine Beschneidung der Intuition- Strukturen ist jedoch nicht sinnvoll, da dadurch die Benutzer- freundlichkeit und Optik sehr leiden würde. VIRUS-CONTROL wird im CLI oder in der Startup-Sequence mit oder ohne "Run" gestartet. Beim Versuch VIRUS-CONTROL zu starten, prüft VIRUS-CONTROL ob der Amiga bereits infiziert ist. Hierzu wird der Cool-Vektor und DOIO-Vektor überprüft. Wenn ja, wird VIRUS-CONTROL nicht installiert. Stattdessen erscheint die Aufforderung, den Amiga auszuschalten, wieder einzuschalten und möglichst frühzeitig VIRUS-CONTROL zu starten. Nun kann kein VIRUS mehr unerkannt in das System eindringen. Ferner prüft VIRUS-CONTROL ob es bereits installiert wurde und gibt eine diesbezügliche Meldung aus. Wenn VIRUS-CONTROL einen verbogenen KICK-Vektor oder verbogenen BeginIO-Vektor vorfindet, wird nur eine Warnmeldung ausgegeben, da diese Vektoren auch von seriösen Programmen verbogen werden. VIRUS-CONTROL wird bei einem Reset über den Cool-Vektor angesprungen. Es wird nun geprüft, ob die LINKE MAUSTASTE gedrückt ist. Wenn ja, wird VIRUS-CONTROL entfernt. Wenn nein, zeigt ein grünes Farb-Signal an, daß VIRUS-CONTROL weiterhin das System kontrolliert. Es wird nun der DOIO-Vektor auf VIRUS-CONTROL verbogen. Ab jetzt wird bei jedem DOIO-Aufruf geprüft, ob ein Zugriff auf eine Diskette ab Track 0 efolgt. Dies ist beim gleich folgenden Booten und auch beim normalen einlegen einer Diskette der Fall. Auch der "LoadWB"-Befehl greift auf die Disketten ab Track 0 zu. Wird VIRUS-CONTROL ohne -t aufgerufen, so erfolgt ebenfalls ein solcher Zugriff. Der Amiga bootet nur dann von einer Diskette, wenn folgende zwei Bedingungen erfüllt sind: Die Diskette muß die DOS-Kennung besitzen, die Bootblockchecksumme muß stimmen. Ist nun der Bootcode der Diskette ungleich dem Standard-Bootcode, so handelt es sich um eine 'verdächtige Disk', da es sich ja um meinen Bootblock-VIRUS handeln könnte. Es kann sich aber auch um ein harmloses Boot-Intro oder ein selbststartendes Spiel usw. handeln. Wenn der Amiga von einer Diskette booten will, prüft VIRUS- CONTROL, ob die eingelegte Boot-Diskette verdächtig ist. Wenn ja, so erscheint ein Requester, welcher eine gefahrlose Bootsimulation anbietet, oder aber die echte Disk-Boot-Routine. Wird diese angeklickt, so erscheint ein weiterer Requester, welcher auf die Gefahr des Aktivierens von Bootblock-Viren durch das echte Disk-Boot hinweist. Wird während der Arbeit mit dem Amiga eine verdächtige Diskette eingelegt, so wird dieses durch das Erscheinen eines Warn-Windows deutlich gemacht. Hält man während des Disk-Einlegens die RECHTE ALT-TASTE gedrückt, so wird die Diskette nicht durch VIRUS-CONTROL übergeprüft. Hält man während des Disk-Einlegens die LINKE ALT-TASTE gedrückt, so erscheint auch bei nicht verdächtigen Disk's das Warn-Window. Hiermit kann man auch mit nicht verdächtigen Disketten arbeiten. Kann aufgrund von Speichermangel das Warn-Window nicht geöffnet werden, so wird dieses durch eine kurze Schwarzfärbung des Bildschirms angezeigt. Das Warn-Window bietet eine Vielzahl sehr nützlicher Möglichkeiten an, welche durch drücken des entsprechenden Gadgets ausgewählt werden. Das Anklicken des CLOSE-Gadgets beendet die Arbeit mit der eingelegten Disk. Erst danach darf die Diskette wieder entnommen werden !! Das Anklicken von 'BEENDE VIRUSCONTROL' entfernt VIRUS-CONTROL. Ein Anklicken von 'KILL SYSTEM-VIRUS' restauriert die Systemvektoren. Ein Anklicken von 'BOOTBLOCK -> SCHIRM' zeigt den gesamten Bootblock (1024 Bytes) als ASCII-Dump an. Ein Anklicken von 'BOOTBLOCK -> FILE' schreibt den gesamten Bootblock (1024 Bytes) in ein File, dessen Name im unteren String-Gadget eingegeben wird. Ein Anklicken von 'FILE -> BOOTBLOCK' überschreibt den Bootblock mit einem File, dessen Name im String-Gadget angegeben wird. Mit dieser Möglichkeit, den Bootblock in ein File abspeichern zu können, und dieses File auch wieder auf den Bootblock schreiben zu können, kann man sehr einfach von allen wichtigen Disketten eine Bootblockkopie anfertigen, und somit notfalls den Original- Bootblock wiederherstellen. Durch das Anklicken von 'STANDARD-BOOTBLOCK' wird der Original- Amiga-Bootblock auf Diskette geschrieben (entspricht 'Install') Durch das Anklicken von 'NOFASTMEM-BOOTBLOCK' wird eine Bootblock- routine auf Diskette geschrieben, die das FastMem schon zu Beginn des Bootvorgangs abschaltet. Der Rechner verhält sich so, als ob er nur ChipRam besitzen würde. Ein blaues Farbsignal zeigt die NoFastMem-Routine an. Hält man während des Resets die linke Maus- taste gedrückt, so wird die NoFastMem-Routine nicht ausgeführt. Durch das Anklicken von 'f.CHECKSUM -> NOBOOT' wird eine falsche Bootblock-Checksumme auf die Diskette geschrieben, wodurch von der Diskette nicht mehr gebootet werden kann. Ein eventueller BootblockVirus ist dadurch unschädlich gemacht. Durch das Anklicken von 'r.CHECKSUM -> Boot' kann die Bootblock-Checksumme allerdings auch wieder korrigiert werden. Dadurch kann von der Diskette wieder gebootet werden, und somit auch ein eventueller Virus aktiviert werden. r/f.CHECKSUM ändert nur die BootBlock-Checksumme. Der BootBlock-Inhalt bleibt also voll erhalten. Durch das Anklicken von 'IN S:NOWARNING-FILE' wird der verdächtige Bootblock in dem File S:NoWarning abgespeichert. Existiert S:NoWarning, so wird der Bootblock an das Fileende angehängt, andernfalls wird S:NoWarning zuerst erstellt. Sollte der abzuspeichernde Bootblock bereits in S:NOWARNING vorhanden sein, so erscheint ein Requester, welcher die Möglichkeit anbietet, den Bootblock aus S:NOWARNUNG wieder zu entfernen. Wird nun in Zukunft eine verdächtige Diskette eingelegt, deren Bootblock in S:NoWarning abspeichert ist, so wird anstatt eines Warn-Window lediglich ein kurzes rotes Farb-Signal ausgegeben. Diese Option empfiehlt sich für 'verdächtige Disketten', welche keinen Bootblock-Virus besitzen, also ungefährlich sind. (z.B Intros,Spiele) Durch das Anklicken von 'IN S:VIRUSNAME-FILE' wird der verdächtige Bootblock in dem File S:VirusName abgespeichert. Es wird zusätzlich ein Name für den Bootblock abgespeichert. Dieser Name wird mittels des String-Gadgets eingegeben. Existiert S:VirusName, so wird der Name + Bootblock an das Fileende angehängt, andernfalls wird S:VirusName zuerst erstellt. Sollte der abzuspeichernde Bootblock bereits in S:VIRUSNAME vorhanden sein, so erscheinen Requester, welche folgende Möglichkeiten anbieten. Man kann den Bootblock + Name aus S:VIRUSNAME entfernen. Man kann den alten Namen durch den neuen Namen ersetzen. Wird nun in Zukunft eine Diskette eingelegt, deren Bootblock in S:VirusName abspeichert ist, so wird im Warn-Window zusätzlich der Virus-Name ausgegeben. Wird 1 Longword-Unterschied gefunden, so erfolgt auch noch eine namentliche Anzeige, da ein Bootblock- Virus meistens einen Infektionszähler besitzt. Mit dieser Möglichkeit kann man also alle Viren, (oder sonstige verdächtige Disks, oder aber auch nicht verdächtige Disks (L-ALT)) VIRUS-CONTROL bekannt machen. VIRUS-CONTROL kann dadurch also nicht veraltern ! Wenn eine verdächtige Disk eingelegt wird, so wird S:NoWarning und danach S:VirusName durchsucht. Wird eine Diskette bei ge- drücktem L-ALT eingelegt, so wird nur S:VirusName durchsucht, da ja bei L-ALT immer ein Warn-Window ausgegeben werden soll. Man sollte S: mittels assign auf ein schnelleres Medium setzen, da das Durchsuchen von z.B 100 KB (100 Bootblöcke) auf Disk circa 10 Sekunden dauert. In RAM: vd0: dh0: wird nur noch circa 2 Sekunden benötigt. Wenn man eine RamDisk S: zuweist, sollte man nicht vergessen, die Files am Ende wieder dauerhaft zu speichern, vorausgesetzt, man hat die Files verlängert. Das Durchsuchen der Files unterbleibt, wenn VIRUS-CONTROL mit -f gestartet wird. Sind die Files in S: nicht vorhanden, dann unterbleibt natürlich zwangsläufig ein Durchsuchen der Files. Alle tiefergehenden Funktionen, wie Bootblock beschreiben oder VIRUS-CONTROL entfernen oder System-Virus entfernen sind zusätzlich durch weitere Requester gegen unabsichtliche Ausführung abgesichert. Weiterhin zeigen Requester schreibgeschützte Disketten an. Ein OpenFile-Error wird ebenfalls durch Requester angezeigt. Da bis zu 4 Laufwerke möglich sind, können auch bis zu 4 Warn- Windows gleichzeitig bearbeitet werden. Daher sind alle Warn- Windows und Requester mit dem dazugehörigen Laufwerk gekenn- zeichnet. Ein grünes Farb-Signal signalisiert bei jeder neu eingelegten Diskette (oder beim "LoadWB"-Befehl oder beim erneuten Starten von VIRUS-CONTROL) das korrekte Arbeiten von VIRUS-CONTROL. Dieses optische Zeichen kann jedoch abgechaltet werden, indem man VIRUS-CONTROL zusätzlich mit -c (minus color) aufruft. Beim Starten von VIRUS-CONTROL werden die eingelegten Disketten überprüft. Durch Angabe von -t wird dieses unterlassen. Ein Aufruf von VIRUS-CONTROL mit -o bewirkt ein Verbiegen des OpenFile-Vektors. Es erscheint nun vor jedem Filezugriff ein Requester, mittels welchem der Filezugriff erlaubt oder verboten werden kann. Diese Filezugriffskontrolle kann sehr nützlich für das Erkennen von Link-Viren sein. Link-Viren breiten sich nicht über den Bootblock aus, sondern sie hängen sich an bestehende Files. Sie verlängern also diese Files und werden durch das Aufrufen dieser Programme aktiviert. Wenn sich nun ein Link-Virus an ein Programm hängen will, so kann der Filezugriff mittels des Requesters erkannt und verhindert werden. VIRUS-CONTROL bietet einen weiteren Schutz vor Link-Viren an. Ein Anklicken von 'FILE-SCHUTZ' bewirkt, daß das im String-Gadget angegebene File nach der VIRUS-CONTROL-Schutz-Kennung durchsucht wird. Weist das File noch keine Schutz-Kennung auf, so erscheint ein Requester, mittels dessen das File geschützt werden kann. (=VIRUS-CONTROL-Schutz-Kennung an File anhängen). In dieser Schutzkennung wird die Originalfilelänge abgespeichert. Bei einem erneuten Anklicken von 'FILE-SCHUTZ' wird nun erkannt, daß das File bereits geschützt ist. Es wird nun geprüft, ob die aktuelle Filelänge noch der abgespeicherten Original-Filelänge entspricht. Ist dies nicht der Fall, so hat sich vermutlich ein Link-Virus an das File gehängt. Ein Requester weist auf diese Gefahr hin. Es empfiehlt sich folgende Vorgehensweise. - Sicherheitskopien von den Original-Files anfertigen. - Original-Files schützen ( mit 'File-Schutz') - regelmäßig prüfen (mit 'File-Schutz'), ob Files noch unverändert sind. - Wird jedoch eine Filelängenveränderung festgestellt, so deutet dies auf einen Link-Virus hin. Man entfernt nun diesen Link-Virus einfach dadurch, indem man das verdächtige Programm mit dem Original- Programm überschreibt. Dieses neue Programm sollte nun wieder sofort geschützt werden usw. Man kann mittels 'File-Schutz' nicht nur ein einzelnes File schützen, beziehungsweise auf Veränderung überprüfen, sondern es sind auch Verzeichnis-Angaben erlaubt. Insbesondere das C: Verzeichnis sollte geschützt werden. Die Kurzanleitung zu VIRUS-CONTROL kann durch erneutes Starten von VIRUS-CONTROL abgerufen werden. Hierbei können auch die Parameter (-c -f -t -o) neu gesetzt werden. Die Parameter -c -o -f können auch mittels der entsprechenden Gadgets (FarbSignal, CheckOpen, FileSuche) neu gesetzt werden. VIRUS-CONTROL verhindert also mit absoluter Sicherheit das Eindringen von Bootblock-Viren, da es verdächtige Disketten anzeigt, und eine gefahrlose Bootsimulation anbietet. Denkbar sind allerdings auch Viren, welche sich z.B. als normaler CLI-Befehl tarnen. z.B. ein neu programmierter "Dir"-Befehl, welcher beim Aufruf den Virus installiert. Solche Viren können sich aber nur sehr viel langsamer als die Bootblockviren verbreiten. Deshalb haben sie auch noch keine größere Bedeutung erlangt. Aber auch solche seltene Viren können mit VIRUS-CONTROL erkannt werden, da VIRUS-CONTROL extra einen SEPARATEN TASK ZUR VEKTORENKONTROLLE installiert. Dieser Task überprüft sekündlich den Cool-Vektor, den DOIO-Vektor, die KICK-Vektoren und den BeginIO-Vektor der trackdisk.device- Struktur auf Veränderungen. Wird eine Veränderung festgestellt, wird ein entsprechender Requester ausgegeben. Nach Anklicken von 'ENDE' wird normal weitergearbeitet. Ein Anklicken von 'VIRUS-ENTFERN-VERSUCH' bewirkt, daß der DOIO-Vektor und COOL-Vektor neu auf VIRUS-CONTROL gesetzt werden. Der BeginIO-Vektor wird auf den Wert vor der Änderung zurück- gesetzt. Ferner werden der COLD-Vektor und die KICK-Vektoren gelöscht und die unteren 1024 Bytes des Supervisorstacks gelöscht, da sich hier oft Viren einnisten. Diese Option führt jedoch zwangsläufig des öfteren zu einem Absturz, da VIRUS-CONTROL mit dem Virus kollidiert. Es ist daher sehr ratsam, den Virus durch Ausschalten des Amigas zu entfernen, denn nur diese Methode kann wirklich sicher sein. Über alle ebengenannten Vektoren können sich Viren in das System einbinden. Die Änderungen an den Vektoren können aber auch von seriösen Programmen herrühren. So verbiegt das Disketten-Cache-Programm FACC ebenfalls den BeginIO-Vektor der trackdisk.device-Struktur. Ferner existieren z.B. resetfeste Druckertreiber, welche sich z.B. über die KICK-Vektoren resetfest machen. VIRUS-CONTROL bindet sich somit mit Absicht über den COOL-Vektor und den DOIO-Vektor in das System ein, denn diese werden in der Regel nicht von seriösen Programmen benutzt. Um herauszufinden, ob es sich bei einem verdächtigen Bootblock wirklich um einen Virus handelt, kann man folgendermaßen vorgehen: Man bootet mit installiertem VIRUS-CONTROL von der verdächtigen Disk, aktiviert also bewußt einen eventuellen Virus. Alle eingelegten Disketten sollten schreibgeschützt sein, damit sich der eventuelle Virus nicht verbreiten kann. Handelte es sich um einen Virus, so kann man dies an folgenden Umständen erkennen: - Der Vektor-Kontroll-Task weist mittels Requester auf veränderte Vektoren hin. - Ein Schreibzugriff auf den Bootblock wird durch einen Requester angezeigt, jedoch nur dann, wenn der Schreibzugriff mittels der DOIO-Funktion erfolgt, was jedoch praktisch immer der Fall ist. - Es fehlt das grüne Farb-Signal beim Einlegen einer neuen Disk, obwohl das Farb-Signal eingestellt ist. (DOIO-Vektor durch 'Virus' verbogen) - Beim Disk-Einlegen erscheint trotz L-ALT-Taste kein Warn-Window. (DOIO-Vektor durch 'Virus' verbogen) - Bei einem Reset tritt kein grünes Farb-Signal auf. (COOL-Vektor durch 'Virus' verbogen) - Der Versuch VIRUS-CONTROL zu starten schläg fehl, da das System bereits infiziert zu sein scheint. Es wird eine diesbezügliche Meldung ausgegeben. Da sich der Amiga sehr flexibel programmieren läßt, gibt es auch für ein Virus-Programm sehr viele Möglichkeiten. Es werden daher nicht alle eben genannten Effekte auftreten. Es kann auch zu Kollisionen zwischen VIRUS-CONTROL und dem Virus kommen, welche zum Absturz führen. Anschließend muß der Amiga ausgeschaltet werden, da dies die einzig wirklich sichere Methode ist, um ein Virus zu entfernen. Die einzige 100% sichere Methode, um einen Bootblock-Virus zu identifiziern ist zugleich auch die gefährlichste Methode. Man bootet OHNE VIRUS-CONTROL von der verdächtigen Disk, und legt eine nicht schreibgeschützte, nicht infizierte Diskette ein. Nun schaltet man den Amiga aus, wartet circa 20 Sekunden, schaltet den Amiga wieder ein, bootet von einer sauberen Disk, startet VIRUS-CONTROL und legt die nicht schreibgeschützte Diskette ein. Wenn die Diskette nun verdächtig geworden ist, so handelte es sich um einen Virus. Die Diskette sollte sofort 'ausgeschaltet' werden oder 'überschrieben' werden, damit man später nicht versehentlich von dieser Diskette bootet, und somit den Virus aktiviert und dadurch weiterverbreitet. Die soeben gegebenen Erklärungen mögen für den Anfänger irritierend sein. Dieser sollte einfach mit VIRUS-CONTROL arbeiten. Hierbei wird er erkennen wie einfach VIRUS-CONTROL, trotz der gebotenen Leistungsvielfalt, zu bedienen ist. Dem Profi möchte ich den gut dokumentierten Sourcecode empfehlen, welcher sicherlich manche Anregung beinhaltet. Da ich glaube, daß VIRUS-CONTROL ein sehr ausgereiftes und äußerst nützliches Programm ist, möchte ich Sie hiermit bitten, VIRUS-CONTROL als PUBLIC-DOMAIN zu vertreiben. Gersheim, den 05.05.89 P.Nippgen Ich möchte Ihnen noch mitteilen, daß VIRUS-CONTROL auch von der Workbench gestartet werden kann ! Es ist dabei natürlich nur sehr umständlich möglich, einen der oben beschriebenen Zusatzparameter anzugeben. Wenn Sie dieses wünschen, dann starten Sie VIRUS-CONTROL wie beschrieben am besten vom CLI oder aber durch die Startup-Sequence. Dann ist mir aufgefallen, daß VIRUS-CONTROL nicht immer einen Reset "überlebt". Ich benutze auf meinem AMIGA 1000 zwar eine etwas veränderte Kickstart V1.2, doch ob es daran liegt konnte ich leider nicht testen. Programminformationen: Programmautor: Pius Nippgen Bergstr. 12 D-6657 Gersheim 8