Sie sind auf Seite 1von 18

Opcode Statistics And Crypto Detection Heuristics In IDA

Author Tayfun Yilmaz Rheinische Friedrich Wilhelms Universitat¨ Bonn Projektgruppe: Malware Bootcamp yilmaz@cs.uni-bonn.de

Abstract

Diese Ausarbeitung besch aftigt¨ sich mit dem Analyse- Tool Fingerprint v.2.0, einem IDAPython Skript dass der statischen bzw. statistischen Analyse von ausfuhrbarem¨ Binarcode¨ dient.Sie beschreibt die Nachimplementierung von vielversprechenden Ansatze¨ zum Thema der statis- tischen Auswertung von Instruktionsverteilungen in di- sassembliertem Bin arcode¨ in IDA,um es praktisch nutz- bar zu machen.Die Leistungsfahigkeit¨ wurde im Rah- men einer Evaluation verifiziert. Die Grundlage f ur¨ die- se Ausarbeitung bilden Daniel Bilars Analysemechanismen (Siehe: Fingerprinting Malicious Code Through Statisti- cal Opcode Analysis“-Daniel Bilar: Department of Com- puter Science, Wellesley College, Massachusetts, USA) und Juan Caballeros Dispatcher zur Erkennung von Krypto- Routinen anhand des Verh altnisses¨ arithmetischer und lo- gischer Operationen (Im Folgenden abgek urzt¨ mit Ops“) zu der Gesamtheit aller in dem ausfuhrbaren¨ Code enthal- tenen Ops.

Keywords [Tayfun,Yilmaz, Fingerprint,Malware, Analyse,Dispatcher,Caballero,Heuristik,Universitat¨ Bonn]

1. Motivation

Die dynamische Herangehensweise an Malware mit Anti-Viren Software(Im Folgenden abgek urzt¨ mit AV“) hat sich in der Vergangenheit als bedingt erfolgreich heraus- gestellt.Sie ist eine relativ schnelle, jedoch in Bezug auf beispielsweise metamorphe und polynmorphe Malware nur bedingt anpassungsfahig.Die¨ Idee ist daher, statt sich auf eine dynamische Analyse beschr anken,eine¨ statische Ana- lyse der Malware anhand der Aufteilung ihrer Opcodes und einer statistischen Auswertung dieser mit heranzuzie- hen.Diese wiederum werden aus der Datei extrahiert mit- hilfe des Interactive Disassembler Pro“(Im Folgenden ab- gek urzt¨ mit IDA Pro“) und die statistische Auswertung er- folgte mit Microsoft Excel, die in einer virtuellen Umge- bung (VMWare, 2005) ausgef uhrt¨ worden ist. Eine solche

Herangehensweise beschreibt Daniel Bilar, in seiner Arbeit Fingerprinting Malicious Code Through Statistical Opco- de Analysis“.

2. Einleitung

Die Motivation, die hinter der Analyse von Malwa- re steckt, ist eine Offensichtliche.Sie ist Schadensbegren- zung.Der wirtschaftliche Schaden durch Schadsoftware ist im Laufe der Zeit rasant gestiegen, von 10 Milliarden US Dollar im Jahre 1999, auf durchschnittlich 14 Milliarden US Dollar in 2006(Siehe: Computer Economics, 2006“), was eindeutig fur¨ den Einsatz von Analysmechanismen f ur¨ Malware spricht.Gleichzeitig ist auch die Zahl von Host- Bases, also PC’s mit einer IP, von 56 Millionen auf 440 Millionen in 2006 gestiegen(Siehe: Zakon“, 2006). Einen damit zwangsweise verbundenen Erfolg erzielte in diesem Zusammenhang die signaturbasierte AV Software, einer- seits sowohl im Hinblick auf polymorphe Malware und an- dereseits auf metamorphe Malware.Polynmorphe Malwa- re ist eine solche, die ihre Gestalt von Generation zu Ge- neration mithilfe von variablen Verschlusselungstechniken¨ andert,¨ um so dem Analysten die Auswertung des vorlie- genden Samples zu erschweren 3 . In metamorpher Malwa- re liegen ahnliche¨ Techniken vor um Veranderungen¨ am K orper¨ vorzunehmen [4] , was jedoch bei beiden das Ziel ist, ist anhand eines m oglich¨ langen zusammenhangenden¨ St ucks¨ Code, dass sich optimal f ur¨ Pattern-Basierte Ana- lysevorgange¨ eignet, eine Signatur abzuleiten, auf des- sen Basis Vorhersagen uber¨ die Funktion des vorliegenden Bin arcodes¨ getroffen werden konnen.Dieser¨ Weg ist zwar je nach Gr oße¨ der eingelesenen Executable eine relativ schnel- le, aber nur bedingt anpassungsf ahig¨ in Bezug auf bei- spielsweise die bereits erw ahnten¨ polymorphen F alle¨ von Malware. Eine Erg anzung¨ zu diesen Analysemechanismen sind verschiedene Heuristiken, von denen in der vorliegen- den Ausarbeitung die sog. Caballero-Heurstik“(Benannt nach Juan Caballero) implementiert worden ist.Am Bei- spiel zufallig¨ gewahlter¨ gutartiger und b osartiger¨ Softwa- re werden hier die sowohl absoluten als auch relativen H aufigkeiten¨ von 10 beispielhaft herausgenommenen Op-

codes bzw. Instruktionen betrachtet. Fortlaufend betrachten

als

auch gutartiger Software.In Bezug auf die Malware betach- ten wir entpackte und damit normalisierte Samples.

wir das Vorkommen der Opcodes von sowohl bosartiger¨

3. Grundlagen

3.1. Instruktionen

Eine Instruktion beschreibt in der Informatik einen Programmier- oder Maschinenbefehl, auch Instructi- on“oder Command“.Eine Folge bze. ein Satz von solchen Befehlen nennt man Befehlssatz, oder Instruction Set“ [5] . Die Gr oße¨ dieser existierenden Befehle h angt¨ von der Ar- chitektur des Prozessors ab, so findet sich der großte¨ Be- fehlssatz in der Complex Instruction Set Computer“(Im Folgenden mit CISC“abgek urzt).Im¨ Gegensatz dazu findet sich der kleinste Befehlssatz in der RISC-Architektur Re- duced Instruction Set Computer“ [6] .

3.2. CISC & RISC

Wie bereits erw ahnt¨ beschreiben die Kurzel¨ CISC und RISC verschiedene Formen der Prozessorarchitektur, wo- bei i.d.R CISC die Variante mit dem großten¨ und RISC die mit dem reduzierten Befehlssatz ist. Die Idee, die hinter ei- nem vergr oßertem¨ Befehlssatz steckt ist die, dass auch auch komplexere Rechenschritte mit nur einem Maschinenbefehl ausgefuhrt¨ werden konnen,¨ was den Prozessor wiederum schneller und leistungsf ahiger¨ machen soll. Problematisch ist in diesem Zusammenhang jedoch die Tatsache, dass das diesen Prozessortypen komplex und damit schwieriger wei- terzuentwickeln macht. Ebenfalls ist fragw urdig¨ wie haufig¨ die komplexeren Instruktionen tats achlich¨ verwendet wer- den. Die RISC Architektur dagegen arbeitet mit weniger als 100 Befehlen.Statt also auf große bzw. komplexe Befehle zu setzen, arbeitet diese Form der Prozessorarchitektur mit kurzen, einfacher realisierbaren Befehlen, die wiederum zu- sammengesetzt werden k onnen¨ um obige komplexere Be- fehle zu realisieren [6] .

3.3. Opcodes

Als sogenannte Opcodes“auch Operation Co- des“werden Zahlen bezeichnet, oft in hexadezimaler Form, die wiederum einen Maschinenbefehl, sogenannte Mne-

monics, f ur¨ einen bestimmten Prozessortypen einleiten [7] . W ahrend¨ einige Opcodes schon alleine einen solchen Maschinenbefehl darstellen besitzen andere zusatzlich¨ einen Operanden, die den Zweck einer Adresse, einer ein-

[8] . Daniel Bilar

beschrankte¨ sich in seiner Arbeit auf 14, aller im Rahmen der CISC Architektur zur Verfugung¨ stehenden, Op- codes(mov,push,call,pop,cmp,jz,lea,test,jmp,add,jnz,retn, xor), deren Vorkommen er n aher¨ analysiert hat.Am Beispiel zufallig¨ gew ahlter¨ Software, alle basierend auf der Intel x86- bzw. CISC Architektur (Gutartige Software,Kernel

fachen Konstante oder Ahnliches erfullen¨

¨

fachen Konstante oder Ahnliches erfullen¨ ¨ Abbildung 1. Vergleich der relativen H aufigkeiten¨ der 14

Abbildung 1. Vergleich der relativen H aufigkeiten¨ der 14 h aufigsten¨ Opcodes beider Datens atze¨ [1]

der 14 h aufigsten¨ Opcodes beider Datens atze¨ [ 1 ] Abbildung 2. Vergleich der relativen

Abbildung 2. Vergleich der relativen H aufigkeiten¨ der 14 seltensten Opcodes beider Datens atze¨ [2]

Rootkits,User Rootkits,Tools,Bots,Trojaner,Viren und W urmer)¨ ist sein Ziel die Erzeugung eines Structural Fin- gerprint“einem Instruktions-Histogramm mit den relativen Werten des betrachteten Ops in dem jeweiligen Datensatz zu der Gesamtheit aller Ops.Die Annahme, die hierbei gemacht wird ist die, dass einige Ops in Malware ein deut- lich hoheres¨ Vorkommen aufweisen als in entsprechend gutartiger Software. Bilar standen nach der Extraktion 398 IA-32 Opcodes zur Verf ugung,zur¨ uckzuf¨ uhren¨ auf die Summe der einerseits 1,5 Millionen Opcodes der gutarti- gen Samples, von denen 192 unterschiedlich waren und der 665000 Opcodes der bosartigen¨ samples, von denen wiederum 141 unterschiedlich waren [9] . Die in diesem Zu- sammenhang funf¨ am haufigsten¨ auftretenden Ops waren:

mov,push,call,pop,cmp. Wie in Abbildung 1 deutlich zu er- kennen ist, unterscheiden sich die oberen 14 Ops,in Bezug auf die Haufigkeiten,¨ nur minimal, was wiederum wenig aussagekraftig¨ ist. Betrachten wir jedoch die unteren, sprich die 14 Ops die laut Histogramm am seltensten gewesen sind(bt,fdvip,fild,fstcw,imul,int,nop,pushf,rdtsc,sbb,setb,

setle,shld,std ) wird ein Unterschied zwischen den Da-

tens atzen¨ klarer(Siehe: Abbildung 2). Diese Ops weisen ein solch niedriges Vorkommen auf, dass die Werte im Bereich 10 6 angegeben werden m ussen,¨ sprich Parts- Per-Million“(i.A. ppm“). Betrachten wir beispielhaft bt,fdvip,fild,fstcw, die zusammen gerechnet in der gut- artigen Software immerhin einen Wert von 435 · 10 6 erzielen.Selbige im Bereich Kernel Rootkits ergibt die

2

Gesamtsumme 0. Ein weiteres markantes Beispiel ist bei- spielsweise int .Dieses erzielt im gutartigen Datensatz den Wert 25ppm und bei den Kernel Rootkits beachtenswerte 4028 ppm. Entsprechend weitere Beispiele finden sich nicht nur im Bereich Kernel Rootkits, sondern in allen diesen Malware Kategorien entsprechend Abbildung 2. Zusammenfassend lassen sich in der Summe des jeweils betrachteten Opcodes also, laut Bilar, signifikante Unter- schiede zwischen gut- und bosartiger¨ Software erkennen, wenn auch daf ur¨ unter Umst anden¨ eine feinere Analyse betrieben werden muss.

3.4. Mnemonics

Wie bereits erwahnt¨ gehort¨ zu jedem Opcode ein Mne- monic, ein kurze Zeichenfolge die gut zu merken ist und den entsprechenden Befehl beschreibt, wie beispielsweise ADD“f ur¨ die Addition oder SUB“fur¨ die Subtraktion.Mit dem Operanden der unter Umstanden¨ zu dem Mnemonic geh ort,¨ bildet sich so die Assemblersprache, die von dem gleichnamigen Assembler, einem Hilfsprogramm, in einen f ur¨ den Prozessor verstandlichen¨ Maschinenbefehl umge- wandelt wird.Je nach der betrachteten Prozessorarchitektur konnen¨ sich die Assemblersprachen unterscheiden [10] . Ein Folge von Maschinenbefehlen ist dann der Maschonenco- de, eine Folge von Dualzahlen in 8-Bit respektive 1-Byte Einheiten, wie folgendes beispiel zeigt :

10100001 00000000 00101010

Die binare¨ Darstellung nimmt jedoch zu viel Platz weg, da- her schreibt man sie auch oft hexadezimal auf und da 1 He- xadezimalwert 4-Bit darstellen, konnen¨ mit lediglich 2 He- xadezimalwerten 1 ganzes Byte dargestellt werden.Dadurch sieht der Maschinencode dann in etwa ahnlich¨ zu Folgen- dem aus:

A1 00 2A 8B D8 C1

Zur Laufzeit des jeweiligen Programms werden diese Be- fehle dann in den Speicher geladen, wo der Prozessor sie sich nacheinander herausladen kann um sie dann, ent- sprechend der im Befehlsz ahler¨ festgehaltenen Reihenfol- ge,abzuarbeiten. Ein typischer Assemblercode (Hier in in der Intel 8086 Assemblersprache) sieht wie folgt aus :

Assemblercode: Maschinencode:

mov ax,B

A1 002A

mov bx,ax

8B D8

shl ax,2

C1 E0 02

[11] Bekannte Syntaxen sind die Intel Sytax, auch ASM86 genannt, und die AT& T ( Abk urzung¨ f ur¨ American Tele- phone & Telegraph Corporation“) Syntax. Ein wesentlicher Unterschied zwischen diesen ist beispielsweise der, dass w ahrend¨ in der Intel Syntax die Zieladresse vor der Quell- adresse steht :

Intel-Syntax: mov ebx , 5

3

die AT& T Sytax die Zieladresse hinter die Queladresse setzt :

AT&T-Syntax: mov 5 , ebx

3.5. BasicBlocks

Der Begriff der BasicBlocks wird im Laufe dieser Aus- arbeitung haufiger¨ genannt.Sie spielen im Rahmen der Ana- lyse von Binarcode¨ eine wichtige Rolle. Es handelt sich dabei um einen Teil des Codes innerhalb des Programms mit bestimmten gewunschten¨ Eigenschaften, die ihn zu ei- nem grundlegenden Baustein der statischen Analyse ma- chen.Er zeichnet sich in diesem Zusammenhang dadurch aus, dass er einen Entry-Point (Die letzte Instruktion aus- geschlossen) und einen Exit-Point (Auch hier ausgeschlos- sen der letzten Instruktion) besitzt(Siehe: Sicherheit in In- formationsystemen - Definition 15 (basic block)“- Kurt Bauknecht,Dimitris Karagriannis,Stephanie Teufel). Entry- Points bezeichnen in der Informatik bzw. der Program- mierung die Startadresse ab der die Maschineninstruk- tionen bzw. der Maschinencode einer Funktion in einer Programmbibliothek,bei Ausf uhrung¨ des Programms aus- gefuhrt¨ wird.Exit-Points dementsprechend analog [12] .

3.6. Data Encryption Standard - DES & 3DES

DES“ist die Abkurzung¨ f ur¨ Data Encryption Stan- dard“und ist ein unter Verschl usselungstechniken¨ weit verbreiteter symmetrischer Verschlusselungsalgorithmus.¨ Er wurde urspr unglich¨ von IBM f ur¨ die US-Regierung entwickelt und in seiner klassischen Form von der NASA verwendet [13] . Symmetrische Verschlusselungsalgorithmen¨ verwenden zum Ver- und Entschlusseln¨ denselben Schlussel.¨ Das Verfahren arbeitet auf 64-Bit großen Bl ocken¨ im Plaintext, sprich Klartext, aus denen er wieder- um mithilfe von ebenfalls 64-Bit großen Schl usseln¨ (Davon ist jedes achte Bit ein Paritatsbit¨ zur Erkennung fehlerhaft ubertragener¨ Informationen wodurch effektiv nur noch 54 Bits ubrig¨ bleiben) sog. Chiffretexte generiert.Als Chiffre- texte bezeichnet man die Ausgabe nachdem der Plaintext kryptographisch bearbeitet wurde [14] . Die Verschlusselung¨ beruht auf Permutationen und Subtitutionen, so erfolgt im ersten Schritt eine Permutation der Eingabe und dieses 64 Bit lange Ergebnis dessen Reihenfolge ge andert¨ wurde wird in zwei 32-Bit Register geschrieben (Linker Block : L i und rechter Block R i ).Selbiges geschieht dann mit den 56 Bits des Schlussels,¨ wobei hier das Ergebnis in zwei 28-Bit Register gespeichert wird. Im n achsten¨ Schritt werden die Schl usselregister¨ um ein bzw. zwei Bits verschoben und 48 der 56 Bits als Rundenschl ussel¨ bestimmt. R i wird von 32 auf 48 Bits expandiert und anschließend mithilfe einer XOR-Funktion verknupft,¨ um es dann auf die sog. S-Boxes S i “aufzuteilen. Die S-Boxes, bzw. Substitu- tionsboxen, haben jeweils einen Input von 6 und einen Output von 8 Bits wodurch die insgesamte Ausgabe am Ende wieder die 32 Bit sind. Die S-Box ist eine Tabelle mit

Abbildung 3. Zuf allig¨ generierte PBox insgesamt 16 Spalten und 4 Reihen mit reellen Werten,

Abbildung 3. Zuf allig¨

generierte PBox

insgesamt 16 Spalten und 4 Reihen mit reellen Werten, die sich alle voneinander unterscheiden. Im S i passiert dann folgendes: Sei beispielsweise die Eingabe folgendes 6er Bit x 1 , x 2 , x 3 , x 4 , x 5 und x 6 , dann dienen das erste und das letzte Bit dazu die Reihe in dieser Tabelle zu finden.Das bedeutet bei einer Eingabe x 1 bis x 6 = 110011 2 w aren¨ x 1 = 1 2 und x 6 = 1 2 , also zusammen 11 2 . Dezimal erh alt¨ man also den Wert 3 10 .In diesem Zusammenhang ist von großer Bedeuetung nicht zu vergessen, dass der Index der Zeilen und Spalten bei 0 beginnt, wie in der Informatik ublich.Die¨ ublichen¨ Bits also x 2 bis x 5 respektive 1001 2 also 9 10 ergeben die zur Zeile gehorige¨ Spalte 9. Die 3. Zeile, 9. Spalte beinhaltet letzendlich den Wert 11, also 1011 2 (Siehe: Abbildung 3). Nun wird dieser Datenblock mit L i mittels XOR ver- kn upft,¨ der dann das neue L i darstellt.R i ist jetzt das alte L i . Diese Schritte, exklusive ab der Aufteilung des Eingabeblocks und des Schlussels¨ in Register, werden insgesamt 16 mal durchgefuhrt¨ (16 sog. Rounds“).Am Ende erfolgt dann schließlich eine erneute Permutation des 32-Bit langen Ergebnisses. Nach der letzten Runde werden L i und R i zusammengefugt¨ [15] . Diese Form der Verschlusselungsfuhr¨ erfuhr in letzter Zeit eine Abwand- lung, undzwar dahingegen, dass die Zahl der verwendeten Schlussel¨ erh oht¨ wurde, da dem klassischen DES eine zu große Unsicherheit zugesprochen wurde.So ist heute statt dem DES ein beispielsweise Triple-DES“ein klassischer Verschl usselungsalgorithmus,¨ kurz 3DES,TDES“oder DESede“in beispielsweise Chipkarten jeglicher Art [16] .

3.7. Blowfish

Wie auch der Data Encryption Standard handelt es sich beim Blowfish um einen 1993 entwickelten symmetrischen Blockverschlusselungsalgorithmus.¨ Hier kommt der Input ebenfalls als 64-Bit langer Plaintext der in L i und R i aufge- teilt wird an und, ebenfalls wie im DES, wird L i auf XOR- Basis mit einem vorher berechneten Rundenschl ussel¨ ( P i bis P 16 ) verknupft:¨ R i +1 =L i P i Das Ergebnis durchlauft¨ die S-Box um anschließend mit R i XOR-verkn upft¨ und in L i +1 abgespeichert zu wer- den, sprich nach der XOR-Verknupfung¨ (mit der rechten H alfte¨ des Inputs) der XOR-Verknupfung¨ der Linken H alfte¨ des Ausgangs-Plaintextes mit dem entsprechenden Runden- schl ussel,werden¨ die beiden Halften¨ vertauscht:

L i +1 = R i F(R i +1 ). F soll hier als Funktion der S-Box beschreiben. Am Ende, also nach den 16 Runden in denen

S-Box beschreiben. Am Ende, also nach den 16 Runden in denen Abbildung 4. Struktur der Blowfish

Abbildung 4. Struktur der Blowfish Ver- schl usselung¨ [7]

der Input entsprechend obigem Muster modifiziert wurde, erfahren die beiden Halften¨ dann noch ein letztes Mal eine XOR-Verknupfung¨ mit den letzen RundenSchlusseln¨ P 17 und P 18 , sprich:

R 18 = L 17 P 17 , L 18 = R 17 P 18 .(Siehe Abbildung 4

Blowfish“) [17] .

4. Implementierung

Im Folgenden Abschnitt werden die in dem IDAPy- thon Skript Fingerprint v2.0 enthaltenen bzw. aufgerufenen Funktionen aufgelistet und kurz erklart.¨ Die in der Main- funktion des Skripts aufgerufenen Funktionen entsprechen aus chronologischer Sicht der Anordnung entsprechend Ab- bildung 5, dabei soll der Block innerhalb des Blocks functi- onsAndbasics() verdeutlichen, dass innerhlab der Funktion functionsAndbasics() die Funktion BasicBlocks() aufgeru- fen wird.

4.1. Funktionen

Die erste Funktion instructionListandHisto() welche in der Main des Skripts aufgerufen wird, ist eine solche , die eine Liste mit allen in der Executable enthaltenen Instruk- tionen, dabei jeweils bestehend aus Mnemonik, Instruktion und anschließend Operand erstellt.Die Informationen wer- den in eine .csv Datei exportiert. CSV steht fur¨ Comma Se-

4

Abbildung 5. Funktions ubersicht¨ v2.0 Fingerprint perated Values“und beschreibt eine nicht genormte Struktur zur

Abbildung 5. Funktions ubersicht¨

v2.0

Fingerprint

perated Values“und beschreibt eine nicht genormte Struktur zur Speicherung von Informationen in Dateien [18] . Ein Zei- chen, ublicherweise¨ ein Komma, jedoch sind je nach ver- wendeter Software auch Semikolon, Doppelpunkt, Tabula- tor oder Leerzeichen ublich,¨ dient dazu Datens atze¨ durch einen Zeilenumbruch voneinander zu trennen.Dies wieder- um vereinfacht die weitere Verwendung der vom Skript ex- portierten Informationen erheblich [19] . Die Ausgaben wer- den nicht nur dazu verwendet um eine absolute Zahl, bezo- gen auf jedes der Mnemoniks zu liefern, sondern zusatzlich¨ dazu auch ein Instruktions-Histogramm.Die Vorgehenswei- se dabei ist folgende.Jede der betrachteten Mnemoniks (pu- sh,mov,xor,sub,add,jmp,call,Pop,dec,sbb) bekommt ihre ei- gene Z ahlervariable.Außerdem¨ existiert eine Z ahlervariable¨ die unabhangig¨ von der Art des Mnemoniks inkrementiert wird. Dies ist notwendig, da am Ende aller Iterationen die Summe pro Mnemonik durch die Summe der Gesamtheit aller Mnemoniks geteilt und mit 100 multipliziert wird um einen prozentualen Wert f ur¨ das Verhaltnis¨ des jeweils be- trachteten Mnemonics zu erhalten.Die Ausgabe erfolgt da- bei trivialerweise in Float. ILH m undet¨ somit einerseits in der InstructionList.csv , einer Datei in der alle Mnemoniks, Instruktionen und Ops aufgelistet werden und andererseits in der InstruktionsHistogramm.csv, in der diese Mnemoniks erneut aufgegriffen werden, jedoch dieses Mal zusammen mit den in den Zahlervariablen¨ festgehaltenen Informatio- nen.Aus diesen folgt ein Histogramm zu den absoluten so- wie relativen Vorkommen der Mnemonics. Die n achste¨ aufgerufene Funktion ist die mnemList() Funk- tion, die den Zweck einer Dictionary erf ullt.Diese¨ Funktion hat die Aufgabe die gesamte Eingabe zu durchlaufen und alle enthaltenen Mnemoniks herauszufiltern.Diese werden nach der H aufigkeit¨ ihres Vorkommens sortiert und zusam- men mit diesem absoluten Wert in der Datei Dictionary-

5

List.csv festgehalten. Die IDAPython Built-In-Function Functions()“(Siehe In- troduction to IDAPython,Ero Carrera“) agiert im nachsten¨ Schritt als hilfreiches Tool um mithilfe einer For-Schleife alle Funktionen der Executable einzulesen und in Funktio- nenundBasicBlocks.csv“abzuspeichern.Wie der Name der Datei bereits verrat¨ werden hier nicht nur die Funktionen mit ihrer Startadresse,ihrem Namen und ihrer ID, die mittels einer einfachen Z ahlervariable¨ innerhalb der Schleife fest- gelegt wird ermittelt,sondern auch die dazugeh origen¨ Ba- sicBlocks undzwar ebenfalls mit dazugehoriger¨ Startadres- se,Endadresse,ID und Gr oße.Die¨ BasicBlocks werden mit- hilfe einer eigenen Funktion ermittelt, der BasicBlocks()“- Funktion.BasicBlocks sind wie der Name bereits andeu- tet Blocke¨ im Code bzw. Teile des Codes mit einer gr oßtm¨ oglichen¨ Folge von Anweisungen ohne Verzweigun- gen oder Einspr unge(Siehe:¨ S.783 Informatik ¨ Handbuch- 4.Auflage Hanser Verlag”,Peter Rechenberg,Gustav Pom- berger oder Punkt 3.5 BasicBlocks der vorliegenden Aus- arbeitung) und diese Eigenschaft wiederum macht sie op- timal f ur¨ Analysevorg ange.Die¨ Frage die sich nun stellt ist der Weg der Extraktion dieser BasicBlocks, die folgende Ei- genschaft haben A basic block is a straight-line sequence of code with only one entry point and only one exit“ [20] . Ein Ansatz w are¨ also uber¨ die Entry Points,fur¨ die eben- falls in IDAPython Built-In-Functions existieren GetEntry- Point()“, GetEntryPointQty()“um die Adresse des Entry- Points einerseits und die Zahl aller EntryPoints anderer- seits zu ermitteln [45] .Diese Methode stellte sich jedoch als uberaus¨ umstandlich¨ heraus.Wie bereits gesagt sind Ba- sicBlocks Bl ocke¨ im Code der eingelesenen Executable mit einer großtm¨ oglichen¨ Folge von Anweisungen ohne Verzweigungen oder Einsprunge¨ und genau diese Eigen- schaft erm oglicht¨ die Extraktion dieser mithilfe der Flow- Chart Klasse (dt. Programmablaufplan“(PAP)),welche in- nerhalb der ex gdl qflow chart.py“, einem Beispiel-Skript aus code.google.com/idapython,in der Google Zahl von ID- APython Beispiel Skripten zur Verfugung¨ stellt, offentlich¨ zug anglich¨ ist [21] . Dieser Steuerflussgraph(Siehe:Abbildung 6)wird nun zur Datenflussanalyse verwendet, in der wiederum unter ande- rem festgestellt werden kann welche Werte weiter unten im Graphen noch gebraucht werden (live variable analy- sis)“ [22] . Die extrahierten BasicBlocks werden nun in der Datei ”Ba- sicBlocks.csv”,wie erw ahnt¨ mit Start-und Endadresse so- wie ihrer ID,die wieder mittels Z ahlervariable¨ zu Beginn der For-Schleife zugewiesen wird,festgehalten.

4.2. Caballero & Dispatcher

Wie bereits bekannt ist die sog. Caballero-Heuristik“auf den spanischen Elektro-und Computer Ingenieur Juan Ca- ballero zur uckzuf¨ uhren.¨ Die Caballero-Heuristik beruht auf der Annahme, dass die Anzahl von arithmetischen und logischen Operationen in Malware auffallig¨ großer¨ ist als in gutartiger Software . Das von Caballero geschriebene

Abbildung 6. Steuerflussgraph aus Ba- sicBlocks und Spr ungen¨ [ 3 ] Tool nennt such

Abbildung 6. Steuerflussgraph aus Ba- sicBlocks und Spr ungen¨ [3]

Tool nennt such in diesem Zusammenhang ”Dispatcher”, er beschreibt dieses wie folgt: ”For each function it computes the ratio between the number of arithmetic and bitwise

] Any

function that executes a minimum number of instructions and has a ratio larger than a pre-defined threshold is flagged by Dispatcher as an instance of a encoding function.” [23] Dispatching ist ein Begriff der sich vom englischen Begriff to dispatch“ableitet zu dt. erledigen“bzw. ab- schicken“und genau das ist Caballeros Ziel gewesen.Er erstellte ein Tool, mit dem ein gegebener Quellcode nach bestimmten Kriterien untersucht werden kann um ihn wie z.B. in unserem Fall in Bezug auf Crypto-Routinen zu untersuchen und diese Informationen an den Schreiber des Skripts weiter zu geben.Der Dispatcher beobachtet alle Funktionen und kann dann beispielsweise das Verhaltnis¨ von arithmetischen und logischen Operationen zu der Gesamtheit aller im Binarcode¨ enthaltenen Operationen berechnen.Wenn dieses Verhaltnis¨ eine vorher definierte Schwelle uberschreitet,¨ so Caballero,handele es sich um eine Instanz einer Crypto-Routine.Dabei werden jedoch nur Anweisungen der eigenen Funktion betrachtet, d.h. Anweisungen von beispielsweise aufgerufenen Unter- funktionen fallen nicht darunter. Die definierte Funktion in Fingerprint v2.0, welche diese Aufgabe erfullt¨ heißt caballero()“und die Vorgehensweise ist dabei folgen- de: Entsprechend Abbildung 7 ”x86 Opcode Structure and Instruktion Overview”des Fraunhofer-Instituts fur¨ Kommunikation,Informationsverarbeitung und Ergonomie (FKIE) v1.0 (30.08.2011) von Daniel Plohmann wurde zu allererst ein Array mit entsprechenden arithmetischen und logischen Operationen in der arlog list“festgehalten ( add“ or“ adc“ sbb“ and“ sub“ xor“ inc“ dec“ daa“ aaa “ das“ aas“ imul“ aam“ aad“ salc“ not“ neg“ test“).In der ges list“wiederum wurde die arlog list um die dann noch fehlenden Ops erweitert. Die erwahnte¨ Schwelle fur¨ das Verhaltnis¨ arithmetisch-logischer Operationen zu allen anderen wurde hier auf 20% bzw. 0.2 gesetzt und die Blocke,¨ die verdachtigt¨ werden Crypto-Routinen zu enthalten werden in einem gemeinsamen Array, dem suspicious blocks“Array abgelegt. Ab diesem Punkt ist das Vorgehen ein Triviales.F ur¨ jede Instruktion innerhalb

operations over the total number of instructions

6

innerhalb operations over the total number of instructions 6 Abbildung 7. x86 Opcode Structure And In-

Abbildung 7. x86 Opcode Structure And In- struction Overview [4]

eines Blocks, innerhalb einer Funktion, wobei alle drei dieser Instanzen jeweils mit einer For-Schleife durchlaufen werden(Siehe: Listing 1),

Listing 1. Pseudo-Codefragment: Caballero- Funktion

for Funktion i n Functions :

[

]

for block i n Functions :

] for head i n Heads :

[

i f isCode ( Instruction ):

C o u nt e r I n st r +=1

i n s t = GetMnem ( head )

i

f inst i n arlog list :

Counter

arith l o g += 1

Counter

block i n s t r += 1

wird iterativ gepruft¨ ob diese Instruktion in der arlog list liegt und wenn dieser Test positiv ausfallt,¨ sprich True zuruckgegeben¨ wird, wird die dazugehorige¨ Zahlervariable¨ um eins inkrementiert. Das Caballero-Rating, also das Verhaltnis¨ auf welches wir hinaus wollen, ergibt sich dann aus dem Quotienten der Zahlervariable¨ der aritmetischen und logischen Operationen und der Gesamtzahl aller Operationen,die ebenfalls in Form einer Zahlervariable¨ vor- liegt, die jedoch unabhangig¨ von der Iteration,inkrementiert wird.Wenn die Zahl der Instruktionen echt großer¨ funf¨ (Ein Viertel des von Caballero vorgeschlagenen Wertes) und gleichzeitig das Caballero-Rating echt großer¨ der vorher definierten Schwelle von 0.2 respektive 20% ist, wird die block info“des verdachtigten¨ Blocks in der suspicious blocks“-Variable festgehalten. Die Block Info enthalt¨ dabei Informationen uber¨ die

Startadresse der Funktion, Startadresse des Blocks, Zahl der Block Instruktionen, Zahl der arithmetischen und

logischen Operationen und das Caballero Rating. Die Suspicious Blocks Variable wiederum wird in der Datei verdaechtigeBloecke.csv“gespeichert.Zusatzlich¨ dazu liefert die Ausgabe noch Informationen dar uber¨ welcher Funktion die Instruktion entspringt und nat urlich¨ die Gesamtzahl der verdachtigten¨ Blocke.¨

Im weiteren Verlauf betrachten wir die Basis unserer Analyse bzw. die Datens atze¨ auf deren Grundlage das Skript getestet wird.Die Wahl der sowohl gutartigen, als auch bosartigen¨ Software ist willkurlich.¨ Neben diesen be- trachten wir zusatzlich¨ Dateien von denen wir grunds atzlich¨ wissen, dass sie Kryptographie enthalten, um an ihnen die Funktionalit at¨ der implementierten Caballero-Heuristik noch deutlicher hervorzuheben.Eine Verifizierung der Er- gebnisse erfolgt schließlich anhand offentlich¨ zuganglicher¨ Tools wie dem IDA Plugin FindCrypt“und dem KA- NAL Plugin fur¨ PEID. PEID ist ein frei zugangliches¨ Tool mit grafischer Benutzeroberfl ache,¨ dass dazu dient Exe- Dateien Pack-,Verschl usselungs,-¨ und andere Verschleie- rungsroutinen zu erkennen. Derzeit ist es in der Version 0.95 verfugbar.¨ Das verwendete Plugin KANAL“ist da- bei speziell darauf ausgerichtet bekannte Krypto Algorith- men zu identifizieren, jedoch ist es hierbei nur in der La- ge solche aufzusp uren,¨ die eine gewisse Signatur aufwei- sen.Ein Beispiel dafur¨ sind die S-Boxes der Blockfish Ver- schl usselung.Mathematische¨ Algorithmen wie das bekann- te RSA dagegen kann es nicht finden.KANAL gibt den Typ und die Start- und Endadresse des verdachtigten¨ Blocks aus. Die Ausgabe dieses Plugins erfolgt interaktiv auf der Oberflache¨ des Programms in einem Ausgabefenster, je- doch besteht hier die M oglichkeit¨ die Ergebnisse entspre- chend in eine Datei zu exportieren [24] . FindCrypt kann be- kannte Krypto Algorithmen und Hashfunktionen identifi- zieren und sie mit ihrer zugeh origen¨ Adresse und dem ent- sprechenden Namen des Algorithmus(Blowfish,DES etc.) ausgeben.Im Gegensatz zu KANAL besitzt FindCrypt keine direkte Funktion fur¨ das Exportieren der ausgegebenen In- formationen.Die Ergebnisse werden in IDA’s Ausgabefens- ter angezeigt [25] .

5. Untersuchter Datensatz

Wie bereits angesprochen erfolgte die Wahl der Da- tens atze¨ willk urlich.Es¨ werden sowohl gutartige als auch bosartige¨ Software Samples betrachtet und im Bereich der Krypto Analyse solche von denen mit Sicherheit davon aus- gegangen werden kann, dass sich Krypto Algorithmen in ihr befinden und solche die mit großer Sicherheit keine auf- weisen um eine Best atigung¨ der Funktionstuchtigkeit¨ von beiden Seiten gewahrleisten¨ zu k onnen.¨

6. Bosartige¨

Software

Im Rahmen der b osartigen¨ Software werden hier unter anderem der Wurm Conficker“naher¨ analy- siert.Conficker.dll ist einerseits aufgrund seiner komplexen

ist einerseits aufgrund seiner komplexen Abbildung 8. Schematische Darstellung der Verbreitung des

Abbildung 8. Schematische Darstellung der Verbreitung des Conficker [5]

und umfangreichen Funktionalitat¨ besonders interessant f ur¨ die Histogrammauswertung des Skripts entsprechend Bilar und andererseits ist es aufgrund seiner Hash-Algorithmen und verschlusselten¨ Kommunikation besonders geeignet um es entsprechend Caballero auf Krypto Routinen zu untersuchen.

6.1. Conficker.dll

Der sog. Conficker ist ein Computer-Virus,genauer ein Computer-Wurm auch bekannt unter folgenden Namen:

TA08-297A (other), CVE-2008-4250 (other), VU827267 (other), Win32/Conficker.A (CA), Mal/Conficker-A (Sophos), Tro- jan.Win32.Agent.bccs (Kaspersky), W32.Downadup.B

(Symantec),Trojan-Downloader.Win32.Agent.aqfw

(Kaspersky), W32/Conficker.worm (McA- fee),Trojan:Win32/Conficker!corrupt (Micro- soft),W32.Downadup (Symantec), WORM DOWNAD (Trend Micro),Confickr (other).Er wird von Microsoft in Bezug auf den Gefahrlichkeitsgrad¨ hoch eingestuft [26] . Conficker nutzte die Sicherheitslucke,¨ die von Microsoft in der Microsoft Security Bulletin MS08-067 - Criti- cal“beschrieben wurde.Er ist in der Lage mithilfe dieser Sicherheitslucke¨ einen beliebigen Code von außen ein- zuschleusen und auszufuhren¨ [27] . Um im Zusammenhang dazu auch zu verhindern, dass er ohne Weiteres geloscht¨ wird, ist er in der Lage Windows-Updates, den Aufruf samtlicher¨ Herstellerseiten von Antiviren- und sonstigen Sicherheitsprogrammen, des Windows-Sicherheitscenters, Windows Defenders und des Windows-Systemprotokolls

¨

zu verhindern.Das Offnen des Task-Managers f uhrt¨ so dazu,dass das Fenster sofort wieder geschlossen wird [28] . Insgesamt sind f unf¨ verschiedene Versionen des Conficker bekannt Worm:Win32/Conficker.A bis Worm:Win32/Conficker.E, die sich in der Art der Verbrei- tung und ihren Nutzdaten dem Payload“unterscheiden, fur¨

7

ausfuhrliche¨ Informationen finden sich Dokumentationen auf obiger Microsoft Website. Die Verbreitung des Confi- cker erfolgt jedoch nicht nur uber¨ die besagte Ausnutzung der Sicherheitsl ucke¨ sondern auch uber¨ lokale Netzwerke und Datentr ager¨ wie USB(Siehe: Abbildung 8). Er erlangte schnell Beruhmtheit,¨ da er sich innerhalb k urzester¨ Zeit zu einem Problem nicht nur fur¨ private Nutzer, sondern auch die Bundeswehr, die K arntener¨ Landesregierung und die franzosische¨ Marine entwickelte, sodass er Microsoft schnell 250.000 US$ Wert war fur¨ jeden der Hinweise zum Autor des Wurms geben konnte [29] . Er registriert sich als Systemdienst und die Dateien, die von ihm erzeugt werden bekommen eine zufallige¨ Stringfolge als Datein- amen was eine Suche nach diesen im Nachhinein deutlich erschwert.Infizierte Computer erkennt man, abgesehen von den bereits erwahnten¨ Punkten, an einem erhohten¨ Traffic auf Port 445 und den folgenden Registryeintrage,¨ die erstellt von ihm erstellt werden 4 :

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Windows\CurrentVersion\Applets] "ds" = %value%

[HKEY_CURRENT_USER\Software\Microsoft\ Windows\CurrentVersion\Applets] "ds" = %value%

Conficker hat sich Ende 2008 angefangen zu verbreiten

und Mitte Januar 2009 haben verschiedene Antivirus Auto-

ren Removal-Tools prasentiert,¨

so auch Symantec [30] .

7. Gutartige Software

Im Bereich der gutartigen Software, die f ur¨ die Ana- lyse herangezogen wurde, liegen verschiedene Windows- Systemdateien vor, von bei einigen schon vorher mit Si- cherheit klar ist, dass sie beispielsweise Krypto Routinen enthalten(Crypt32,BeeCrypt und CygoCrypto) und bei eini- gen wiederum dass sie mit großer Wahrscheinlichkeit kei- ne solcher enthalten wie (Ping,Notepad++,Calc und Win- SCP).Diese erfullen¨ den Zweck von False-Negative Ausga- ben.

7.1. Kernel32.dll

Kernel32.dll ist eine 32-Bit dynamische Bibliotheksda- tei,eine 32-Bit-Dynamic-Link-Library-Datei, die dazu dient Speicher, Ein-/Ausgabefunktionen und Interrupts zu ver- walten.Sie ist eine bedeutende DLL-Datei und wird da- her haufig¨ von Malware bzw. Malware Autoren verwen- det.Sie ist von enormer Bedeutung und ist in irgendeiner Art und Weise mit den meisten Windows-Funktionen ver- kn upft(Windows¨ 95,98,ME,XP). Bei der Kernel32 handelt es sich um eine bedeutende Windows System-Datei, somit kann die ordnungsgem aße¨ Funktion des Betriebsystems, im Falle einer Entfernung oder anderweitigen Modifizierung dieser Datei,falls diese beispielsweise infiziert sein sollte, nicht mehr gewahrleistet¨ werden [31] .

8

7.2. Ping.exe

Die Ping.exe ist eine Windows Anwendung, die den Sinn erfullt¨ TCP/IP Verbindungen zu diagnostizieren, indem es Internet Control Message Protocol (ICMP) sendet.Ping ist mithilfe des Troubleshooting so unter anderem in der La- ge die Konnektivitat,Erreichbarkeit,SSID¨ und IP der Ver- bindung zu testen.Entsprechende Parameter sind von Mi- crosoft ausfuhrlich¨ Dokumentiert [32] .Auf Basis dieser Ei- genschaften und der, dass sie kein sichtbares Fesnter offnet¨ aber ein Port, um eine LAN und oder Internet Verbin- dung herzustellen [33] wurde Ping schon haufiger¨ Ziel von Malware Autoren. Ping gehort¨ wie bereits erwahnt¨ in die- sem Datensatz, wie auch Notepad++, Calc,Telnet und Win- SCP zu der Gruppe von Software, die im Rahmen dieser Analyse dem Zweck von False-Positive Ergebnissen dient, dass bedeutet, dass schon vorher davon ausgegangen wird, dass es keine Krypto Algorithmen enth alt¨ und falls so- wohl die offentlichen¨ Tools PEID/KANAL und IDA/Find- Crypt als auch Fingerprint v2.0 keine solcher findet, hat sich die Annahme bestatigt¨ und man spricht von einem False-Negative.Es wurde also richtig erkannt, dass sich kei- ne Krypto Routinen darin befinden.

7.3. Notepad++.exe

Notepad++ ist eine in der Programmiersprache C++ geschriebene Win32 API Applikation, die ihrerseits auf auf der Open-Source-Editor-Komponente Scintilla basiert [34] .Notepad++ ist aktuell in der Version v6.1 verfugbar¨ und unterstutzt¨ nicht nur einfache Textdokumente sondern dar uber¨ hinaus auch die Erstellung und Modifikati- on von Quelltext-Dateien.Es verf ugt¨ in diesem Zusammen- hang die Syntax von aktuell mehr als 50 Programmier- bzw. Markup Sprachen (Built-in Languages) [35] .

7.4. Calc.exe

Calc.exe respektive Windows Calculator i.A. Calcula- tor“ist der von Microsoft Windows eigene Taschenrechner der schon seit der ersten Version, Windows 1.0, ein fester Bestandteil dieses Betriebssystems ist [36] .

7.5.

Crypt32.dll

Hierbei handelt es sich um eine Windwos Systemda- tei, die ein Bestandteil Microsofts Windows und Windows Servern ist,wenn auch in verschiedenen Versionen mit ent- sprechend verschiedenen F ahigkeiten.Sie¨ wird von Funk- tionen wie beispielsweise der CryptSignMessage Funkti- on verwendet, die einen Hash des Ziel-Inhalts erstellen und anschließend sowohl die ursprungliche¨ Nachricht so- wie den signierten Hash kodieren kann [37] . Neben diesen implementiert die Crypt32.dll auch andere Funktionen der CryptoAPI [38] . Aufgrund dieser Eigenschaften eigenet sie sich,wie auch folgende, optimal fur¨ eine Analyse mit der Caballero-Heuristik.Es wird ein hohes Aufkommen von Crypto-Routinen erwartet.

7.6. Telnet.exe

Die Datei Telecommunication Network“i.A. Tel- net“, dessen Client unter allen g angigen¨ Betriebssyste- men(Linux,Unix,Mac OS und Windows) verf ugbar¨ ist, ist ein weit verbreitetes Netzwerkprotokoll mithilfe dessen der Benutzer in der Lage ist mit einem Remotecomputer zu kommunizieren [39] . Der Datenaustausch erfolgt dabei uber¨ eine TCP-Verbindung [40] .

7.7. WinSCP.exe

WinSCP erm oglicht¨ den Datenaustausch zwischen zwei Rechnern auf der Basis von SSH und es unterstutzt¨ in die- sem Zusammenang auch noch das SCP-Protokoll. Dieses Open-Source Programm fur¨ Windows lauft¨ unter einer gra- fischen Oberflache¨ (GUI) und dient einer sicheren (S)FTP Verbindung.Das Programm ist in C geschrieben und basiert auf dem ebenfalls sehr bekannten Tool PuTTY“ [41] .

7.8. BeeCrypt.dll

Die BeeCrypt.dll ist eine in der Programmiersprache

C geschriebene Sammlung verschiedener Krypto Algo-

rithmen, so beinhaltet sie beispielweise bekannte Ver- schl usselungsalgorithmen¨ wie Blowfish, MD5, SHA-1, Diffie-Hellman und ElGamal. BeeCrypt erf ullt¨ nicht den Zweck einer direkten Applikation, um ein bestimmtes Krypto-Problem zu losen,¨ sondern vielmehr eines Toolkits f ur¨ eine Vielzahl von Programmen. In diesem Kontext steht

sie unter der freien Lizenz GNU Lesser General Public Li-

cense (LGPL)“, die wiederum zu der Free Software Foun- dation“geh ort¨ und kann somit frei verwendet werden [42] .

7.9. cygcrypto-0.9.7.dll

¨

Ahnlich wie auch BeeCrypt.dll handelt es sich hierbei um eine Sammlung von Kryptologie Algorithmen, hier je-

doch als Erweiterung fur¨ CygWin, einer Software die da-

zu

dient, Programme die normalerweise lediglich unter Un-

ix

Systemen funktionieren auch unter Microsoft Windows

(Windows NT, Windows 2000, Windows XP, Windows Vis-

ta, Windows Server 2003, Windows 7 und Windows Server

2008) funktionsfahig¨ zum laufen zu bringen Ursprunglich¨ wurde diese Software von einer eher unbekannten Firma na- mens Cygnus Solutions“programmiert.Die Weiterentwick- lung ubernahm¨ spater¨ Red Hat“. Red Hat ist bekannt als Entwickler der Red Hat Linux Distribution Fedora“ [43] .

8. Analyse

Fortlaufend wird eine ausf uhrliche¨ Analyse der obigen Datensatze¨ betrieben.Sie wurde in diesem Zusammenhang im Hinblick auf die gesamte Analyse in 2 Unterkapitel

unterteilt.Im ersten Teil wird entsprechend Bilar die Op- code Analyse und im zweiten Teil, entsprechend Caballe-

ro, die Krypto Analyse betrieben.Letzteres Kapitel wird je-

9

die Krypto Analyse betrieben.Letzteres Kapitel wird je- 9 Abbildung 9. Vergleich der relativen H aufigkeiten¨ der

Abbildung 9. Vergleich der relativen H aufigkeiten¨ der 10 h aufigsten¨ Opcodes beider Datens atze¨

doch ebenfalls in 2 Unterkapitel unterteilt, wobei im ers- ten dieser zwei Unterkapitel die Schwellenwerte des Ca- ballero Ratings niedriger angesetzt werden als im zwei- ten, um ein breiteres Spektrum von Bl ocken¨ in der Ausga- be zu haben, die wiederum bei naherer¨ Betrachtung inter- essant werden k onnen.Im¨ zweiten Unterkapitel der Kryp- to Analyse weden dann schließlich die Schwellenwerte denen in Caballeros Dispatcher verwendeten exakt ange- passt, um einen m oglichst¨ transparenten Vergleich zwischen den offentlichen¨ Tools und dem Fingerprint v2.0 Skript zu schaffen.

8.1. Opcode Analyse

Auf der Basis der Datensatze¨ wird fortlaufend eine Ana- lyse dieser, mit dem Fingerprint v2.0, betrieben.Dadurch ließe sich in diesem Zusammenhang Bilars bereits beschrie- bene statische Herangehensweise der Analyse verifizieren und dadurch sogar erneut exemplifizieren. Die Rahmenbe- dingungen sind, wie auch bei Bilar, eine virtuelle Maschine (VirtualBox Version 4.1.12) mit Windows XP SP 2.Die Ex- traktion der Opcodes erfolgt ebenfals mit IDA Pro (Version 6.0.0110224 (32-Bit), wobei anschließend die entsprechen- den Tabellen in MS Excel erstellt und exportiert worden sind. Das Instruktions-Histogramm, nach der Analyse aller Samples mit dem Fingerprint v2.0, ergab ein sehr ahnliches¨ Ergebnis zu Bilars.Wie in Abbildung 9 deutlich erkennbar ist,unterscheiden sich die 10 betrachteten Opcodes in Be- zug auf ihre Haufigkeiten¨ nur minimal. Es l asst¨ sich also auch hier der gleiche Schluss ziehen, n amlich¨ der, dass die Gegen uberstellung¨ der realtiven H aufigkeiten¨ (Opcodes mit hohem Auftreten) der Samples zur statischen Malware Ana- lyse kaum bis garnicht aussagekraftig¨ ist. Bei genauerer Be- trachtung des Confickers liegen 18536 Ops vor, von denen die 5 H aufigsten¨ call,push,cmp,add,lea sind mit den ent- sprechenden H aufigkeiten¨ von 4508, 3134, 751,3134 und 4508 bei insgesamt 213 BasicBlocks. Betrachtet man nun also jene Opcodes, die zu denen mit dem geringstem Vor- kommen gehoren,¨ (xor,jz,dec,jb,jl,jle,or,stos,ja,movzx ) er- kennt man schon deutlicher einen Unterschied zwischen der betrachteten Malware und dem gutartigen Datensatz.Die

Abbildung 10. Vergleich der absoluten H aufigkeiten¨ der 10 seltensten Opcodes bei- der Datens atze¨

Abbildung 10. Vergleich der absoluten H aufigkeiten¨ der 10 seltensten Opcodes bei- der Datens atze¨

einzige Auffalligkeit¨ sind in diesem Zusammenhang Ker- nel32,Notepad++,Crypt32 und WinSCP die aufgrund ih- rer Gr oße¨ bzw. Komplexitat¨ die betrachtete Malware in jedem der Opcodes, entsprechend Abbildung 9, deut- lich quantitativ ubertrifft.Sie¨ werden fortlaufend im Bezug auf das arithmetische Mittel daher nicht weiter betrach- tet(SieheAbbildung 10). Erhoht¨ man die Zahl der Samp- les wird obige Erkentnis bestehen bleiben. Der bosartige¨ Datensatz wird an dieser Stelle um zwei Bots (HTTP Bot , IRC Bot) erweitert um anschließend erneut eine Analy- se der 10 betrachteten Opcodes zu betreiben. Gleichzeitig wurde die Zahl an gutartigen Samples um die BeeCrypt.dll und die cygcrypto-0.9.7.dll erweitert. Wie erneut deutlich wird, sind sich diese Opcodes, auch nach einer Erweite- rung der Datensatze,¨ viel zu ahnlich¨ als dass eine aussage- kr aftige¨ Schlussfolgerung getroffen werden konnte(Siehe:¨ Abbildung 11).

8.2. Krypto Analyse (1)

Die Idee die hinter der Analyse der Datens atze,¨ im Hin- blick auf Krypto-Routinen ist, einerseits jedes Samples mit dem Fingeprrint v2.0 zu analysieren, von denen wir zu Be- ginn schon wissen, dass dort eine große Menge an sol- chen zu finden sein wird.Das Ergebnis des Skripts wird an- schließend mit offentlichen¨ Programmen wie dem Under- ground Tool PEID“mit dem entsprechenden KANAL Plu- gin und abgesehen davon dem Findcrypt als IDA Pro Plu- gin verifiziert. Selbiges wird auch f ur¨ die restlichen Samp- les durchgef uhrt¨ um anschließend die Ergebnisse miteinan- der zu vergleichen, dadurch ließe sich wiederum die ange- messene Funktion des Skripts best atigen.¨ Crypt32.dll soll- te als Windows Systemdatei mit der Aufgabe Hash-Werte zu erzeugen mit großer Wahrscheinlichkeit entsprechend Krypto-Routinen aufweisen und bei Betrachtung der Aus- gabe einerseits seitens des PEID/Kanal entsprechend An- hang 8.1 ”Krypto-Analyse:PEID/Kanal“und andererseits

10

hang 8.1 ”Krypto-Analyse:PEID/Kanal“und andererseits 10 Abbildung 11. Vergleich der relativen H aufigkeiten¨ der

Abbildung 11. Vergleich der relativen H aufigkeiten¨ der 10 h aufigsten¨ Opcodes beider Datens atze¨ - Erweitertes Datensatz

der des IDA PRO Findcrypt Tools entsprechend Anhang 8.2 ”Krypto-Analyse: IDA PRO/FindCrypt”lassen sich laut PEID 12 Krypto verdachtige¨ Blocke¨ finden und laut IDA PRO 4.Vergleichen wir dieses Ergebnis der offentlichen¨ Tools mit der statischen Variante seitens Fingerprint v2.0 , welches 2082 verdachtige¨ Blocke¨ ausgibt, lassen sich deut- liche Unterschiede erkennen, was jedoch nicht zuletzt auf die verhaltnism¨ aßig¨ tief angesetzten Schranke in der Ca-

ballero Heuristik zur uckzuf¨ uhren¨ ist wodurch zwangsl aufig¨ mehr Blocke¨ verdachtigt¨ werden.Der von Caballero selbst

in seinem Dispatcher verwendete Wert lag in Bezug f ur¨ den

Quotienten von arithmetischen und logischen Operationen zu der Gesamtheit aller bei 0,55 respektive 55% sowie ei- ner minimalen Anzahl von 20 Instruktionen.Im Fingerprint v2.0 dahingegen liegt der Wert f ur¨ den Quotienten bei 0,2 sprich 20% bei mindestens 5 Instruktionen. Es ist deutlich zu erkennen, dass das Skript dabei Bl ocke¨ ausgibt, die mit hoher Wahrscheinlichkeit Krypto Routinen aufweisen, da- bei jedoch von keinem der beiden offentlichen¨ Tools er-

kannt werden, so z.B. in folgendem Beispiel :

Sta rtad resse : block 0x77a84908

Inst ructions :19 of function : 0x77a84810

A rit h . Log Ope rationen : 15

Caballero Rating :(78.95) Num o f s u s p i c i o u s Bl o c k s : 2082

Hierbei handelt es sich um ein vom Skript verdachtigten¨ Block, der mit seinen annahernd¨ 20 Instruktionen und ei- nem Caballero Rating von 78,95 nahezu den Kriterien in Caballeros beschriebener Arbeit gen ugt.Dieser¨ Block, be- ginnend bei (Hexadezimal) 0x77a84908 und endend bei 0x77a84810 ist weder in der Ausgabe von PEID/Kanal, noch in der von IDA PRO/FindCrypt aufgelistet, was die Vermutung nahe legt, dass die dynamischen L osungen¨ nicht alle verd achtigen¨ Bl ocke¨ zu erkennen scheinen. Diesen Ver- dacht scheint auch die Analyse nach selbigem Verfahren in Bezug auf das Telnet.exe Sample zu best atigen,¨ so erken-

nen die offentlichen¨ Tools in diesem Fall keine Bl ocke¨ mit m oglichen¨ Krypto-Routinen, das Skript dahingegen 128. Fragwurdig¨ ist in diesem Zusammenhang lediglich die An- zahl der Instruktionen in den Ausgegeben Bl ocken,¨ die in keinem dieser Falle¨ 11 uberschreiten¨ und durchschnittlich einen Wert von 3,2 also ca. 3 Instruktionen aufweisen.Das hochste¨ erzielte Caballero Rating ist hierbei 83,33 bei je- doch lediglich 5 Instruktionen:

Sta rtad resse : block 0x1003dc9 Inst ructions :6 of function 0x1003cee :

A rit h . Log Ope rationen :5 Caballero Rating :83.33 Num o f s u s p i c i o u s Bl o c k s : 128

Ein relativ ahnlichen¨ Fall erzeugt die Analyse der Ker- nel32.dll. PEID/Kanal erzeugt hierbei eine Ausgabe ent- sprechend dem Anhang 8.3 namlich¨ die 3 verd achtigen¨ Bl ocke¨ BASE64,CryptCreateHash,CryptHashData. Entsprechend der Microsoft Dokumentation zu die- sen, handelt es sich bei der CryptCreateHash offensicht- lich um eine Funktion, die ein Handle zu einem CSP Hash-Objekt an den Aufrufer zuruckgibt,¨ um dieses spater¨ m oglicherweise¨ an die CryptHashData Funktion weiterzu- geben und so den Sitzungsschl ussel¨ zu hashen [44] . Wie be- reits zu Anfang erwahnt¨ ist es die Aufgabe der Kernel32 als dynamische Bibliotheksdatei unter anderem , den Speicher, Ein-/Ausgabefunktionen und Interrupts zu verwalten, wes- halb Abbildungen in Form von Hashfunktionen nicht un- realistisch sind. An dieser Stelle erzeugen weder das IDA PRO Plugin FindCrypt noch das Fingerprint v2.0 eine Aus- gabe, sprich sie erkennen diese nicht als mogliche¨ Kryp- to Routinen an. Im weiteren Verlauf wird nun die Analy- se der Ping.exe betrachtet.Wohingegen in diesem Fall keine der beiden offentlichen¨ Tools ein Ergebnis liefert, dass be- deutet sie liefern keinen Krypto verdachtigen¨ Block .Das Skript liefert an dieser Stelle, ahnlich¨ zu obigem Fall des Crypt32.dll eine Ausgabe.Auch hier ist deutlich erkennbar, dass der Block mit dem hochsten¨ Caballero Rating ledig- lich den Wert 37,5 aufweist bei einer Anzahl von lediglich 8 Instruktionen, was im direkten Vergleich nur 40% des von Caballeros empholenem Wert entspricht:

Sta rtad resse : block 0x100269b Inst ructions :8 of function 0x10019c9 A rit h . Log Ope rationen :

3

Caballero Rating :37.50 Num o f s u s p i c i o u s Bl o c k s : 27

Die maximale Zahl von Instruktionen liegt uber¨ die gesamte Ausgabe hinaus bei lediglich 14. Im Falle der Calc.exe stimmen sogar alle drei Tools exakt uberein.Weder¨ PEID und IDA PRO, noch Fingerprint v2.0 erkennen hier Crypto Routinen und wenn man hier auch erneut die sehr niedrig angesetzte Schranke fur¨ den Caballero Wert im Hin- terkopf behalt¨ erhoht¨ die zudem die Wahrscheinlichkeit ei- ner Abwesenheit von Krypto Routinen erheblich.Im Gegen- satz zu diesem schweift das folgende Beispiel stark von den offentlichen¨ Tools ab. PEID und IDA mit dem Input Note- pad++.exe liefern eine leere Ausgabe.Fingerprint 2.0 liefert

an dieser Stelle 2951 verdachtige¨ Blocke.Es¨ zeigt in die- sem Zusammenhang an, dass Notepad++ 3739 Funktionen, 42096 und 259411 Instruktionen beinhaltet. Das vergange- ne Muster setzt sich auch hier dahingegen fort, dass der gr oßte¨ Teil dieser Blocke¨ jeweils nicht genug Instruktio- nen aufweist. Es liegen aber auch Bereiche vor die große Verdachtigkeit¨ aufweisen, so beispielsweise folgender:

Startadresse : block 0x4b7ea6 Inst ructions :20 of function 0x4b7d6c A rit h . Log Ope rationen : 14 Caballero Rating :(70.00)

Num o f s u s p i c i o u s Bl o c k s

Dieser Block weist exakt die von Caballero empholene Mindestanzahl von 20 Instruktionen auf und mit 14 arith- metischen bzw. logischen Operationen erzielt es ein Ca- ballero Rating von 70.Die folgenden beispielhaft herausge- nommenen Blocke¨ untermauern diese These zusatzlich:¨

: 2951

Startadresse : block 0x48b7f7

I n st r ucti o n s :23 of function 0x48b340

A rit h . Log Ope rationen :

14

Caballero Rating :60.87 Num o f s u s p i c i o u s Bl o c k s : 2951

Sta rtad resse : block 0x41dadd Inst ructions :15 of function 0x41d9a0 A rit h . Log Ope rationen :12 Caballero Rating :80.00 Num o f s u s p i c i o u s Bl o c k s : 2951

Startadresse : block 0x42f44a Instructions :39 of function 0x42f3d0

A rit h . Log Ope rationen :

21

Caballero Rating :53.85 Num o f s u s p i c i o u s Bl o c k s : 2951

Das letzte Beispiel in diesem Zusammenhang ist Win- SCP.Die Ausgabe von PEID, entsprechend Anhang 8.4

zeigt 24 Krypto Signaturen.IDA Pro erkannte dahingegen 34 solcher Signaturen und Fingerprint tendiert zu immerhin

13059.

8.3. Krypto Analyse (2)

Die Idee in der fortlaufenden Analyse ist nun die, die im Fingerprint v2.0 vorliegende Caballero Heuristik und ih- ren Schwellenwert in Bezug auf das Caballero Rating, so- wie die minimale Anzahl von Instruktionen die vorliegen m ussen,¨ auf die von Caballero selbst verwendeten Werten anzupassen.Anschließend wird eine Analyse entsprechend dem vorangegangenem Muster durchgefuhrt.¨ Wo nun das Skript nicht mehr so grob wie in vergangener Analyse ein-

gestellt ist, ergibt sich f ur¨ die Crypt32.dll eine Ausgabe ent- sprechend Anhang 8.5. Wie man sieht ergeben sich fur¨ jede der 5 Ausgaben Caballero Ratings von weit uber¨ die 50% und vergleichen wir dieses Ergebnis erneut mit den Ausga-

Tools entsprechend Anhang 8.1 und 8.2

ben der offentlichen¨

¨

lassen sich große Ahnlichkeiten feststellen, was den Schluss

11

Abbildung 12. Ein Ueberblick der Funde in al- len drei Tools nahe legt dass die

Abbildung 12. Ein Ueberblick der Funde in al- len drei Tools

nahe legt dass die Heuristik die Krypto verdachtigen¨ Blocke¨ richtig erkennt. Selbiges ergibt die so verfeinerte Analyse des Kernel32 im direkten Vergleich mit den Ausgaben des PEID/Kanal :

Sta rtad res se : block 0x4d228 Inst ruction s :25 of function

A rit h . Log Ope rationen :

Caballero Rating :68.00 Num o f s u s p i c i o u s Bl o c k s : 2

0x245c6

17

Sta rtad res se : block 0x4d299

Inst ruction s :35 of function 0x245c6

A rit h . Log Ope rationen :

21

Caballero Rating :60.00 Num o f s u s p i c i o u s Bl o c k s : 2

Wohigegen das IDA PRO Plugin FindCrypt kein Ergeb- nis geliefert hat, findet das Skript an dieser Stelle die ent- sprechend verd achtigen¨ Bl ocke.¨ Redundant ist die erneute Analyse der Calc.exe, da eine Analyse mit allen drei Tools kein Ergebnis lieferte und eine Feineinstellung uberfl¨ ussig¨ w are.¨ Auch Notepad++ lieferte in den offentlichen¨ Tools keine Ausgabe aber wie bereits vermutet ist die Wahr- scheinlich hoch, dass Fingerprint 2.0 hier Blocke¨ erkennt die mit großer Wahrscheinlichkeit kryptologischen Hinter- grundes sind, die von PEID bzw. IDA aber nicht erkannt werden.Der vom Skript erkannte Block zeigte ein hohes Caballero Rating von 70% bei 14 Instruktionen.Nach einer Optimierung des Skriptes ergibt sich folgende Ausgabe:

Sta rtad res se : block 0x8b517 I n st r ucti o n s :23 of function 0x8b340

A rit h . Log Ope rationen :

14

Caballero Rating :60.87 Num o f s u s p i c i o u s Bl o c k s : 4

Sta rtad res se : block 0x8b687

I n st r ucti o n s :23 of function 0x8b340

A rit h . Log Ope rationen :

Caballero Rating :60.87

14

12

Num o f s u s p i c i o u s Bl o c k s : 4

Startadresse : block 0x8b7f7

I n st r ucti o n s :23 of function 0x8b340

A rit h . Log Ope rationen : 14

Caballero Rating :60.87 Num o f s u s p i c i o u s Bl o c k s : 4

Sta rtad res se : block 0x8b967

I n st r ucti o n s :23 of function 0x8b340

A rit h . Log Ope rationen :

14

Caballero Rating :60.87 Num o f s u s p i c i o u s Bl o c k s : 4

Diese Bl ocke¨ mit zwar ca. 10% niedrigerem Rating aber hoherer¨ Anzahl von Instruktionen unterstreichen diese Ver- mutung. Eine Analyse der beiden Dateien BeeCrypt.dll und CygoCrypt.dll, die mit großer Sicherheit eine Vielzahl von Krypto Routinen enthalten, ergibt folgendes Ergebnis: Lasst¨ man das Fingerprint v2.0 das Sample begutachten, so erhalt¨ man folgende Ausgabe:

Startadresse : block 0x1000c9f0

Inst ructions :21 of function 0x1000c9d0

A rit h . Log Ope rationen :

13

Caballero Rating :61.90 Num o f s u s p i c i o u s Bl o c k s : 3

Startadresse : block 0x1000ca34 Inst ructions :21 of function 0x1000c9d0

A rit h . Log Ope rationen :

13

Caballero Rating :61.90 Num o f s u s p i c i o u s Bl o c k s : 3

Sta rtad resse : block 0x100082d0

I n st r ucti o n s :536 of function 0x100082d0

A rit h . Log Ope rationen :

304

Caballero Rating :56.72 Num o f s u s p i c i o u s Bl o c k s : 3

Betrachtet man in dieser Ausgabe nun beispielsweise die ersten beiden Bl ocke,¨ so sieht man, dass diese der gleichen Funnktion entspringen, namlich¨ 0x1000c9d0“. Sucht man diese Funktion, deren Hexadezimaler Wert vorliegt, in der

¨

Funktions- und BasicBlock Ubersicht, welches das Skript

ebenfalls ausgegeben hat:

Funktionsadresse :268468944 Funktionsname : md5Process

FunktionsID:164

Basic Blocks :

0: 0x100082d0 , 0x100088c5

so erkennt man an dem Funktionsnamen, dass sie zu einem md5Prozess geh ort¨ und selbiges gibt auch unser offentlichen¨ Tool IDA PRO/Findcrypt aus.Siehe dafur¨ An- hang 8.6. Betrachtet man im n achsten¨ Fall CygoCrypt (Funktion zu der dieser verd achtige¨ Block geh ort¨ und Funk- tionsname abgeleitet anhand dessen, aus der Funktionen- UndBasicBlocks.csv) wird folgendes deutlich:

Ausgabe Fingerprint v2.0:

] Funktion :0 x10015f10 Funktionsname : RC2 encrypt

[

] [

Ausgabe IDA PRO/FindCrypt:

[ 100AB7E0 : f o u n d c o n s t a r r a y rc2 PITABLE ( u s e d i n RC2 )

]

] [

Ausgabe PEID/Kanal:

RC2 [ c h a r ] : :

000AABE0 : : 100AB7E0

Referenced at 10015938

Referenced at 1001596C Referenced at 1001598C

Blocks

lasst¨

erkennen.Zu den restlichen Funktionen mit zugehorigen¨ Funktionsnamen die vom Fingerprint v2.0 verd achtigt¨ wer-

sich hier eine Ubereinstimmung des RC2 Kryptos

Schon am Funktionsnamen des verd achtigen¨

¨

den lasst¨ sich folgendes sagen:

0x1005fb40 , Funktionsname :

EVP DecodeBlock

0x10028734 , Funktionsname :

b n sqr recursive 0x10028410 , Funktionsname :

b n sqr recursive 0x10014cf0 , Funktionsname :

DES ede3 cbcm encrypt 0x10014af0 , Funktionsname :

DES cbc cksum

0x10014330 , Funktionsname :

ossl old des xcbc encrypt 0x100121f4 , Funktionsname :

ossl old des encrypt2 0x100121f4 , Funktionsname :

ossl old des encrypt2 0x100112d0 , Funktionsname :

ossl old des encrypt 0x100112d0 , Funktionsname :

ossl old des encrypt 0x10010d30 , Funktionsname :

ossl old des pcbc encrypt

CygoCrypt verwendet eine Vielzahl von klassischen DES Verschlusselungsalgorithmen¨ und daruber¨ hinaus, dessen erweiterte Form, den 3DES.Diese werden auch von PEID/Kanal erkannt, wie in Anhang 8.7 zu er- kennen ist. Abgesehen davon liegt zudem ein Blow- fish Algorithmus vor. In Abbildung 12 sieht man Gruppen von Krypto Algorithmen, in die ausgegeben Ergebnisse zusammengefasst wurden, so wurden bei- spielsweise folgende Ausgaben von FindCrypt Rijn- dael Te0,Rijndael Te1,Rijndael Te2,Rijndael Te3,Rijndael

Te,4 und erneut Rijndael Te0Rijndael Te0 bis Rijndael Te4 jedoch von einer anderen Adresse , zusammengefasst zu Ri- jndael.

9. Zusammenfassung

In der vorliegenden Arbeit wurde die Funkti- on des IDA PRO Python Skripts Fingerprint v2.0 anhand zweier Datens atze,¨ sowohl gutartig (Ker-

nel32.dll,Ping.exe,Notepad++.exe,Calc.exe,Crypt32.dll,

Telnet.exe, WinSCP,BeeCrypt.dll und CygoCrypt-0.9.7.dll) als auch bosartig(Conficker.dll¨ (Wurm),verschiedene Bots), getestet und seine Fahgikeit¨ Blocke¨ mit kryptographischem Hintergrund zu analysieren, mithilfe zweier kostenfrei- er,offentlich¨ zuganglicher¨ Tools bestatigt.Einerseits¨ dem IDA PRO Plugin FindCrypt“und andererseits dem Plugin fur¨ das Underground Tool PEID Kanal“. Somit hatte diese Arbeit zwei große Teilziele.

1 .

Entsprechend der Vorangehensweise die von Daniel Bilar in seiner wissenschaftlichen Abhandlung Fingerprinting Ma- licious Code Through Statistical Opcode Analysis“wurde gezeigt, dass eine statistische Analyse von Malware dahin- gegen betrieben werden kann, dass man sich die Opcodes der betrachteten Ware genauer ansieht. Das f uhrte¨ zu einer statistischen Auswertung, einem Histogramm von Opcodes, seine absoluten und relativen Vorkomnisse beinhaltend.Im gutartigen Bereich wurden so die Histogramme von Ker-

nel32.dll,Ping.exe,Notepad++.exe,Calc.exe,Crypt32.dll,

Telnet.exe und WinSCP und auf bosartiger¨ Seite die von Conficker.dll betrachtet. Jedoch wurde dann klar, dass man anhand der Opcodes, die ein sehr hohes Aufkommen im Bin arcode¨ aufweisen, keine aussagekraftige¨ Schlussfolge- rung treffen, weil solche wie push,mov gutartige so- wie bosartige¨ Software in beinahe gleichem bzw. sehr ahnlichem¨ Maß, pragen.¨ Daher wurden jene Opcodes be- trachtet die sehr selten vorkommen wie jz,jb,jl, etc . Anhand der absoluten Werte, im Bezug darauf wie h aufig¨ sie im Code erscheinen, wurden dann deutliche Unterschiede, wie auch in Bilars Arbeit, festgestellt und dadurch die Erkent- niss gewonnen, dass gewisse Opcodes in Malware haufiger¨ vorkommen als in gutartiger Software, wodurch man wie- derum daraus die Moglichkeit¨ gewinnt anhand dieser Op- codes und ihrer statistischen Auswertung uber¨ den gesam- ten Code hinweg, eine Vorhersage uber¨ das m ogliche¨ Maß, der Gefahrlichkeit¨ dieser Datei zu treffen. Diese Vermu-

tung konnte schließlich noch unterstrichen werden, indem die verwendeten Datensatze¨ durch weitere Samples erwei- tert (Auf gutartiger Seite durch BeeCrypt.dll,CygpCrypt.dll und auf b osartiger¨ durch verschiedene Bots, unter anderem einem IRC Bot) und dann die Analyse erneut durchgefuhrt¨ wurde.

2 .

Im zweiten Teil der Ausarbeitung wurde die Funktions- weise des Dispatcher Tools von Juan Caballero, beschrie- ben in seiner wissenschaftlichen Arbeit Dispatcher: Enab- ling Active Botnet Infiltration using Automatic Protocol Reverse-Engineering“im Fingerprint v2.0 nachimplemen- tiert, daruber¨ hinaus getestet und verifiziert. Zu Beginn

13

der Analyse wurden die Schwellenwerte der Heurisitk re- lativ niedrig bzw. niedriger als von Caballero selbst vor- geschlagen angesetzt um so eine gr oßere¨ Ausgabe zu er- zielen und diese zu analysieren und anhand der Kombina- tion aus Zahl von Instruktionen und Caballero Rating ei- ne Vorhersage uber¨ die Krypto Verdachtigkeit¨ des betrach- teten Blocks zu treffen, welches moglicherweise¨ von den anderen Tools ubersehen¨ oder als nicht verd achtig¨ einge- stuft worden ist. Die Ausgaben des Skripts, wurden mit denen der offentlichen¨ Tools verglichen, wenn von diesen Ergebnisse ausgegeben wurden . Anschließend wurden die Schwellenwerte auf genau die von Caballero vorgeschlage- nen und im Dispatcher verwendeten 0.55 bzw. 50% f ur¨ das Rating und 20 fur¨ die Zahl der Instruktionen angehoben und erneut ein Analyse durchgef uhrt.¨ Wie anschließend deut- lich wurde, nachdem dann auch sehr viel weniger Ausga- ben get atigt¨ wurden, erkannte das Skript die von FindCrypt und Kanal als Krypto verdachtige¨ Routinen identifizierten Bl ocke.Darunter¨ befanden sich unter anderem weit verbrei- tete Blockverschl usselungsalgorithmen¨ wie DES und oder Blockfish. Es wurde gezeigt, dass dynamische Losungen¨ in der Analyse von Malware wenig anpassungsf ahig¨ sind, da automatisiert und nicht modifizierbar, was je nach me- tamorpher oder polynmorpher Malware problematisch wer- den konnte.¨ Die hier betrachtete statische Analyse in Form des IDA Python Skripts hingegen kann und wurde nach Bed urfnissen¨ des Users angepasst. Jedoch hat auch die sta- tische L osung¨ nicht immer alle Bl ocke¨ erkannt, was den Schluss nahe legt auf eine Losung¨ in Form einer Kom- bination von dynamischen und statischen AV Strategien zuruckzugreifen.¨

Literatur

[1] Dispatcher: Enabling Active Botnet Infiltration using Automatic Protocol Revers-Engineering - Juan Cabal- lero,Pongsin Poosankam,Christian Kreibich http:

28.04.2012

Through Sta-

tistical Opcode Analysis - Daniel Bilar http://cs.uno.edu/ ˜ dbilar/papers/ Bilar_FingerprintingThroughOpcodes_ ICGeS07.pdf,letzter Zugriff 21.04.2012

[2] Fingerprinting Malicious

Code

[3] Polymorphe

Viren

Virenshutz.info

[4] Malware und Netzwerksicherheit RWTH Aa-

chen

de/global/show_document.asp?id=

aaaaaaaaaaavhyd,letzterZugriff28.

04.12

http://www.rz.rwth-aachen.

[5] Definition: Befehlssatz/Instruktion ITWissen.info http://www.itwissen.info/definition/

14

lexikon/Befehlssatz-instruction-set.

html,letzterZugriff28.04.12)

[6]

Prozessor Architekturen Rolf G ubeli¨ Technische Infor- matik II - Prozessor Architekturen“von Rolf Gubeli)¨ ,letzter Zugriff 28.04.12

[7] Kenne deinen Feind.Fortgeschrittene Sicheritstechni- ken - Cyrus Peikari & Anton Chuvakin ”Kenne dei- nen Feind.Fortgeschrittene Sicherheitstechniken - Cy- rus Peikari & Anton Chuvakin

[8] Definition:

Opcode

c64-wiki.de

http://

www.c64-wiki.de/index.php/Opcode,

abgerufen28.04.12 , letzter Zugriff 28.04.12

[9] Fingerprinting Malicious Code Through Statistical Opcode Analysis - 4.1: Opcode Breakdown Daniel Bi- lar http://cs.uno.edu/ ˜ dbilar/papers/ Bilar_FingerprintingThroughOpcodes_ ICGeS07.pdf,letzter Zugriff 28.04.2012

[10] Digitaltechnik - Eine Praxisnahe Einfuhrung¨ - Was ist ein Mnemonic Armin Biere,Daniel

M

Kroening,Georg

Weissenbacher,Christoph

20ein%20mnemonic&f=false ,letzter Zugriff

28.04.12

[11] Die Assemblersprache der intel 80x86-Prozessoren Prof Klaus Wust¨ http://homepages.thm.de/ ˜ hg6458/AS.pdf ,letzter Zugriff 28.04.12)

[12] Entry

Point

(Programming)

www.authenticsociety.com http://www. authenticsociety.com/about/ EntryPoint_C ,letzter Zugriff 28.04.12

[13] Research history highlights - Data Encryption Stan- dard Research IBM http://www.research. ibm.com/about/top_innovations_ history.shtml,letzter Zugriff 20.04.12

[14] Definition: Chiffretext Datenschutz Praxis http://www.datenschutz-praxis.de/ lexikon/c/chiffretext.html ,letzter Zugriff

20.04.2012

[15] Data Encryption Standard (DES) Universitat¨ Leipzig http://www.informatik.uni-leipzig. de/ ˜ meiler/Schuelerseiten.dir/ BLuebeck/des.html ,letzter Zugriff 20.04.2012

[16] Cryptoshop.com

com/index.php,letzter Zugriff 28.04.12

[17] Cryptography and

Sym-

metric Key Algorithms and AES Atul Kahate http://books.google.de/books?id=

10kUV_vJftcC&pg=PA135&dq=blowfish+

Algorithm&hl=de&sa=X&ei=mk2cT_

KtLeXb0QWsrNDhDg&ved=0CEUQ6AEwAQ#

v=onepage&q=blowfish%20Algorithm&f=

false ,letzter Zugriff 28.04.12

Network Security -

[18] Definition: CSV Dateien Madeasy.de http://www. madeasy.de/2/csv.htm,letzter Zugriff 28.04.12

[19] Python: CSV Datien Python.org http://docs. python.org/library/csv.html),letzter Zu- griff 21.04.2012

[20] onlinedocs - 15.1 Basic Blocks Gcc.Gnu.org http://gcc.gnu.org/onlinedocs/ gccint/Basic-Blocks.html ,letzter Zugriff

07.04.12

[21] Examples/FlowChart.py

Co-

de.Google.com/IDAPython http://code. google.com/p/idapython/source/ browse/trunk/examples/ex_gdl_qflow_ chart.py,letzter Zugriff 07.04.12

[22] S.783 - FlowChart Informatik Handbuch-4.Auflage Hanser Verlag Peter Rechenberg,Gustav Pomberger

[23] Dispatcher: Enabling Active Botnet Infiltration using Automatic Protocol Reverse-EngineeringJuan Caballero,Pongsin Poosankam,Christian Kreibich-5. Handling Encrypted Messages - Juan Caballe- ro,Pongsin Poosankam,Christian Kreibich http:

Name=Win32%2fConficker’’edia ,letzter Zugriff 08.04.12

[29] PCgames

-

Wie gef ahrlich¨

ist

der Wurm

wirklich

?

PCGamesHardware.com

http:

//www.pcgameshardware.de/aid,676248/

Conficker-Wie-gefaehrlich-der-Wurm-\ wirklich-ist-und-wie-Sie-sich-schuetzen/ Sicherheit/News/ ,letzter Zugriff 15.04.12

[30] W32.Downadup Removal Tool - W32.Downadup Removal Tool Symantec.com http:

[31] Was macht

kernel32.dll auf meinem Com-

puter? Processlibrary.com http://www. processlibrary.com/de/directory/ files/kernel32/23314,letzter Zugriff 10.04.12

[32] Ping.exe Mirosoft Windows XP Professional Product Documentation http://www.microsoft.com/ resources/documentation/windows/xp/ all/proddocs/en-us/ping.mspx?mfr= true,letzter Zugriff 29.04.12

[33] Ping.exe Datei Info file.net http://www.file. net/prozess/ping.exe.html,letzter Zugriff

10.04.12

[34] Scintilla: A free source code editing component for Win32 and GTK+ Scintilla.org http://www. scintilla.org/

[35] Notepad++:

Built-in

languages

npp-

28.04.2012

community.tuxfamily.org

[24] PEiD Homepage PEid.info http://www.peid. info,letzter Zugriff 28.0412

[25] Hexblog Homepage Hexblog.com http://www. hexblog.com/?p=27 , letzter Zugriff 28.04.2012

[26] Microsoft - Security - Conficker.dll Microsoft.com http://www.microsoft.com/security/ portal/Threat/Encyclop/Entry.aspx? Name=Win32%2fConficker’’edia ,letzter Zugriff 08.04.12

[27] Microsoft Security Bulletin MS08-067 - Criti- cal Vulnerability in Server Service Could Allow Remote Code Execution (958644) Microsoft.com http://technet.microsoft.com/en-us/ security/bulletin/ms08-067 ,letzter Zugriff

08.04.12

[28] Microsoft Security - Conficker Microsoft.com http://www.microsoft.com/security/ portal/Threat/Encyclop/Entry.aspx?

15

10.04.12

[36] A history of Windows Highlights from the first 25 years 1975–1981: Microsoft boots up Windows.Microsoft.com http://windows. microsoft.com/en-US/windows/history , letzter Zugriff 28.04.12

[37] Entwicklungscenter - CryptSignMessage Func- tion MSDN.Microsoft.com http://msdn. microsoft.com/en-us/library/windows/ desktop/aa380281(v=vs.85).aspx , letzter Zugriff 10.04.12

[38] Entwicklungscenter - Crypt32.dll Versi- ons MSDN.Microsoft.com http://msdn. microsoft.com/library/windows/ desktop/aa379884.aspx ,letzter Zugriff ab- gerufen 10.04.12

[39] Microsoft: Telnet-Befehle Technet.Microsoft.com http://technet.microsoft.com/de-de/ library/cc782300(v=ws.10).aspx , letzter Zugriff 10.04.12

[40] TCP/IP Interactive and Remote Application Pro- tocols TCP Guide http://www.tcpipguide. com/free/t_TelnetProtocol.htm , letzter Zu- griff 10.04.12

[41] WinSCP: Free SFTP, SCP and FTP client for Windows WinSCP.net http://winscp.net/eng/ docs/lang:de ,letzter Zugriff 10.04.12

[42] Beecrypt Directory.fsf.org http://directory.

Zugriff

letzter

20.04.12

[43] This is the home of the Cygwin project Cyg- win.com http://www.cygwin.com/ ,letzter Zu- griff 28.04.12

CryptCreateHash

[44] CryptCreateHash Support.Microsoft.com

-

Die

http://support.

microsoft.com/kb/821762/de,

CryptCreateHash-CryptHashData ,letzter Zugriff 15.04.2012

[45] Introduction

to

IDAPython

Ero

Carrera

Ida-Python-Intro,letzter Zugriff 29.04.12

[46] Introduction

to

IDAPython

OpenRCE.org

Abbildungsverzeichnis

der 14

haufigsten¨ Opcodes beider Datensatze¨ Fingerprinting Malicious Code Through Stati- stical Opcode Analysis - Daniel Bilar,Table

1 Comparison of the 14 most frequent opco- deshttp://cs.uno.edu/ ˜ dbilar/papers/ Bilar_FingerprintingThroughOpcodes_ ICGeS07.pdf,letzter Zugriff 14.04.2012

[2] Vergleich der relativen Haufigkeiten¨ der 14 seltens- ten Opcodes beider Datensatze¨ Fingerprinting Malicious Code Through Stati- stical Opcode Analysis - Daniel Bilar,Table 4 Comparison of rare opcodes (in parts per milli- on)http://cs.uno.edu/ ˜ dbilar/papers/ Bilar_FingerprintingThroughOpcodes_ ICGeS07.pdf,letzter Zugriff 14.04.2012

[1] Vergleich der relativen H aufigkeiten¨

[4] x86 Opcode Structure And Instruction Overview Fraunhofer-Institut fur¨ Kommunikation, Informations- verarbeitung und Ergonomie FKIE x86 Opcode Struc- ture and Instruction Overview http://net.cs. uni-bonn.de/fileadmin/user_upload/

08.04.2012

[5] Schematische Darstellung der Verbreitungsmetho- den Microsoft http://www.microsoft. com/de-de/security/pc-security/ conficker.aspx ,letzter Zugriff 08.04.2012

[6] Threat Encyclopaedia-Win32/Conficker.AQ Eset http://www.eset.eu/encyclopaedia/

kido_downad_e,letzter Zugriff 08.04.2012

[7] Blowfish Struktur iitd.vlab.co.in http://i.cmpnet.

0308feat2fig1.gif ,letzter Zugriff 21.04.2012

Anhange¨

9.1. Krypto-Analyse PEID/Kanal: Crypt32.dll

: 000333A8

: : 77AB3FA8 [ Import ]

CryptCreateHash

: : 000004A0

: : 77A810A0

CryptDecrypt [ Import ]

: : 0000051C

: : 77A8111C

CryptDeriveKey [ Import ] :: 00000514

: : 77A81114

CryptEncrypt [ Import ] :: 00000518

: : 77A81118

CryptGenKey [ Import ]

: : 000004B8

: : 77A810B8 [ Import ]

: : 0000050C

CryptGenRandom

BASE64 t a b l e :

CryptHashData

: : 77A8110C [ Import ]

: : 0000049C

: : 77A8109C

[3] Steuerflussgraph aus BasicBlocks und Sprungen¨

DES

[

l o n g

]

:

:

00026BE8

Informatik Handbuch 4. Auflage Hanser Verlag

: : 77AA77E8

RC2

[

c h a r

]

:

:

00080778

08.04.2012

Zugriff

: : 77B01378

SHA1 [ Comp ress ] : : 0001166C

16

: : 77A9226C

SHA1 [ Comp ress ] : : 00025741

RC2 [ c h a r ]

: : 004 A3278

 

: : 77AA6341

 

: : 008A3C78

9.2.

Krypto-Analyse

IDA

PRO/Find-

RIJNDAEL

[ S ] [ c h a r

]

Crypt:Crypt32.dll

 

: : 00435AD4

: : 008364D4

 

RIJNDAEL

[ S inv ]

[ char ]

 

77A914E3 : found s p a r s e c o n st a nt s

 

:

: 00435BD4

 

f

o r SHA 1

:

: 008365D4

77A93C0A : f o u n d s p a r s e

c o n s t a n t s

RIJNDAEL

[ S inv ]

[ char ]

 

f

o r MD4

: : 004A53FC

77A94435

:

found s pa r se

c o n st a nt s

: : 008A5DFC

f o r MD5

77B01378 : found const a r ray rc2

PITABLE ( u s e d i n RC2 )

9.3. Krypto-Analyse PEID/Kanal:Kernel32.dll

SHA1 [ Comp ress ]

SHA1 [ Comp ress ]

: : 000F7A78

: : 004F8478

: : 0022BD44

: : 0062C744

BASE64 t a b l e : :

0007CE50

SHA

224

[

I n i t ]

 

:

: 7C87DA50

 

: : 0022C15E

C

r y ptC r e at e H a s h [ Name ]

: : 0062CB5E

 

: : 0001C6AC

SHA

256

[ mixing ]

: : 7C81D2AC

 

: : 0043AF48

C

r y ptH a s hD ata [ Name ]

: : 0083B948

 

: : 0001C654

SHA

384

[

I n i t

]

: : 7C81D254

 

: : 0022E90A

9.4.

Krypto-Analyse PEID/Kanal:WinSCP.exe

SHA

512

[

i n i t

]

: : 0062F30A

 

: : 0022E9B6

BASE64

t a b l e

:

:

00421B98

: : 0062F3B6

 

:: 00822598

SHA 512

[

i n i t

]

BASE64

t a b l e

:

:

00430090

: : 0043B064

 

:

: 00830A90

 

: : 0083BA64

BASE64

t a b l e

:

:

004BE408

 

:

: 008BEE08

9.5. Krypto-Analyse Fingerprint v2.0: Crypt32.dll

BLOWFISH [ s b o x ]

:: 00438120

Startadresse : block 0x77affa04

 

:

: 00838B20

Instructions :(25) of function

CRC32

:

:

004392FC

0x77aff973 :

:

: 00839CFC

A

rit h . Log

Ope rationen : 17

CryptGenRandom [ Name ]

Caballero

Rating :68.00

 

:

: 004ACB61

Num o f s u s p i c i o u s Bl o c k s : 5

:

: 008AD561

DES [

l o n g ] : : 002330C8

: : 00633AC8 Li st of primes [ word ]

Startadresse : block 0x77affa79 Instructions :36 of function

0x77aff973

: : 004A5A6A

A

rit h . Log

Ope rationen :

21

: : 008A646A

Caballero

Rating :58.33

MD5

:

:

000EFCA2 : :

004 F06A2

Num o f s u s p i c i o u s Bl o c k s : 5

MD5

:

:

00229E6B : :

0062A86B

P I f r a c t i o n (NIMBUS / BLOWFISH )

: : 004380D8

Startadresse : block 0x77affbb0

Instructions :22 of function

 

: : 00838AD8

0x77aff973

 

Prime

:

IETF 1024,

prime modulus

A

rit h . Log

Ope rationen : 14

 

: : 0043A3A8

Caballero

Rating :63.64

: : 0083ADA8

Num o f s u s p i c i o u s Bl o c k s : 5

Prime

:

IETF 2048,

prime modulus

: : 0043A428

: : 0083AE28

Startadresse : block 0x77a9440f

Instructions :652 of function

17

0x77a9440f

R e f e r e n c e d a t 10014A34

A rit h . Log Ope rationen :

431

Caballero Rating :66.10 Num o f s u s p i c i o u s Bl o c k s : 5

Sta rtad resse : block 0x77a84810 Instructions :47 of function

0x77a84810

A rit h . Log Ope rationen :

41

Caballero Rating :87.23 Num o f s u s p i c i o u s Bl o c k s : 5

9.6. Krypto-Analyse IDA PRO/ FindCrypt: BeeCrypt.dll

100082F3

: found

s pa r se

c o n st a nt s

f o r MD5

1002A1A8

: f o u n d

c o n s t

a r r a y

Rijndael Te4

 

1002B5A8 : f o u n d Rijndael Td4 1002BB80 : found

c o n s t

a r r a y

s p a r s e

c o n s t a n t s

f o r SHA 1

 

1002BBB0

: f o u n d

c o n s t

a r r a y

SHA256 K

1002BDB0: f o u n d SHA512 K

c o n s t

a r r a y

10030188: found const array Blowfish p init 10030188: found sparse constants

f o r HAVAL

100301A8 : f o u n d HAVAL mc2

c o n s t

a r r a y

100301D0 : f o u n d Blowfish s init

c o n s t

a r r a y

10030228: found const array HAVAL mc3

c o n s t a r r a y

100302A8 : f o u n d HAVAL mc4

10030328: found const array HAVAL mc5

1003137C: found

f o r MD4

s pa r se c o n st a nt s

9.7. Krypto-Analyse PEID/ Kanal: CygoCrypt.dll.dll

[

]

DES

(

c r y p t ) [ c h a r ] Re fe re nce d

000134 F0 : : 100140 F0 at 100141E0

:

:

 

Referenced at 10014204

 

DES

[

l o n g ]

:

: 0000D720 : : 1000 E320

 

The re fe re nce

i s above

.

DES

c r y p t 2 [

c h a r ] : : 00013570 : : 10014170

R e f e r e n c e d a t 100142CF

DESX [ c h a r ] : :

000AAAD0 : : 100AB6D0

R e f e r e n c e d a t 10014A04

18

[ RC2 [ c h a r ] : :

]

000AABE0 : : 100AB7E0

Referenced at 10015938

Referenced at 1001596C Referenced at 1001598C