DIESER SERVICE KANN ÜBERSETZUNGEN VON GOOGLE ENTHALTEN. GOOGLE ÜBERNIMMT KEINERLEI VERANTWORTUNG FÜR DIE ÜBERSETZUNGEN. DARUNTER FÄLLT JEGLICHE VERANTWORTUNG IN BEZUG AUF RICHTIGKEIT UND ZUVERLÄSSIGKEIT SOWIE JEGLICHE STILLSCHWEIGENDEN GEWÄHRLEISTUNGEN DER MARKTGÄNGIGKEIT, NICHT-VERLETZUNG VON RECHTEN DRITTER ODER DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK.

Die Website von Kaspersky Lab wurde für Ihre Bequemlichkeit mithilfe einer Übersetzungssoftware von Google Translate übersetzt. Es wurden angemessene Bemühungen für die Bereitstellung einer akkuraten Übersetzung unternommen. Bitte beachten Sie, dass automatisierte Übersetzungen nicht perfekt sind und menschliche Übersetzer in keinem Fall ersetzen sollen. Übersetzungen werden den Nutzern der Kaspersky-Lab-Website als Service und "wie sie sind" zur Verfügung gestellt. Die Richtigkeit, Zuverlässigkeit oder Korrektheit jeglicher Übersetzungen aus dem Englischen in eine andere Sprache wird weder ausdrücklich noch stillschweigend garantiert. Einige Inhalte (z. B. Bilder, Videos, Flash, usw.) können aufgrund der Einschränkungen der Übersetzungssoftware möglicherweise nicht inhaltsgetreu übersetzt werden.

Virus.Win9x.Memorial

Kategorie Virus
Plattform Win9x
Beschreibung

Technische Details

Dieser Text wurde von Peter Szor, Data Fellows Ltd

Memorial ist ein sehr interessanter Windows 95-Virus. Es hat eine lange Entwicklung im Schreiben von Windows-Viren bis jetzt gegeben [Ende von 1997]. Die Liste der Windows 95-Infektoren ist jedoch noch nicht lang. Memorial zeigt neue Ideen, da es sich um einen Windows 95-Virus handelt, der sich im Speicher befindet. Das heißt, es infiziert sowohl DOS-basierte COM- und EXE-Dateien als auch Win32 PE-Dateien (Portable Executable). Das Hauptformat des Virus ist ein Windows 95 VxD (Virtual Device Driver).

Der Virus wird nicht in DOS-basierten COM- und EXE-Dateien verschlüsselt, sondern infizierte PE-Dateien werden mit einer oligomorphen (halbpolymorphen) Routine verschlüsselt. Darüber hinaus ist der Hauptviruskörper (das VxD-Bild) mit einem einfachen Algorithmus gepackt. Es gibt bereits einen Virus, der in PE-Dateien (genannt Win95.Mad) verschlüsselt ist, aber Memorial ist sicherlich der erste Windows 95-Virus, der oligomorphe Fähigkeiten zeigt. Damit macht es den ersten Schritt auf dem Weg zum Windows 95-Polymorphismus.

Memorial ist auch ein effektiver Retro-Virus. Es manipuliert die Windows 95-Registrierung, um mehrere bekannte Antivirenprogramme zu deaktivieren.

Glücklicherweise hat der Virus ein paar große Fehler, die das Verbreiten stark verlangsamen können. Wie auch immer, Memorial.12413 wurde in Schweden "in freier Wildbahn" gemeldet, ungeachtet dieser Probleme.

Ausführen einer infizierten DOS-COM-Datei

Windows 95-Virenschreiber begannen zu verstehen, dass Menschen mehr DOS-Programme als Windows 95-Anwendungen austauschen. Dies wird aus der Sicht des Virus zu einem großen Problem: Es kann einfach nicht zu weit verbreitet werden, indem nur Windows 95-Programme infiziert werden. Memorial löst dieses Problem, indem es auch DOS-Programmdateien infiziert. Die infizierten Dateien funktionieren als Dropper des Haupt-VxD-Moduls.

Wenn eine infizierte COM-Datei mit Memorial ausgeführt wird, löscht der Virus eine VxD-Datei in das Stammverzeichnis des Laufwerks C: C: CLINT.VXD. Zuerst prüft es, ob Windows gerade läuft. Wenn dies der Fall ist, führt der Virus einfach das DOS-Host-Programm aus. Andernfalls wird der Aufruf "Are you there" ausgeführt, der INT 2Fh AX = 0 ist. Wenn das AX-Register bei der Rückkehr von dem Anruf auf 4AB3h gesetzt wird, nimmt der Virus an, dass er bereits im Speicher aktiv ist, und gibt die Steuerung an das Host-Programm zurück. Dann erstellt es die C: CLINT.VXD-Datei mit einem versteckten Attribut und beginnt damit zu schreiben.

Die Schreibroutine erscheint als anti-heuristische Funktion. Das Ziel dieser Funktion ist jedoch anders. Der Hauptteil des Virus ist zu 7508 Bytes gepackt, und diese Funktion soll es entpacken. Der Algorithmus ist sehr einfach, aber effektiv. VxD-Dateien sind im LE-Format (Linear Executable). Die Struktur dieser Dateien enthält viele Nullen. Aus diesem Grund kann die Verpackung dieser Bereiche sehr effektiv sein. Im Grunde wird der volle VxD zu 7508 Bytes gepackt, was nach dem Entpacken zu 12413 wächst. Wenn CLINT.VXD bereit ist, kopiert Memorial einen Codeabschnitt von selbst in die Interrupt-Vektortabelle um 0: 200 und hakt INT 2Fh (Multiplex Interrupt). Auf diese Weise muss sich der Virus nicht darum kümmern, wie Speicher zugewiesen wird, aber er ist mit einigen Anwendungen inkompatibel.

Der INT 2Fh-Handler beantwortet den "Are you there call" und wartet 1605h im AX-Register, um die Windows-Initialisierungsbenachrichtigung zu prüfen. Diese Nachricht benachrichtigt DOS-Gerätetreiber und TSRs, dass Standard oder 386 Windows im erweiterten Modus gestartet wird. Windows ruft diese Funktion auf, da es DOS-Gerätetreibern und TSRs, die INT 2Fh überwachen, ermöglicht, sich auf die Ausführung in der Windows-Umgebung vorzubereiten.

Wenn diese ersten Aufrufe in den Interrupt-Handler des Memorials gelangen, öffnet der Virus C: CLINT.VXD, um nach seiner Existenz zu suchen. Wenn die Eröffnung erfolgreich war, initialisiert Memorial eine Win386_Stratup_Info_Struc-Struktur, um Windows anzuweisen, den VxD zu laden. Jeder Gerätetreiber oder jeder TSR kann Windows VxD verwenden, um den Betrieb in der Windows-Umgebung zu unterstützen. Um den VxD-Namen anzugeben, legt der Gerätetreiber oder TSR das SIS_Virt_Dev_File_Ptr-Mitglied auf die Adresse des Dateinamens des virtuellen Geräts fest. Daher verwendet Memorial eine dokumentierte Möglichkeit, Windows anzuweisen, C: CLINT.VXD zu laden. Das ist eine elegantere als das Ändern des Geräteabschnitts der System.ini-Datei, der komplizierter und nicht so erfolgreich ist.

Ausführen einer infizierten DOS-EXE-Datei

Wenn eine infizierte EXE-Datei ausgeführt wird, übernimmt derselbe Entpackungscode die Kontrolle vom Einstiegspunkt des Virus wie in COM-Dateien. Diese Funktion schreibt jedoch endlos in C: CLINT.VXD, da ein großer Fehler im DOS EXE-Infektionscode vorliegt. Memorial verwendet während der EXE-Infektion einen falschen Zeiger und einen schlechten Virusgrößenparameter. Es schreibt den gepackten VxD-Code (7508 Bytes) nicht in EXE-Dateien, sondern die entpackten 12413 Bytes nach dem Entpackungscode. Beim Entpacken extrahiert der Dropper-Code also ein bereits entpacktes VxD-Bild.

Da der Extractor-Code über dieses mögliche Problem nicht bekannt ist, schreibt er Megabyte Code in C: CLINT.VXD, bis der verfügbare Festplattenspeicher voll ist, aber selbst dann kehrt die Steuerung nicht zu DOS zurück. Wenn Sie während dieses Vorgangs Strg-C verwenden oder den Computer neu starten, kann das große C: CLINT.VXD gefunden werden, aber nur, wenn die Option / AH (versteckte Dateien anzeigen) des DIR-Befehls verwendet wird. So kann der Virus in EXE-Dateien als "Beabsichtigt" eingestuft werden. Glücklicherweise bleibt die Erkennung und Desinfektion dieser Dateien möglich.

Ausführen einer infizierten PE-Datei

Wenn eine infizierte PE-Datei ausgeführt wird, entschlüsselt sich der Virus zuerst selbst, da der Hauptkörper des Virus verschlüsselt und gepackt ist. Der Entschlüsseler ist 46 Bytes lang und oligomorph (siehe unten).

Wie im Falle einer COM-Infektion löscht der Virus auch das C: CLINT.VXD von PE-Dateien. Im Falle von DOS-Infektionen nimmt die Dropper-Funktion 275 Bytes zusätzlichen Code am Eintrittspunkt des Virus. In PE-Dateien ist diese Funktion in 32-Bit-Code und es ist komplizierter als die DOS-Version davon. Aus diesem Grund ist dieser Code länger: 1360 Bytes. Diese Funktion beinhaltet auch die Aktivierungsroutine von Memorial und soll auch den VxD laden.

Zuerst berechnet der Virus den Einsprungpunkt der GetModuleHandleA-Funktion in den Speicher. Es tut dies mit einem echten Hack; Es wird in internen Windows 95-Strukturen gesucht. Dies macht die PE-Infektion später leichter; Der Virus sollte der Tabelle "Importierte Namen" keine Namen hinzufügen. Memorial benötigt zu diesem Zweck keine komplizierte Patch-Funktion in seinem PE-Infektionscode.

Später berechnet es den Einstiegspunkt von GetProcAddress mit demselben Trick. Dann verwendet es GetModuleHanldeA, um das Handle des KERNEL32-Moduls zu erhalten. Mit diesem Handle kann Memorial GetProcAddress aufrufen, um die Adressen der CreateFileA-, WriteFile-, ReadFile-, SetFilePointer-, CloseHandle-, GetLocalTime-, LocalAlloc-Prozeduren abzurufen bzw. zu speichern. Danach wird GetModuleHandleA erneut verwendet, um das Handle von USER32 zu erhalten. Dann verwendet es erneut GetProcAddress, um die Adresse der MessageBox-Prozedur zu speichern.

Danach ruft der Virus die Funktion GetLocalTime auf, um das Datum zu prüfen: Wenn der 10. April ist, wird der Virus aktiviert und zeigt ein Meldungsfeld an, indem er die MessageBox-Prozedur verwendet:


Clinton Haines Memorial Virus von Quantum / VLAD und Qark / VLAD
Clinton Haines, auch bekannt als Harry McBungus, Terminator Z und Talon
starb an seinem 21. Geburtstag am 10. April 1997 an einer Überdosis Drogen.
Während seiner Zeit als Virenschreiber schrieb er die No Frills-Familie, X-Fungus,
Daemon und 1984 Viren. Er war ein guter Freund von VLAD und wir schreiben
dieser Virus zu seinen Ehren. Wir hoffen, es ist gut genug, um ihm gerecht zu werden.
VLAD erinnert sich. Ruhe in Frieden
RUHE IN FRIEDEN
Andernfalls wird überprüft, ob .CLINT bereits ausgeführt wird. Wenn dies der Fall ist, wird das Host-Programm ausgeführt. Sonst wird mit CreateFileA .C: CLINT.VXD als normale Datei erstellt (diesmal ohne dieses Attribut). Wenn dies erfolgreich war, weist Memorial Speicher zu, indem es die LocalAlloc-Prozedur aufruft. Dies liegt daran, dass es den gepackten Viruskörper an einen neuen Ort entpacken muss, bevor er den Code in die Datei schreiben kann. Daher entpackt es den VxD-Code (7508 Bytes) in den Puffer und schreibt daraus 12413 Bytes mit der WriteFile-Prozedur in CLINT.VXD. Dann schließt es die Datei mit CloseHandle. Danach führt er den VxD mit Hilfe der CreateFileA-Prozedur mit dem angegebenen Namensformat für diesen Zweck .C: CLINT.VXD aus. Schließlich startet es das Host-Programm.

Die Initialisierung (IFS-API-Hook)

Wenn die CLINT.VXD-Datei ausgeführt wird, wartet der Virus in seinem Steuerelement-Meldungshandler auf die folgenden Steuermeldungen: W32_DEVICEIOCONTROL, INIT_COMPLETE, SYS_DYNAMIC_DEVICE_INIT und SYS_DYNAMIC_DEVICE_EXIT. Im Falle einer W32_DEVICEIOCONTROL-Nachricht gibt der Virus 0 zurück, da er nicht mit anderen Win32-Anwendungen kommunizieren möchte. Wenn die Meldung SYS_DYNAMIC_DEVICE_EXIT eintrifft, gibt Memorial 1 zurück, um die Entladeanforderung zu verbieten. Im Fall von SYS_DYNAMIC_DEVICE_INIT- und INIT_COMPLETE-Nachrichten führt der Virus seine Initialisierungsprozedur aus.

Diese Prozedur hängt zuerst den DOS-IFS-API-Aufruf (Installable File System). Danach löscht es mehrere Schlüssel aus der Windows 95-Registrierung unter 'SystemCurrentControlSetServicesVxd', wo statisch geladene VxD-Namen gefunden werden können; wie Anti-Virus-VxDs. Zuerst löscht es "VETMON95" und "VETMACRO" Schlüssel. Dann löscht es 'NAVAP', 'virusafe', 'WIMMUN32' Schlüssel. Dann öffnet es den Abschnitt "SOFTWAREMicrosoftWindowsCurrentVersionRun" und löscht die folgenden Werte: "NORTON AUTO-PROTECT", "TBAV für Windows 95", "Anywhere Antivirus Validation", "Vshwin32EXE" und "ViruSafe". Dann geht es zu 'SOFTWAREMcAfeeScreenScan' und löscht 'bEnableScreenScan', 'bScanAllFiles', 'bScanSubDirs'. Löscht dann die folgenden Schlüssel unter 'SOFTWARECybecVET Antivirus für Win32': 'ActionsInfectedAction', 'ActionsSuspectAction', 'MemoryEnabled', 'ResidentFileCheck', 'ResidentSectionAction', 'ResidentSuspectAction', 'ScanScan All Files', 'ScanScan Type', 'ScanningSkip Umbenannt ',' Unterordner scannen 'und setzt den Wert' ScanningExtension List 'auf' bin, dll, doc, drv, ovl, sys, dot 'und entfernt' com, exe und möglicherweise 'scr' aus dieser Liste. Auf diese Weise deaktiviert Memorial viele Windows 95-Antivirenprogramme.

Dann löscht der Virus die Attribute auf C: CLINT.VXD. Danach öffnet es die Datei und erhält und speichert ihre Größe und weist genügend Speicher für ihre entpackte und gepackte Kopie zu. Dann liest es sich aus der Datei in den Hauptpuffer. Memorial schließt dann die VxD-Datei und löscht sie.

Danach packt er den VxD-Code in den zweiten Puffer. Schließlich kehrt es von seiner Initialisierungsroutine zurück.

COM-Infektion

Wenn Memorial einen offenen Dateiaufruf abfängt, überprüft er zuerst die Erweiterung der Datei und vergleicht sie zuerst mit "COM". Wenn die Erweiterung "COM" lautet, ruft Memorial das Attribut der Opferdatei ab, speichert es und löscht es. Daher wird das Nur-Lesen-Attribut die Infektion nicht verhindern. Dann öffnet es das Opfer und liest 4 Bytes davon. Wenn das dritte Byte (nach dem anfänglichen Sprung) "Z" war, nimmt Memorial an, dass die Datei bereits infiziert ist. Dann wird nach "MZ", "ZM" Markierungen gesucht, um sicher zu sein, dass die Struktur des Opfers nicht COM ist. Dann überprüft es die Opfergröße und infiziert sie nicht, wenn sie kleiner als 7168 oder größer als 51200 Bytes ist. Dann liest es die letzten 5 Bytes des Programms und prüft, ob sie mit 'SN' beginnen. Wenn dies gefunden wird, infiziert der Virus die Datei nicht. Ich sehe keinen anderen Grund für diese Funktionalität, außer einen bestimmten PC zu inokulieren (möglicherweise ist der Virusschreiber selbst), indem dieser spezielle Marker am Ende der COM-Dateien hinzugefügt wird.

Dann fügt Memorial am Ende des Opfers den DOS-Dropper-Code (275 Byte) zusammen mit dem gepackten Virus-Image (7508 Byte) hinzu. Schließlich ändert es das Betteln des Opfers, indem es die ersten 4 Bytes in einen anfänglichen Sprung + eine 'Z'-Markierung ändert und das Attribut auf das ursprüngliche setzt. Daher ist die Größe des Virus 7783 Bytes im Falle einer COM-Infektion.

DOS EXE-Infektion

Wenn die Datei mit 'MZ' oder 'ZM' Markern gestartet wurde, prüft der Virus die Erweiterung, indem er sie mit '.EXE' und '.SCR' vergleicht. Dann ruft es IFSMgr_Get_DOStime auf, um eine Basisnummer für seinen Zufallszahlengenerator zu haben. Da in PE-Dateien der Virus einen Abschnittsnamen benötigt, der dem PE-Header-Bereich hinzugefügt wurde, und er möchte oligomorph sein, möchte er keinen konstanten Abschnittsnamen verwenden. Daher mutiert es zuerst den Standardnamen von 'CLINTON' zu einer 'Müll'-Zeichenfolge.

Im Grunde verwendet es ein 8-Bit-XOR für die Verschlüsselung. Während der Verschlüsselung wird ein Prüfbyte berechnet und als letztes Zeichen der Abschnittsnamen-Zeichenfolge gespeichert. Dieses zusätzliche Byte wird beim Überprüfen vorhandener PE-Infektionen verwendet. Memorial ändert den Abschnittsnamen nur bei DOS-EXE-Infektionen. Dies macht die Mutation langsam genug (langsamer Oligomorphismus).

Wenn dieser bereit ist, öffnet Memorial das Opfer, liest den Header und sucht nach der 'MZ,' ZM 'Signatur. Dann liest es 4 Bytes von der 3Ch-Position der Datei. Dieses Doppelwort enthält einen Zeiger auf den Windows-Headerbereich ausführbarer Dateien. Wenn dieser Zeiger 0 ist, nimmt der Virus an, dass die Datei eine normale DOS-EXE-Datei ist, und versucht, sie als solche zu infizieren. Es überprüft das Prüfsummenfeld des EXE-Headers. Wenn dieser 6666h ist, infiziert der Virus die Datei nicht, zusätzlich, wenn das IP-Feld 100h in der Kopfzeile ist, infiziert sich der Virus auch nicht.

Dann erhöht der Virus die Größe der EXE-Dateien auf die Absatzgrenze und fügt den VxD-Dropper-Code (275 Byte) am Ende der Datei hinzu. Dann kommt der größte Fehler im Virus: Er schreibt das entpackte VxD an das Ende der Datei (12413 Bytes). Daher ist die Virusgröße 12688 Bytes im Falle von DOS-EXE-Opfer-Dateien. Schließlich wird der Header der ausführbaren Datei so geändert, dass er auf den Viruseintrittspunkt zeigt.

PE-Infektion

Wenn die EXE- oder SCR-Datei als ausführbare Windows-Datei angenommen wurde, sucht Memorial zuerst nach der PE-Signatur. Dann beachtet es das Read-Only-Attribut. Dann liest es den letzten Abschnitt aus der Bildkopfstruktur und berechnet das Prüfbyte auf dem Abschnittsnamen. Wenn die Prüfsumme übereinstimmt, infiziert sich Memorial nicht. Andernfalls wird der PE-Header geändert, indem der neue Virusabschnitt hinzugefügt wird. Da Memorial ein oligomorpher Virus ist, mutiert er zunächst einen 46 Bytes langen Entschlüsseler (siehe: Oligomorphe Engine) für den Anfang seines Körpers. Dann verschlüsselt es die PE-Version des VxD-Droppers, die 1360 Bytes lang ist. Die Verschlüsselung basiert auf einem 8-Bit-XOR. Dann fügt er den Code des Entschlüsselers + den VxD-Dropper-Code zum Ende des Opfers hinzu (1406 Bytes). Schließlich verschlüsselt es das gepackte VxD-Bild und fügt es am Ende der Datei hinzu (7508 Bytes). Dann stellt es das Attribut des Opfers wieder her und schließt es. Die PE-Infektion ist fertig. Daher ist die Größe des Virus-Codes 46 + 1360 + 7508 = 8914 Bytes. Beachten Sie jedoch, dass sich dies ändern kann, da der Virus die Dateigröße bis zu einer Abschnittsausrichtung erhöhen muss.

Oligomorpher Motor

Dieser Motor ist einfach, aber effektiv. Die grundlegende Entschlüsselung besteht aus 11 verschiedenen Teilen. Die Mutationsmaschine modifiziert die Reihenfolge dieser kleinen Blöcke, indem sie einige von ihnen ändert. Somit können Block 1 mit 2, 8 mit 9, 6 mit 7, 3 mit 4, 5 mit 4 und 10 mit 0 durch einander ersetzt werden. Dies ergibt 2 * 2 * 2 * 2 * 6 alle zusammen 96 verschiedene Fälle. Dies erschwert die Erkennung des Virus in PE-Dateien.

Fazit

Memorial ist ein sehr komplexer Virus. Es zeigt, dass polymorphe Windows 95-Viren später in der Nähe von polymorphen Mutations-Engines erscheinen, die nur mit Windows 95-Viren verwendet werden können. Das bedeutet, dass es Zeit ist, neue Scan-Engines für diese neuen Biester zu implementieren.


Link zum Original