Verschlüsselungsgeneratoren
für Computerviren
Teil 1
Copyright (C) 05/1995 by Howard FuhsInhalt:
TridenT Polymorphic Engine TPE
Darwinian Genetic Mutation Engine (DGME)
Dark Angel's Multiple Encryptor DAME
Dark Slayer Mutation Engine DSME
Dark Slayer Confusion Engine DSCE
Guns'n'Roses Polymorphic Engine GPE
Golden Cicada Abnormal Engine GCAE
Simulated Metamorphic Encryption Generator SMEG
ULTImate MUTation Engine ULTIMUTE
Virogen's Irregular Code Engine ViCE
Compact Polymorphic Engine CPE
The Visible Mutation Engine VME
Einführung
Man sagt, technischer Fortschritt sei nicht aufzuhalten. Im Bereich der Computerviren kann man dieser Aussage jedenfalls zustimmen. In den Anfangsjahren der Computerviren reichte es aus, den Computerviruscode gründlich zu analysieren und anhand der Ergebnisse eine Bytefolge auszuwählen, mit der der Virus in einer infizierten Datei entdeckt werden konnte. Diese Bytefolge wurde nun in der Datenbank eines String-Scanners abgelegt. Vom Hersteller sorgfältig gewartete String-Scanner hatten schnell eine sehr hohe Entdeckungsrate und man glaubte, in der Antiviren-Industrie das Virenproblem im Griff zu haben.
Was lag nun bei der Funktionsweise eines String-Scanners näher, als einen Computervirus zu programmieren, der mit jeder Kopie von sich selbst seinen Code soweit verändert, daß ein Scanner, der nach einer bestimmten Bytefolge sucht, ihn nicht mehr entdecken konnte und damit nutzlos wurde. Computerviren, mit der Eigenschaft, sich selbst zu verändern, nennt man mutierende Viren oder auch polymorphe Viren.
Polymorphe Viren benutzen eine Codeveränderung oder Codeverschlüsselung, um von Antiviren-Scannern nicht entdeckt zu werden. Die Viren verschlüsseln dabei den Hauptteil ihres Codes mit einem veränderlichen Schlüssel und lassen nur die Entschlüsselungsroutine unverschlüsselt im Viruscode. Um diese Entschlüsselungsroutine vor der Entdeckung durch String-Scanner zu schützen, wird die Entschlüsselungsroutine mit jeder Kopie (Infektion) soweit verändert, daß zwar ihre Funktion gleich bleibt, der Code aber über eine feste Bytefolge nicht mehr erkannt werden kann.
Doch der technische Fortschritt sollte nicht nur in der Programmierung des ersten polymorphen Virus bestehen. Ähnlich wie bei den Virus Construction Kits (Virenbaukästen) erschienen bald die ersten fertigen polymorphen Verschlüsselungsroutinen, die als OBJ-Datei wie ein Baustein nur noch in einen bereits bestehenden Virus eingebunden werden mußten. All denjenigen wurde damit die Arbeit erleichtert, die nicht über genügend Wissen verfügten, um eine polymorphe Routine selbst programmieren zu können. Durch internationale Datennetze wurden diese fertigen polymorphen Routinen schnell über die ganze Welt verteilt und einem breiten Publikum zugänglich gemacht. So kam z.B. der erste polymorphe Generator aus Sofia, Bulgarien und war von einem Programmierer mit dem Namen Dark Avenger erdacht worden.
Von ihrer Funktionsweise her ist es einer polymorphen Routine egal, was für eine Sorte Programmcode sie zu verschlüsseln hat. In einigen Dokumentationen, die den polymorphen Generatoren beigelegt sind, ist dann auch oftmals der Hinweis zu finden, daß der Programmierer diese Routine nur zur Implementierung in Datensicherheitsprogramme freigibt und einen Einsatz in Computerviren verbietet. Trotzdem sind die polymorphen Routinen in aller Regel nur für den Einsatz in Computerviren gedacht und für andere Anwendungen nur bedingt tauglich.
MuTation Engine MtE
Die MuTation Engine war die erste polymorphe
Verschlüsselungsroutine welche speziell zum Einbinden in einen
Computervirus gedacht war.
In der mitgeleiferten Dokumentationsdatei
findet man folgenden Hinweis:
MuTation Engine <tm>
Version
0.90ß (17-08-91)
(C)
1991 CrazySoft, Inc.
written
by Mad Maniac
1. License
You are free to include this Engine in viruses. Using it in another ways is prohibited. You are free to give it to people that will only use it in this way. MuTation Engine is free.
Wie bereits vorher erwähnt, könnte man die diversen polymorphen Generatoren auch in andere Programme einbinden, was in diesem Fall allerdings von den Lizenzbedingungen untersagt wird. Es ist aber eher unwahrscheinlich, daß der Programmierer gegen eine andersartige Nutzung rechtliche Schritte einleiten würde.
Die MtE V0.90ß wurde in Assembler programmiert und mit Turbo Assembler 2.5 assembliert. Der Code der MtE-Datei MTE.OBJ ist 2kB groß. In der Original- Archivdatei von MtE war ebenfalls ein Demo-Virus als Source-Code zu finden, mit dem man die MtE gleich ausprobieren konnte. Kurze Zeit nach der Veröffentlichung der MtE wurde ein Disassembly-Script der MtE veröffentlicht. Hier konnte man sich dann genau ansehen, wie die MtE aufgebaut war und wie sie funktionierte.
Es wurde später eine MtE V1.00ß veröffentlicht, an welcher der Zufallsgenerator verändert worden war. Es wird heute angenommen, daß die Version 1.00ß nicht vom ursprünglichen Programmierer stammt.
Die MtE stammt von dem bulgarischen Programmierer Dark Avenger und wurde 1991 veröffentlicht. Die MtE ist der am weitesten verbreitete polymorphe Codegenerator und findet z.Zt. in ca. 36 verschiedenen Viren seine Anwendung. Man kann allerdings heute davon ausgehen, daß die MtE von jedem guten Antiviren-Programm zuverlässig erkannt wird und deshalb keine große Gefahr mehr darstellt.
TridenT Polymorphic Engine TPE
Die TPE wurde 1992 von einem holländischen Virenprogrammierer unter dem Pseudonym Masud Khafir veröffentlicht. Masud Khafir war bereits vorher als Mitglied einer Gruppe von Virenprogrammierern mit dem Namen TridenT Virus Research Group in Erscheinung getreten.
Der Autor der TPE, der vorher schon durch sehr fortgeschrittene, programmierte Computerviren aufgefallen ist, wurde durch die MtE von Dark Avanger erst auf den Gedanken gebracht, eine ebenfalls sehr fortgeschrittene polymorphe Routine zum Verschlüsseln von Viren zu schreiben. In den Final Notes der mitgelieferten Dokumentation zu TPE schreibt Masud Khafir:
First, I want to thank Dark Avenger from Bulgaria for his nice Mutation Engine program. This fine program has been a great source of inspiration for the TPE!
Masud Khafir hat bis heute 4 Versionen der TPE
veröffentlicht. Die Datei TPE.OBJ ist 1.6kB groß und fand in
mindestens 9 Viren Verwendung. Mit jeder neuen TPE Version wurden Fehler der
vorhergehenden Versionen korrigiert. So funktionierte bei der TPE Version
1.1 die Decryptor-Routine nicht auf allen Prozessortypen zuverlässig. Diser
Fehler wurde mit den Versionen 1.2 und 1.3 behoben. Version 1.2 konnte nur in
Viren verwendet werden, die immer den gleichen Speicherbereich belegten, was in
Version 1.3 abgeändert wurde. In Version 1.4 wurde schließlich eine
wesentlich komplexere Verschlüsselungsroutine eingeführt.
Eigentlich sollte TPE von jedem guten
Ativiren-Programm zuverlässig erkannt werden, bei kürzlich durchgeführten
Tests kam es trotzdem noch zu mancher Überraschung.
Darwinian Genetic Mutation Engine (DGME)
Ein Ableger der TPE stellt die Darwinian Genetic Mutation Engine dar. Die DGME wurde als Sourcecode in dem Buch von Mark Ludwig Computer Viruses, Artificial Life and Evolution veröffentlicht. Der Autor will nach eigenen Aussagen mit der DGME eine Möglichkeit zum Erforschen von evolutionärem Verhalten zur Verfügung stellen. Mit der DGME soll es möglich sein, einen Virus, der in der ersten Mutationsstufe von einem Antivirus-Programm mit 99,9% entdeckt wird, über mehrer Mutationsstufen so weiterzuentwickeln, daß jede weitere Mutationsstufe immer weniger vom gleichen Antiviren-Produkt erkannt und entdeckt wird. Grundgedanke dabei ist die Entwicklung eines Computervirus, der durch Evolution über mehrere Generationen nicht mehr von AV-Produkten erkannt werden kann. Im gleichen Buch wird der Sourcecode des SCAN-Slip Virus veröffentlicht, in den die DGME eingebettet und getestet werden kann. Es ist noch kein Virus bekannt, der die DGME tatsächlich nutzt.
NuKE Encryption Device NED
Die NuKE Encryption Device wurde im Oktober
1992 von Nowhere Man geschrieben, der bereits das Virus Creation Lab VCL
programmiert hatte (siehe Viren aus dem Baukasten
Datensicherheitsreport 12/94). Gemäß den Angaben im Sourcecode
Version 0.90ß sollte das Programm nicht an Personen außerhalb der
Virenprogrammierergruppe NuKE weitergegeben werden. Trotzdem wurde die NED als
kommentierter Sourcecode veröffentlicht, was es für Programmierer
einfach macht, das Programm zu modifizieren.
Von guten Antiviren-Programmen wird NED
zuverlässig erkannt. NED stellt deshalb keine ernste Gefahr mehr dar.
Dark Angel's Multiple Encryptor DAME
1993 wurde Dark Angel's Multiple Encryptor als Sourcecode in dem Untergrundmagazin 40HEX veröffentlicht. Dark Angel ist ein Mitglied der kanadischen Virenprogrammierergruppe Phalcon/SKISM und hat ebenfalls die Virenbaukästen PS-MPC und G2 programmiert (siehe Viren aus dem Baukasten Datensicherheitsreport 12/94). Zusammen mit dem kommentierten Sourcecode hat Dark Angel eine Abhandlung unter dem Titel Advanced Polymorphism Primer in 40HEX veröffentlicht. Eine Ausgabe später wurde in 40HEX DAME Version 0.91 als Sourcecode veröffentlicht. Bei Version 0.91 waren einige Fehler behoben und technische Verbesserungen gemacht worden. Der ursprüngliche DAME 0.90 ist 1.5kB groß und die verbesserte Version 0.91 ist 1.9kB groß. DAME wird heute von jedem guten Antiviren-Programm erkannt.
Dark Slayer Mutation Engine DSME
Seit einigen Jahren ist zu bemerken, das Programmierer aus Taiwan eine immer stärkere Stellung im Computervirenbereich und speziell im Bereich der polymorphen Generatoren einnehmen. DSME wurde am 28.09.1993 in Taiwan von einem 17jährigen Highschool-Student namens Dark Slayer programmiert und war der erste polymorphe Generator aus diesem Teil der Welt. Die DSME wurde mit MASM erstellt und kommt mit einer chinesischen und einer englischen Dokumentation sowie einem Assembler-Listing für einen Testvirus. Auch dieser Programmierer bezieht sich in der Dokumentation auf die MuTation Engine von Dark Avenger. Die DSME ist bei weitem nicht so weit fortgeschritten wie die MtE oder TPE und zählt zu den etwas einfacheren polymorphen Routinen.
Dark Slayer Confusion Engine DSCE
DSCE wurde im April 1994 vom selben
Programmierer veröffentlicht, der einige Monate zuvor bereits die DSME
programmiert hatte. DSCE ist eine weitgehend überarbeitete Version der DSME
und erlaubt wesentlich komplexere Verschlüsselungen. Auch der DSCE liegt
ein Assembler-Listing für einen Testvirus sowie eine englische und eine
chinesische Dokumentation bei.
Die Datei DSCE.OBJ ist 3.4kB groß. Es
ist kein Virus bekannt, der die DSCE verwendet.
Guns'n'Roses Polymorphic Engine GPE
Die GPE kommt von einem taiwanesischen Programmierer namens Slash Wu und wurde 1994 veröffentlicht. Die mit GPE mitgelieferte Dokumentation ist komplett auf chinesich geschrieben und daher relativ unergiebig ohne die entsprechenden Sprachkenntnisse. Es ist nicht bekannt, ob GPE in einen Virus integriert wurde. Der Name des Generators läßt darauf schließen, daß der Programmierer ein Fan von Heavy Metal Musik ist. Die Datei GPE.OBJ wurde mit Turbo Assembler 1.0 erstellt und ist 2.8kB groß.
Golden Cicada Abnormal Engine GCAE
Brandneu ist die GCAE. Sie kommt ebenfalls aus Taiwan und wurde im Januar 1995 veröffentlicht. Auch in diesem Fall ist die gesamte Dokumentation auf chinesisch und damit relativ unbrauchbar. Die Datei GCAE.OBJ ist 3.5kB groß. Da noch keine Tests mit dieser polymorphen Routine durchgeführt werden konnten, kann z.Zt. nichts über die Leistungsfähigkeit gesagt werden. Auffällig ist eine Ähnlichkeit zu DSME und DSCE. Es ist ebenfalls nicht bekannt, ob diese Routine bereits in einem Virus Verwendung findet.
MutaGEN
Von MutaGen wurden 1994 von Januar bis Juli neun verschiedene Versionen veröffentlicht, wobei die neueste Version MutaGen V.2.0 ist. Damit dürfte MutaGen die wohl am besten gewartete polymorphe Verschlüsselungsroutine sein. Der amerikanische Programmier MnemoniX hat mit jeder neuen Version Fehler der vorhergehenden Version behoben sowie die technischen Möglichkeiten der Routine erweitert.
Hier ein Auszug aus der MutaGen beigefügten Versionsliste:
Revision History:
.80ß
1/94 - personal release
.90ß
2/94 - first offical beta test version released. Sometimes scanned as TpE,
contained minor bugs.
.95ß
2/94 - fixed bugs & made less scannable.
1.00
3/94 - first official version. Functionally perfect, as far as I can see.
1.10
4/94 - Added more variability in code and optimized existing code. Also added
another demonstration virus.
1.1b
4/94 - Fixed protected mode bug, I think. (Thanks Memory Lapse)
1.2
5/94 - Improved code yet more, added more power & polymorphism.
(Also,
the first demo virus no longer scans as Ash.)
1.3
6/94 - Optimized some code and added more weird twists and turns in the code.
2.0
7/94 - The definitive version. I fixed bugs with the IN and REP instructions
that would occasionally cause problems. Added many calls and jumps to make
detection much more difficult. If there is a next version, it will simply be
smaller.
Die Datei MUTAGEN.OBJ der Version 2.0 ist 2.4kB groß. Zusammen mit MutaGen werden zwei Testviren als Assembler-Listings zur Verfügung gestellt.
Simulated Metamorphic Encryption Generator SMEG
Die SMEG Routine hat 1994 für einiges Aufsehen in Fachkreisen gesorgt. Waren doch einige sehr hartnäckige und gefährliche Viren damit versehen. SMEG wurde in England von einem Programmierer mit dem selbst gegebenen Namen Black Baron geschaffen. SMEG Version 0.1 wurde von Black Baron im Pathogen Virus eingesetzt, SMEG Version 0.2 verschlüsselte vom gleichen Programmierer den QUEEG Virus und SMEG Version 0.3 wurde als OBJ Datei zur Implementierung in anderen Viren veröffentlicht. Nach Angaben des Programmierers verwendet SMEG ausschließlich 8086/88 Instruktionen und ist damit kompatibel vom alten PC-XT bis zum Pentium. Auffällig ist ebenfalls die mit über 25kB recht umfangreiche Dokumentation des Programmierers.
Die Besonderheit von SMEG ist ein äußerst umfangreicher und sehr gut programmierter Junk Program Generator, der zufällige und unbedeutende Programmanweisungen in einen Virus implementiert, um desssen Code zu tarnen und zu verschlüsseln. In aller Regel produzieren schlecht programmierte Junk Program Generator Routinen oftmals Anweisungen, die fehlerhaft sind oder in der gegebenen Form vom Computer nicht ausgeführt werden können. Dies führt dann in einer bestimmten Mutationsstufe zu fehlerhaft veränderten Viren, die entweder nicht mehr lauffähig sind oder aber das System zum Absturz bringen. In beiden Fällen ist dann die Wahrscheinlichkeit ziemlich groß, daß die Infektion schnell bemerkt wird. Gegenüber den SMEG Versionen 0.1 und 0.2 wurde der Junk Programm Generator in der SMEG Version 0.3 nochmals verbessert.
Die Datei SMEG.OBJ wurde mit TASM 2.15
erstellt und ist 2.3kB groß.
Wie bereits beschrieben ist SMEG bereits in
Viren implementiert. Zur Zeit können wirklich nur sehr gute
Antiviren-Programme SMEG zuverlässig und sicher entdecken.
ULTImate MUTation Engine ULTIMUTE
In der Untergrundzeitschrift Crypt Newsletter wurde Ende 1993 ULTIMUTE als kommentierter Sourcecode veröffentlicht. Nach Aussagen des Programmierers Black Wolf ist ULTIMUTE written for security-type applications and other areas where mutation of executable code is necessary. Und tatsächlich wurde ULTIMUTE in Black Wolf's File Protection Utilities verwendet. Diese Utilities erlaubten es, eine Passwortverschlüsselung in COM- und EXE-Dateien zu implementieren. Der Verschlüsselungsalgorithmus ist sehr einfach gehalten. Es ist kein Virus bekannt, der ULTIMUTE verwendet, so wie es auch vom Programmierer ausdrücklich gewünscht wurde. Die Datei ULTIMUTE.OBJ ist 1.7kB groß.
Virogen's Irregular Code Engine ViCE
Die neueste polymorphe Routine dürfte
wohl ViCE sein. Nach Angaben des Programmierers Virogen begann er
mit den Programmierarbeiten am 05.02.1995 und die derzeit vorliegende Version
0.2a wurde am 11.02.1995 veröffentlicht. Nach eigenen Aussagen ist Virogen
ein Mitglied der amerikanischen Virengruppe NuKE. Zusammen mit ViCE werden 3
Testviren mitgeliefert, in die ViCE eingebunden werden kann. ViCE enthält
einen Junk Code Generator, der durch Interrupt-Aufrufe ganz gezielt ein
bestimmtes Antiviren-Programm an der Entdeckung von entsprechenden Viren hindern
soll.
Die Datei VICE.OBJ ist 2kB groß und
wurde mit Turbo Assembler Version 2.0 erstellt.
Compact Polymorphic Engine CPE
1994 wurde die CPE in der Version 0.11b als COM-Datei veröffentlicht. Die eigentliche Verschlüsselungsroutine ist nur 1.3kB groß. Da keinerlei Dokumentation oder sonstige Hinweise mit der CPE veröffentlicht wurden, kann auch hier im Moment nichts Genaues darüber gesagt werden wer oder wo CPE programmiert wurde oder wie leistungsfähig sie ist. Nach den ersten Tests zufolge scheint es sich hier aber eher um eine relativ einfache Routine mit einigen Fehlern zu handeln.
The Visible Mutation Engine VME
In dem Fachblatt für Virenprogrammierung Computer Virus Developments Quarterly wurde im Frühjahr 1993 der kommentierte Sourcecode der VME veröffentlicht. Auch hier handelt es sich um eine nach heutigen Maßstäben relativ einfache Verschlüsselung, die gemäß der Publikation nur zu Lern- und Forschungszwecken dienen soll. Die Datei VME.OBJ wurde mit Turbo Assembler 3.2 erstellt und ist 2kB groß. Es ist nicht bekannt, ob ein Virus diese Routine verwendet.
Phantasie Mutation Engine PME
Die Phantasie Mutation Engine wurde in Deutschland im Januar 1995 als UU-verschlüsselte Datei in der Virus.Ger des FIDO-Netzes veröffentlicht. Geschrieben wurde die PME von Burglar, der nach eigenen Aussagen aus Taiwan stammt. Es ist bis jetzt nur die PME Version 1.0 bekannt. Die Datei PME.OBJ ist 1.7kB groß. Es ist bis jetzt noch kein Virus bekannt, der die PME benutzt.
Die PME ist eine relativ schlechte Mutation Engine, die nicht sehr komplex ist und dadurch an Generatoren wie TPE bei weitem nicht herankommt.
Schlußbemerkung
Als ich anfing, in meinem eigenen Archiv das Thema zu recherchieren, war ich doch sehr überrascht, wieviel polymorphe Verschlüsselungsroutinen dabei zum Vorschein kamen. Auf Anfrage wurden mir von anderen Virenforschern noch weitere polymorphe Generatoren zur Verfügung gestellt. Hätte man mich gefragt, wieviele solcher Routinen es eigentlich gibt, wären mir auf Anhieb nur die fünf bekanntesten Routinen eingefallen.
Was sehr beunruhigend ist, ist die Tatsache, daß in letzter Zeit relativ viele Veröffentlichungen aus Taiwan stammen. Auch in diesem Teil der Welt scheint man um die technologische Vorherrschaft auf dem Gebiet der Computerviren bemüht zu sein. So wie sich früher der Virenschwerpunkt plötzlich in den Osten Europas verschob, so könnte es durchaus sein, daß die Virenfabriken der Zukunft in Fernost zu suchen sind. Anzeichen dafür gibt es genügend. Immerhin sind aus Taiwan in den letzten zwei Jahren fünf polymorphe Verschlüsselungsroutinen veröffentlicht worden.
Natürlich sind die derzeit existierenden polymorphen Routinen in technologischer Hinsicht nicht der Weisheit letzter Schluß. Zwischen dem bereits Existierenden und dem Denkbaren ist noch sehr viel Spielraum für die Kreation neuer Probleme in Form von polymorphen Verschlüsselungsroutinen.
Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Autors unzulässig und strafbar.
Copyright (C) 5/1995 by Howard Fuhs