You are on page 1of 18

Opcode Statistics And Crypto Detection Heuristics In IDA

Author Tayfun Yilmaz Rheinische Friedrich Wilhelms Universit¨ t Bonn a Projektgruppe: Malware Bootcamp yilmaz@cs.uni-bonn.de Abstract
Diese Ausarbeitung besch¨ ftigt sich mit dem Analysea Tool Fingerprint v.2.0, einem IDAPython Skript dass der statischen bzw. statistischen Analyse von ausf¨ hrbarem u Bin¨ rcode dient.Sie beschreibt die Nachimplementierung a von vielversprechenden Ans¨ tze zum Thema der statisa tischen Auswertung von Instruktionsverteilungen in disassembliertem Bin¨ rcode in IDA,um es praktisch nutza a bar zu machen.Die Leistungsf¨ higkeit wurde im Rahmen einer Evaluation verifiziert. Die Grundlage f¨ r dieu se Ausarbeitung bilden Daniel Bilars Analysemechanismen (Siehe: Fingerprinting Malicious Code Through Statisti” cal Opcode Analysis“-Daniel Bilar: Department of Computer Science, Wellesley College, Massachusetts, USA) und Juan Caballeros Dispatcher zur Erkennung von KryptoRoutinen anhand des Verh¨ ltnisses arithmetischer und loa gischer Operationen (Im Folgenden abgek¨ rzt mit Ops“) u ” zu der Gesamtheit aller in dem ausf¨ hrbaren Code enthalu tenen Ops. Keywords [Tayfun,Yilmaz, Fingerprint,Malware, Analyse,Dispatcher,Caballero,Heuristik,Universit¨ t a Bonn] Herangehensweise beschreibt Daniel Bilar, in seiner Arbeit Fingerprinting Malicious Code Through Statistical Opco” de Analysis“.

2. Einleitung
Die Motivation, die hinter der Analyse von Malware steckt, ist eine Offensichtliche.Sie ist Schadensbegrenzung.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 f¨ r den Einsatz von Analysmechanismen f¨ r u u Malware spricht.Gleichzeitig ist auch die Zahl von HostBases, 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, einerseits sowohl im Hinblick auf polymorphe Malware und andereseits auf metamorphe Malware.Polynmorphe Malware ist eine solche, die ihre Gestalt von Generation zu Generation mithilfe von variablen Verschl¨ sselungstechniken u ¨ andert, um so dem Analysten die Auswertung des vorliegenden Samples zu erschweren3 . In metamorpher Malwa¨ re liegen ahnliche Techniken vor um Ver¨ nderungen am a K¨ rper vorzunehmen[4] , was jedoch bei beiden das Ziel o ist, ist anhand eines m¨ glich langen zusammenh¨ ngenden o a St¨ cks Code, dass sich optimal f¨ r Pattern-Basierte Anau u lysevorg¨ nge eignet, eine Signatur abzuleiten, auf desa ¨ sen Basis Vorhersagen uber die Funktion des vorliegenden Bin¨ rcodes getroffen werden k¨ nnen.Dieser Weg ist zwar je a o nach Gr¨ ße der eingelesenen Executable eine relativ schnelo le, aber nur bedingt anpassungsf¨ hig in Bezug auf beia spielsweise die bereits erw¨ hnten polymorphen F¨ lle von a a Malware. Eine Erg¨ nzung zu diesen Analysemechanismen a sind verschiedene Heuristiken, von denen in der vorliegenden Ausarbeitung die sog. Caballero-Heurstik“(Benannt ” nach Juan Caballero) implementiert worden ist.Am Beispiel zuf¨ llig gew¨ hlter gutartiger und b¨ sartiger Softwaa a o re werden hier die sowohl absoluten als auch relativen H¨ ufigkeiten von 10 beispielhaft herausgenommenen Opa

1. Motivation
Die dynamische Herangehensweise an Malware mit Anti-Viren Software(Im Folgenden abgek¨ rzt mit AV“) hat u ” sich in der Vergangenheit als bedingt erfolgreich herausgestellt.Sie ist eine relativ schnelle, jedoch in Bezug auf beispielsweise metamorphe und polynmorphe Malware nur bedingt anpassungsf¨ hig.Die Idee ist daher, statt sich auf a eine dynamische Analyse beschr¨ nken,eine statische Anaa lyse der Malware anhand der Aufteilung ihrer Opcodes und einer statistischen Auswertung dieser mit heranzuziehen.Diese wiederum werden aus der Datei extrahiert mithilfe des Interactive Disassembler Pro“(Im Folgenden ab” gek¨ rzt mit IDA Pro“) und die statistische Auswertung eru ” folgte mit Microsoft Excel, die in einer virtuellen Umgebung (VMWare, 2005) ausgef¨ hrt worden ist. Eine solche u

codes bzw. Instruktionen betrachtet. Fortlaufend betrachten wir das Vorkommen der Opcodes von sowohl b¨ sartiger als o auch gutartiger Software.In Bezug auf die Malware betachten wir entpackte und damit normalisierte Samples.

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¨ ße dieser existierenden Befehle h¨ ngt von der Aro a chitektur des Prozessors ab, so findet sich der gr¨ ßte Beo fehlssatz in der Complex Instruction Set Computer“(Im ” Folgenden mit CISC“abgek¨ rzt).Im Gegensatz dazu findet u ” sich der kleinste Befehlssatz in der RISC-Architektur Re” duced Instruction Set Computer“ [6] . Abbildung 1. Vergleich der relativen ¨ ¨ Haufigkeiten der 14 haufigsten Opcodes ¨ beider Datensatze [1]

3.2. CISC & RISC
Wie bereits erw¨ hnt beschreiben die K¨ rzel CISC und a u RISC verschiedene Formen der Prozessorarchitektur, wobei i.d.R CISC die Variante mit dem gr¨ ßten und RISC die o mit dem reduzierten Befehlssatz ist. Die Idee, die hinter einem vergr¨ ßertem Befehlssatz steckt ist die, dass auch auch o komplexere Rechenschritte mit nur einem Maschinenbefehl ausgef¨ hrt werden k¨ nnen, was den Prozessor wiederum u o schneller und leistungsf¨ higer machen soll. Problematisch a ist in diesem Zusammenhang jedoch die Tatsache, dass das diesen Prozessortypen komplex und damit schwieriger weiterzuentwickeln macht. Ebenfalls ist fragw¨ rdig wie h¨ ufig u a die komplexeren Instruktionen tats¨ chlich verwendet wera 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 zusammengesetzt werden k¨ nnen um obige komplexere Beo fehle zu realisieren[6] .

Abbildung 2. Vergleich der relativen ¨ Haufigkeiten der 14 seltensten Opcodes ¨ beider Datensatze[2]

3.3. Opcodes
Als sogenannte Opcodes“auch Operation Co” ” des“werden Zahlen bezeichnet, oft in hexadezimaler Form, die wiederum einen Maschinenbefehl, sogenannte Mnemonics, f¨ r einen bestimmten Prozessortypen einleiten[7] . u W¨ hrend einige Opcodes schon alleine einen solchen a Maschinenbefehl darstellen besitzen andere zus¨ tzlich a einen Operanden, die den Zweck einer Adresse, einer ein¨ fachen Konstante oder Ahnliches erf¨ llen[8] . Daniel Bilar u beschr¨ nkte sich in seiner Arbeit auf 14, aller im Rahmen a der CISC Architektur zur Verf¨ gung stehenden, Opu codes(mov,push,call,pop,cmp,jz,lea,test,jmp,add,jnz,retn, xor), deren Vorkommen er n¨ her analysiert hat.Am Beispiel a zuf¨ llig gew¨ hlter Software, alle basierend auf der Intel a a x86- bzw. CISC Architektur (Gutartige Software,Kernel 2

Rootkits,User Rootkits,Tools,Bots,Trojaner,Viren und W¨ rmer) ist sein Ziel die Erzeugung eines Structural Finu ” 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 deutlich h¨ heres Vorkommen aufweisen als in entsprechend o gutartiger Software. Bilar standen nach der Extraktion 398 IA-32 Opcodes zur Verf¨ gung,zur¨ ckzuf¨ hren auf die u u u Summe der einerseits 1,5 Millionen Opcodes der gutartigen Samples, von denen 192 unterschiedlich waren und der 665000 Opcodes der b¨ sartigen samples, von denen o wiederum 141 unterschiedlich waren[9] . Die in diesem Zusammenhang f¨ nf am h¨ ufigsten auftretenden Ops waren: u a mov,push,call,pop,cmp. Wie in Abbildung 1 deutlich zu erkennen ist, unterscheiden sich die oberen 14 Ops,in Bezug auf die H¨ ufigkeiten, nur minimal, was wiederum wenig a aussagekr¨ ftig ist. Betrachten wir jedoch die unteren, sprich a 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 Datens¨ tzen klarer(Siehe: Abbildung 2). Diese Ops weisen a ein solch niedriges Vorkommen auf, dass die Werte im Bereich 10 6 angegeben werden m¨ ssen, sprich Partsu ” Per-Million“(i.A. ppm“). Betrachten wir beispielhaft ” bt,fdvip,fild,fstcw, die zusammen gerechnet in der gutartigen Software immerhin einen Wert von 435 · 10 6 erzielen.Selbige im Bereich Kernel Rootkits ergibt die

Gesamtsumme 0. Ein weiteres markantes Beispiel ist beispielsweise 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 Unterschiede zwischen gut- und b¨ sartiger Software erkennen, o wenn auch daf¨ r unter Umst¨ nden eine feinere Analyse u a betrieben werden muss.

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 Ausarbeitung h¨ ufiger genannt.Sie spielen im Rahmen der Anaa lyse von Bin¨ rcode eine wichtige Rolle. Es handelt sich a dabei um einen Teil des Codes innerhalb des Programms mit bestimmten gew¨ nschten Eigenschaften, die ihn zu eiu nem grundlegenden Baustein der statischen Analyse machen.Er zeichnet sich in diesem Zusammenhang dadurch aus, dass er einen Entry-Point (Die letzte Instruktion ausgeschlossen) und einen Exit-Point (Auch hier ausgeschlossen der letzten Instruktion) besitzt(Siehe: Sicherheit in In” formationsystemen - Definition 15 (basic block)“- Kurt Bauknecht,Dimitris Karagriannis,Stephanie Teufel). EntryPoints bezeichnen in der Informatik bzw. der Programmierung die Startadresse ab der die Maschineninstruktionen bzw. der Maschinencode einer Funktion in einer Programmbibliothek,bei Ausf¨ hrung des Programms ausu gef¨ hrt wird.Exit-Points dementsprechend analog[12] . u

3.4. Mnemonics
Wie bereits erw¨ hnt geh¨ rt zu jedem Opcode ein Mnea o monic, ein kurze Zeichenfolge die gut zu merken ist und den entsprechenden Befehl beschreibt, wie beispielsweise ADD“f¨ r die Addition oder SUB“f¨ r die Subtraktion.Mit u u ” ” dem Operanden der unter Umst¨ nden zu dem Mnemonic a geh¨ rt, bildet sich so die Assemblersprache, die von dem o gleichnamigen Assembler, einem Hilfsprogramm, in einen f¨ r den Prozessor verst¨ ndlichen Maschinenbefehl umgeu a wandelt wird.Je nach der betrachteten Prozessorarchitektur k¨ nnen sich die Assemblersprachen unterscheiden[10] . Ein o Folge von Maschinenbefehlen ist dann der Maschonencode, eine Folge von Dualzahlen in 8-Bit respektive 1-Byte Einheiten, wie folgendes beispiel zeigt : 10100001 00000000 00101010 Die bin¨ re Darstellung nimmt jedoch zu viel Platz weg, daa her schreibt man sie auch oft hexadezimal auf und da 1 Hexadezimalwert 4-Bit darstellen, k¨ nnen mit lediglich 2 Heo xadezimalwerten 1 ganzes Byte dargestellt werden.Dadurch ¨ sieht der Maschinencode dann in etwa ahnlich zu Folgendem aus: A1 00 2A 8B D8 C1 Zur Laufzeit des jeweiligen Programms werden diese Befehle dann in den Speicher geladen, wo der Prozessor sie sich nacheinander herausladen kann um sie dann, entsprechend der im Befehlsz¨ hler festgehaltenen Reihenfola ge,abzuarbeiten. Ein typischer Assemblercode (Hier in in der Intel 8086 Assemblersprache) sieht wie folgt aus : Assemblercode: mov ax,B mov bx,ax shl ax,2
[11]

3.6. Data Encryption Standard DES & 3DES
DES“ist die Abk¨ rzung f¨ r Data Encryption Stanu u ” ” dard“und ist ein unter Verschl¨ sselungstechniken weit u verbreiteter symmetrischer Verschl¨ sselungsalgorithmus. u Er wurde urspr¨ nglich von IBM f¨ r die US-Regierung u u entwickelt und in seiner klassischen Form von der NASA verwendet[13] . Symmetrische Verschl¨ sselungsalgorithmen u verwenden zum Ver- und Entschl¨ sseln denselben u Schl¨ ssel. Das Verfahren arbeitet auf 64-Bit großen u Bl¨ cken im Plaintext, sprich Klartext, aus denen er wiedero um mithilfe von ebenfalls 64-Bit großen Schl¨ sseln (Davon u ist jedes achte Bit ein Parit¨ tsbit zur Erkennung fehlerhaft a ¨ ubertragener Informationen wodurch effektiv nur noch 54 ¨ Bits ubrig bleiben) sog. Chiffretexte generiert.Als Chiffretexte bezeichnet man die Ausgabe nachdem der Plaintext kryptographisch bearbeitet wurde[14] . Die Verschl¨ sselung u beruht auf Permutationen und Subtitutionen, so erfolgt im ersten Schritt eine Permutation der Eingabe und dieses 64 Bit lange Ergebnis dessen Reihenfolge ge¨ ndert wurde a wird in zwei 32-Bit Register geschrieben (Linker Block :Li und rechter Block Ri ).Selbiges geschieht dann mit den 56 Bits des Schl¨ ssels, wobei hier das Ergebnis in zwei 28-Bit u Register gespeichert wird. Im n¨ chsten Schritt werden a die Schl¨ sselregister um ein bzw. zwei Bits verschoben u und 48 der 56 Bits als Rundenschl¨ ssel bestimmt.Ri wird u von 32 auf 48 Bits expandiert und anschließend mithilfe einer XOR-Funktion verkn¨ pft, um es dann auf die sog. u S-Boxes Si“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 3

Maschinencode: A1 002A 8B D8 C1 E0 02

Bekannte Syntaxen sind die Intel Sytax, auch ASM86 genannt, und die AT& T ( Abk¨ rzung f¨ r American Teleu u ” phone & Telegraph Corporation“) Syntax. Ein wesentlicher Unterschied zwischen diesen ist beispielsweise der, dass w¨ hrend in der Intel Syntax die Zieladresse vor der Quella adresse steht : Intel-Syntax: mov ebx , 5

¨ Abbildung 3. Zufallig generierte PBox insgesamt 16 Spalten und 4 Reihen mit reellen Werten, die sich alle voneinander unterscheiden. Im Si passiert dann folgendes: Sei beispielsweise die Eingabe folgendes 6er Bit x1 ,x2 ,x3 ,x4 ,x5 und x6 , dann dienen das erste und das letzte Bit dazu die Reihe in dieser Tabelle zu finden.Das bedeutet bei einer Eingabe x1 bis x6 = 1100112 w¨ ren a x1 = 12 und x6 =12 , also zusammen 112 . Dezimal erh¨ lt a man also den Wert 310 .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 x2 bis x5 respektive 10012 also 910 ergeben die zur Zeile geh¨ rige Spalte 9. Die 3. o Zeile, 9. Spalte beinhaltet letzendlich den Wert 11, also 10112 (Siehe: Abbildung 3). Nun wird dieser Datenblock mit Li mittels XOR verkn¨ pft, der dann das neue Li darstellt.Ri ist jetzt das u alte Li . Diese Schritte, exklusive ab der Aufteilung des Eingabeblocks und des Schl¨ ssels in Register, werden u insgesamt 16 mal durchgef¨ hrt (16 sog. Rounds“).Am u ” Ende erfolgt dann schließlich eine erneute Permutation des 32-Bit langen Ergebnisses. Nach der letzten Runde werden Li und Ri zusammengef¨ gt[15] . Diese Form der u Verschl¨ sselungsfuhr erfuhr in letzter Zeit eine Abwandu lung, undzwar dahingegen, dass die Zahl der verwendeten Schl¨ ssel erh¨ ht wurde, da dem klassischen DES eine zu u o große Unsicherheit zugesprochen wurde.So ist heute statt dem DES ein beispielsweise Triple-DES“ein klassischer ” Verschl¨ sselungsalgorithmus, kurz u 3DES,TDES“oder ” DESede“in beispielsweise Chipkarten jeglicher Art[16] . ”

Abbildung 4. Struktur der Blowfish Ver¨ schlusselung[7]

der Input entsprechend obigem Muster modifiziert wurde, erfahren die beiden H¨ lften dann noch ein letztes Mal eine a XOR-Verkn¨ pfung mit den letzen RundenSchl¨ sseln P17 u u und P18 , sprich: R18 = L17 ⌦ P17 , L18 = R17 ⌦ P18 .(Siehe Abbildung 4 Blowfish“)[17] . ”

4. Implementierung
Im Folgenden Abschnitt werden die in dem IDAPython Skript Fingerprint v2.0 enthaltenen bzw. aufgerufenen Funktionen aufgelistet und kurz erkl¨ rt. Die in der Maina funktion des Skripts aufgerufenen Funktionen entsprechen aus chronologischer Sicht der Anordnung entsprechend Abbildung 5, dabei soll der Block innerhalb des Blocks functionsAndbasics() verdeutlichen, dass innerhlab der Funktion functionsAndbasics() die Funktion BasicBlocks() aufgerufen wird.

3.7. Blowfish
Wie auch der Data Encryption Standard handelt es sich beim Blowfish um einen 1993 entwickelten symmetrischen Blockverschl¨ sselungsalgorithmus. Hier kommt der Input u ebenfalls als 64-Bit langer Plaintext der in Li und Ri aufgeteilt wird an und, ebenfalls wie im DES, wird Li auf XORBasis mit einem vorher berechneten Rundenschl¨ ssel (Pi u bis P16 ) verkn¨ pft: u Ri+1 =Li ⌦ Pi Das Ergebnis durchl¨ uft die S-Box um anschließend mit a Ri XOR-verkn¨ pft und in Li+1 abgespeichert zu weru den, sprich nach der XOR-Verkn¨ pfung (mit der rechten u H¨ lfte des Inputs) der XOR-Verkn¨ pfung der Linken H¨ lfte a u a des Ausgangs-Plaintextes mit dem entsprechenden Rundenschl¨ ssel,werden die beiden H¨ lften vertauscht: u a Li+1 =Ri ⌦ F(Ri+1 ). F soll hier als Funktion der S-Box beschreiben. Am Ende, also nach den 16 Runden in denen 4

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 Instruktionen, dabei jeweils bestehend aus Mnemonik, Instruktion und anschließend Operand erstellt.Die Informationen werden in eine .csv Datei exportiert. CSV steht f¨ r Comma Seu ”

¨ Abbildung 5. Funktionsubersicht Fingerprint v2.0

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 verwendeter Software auch Semikolon, Doppelpunkt, Tabula¨ tor oder Leerzeichen ublich, dient dazu Datens¨ tze durch a einen Zeilenumbruch voneinander zu trennen.Dies wiederum vereinfacht die weitere Verwendung der vom Skript exportierten Informationen erheblich[19] . Die Ausgaben werden nicht nur dazu verwendet um eine absolute Zahl, bezogen auf jedes der Mnemoniks zu liefern, sondern zus¨ tzlich a dazu auch ein Instruktions-Histogramm.Die Vorgehensweise dabei ist folgende.Jede der betrachteten Mnemoniks (push,mov,xor,sub,add,jmp,call,Pop,dec,sbb) bekommt ihre eigene Z¨ hlervariable.Außerdem existiert eine Z¨ hlervariable a a die unabh¨ ngig von der Art des Mnemoniks inkrementiert a 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¨ r das Verh¨ ltnis des jeweils beu a trachteten Mnemonics zu erhalten.Die Ausgabe erfolgt dabei trivialerweise in Float. ILH m¨ ndet somit einerseits in u 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 Z¨ hlervariablen festgehaltenen Informatioa nen.Aus diesen folgt ein Histogramm zu den absoluten sowie relativen Vorkommen der Mnemonics. Die n¨ chste aufgerufene Funktion ist die mnemList() Funka tion, die den Zweck einer Dictionary erf¨ llt.Diese Funktion u hat die Aufgabe die gesamte Eingabe zu durchlaufen und alle enthaltenen Mnemoniks herauszufiltern.Diese werden nach der H¨ ufigkeit ihres Vorkommens sortiert und zusama men mit diesem absoluten Wert in der Datei Dictionary5

List.csv festgehalten. Die IDAPython Built-In-Function Functions()“(Siehe In” ” troduction to IDAPython,Ero Carrera“) agiert im n¨ chsten a 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 verr¨ t werden hier nicht nur die Funktionen a mit ihrer Startadresse,ihrem Namen und ihrer ID, die mittels einer einfachen Z¨ hlervariable innerhalb der Schleife festa gelegt wird ermittelt,sondern auch die dazugeh¨ rigen Bao sicBlocks undzwar ebenfalls mit dazugeh¨ riger Startadreso se,Endadresse,ID und Gr¨ ße.Die BasicBlocks werden mito hilfe einer eigenen Funktion ermittelt, der BasicBlocks()“” Funktion.BasicBlocks sind wie der Name bereits andeutet Bl¨ cke im Code bzw. Teile des Codes mit einer o gr¨ ßtm¨ glichen Folge von Anweisungen ohne Verzweiguno o gen oder Einspr¨ nge(Siehe: S.783 ¨ u Informatik Handbuch4.Auflage Hanser Verlag”,Peter Rechenberg,Gustav Pomberger oder Punkt 3.5 BasicBlocks der vorliegenden Ausarbeitung) und diese Eigenschaft wiederum macht sie optimal f¨ r Analysevorg¨ nge.Die Frage die sich nun stellt ist u a der Weg der Extraktion dieser BasicBlocks, die folgende Eigenschaft haben A basic block is a straight-line sequence ” of code with only one entry point and only one exit“ [20] . ¨ Ein Ansatz w¨ re also uber die Entry Points,f¨ r die ebena u falls in IDAPython Built-In-Functions existieren GetEntry” Point()“, GetEntryPointQty()“um die Adresse des Entry” Points einerseits und die Zahl aller EntryPoints andererseits zu ermitteln[45] .Diese Methode stellte sich jedoch als ¨ uberaus umst¨ ndlich heraus.Wie bereits gesagt sind Baa sicBlocks Bl¨ cke im Code der eingelesenen Executable o mit einer gr¨ ßtm¨ glichen Folge von Anweisungen ohne o o Verzweigungen oder Einspr¨ nge und genau diese Eigenu schaft erm¨ glicht die Extraktion dieser mithilfe der Flowo 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 Verf¨ gung stellt, offentlich u zug¨ nglich ist [21] . a Dieser Steuerflussgraph(Siehe:Abbildung 6)wird nun zur Datenflussanalyse verwendet, in der wiederum unter anderem festgestellt werden kann welche Werte weiter unten ” im Graphen noch gebraucht werden (live variable analysis)“ [22] . Die extrahierten BasicBlocks werden nun in der Datei ”BasicBlocks.csv”,wie erw¨ hnt mit Start-und Endadresse soa wie ihrer ID,die wieder mittels Z¨ hlervariable zu Beginn a 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 Caballero zur¨ ckzuf¨ hren. Die Caballero-Heuristik beruht u u auf der Annahme, dass die Anzahl von arithmetischen und logischen Operationen in Malware auff¨ llig gr¨ ßer ist als a o in gutartiger Software . Das von Caballero geschriebene

Abbildung 6. Steuerflussgraph aus Ba¨ sicBlocks und Sprungen[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 operations over the total number of instructions [. . . ] 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 Verh¨ ltnis a von arithmetischen und logischen Operationen zu der Gesamtheit aller im Bin¨ rcode enthaltenen Operationen a berechnen.Wenn dieses Verh¨ ltnis eine vorher definierte a ¨ 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 Unterfunktionen fallen nicht darunter. Die definierte Funktion in Fingerprint v2.0, welche diese Aufgabe erf¨ llt heißt u caballero()“und die Vorgehensweise ist dabei folgen” de: Entsprechend Abbildung 7 ”x86 Opcode Structure and Instruktion Overview”des Fraunhofer-Instituts f¨ r u 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 erw¨ hnte Schwelle a f¨ r das Verh¨ ltnis arithmetisch-logischer Operationen u a zu allen anderen wurde hier auf 20% bzw. 0.2 gesetzt und die Bl¨ cke, die verd¨ chtigt werden Crypto-Routinen o a zu enthalten werden in einem gemeinsamen Array, dem suspicious blocks“Array abgelegt. Ab diesem Punkt ist ” das Vorgehen ein Triviales.F¨ r jede Instruktion innerhalb u 6

Abbildung 7. x86 Opcode Structure And Instruction 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: CaballeroFunktion for Funktion in Functions : [...] for block in Functions : [...] f o r h e a d i n Heads : i f isCode ( I n s t r u c t i o n ) : C o u n t e r I n s t r +=1 i n s t = GetMnem ( h e a d ) i f i n s t in a r l o g l i s t : C o u n t e r a r i t h l o g += 1 C o u n t e r b l o c k i n s t r += 1 wird iterativ gepr¨ ft ob diese Instruktion in der arlog list u liegt und wenn dieser Test positiv ausf¨ llt, sprich True a zur¨ ckgegeben wird, wird die dazugeh¨ rige Z¨ hlervariable u o a um eins inkrementiert. Das Caballero-Rating, also das Verh¨ ltnis auf welches wir hinaus wollen, ergibt sich dann a aus dem Quotienten der Z¨ hlervariable der aritmetischen a und logischen Operationen und der Gesamtzahl aller Operationen,die ebenfalls in Form einer Z¨ hlervariable vora liegt, die jedoch unabh¨ ngig von der Iteration,inkrementiert a wird.Wenn die Zahl der Instruktionen echt gr¨ ßer f¨ nf o u (Ein Viertel des von Caballero vorgeschlagenen Wertes) und gleichzeitig das Caballero-Rating echt gr¨ ßer der o vorher definierten Schwelle von 0.2 respektive 20% ist, wird die block info“des verd¨ chtigten Blocks in der a ” suspicious blocks“-Variable festgehalten. ” ¨ Die Block Info enth¨ lt dabei Informationen uber die a 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.Zus¨ tzlich a dazu ” liefert die Ausgabe noch Informationen dar¨ ber welcher u Funktion die Instruktion entspringt und nat¨ rlich die u Gesamtzahl der verd¨ chtigten Bl¨ cke. a o Im weiteren Verlauf betrachten wir die Basis unserer Analyse bzw. die Datens¨ tze auf deren Grundlage das a Skript getestet wird.Die Wahl der sowohl gutartigen, als auch b¨ sartigen Software ist willk¨ rlich. Neben diesen beo u trachten wir zus¨ tzlich Dateien von denen wir grunds¨ tzlich a a wissen, dass sie Kryptographie enthalten, um an ihnen die Funktionalit¨ t der implementierten Caballero-Heuristik a noch deutlicher hervorzuheben.Eine Verifizierung der Er¨ gebnisse erfolgt schließlich anhand offentlich zug¨ nglicher a Tools wie dem IDA Plugin FindCrypt“und dem KA” NAL Plugin f¨ r PEID. PEID ist ein frei zug¨ ngliches Tool u a mit grafischer Benutzeroberfl¨ che, dass dazu dient Exea Dateien Pack-,Verschl¨ sselungs,- und andere Verschleieu rungsroutinen zu erkennen. Derzeit ist es in der Version 0.95 verf¨ gbar. Das verwendete Plugin KANAL“ist dau ” bei speziell darauf ausgerichtet bekannte Krypto Algorithmen zu identifizieren, jedoch ist es hierbei nur in der Lage solche aufzusp¨ ren, die eine gewisse Signatur aufweiu sen.Ein Beispiel daf¨ r sind die S-Boxes der Blockfish Veru schl¨ sselung.Mathematische Algorithmen wie das bekannu te RSA dagegen kann es nicht finden.KANAL gibt den Typ und die Start- und Endadresse des verd¨ chtigten Blocks a aus. Die Ausgabe dieses Plugins erfolgt interaktiv auf der Oberfl¨ che des Programms in einem Ausgabefenster, jea doch besteht hier die M¨ glichkeit die Ergebnisse entspreo chend in eine Datei zu exportieren[24] . FindCrypt kann bekannte Krypto Algorithmen und Hashfunktionen identifizieren und sie mit ihrer zugeh¨ rigen Adresse und dem ento sprechenden Namen des Algorithmus(Blowfish,DES etc.) ausgeben.Im Gegensatz zu KANAL besitzt FindCrypt keine direkte Funktion f¨ r das Exportieren der ausgegebenen Inu formationen.Die Ergebnisse werden in IDA’s Ausgabefenster angezeigt[25] .

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

und umfangreichen Funktionalit¨ t besonders interessant f¨ r a u die Histogrammauswertung des Skripts entsprechend Bilar und andererseits ist es aufgrund seiner Hash-Algorithmen und verschl¨ sselten Kommunikation besonders geeignet u 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), Trojan.Win32.Agent.bccs (Kaspersky), W32.Downadup.B (Symantec),Trojan-Downloader.Win32.Agent.aqfw (Kaspersky), W32/Conficker.worm (McAfee),Trojan:Win32/Conficker!corrupt (Microsoft),W32.Downadup (Symantec), WORM DOWNAD (Trend Micro),Confickr (other).Er wird von Microsoft in Bezug auf den Gef¨ hrlichkeitsgrad hoch eingestuft[26] . a Conficker nutzte die Sicherheitsl¨ cke, die von Microsoft u in der Microsoft Security Bulletin MS08-067 - Criti” cal“beschrieben wurde.Er ist in der Lage mithilfe dieser Sicherheitsl¨ cke einen beliebigen Code von außen einu zuschleusen und auszuf¨ hren[27] . Um im Zusammenhang u dazu auch zu verhindern, dass er ohne Weiteres gel¨ scht o wird, ist er in der Lage Windows-Updates, den Aufruf s¨ mtlicher Herstellerseiten von Antiviren- und sonstigen a Sicherheitsprogrammen, des Windows-Sicherheitscenters, Windows Defenders und des Windows-Systemprotokolls ¨ zu verhindern.Das Offnen des Task-Managers f¨ hrt u so dazu,dass das Fenster sofort wieder geschlossen wird[28] . Insgesamt sind f¨ nf verschiedene Versionen u des Conficker bekannt Worm:Win32/Conficker.A bis Worm:Win32/Conficker.E, die sich in der Art der Verbreitung und ihren Nutzdaten dem Payload“unterscheiden, f¨ r u ” 7

5. Untersuchter Datensatz
Wie bereits angesprochen erfolgte die Wahl der Datens¨ tze willk¨ rlich.Es werden sowohl gutartige als auch a u b¨ sartige Software Samples betrachtet und im Bereich der o Krypto Analyse solche von denen mit Sicherheit davon ausgegangen werden kann, dass sich Krypto Algorithmen in ihr befinden und solche die mit großer Sicherheit keine aufweisen um eine Best¨ tigung der Funktionst¨ chtigkeit von a u beiden Seiten gew¨ hrleisten zu k¨ nnen. a o

6. B¨ sartige Software o
Im Rahmen der b¨ sartigen Software werden hier o unter anderem der Wurm Conficker“n¨ her analya ” siert.Conficker.dll ist einerseits aufgrund seiner komplexen

ausf¨ hrliche Informationen finden sich Dokumentationen u auf obiger Microsoft Website. Die Verbreitung des Confi¨ cker erfolgt jedoch nicht nur uber die besagte Ausnutzung ¨ der Sicherheitsl¨ cke sondern auch uber lokale Netzwerke u und Datentr¨ ger wie USB(Siehe: Abbildung 8). Er erlangte a schnell Ber¨ hmtheit, da er sich innerhalb k¨ rzester Zeit u u zu einem Problem nicht nur f¨ r private Nutzer, sondern u auch die Bundeswehr, die K¨ rntener Landesregierung und a die franz¨ sische Marine entwickelte, sodass er Microsoft o schnell 250.000 US$ Wert war f¨ r jeden der Hinweise u zum Autor des Wurms geben konnte[29] . Er registriert sich als Systemdienst und die Dateien, die von ihm erzeugt werden bekommen eine zuf¨ llige Stringfolge als Dateina amen was eine Suche nach diesen im Nachhinein deutlich erschwert.Infizierte Computer erkennt man, abgesehen von den bereits erw¨ hnten Punkten, an einem erh¨ hten a o Traffic auf Port 445 und den folgenden Registryeintr¨ ge, a die erstellt von ihm erstellt werden4 : [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 Autoren Removal-Tools pr¨ sentiert, so auch Symantec[30] . a

7.2. Ping.exe
Die Ping.exe ist eine Windows Anwendung, die den Sinn erf¨ llt TCP/IP Verbindungen zu diagnostizieren, indem es u Internet Control Message Protocol (ICMP) sendet.Ping ist mithilfe des Troubleshooting so unter anderem in der Lage die Konnektivit¨ t,Erreichbarkeit,SSID und IP der Vera bindung zu testen.Entsprechende Parameter sind von Microsoft ausf¨ hrlich Dokumentiert[32] .Auf Basis dieser Eiu ¨ genschaften und der, dass sie kein sichtbares Fesnter offnet aber ein Port, um eine LAN und oder Internet Verbindung herzustellen[33] wurde Ping schon h¨ ufiger Ziel von a Malware Autoren. Ping geh¨ rt wie bereits erw¨ hnt in dieo a sem Datensatz, wie auch Notepad++, Calc,Telnet und WinSCP 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¨ lt und falls soa ¨ wohl die offentlichen Tools PEID/KANAL und IDA/FindCrypt als auch Fingerprint v2.0 keine solcher findet, hat sich die Annahme best¨ tigt und man spricht von einem a False-Negative.Es wurde also richtig erkannt, dass sich keine 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 verf¨ gbar und unterst¨ tzt nicht nur einfache Textdokumente u u sondern dar¨ ber hinaus auch die Erstellung und Modifikatiu on von Quelltext-Dateien.Es verf¨ gt in diesem Zusammenu hang die Syntax von aktuell mehr als 50 Programmier- bzw. Markup Sprachen (Built-in Languages)[35] .

7. Gutartige Software
Im Bereich der gutartigen Software, die f¨ r die Anau lyse herangezogen wurde, liegen verschiedene WindowsSystemdateien vor, von bei einigen schon vorher mit Sicherheit klar ist, dass sie beispielsweise Krypto Routinen enthalten(Crypt32,BeeCrypt und CygoCrypto) und bei einigen wiederum dass sie mit großer Wahrscheinlichkeit keine solcher enthalten wie (Ping,Notepad++,Calc und WinSCP).Diese erf¨ llen den Zweck von False-Negative Ausgau ben.

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.1. Kernel32.dll
Kernel32.dll ist eine 32-Bit dynamische Bibliotheksdatei,eine 32-Bit-Dynamic-Link-Library-Datei, die dazu dient Speicher, Ein-/Ausgabefunktionen und Interrupts zu verwalten.Sie ist eine bedeutende DLL-Datei und wird daher h¨ ufig von Malware bzw. Malware Autoren verwena det.Sie ist von enormer Bedeutung und ist in irgendeiner Art und Weise mit den meisten Windows-Funktionen verkn¨ pft(Windows 95,98,ME,XP). Bei der Kernel32 handelt u es sich um eine bedeutende Windows System-Datei, somit kann die ordnungsgem¨ ße Funktion des Betriebsystems, im a Falle einer Entfernung oder anderweitigen Modifizierung dieser Datei,falls diese beispielsweise infiziert sein sollte, nicht mehr gew¨ hrleistet werden[31] . a 8

7.5. Crypt32.dll
Hierbei handelt es sich um eine Windwos Systemdatei, die ein Bestandteil Microsofts Windows und Windows Servern ist,wenn auch in verschiedenen Versionen mit entsprechend verschiedenen F¨ higkeiten.Sie wird von Funka tionen wie beispielsweise der CryptSignMessage Funktion verwendet, die einen Hash des Ziel-Inhalts erstellen und anschließend sowohl die urspr¨ ngliche Nachricht sou 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 f¨ r eine Analyse mit der u 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¨ ngigen Betriebssystea men(Linux,Unix,Mac OS und Windows) verf¨ gbar ist, ist u 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¨ glicht den Datenaustausch zwischen zwei o Rechnern auf der Basis von SSH und es unterst¨ tzt in dieu sem Zusammenang auch noch das SCP-Protokoll. Dieses Open-Source Programm f¨ r Windows l¨ uft unter einer grau a fischen Oberfl¨ che (GUI) und dient einer sicheren (S)FTP a Verbindung.Das Programm ist in C geschrieben und basiert auf dem ebenfalls sehr bekannten Tool PuTTY“ [41] . ”

Abbildung 9. Vergleich der relativen ¨ ¨ Haufigkeiten der 10 haufigsten Opcodes ¨ beider Datensatze

7.8. BeeCrypt.dll
Die BeeCrypt.dll ist eine in der Programmiersprache C geschriebene Sammlung verschiedener Krypto Algorithmen, so beinhaltet sie beispielweise bekannte Verschl¨ sselungsalgorithmen wie Blowfish, MD5, SHA-1, u Diffie-Hellman und ElGamal. BeeCrypt erf¨ llt nicht den u Zweck einer direkten Applikation, um ein bestimmtes Krypto-Problem zu l¨ sen, sondern vielmehr eines Toolkits o f¨ r eine Vielzahl von Programmen. In diesem Kontext steht u sie unter der freien Lizenz GNU Lesser General Public Li” cense (LGPL)“, die wiederum zu der Free Software Foun” dation“geh¨ rt und kann somit frei verwendet werden[42] . o

doch ebenfalls in 2 Unterkapitel unterteilt, wobei im ersten dieser zwei Unterkapitel die Schwellenwerte des Caballero Ratings niedriger angesetzt werden als im zweiten, um ein breiteres Spektrum von Bl¨ cken in der Ausgao be zu haben, die wiederum bei n¨ herer Betrachtung intera essant werden k¨ nnen.Im zweiten Unterkapitel der Krypo to Analyse weden dann schließlich die Schwellenwerte denen in Caballeros Dispatcher verwendeten exakt angepasst, um einen m¨ glichst transparenten Vergleich zwischen o ¨ den offentlichen Tools und dem Fingerprint v2.0 Skript zu schaffen.

8.1. Opcode Analyse
Auf der Basis der Datens¨ tze wird fortlaufend eine Anaa lyse dieser, mit dem Fingerprint v2.0, betrieben.Dadurch ließe sich in diesem Zusammenhang Bilars bereits beschriebene statische Herangehensweise der Analyse verifizieren und dadurch sogar erneut exemplifizieren. Die Rahmenbedingungen sind, wie auch bei Bilar, eine virtuelle Maschine (VirtualBox Version 4.1.12) mit Windows XP SP 2.Die Extraktion der Opcodes erfolgt ebenfals mit IDA Pro (Version 6.0.0110224 (32-Bit), wobei anschließend die entsprechenden 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 Bezug auf ihre H¨ ufigkeiten nur minimal. Es l¨ sst sich also a a auch hier der gleiche Schluss ziehen, n¨ mlich der, dass die a Gegen¨ berstellung der realtiven H¨ ufigkeiten (Opcodes mit u a hohem Auftreten) der Samples zur statischen Malware Analyse kaum bis garnicht aussagekr¨ ftig ist. Bei genauerer Bea trachtung des Confickers liegen 18536 Ops vor, von denen die 5 H¨ ufigsten call,push,cmp,add,lea sind mit den enta sprechenden H¨ ufigkeiten von 4508, 3134, 751,3134 und a 4508 bei insgesamt 213 BasicBlocks. Betrachtet man nun also jene Opcodes, die zu denen mit dem geringstem Vorkommen geh¨ ren, (xor,jz,dec,jb,jl,jle,or,stos,ja,movzx) ero kennt man schon deutlicher einen Unterschied zwischen der betrachteten Malware und dem gutartigen Datensatz.Die 9

7.9. cygcrypto-0.9.7.dll
¨ Ahnlich wie auch BeeCrypt.dll handelt es sich hierbei um eine Sammlung von Kryptologie Algorithmen, hier jedoch als Erweiterung f¨ r CygWin, einer Software die dau zu dient, Programme die normalerweise lediglich unter Unix Systemen funktionieren auch unter Microsoft Windows (Windows NT, Windows 2000, Windows XP, Windows Vista, Windows Server 2003, Windows 7 und Windows Server 2008) funktionsf¨ hig zum laufen zu bringen Urspr¨ nglich a u wurde diese Software von einer eher unbekannten Firma namens Cygnus Solutions“programmiert.Die Weiterentwick” ¨ lung ubernahm sp¨ ter Red Hat“. Red Hat ist bekannt als a ” Entwickler der Red Hat Linux Distribution Fedora“ [43] . ”

8. Analyse
Fortlaufend wird eine ausf¨ hrliche Analyse der obigen u Datens¨ tze betrieben.Sie wurde in diesem Zusammenhang a im Hinblick auf die gesamte Analyse in 2 Unterkapitel unterteilt.Im ersten Teil wird entsprechend Bilar die Opcode Analyse und im zweiten Teil, entsprechend Caballero, die Krypto Analyse betrieben.Letzteres Kapitel wird je-

Abbildung 10. Vergleich der absoluten ¨ Haufigkeiten der 10 seltensten Opcodes bei¨ der Datensatze

Abbildung 11. Vergleich der relativen ¨ ¨ Haufigkeiten der 10 haufigsten Opcodes ¨ beider Datensatze - Erweitertes Datensatz

einzige Auff¨ lligkeit sind in diesem Zusammenhang Kera nel32,Notepad++,Crypt32 und WinSCP die aufgrund ihrer Gr¨ ße bzw. Komplexit¨ t die betrachtete Malware in o a jedem der Opcodes, entsprechend Abbildung 9, deut¨ lich quantitativ ubertrifft.Sie werden fortlaufend im Bezug auf das arithmetische Mittel daher nicht weiter betrachtet(SieheAbbildung 10). Erh¨ ht man die Zahl der Sampo les wird obige Erkentnis bestehen bleiben. Der b¨ sartige o Datensatz wird an dieser Stelle um zwei Bots (HTTP Bot , IRC Bot) erweitert um anschließend erneut eine Analyse 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 Datens¨ tze, viel zu ahnlich als dass eine aussagea kr¨ ftige Schlussfolgerung getroffen werden k¨ nnte(Siehe: a o Abbildung 11).

8.2. Krypto Analyse (1)
Die Idee die hinter der Analyse der Datens¨ tze, im Hina blick auf Krypto-Routinen ist, einerseits jedes Samples mit dem Fingeprrint v2.0 zu analysieren, von denen wir zu Beginn schon wissen, dass dort eine große Menge an solchen zu finden sein wird.Das Ergebnis des Skripts wird an¨ schließend mit offentlichen Programmen wie dem Underground Tool PEID“mit dem entsprechenden KANAL Plu” gin und abgesehen davon dem Findcrypt als IDA Pro Plugin verifiziert. Selbiges wird auch f¨ r die restlichen Sampu les durchgef¨ hrt um anschließend die Ergebnisse miteinanu der zu vergleichen, dadurch ließe sich wiederum die angemessene Funktion des Skripts best¨ tigen. Crypt32.dll solla te als Windows Systemdatei mit der Aufgabe Hash-Werte zu erzeugen mit großer Wahrscheinlichkeit entsprechend Krypto-Routinen aufweisen und bei Betrachtung der Ausgabe einerseits seitens des PEID/Kanal entsprechend Anhang 8.1 ”Krypto-Analyse:PEID/Kanal“und andererseits 10

der des IDA PRO Findcrypt Tools entsprechend Anhang 8.2 ”Krypto-Analyse: IDA PRO/FindCrypt”lassen sich laut PEID 12 Krypto verd¨ chtige Bl¨ cke finden und laut IDA a o ¨ PRO 4.Vergleichen wir dieses Ergebnis der offentlichen Tools mit der statischen Variante seitens Fingerprint v2.0 , welches 2082 verd¨ chtige Bl¨ cke ausgibt, lassen sich deuta o liche Unterschiede erkennen, was jedoch nicht zuletzt auf die verh¨ ltnism¨ ßig tief angesetzten Schranke in der Caa a ballero Heuristik zur¨ ckzuf¨ hren ist wodurch zwangsl¨ ufig u u a mehr Bl¨ cke verd¨ chtigt werden.Der von Caballero selbst o a in seinem Dispatcher verwendete Wert lag in Bezug f¨ r den u Quotienten von arithmetischen und logischen Operationen zu der Gesamtheit aller bei 0,55 respektive 55% sowie einer minimalen Anzahl von 20 Instruktionen.Im Fingerprint v2.0 dahingegen liegt der Wert f¨ r den Quotienten bei 0,2 u sprich 20% bei mindestens 5 Instruktionen. Es ist deutlich zu erkennen, dass das Skript dabei Bl¨ cke ausgibt, die mit o hoher Wahrscheinlichkeit Krypto Routinen aufweisen, da¨ bei jedoch von keinem der beiden offentlichen Tools erkannt werden, so z.B. in folgendem Beispiel : S t a r t a d r e s s e : b l o c k 0 x77a84908 I n s t r u c t i o n s : 1 9 o f f u n c t i o n : 0 x77a84810 A r i t h . Log O p e r a t i o n e n : 15 Caballero Rating : ( 7 8 . 9 5 ) Num o f s u s p i c i o u s B l o c k s : 2082 Hierbei handelt es sich um ein vom Skript verd¨ chtigten a Block, der mit seinen ann¨ hernd 20 Instruktionen und eia nem Caballero Rating von 78,95 nahezu den Kriterien in Caballeros beschriebener Arbeit gen¨ gt.Dieser Block, beu 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¨ sungen nicht o alle verd¨ chtigen Bl¨ cke zu erkennen scheinen. Diesen Vera o dacht scheint auch die Analyse nach selbigem Verfahren in Bezug auf das Telnet.exe Sample zu best¨ tigen, so erkena

¨ nen die offentlichen Tools in diesem Fall keine Bl¨ cke mit o m¨ glichen Krypto-Routinen, das Skript dahingegen 128. o Fragw¨ rdig ist in diesem Zusammenhang lediglich die Anu zahl der Instruktionen in den Ausgegeben Bl¨ cken, die in o ¨ keinem dieser F¨ lle 11 uberschreiten und durchschnittlich a einen Wert von 3,2 also ca. 3 Instruktionen aufweisen.Das h¨ chste erzielte Caballero Rating ist hierbei 83,33 bei jeo doch lediglich 5 Instruktionen: S t a r t a d r e s s e : b l o c k 0 x1003dc9 I n s t r u c t i o n s : 6 of f u n c t i o n 0 x1003cee : A r i t h . Log O p e r a t i o n e n : 5 Caballero Rating :83.33 Num o f s u s p i c i o u s B l o c k s : 128 ¨ Ein relativ ahnlichen Fall erzeugt die Analyse der Kernel32.dll. PEID/Kanal erzeugt hierbei eine Ausgabe entsprechend dem Anhang 8.3 n¨ mlich die 3 verd¨ chtigen a a Bl¨ cke BASE64,CryptCreateHash,CryptHashData. o Entsprechend der Microsoft Dokumentation zu diesen, handelt es sich bei der CryptCreateHash offensichtlich um eine Funktion, die ein Handle zu einem CSP Hash-Objekt an den Aufrufer zur¨ ckgibt, um dieses sp¨ ter u a m¨ glicherweise an die CryptHashData Funktion weiterzuo geben und so den Sitzungsschl¨ ssel zu hashen[44] . Wie beu reits zu Anfang erw¨ hnt ist es die Aufgabe der Kernel32 als a dynamische Bibliotheksdatei unter anderem , den Speicher, Ein-/Ausgabefunktionen und Interrupts zu verwalten, weshalb Abbildungen in Form von Hashfunktionen nicht unrealistisch sind. An dieser Stelle erzeugen weder das IDA PRO Plugin FindCrypt noch das Fingerprint v2.0 eine Ausgabe, sprich sie erkennen diese nicht als m¨ gliche Krypo to Routinen an. Im weiteren Verlauf wird nun die Analyse der Ping.exe betrachtet.Wohingegen in diesem Fall keine ¨ der beiden offentlichen Tools ein Ergebnis liefert, dass bedeutet sie liefern keinen Krypto verd¨ chtigen Block .Das a ¨ Skript liefert an dieser Stelle, ahnlich zu obigem Fall des Crypt32.dll eine Ausgabe.Auch hier ist deutlich erkennbar, dass der Block mit dem h¨ chsten Caballero Rating ledigo 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: S t a r t a d r e s s e : b l o c k 0 x100269b I n s t r u c t i o n s : 8 o f f u n c t i o n 0 x10019c9 A r i t h . Log O p e r a t i o n e n : 3 Caballero Rating :37.50 Num o f s u s p i c i o u s B l 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 f¨ r den Caballero Wert im Hinu terkopf beh¨ lt erh¨ ht die zudem die Wahrscheinlichkeit eia o ner Abwesenheit von Krypto Routinen erheblich.Im Gegensatz zu diesem schweift das folgende Beispiel stark von den ¨ offentlichen Tools ab. PEID und IDA mit dem Input Notepad++.exe liefern eine leere Ausgabe.Fingerprint 2.0 liefert 11

an dieser Stelle 2951 verd¨ chtige Bl¨ cke.Es zeigt in diea o sem Zusammenhang an, dass Notepad++ 3739 Funktionen, 42096 und 259411 Instruktionen beinhaltet. Das vergangene Muster setzt sich auch hier dahingegen fort, dass der gr¨ ßte Teil dieser Bl¨ cke jeweils nicht genug Instruktioo o nen aufweist. Es liegen aber auch Bereiche vor die große Verd¨ chtigkeit aufweisen, so beispielsweise folgender: a S t a r t a d r e s s e : block 0 x4b7ea6 I n s t r u c t i o n s : 2 0 o f f u n c t i o n 0 x4b7d6c A r i t h . Log O p e r a t i o n e n : 14 Caballero Rating : ( 7 0 . 0 0 ) Num o f s u s p i c i o u s B l o c k s : 2951 Dieser Block weist exakt die von Caballero empholene Mindestanzahl von 20 Instruktionen auf und mit 14 arithmetischen bzw. logischen Operationen erzielt es ein Caballero Rating von 70.Die folgenden beispielhaft herausgenommenen Bl¨ cke untermauern diese These zus¨ tzlich: o a S t a r t a d r e s s e : block 0 x48b7f7 I n s t r u c t i o n s : 2 3 o f f u n c t i o n 0 x48b340 A r i t h . Log O p e r a t i o n e n : 14 Caballero Rating :60.87 Num o f s u s p i c i o u s B l o c k s : 2951 S t a r t a d r e s s e : b l o c k 0 x41dadd I n s t r u c t i o n s : 1 5 o f f u n c t i o n 0 x41d9a0 A r i t h . Log O p e r a t i o n e n : 1 2 Caballero Rating :80.00 Num o f s u s p i c i o u s B l o c k s : 2951 S t a r t a d r e s s e : block 0 x42f44a I n s t r u c t i o n s :39 of f u n c t i o n 0 x42f3d0 A r i t h . Log O p e r a t i o n e n : 21 Caballero Rating :53.85 Num o f s u s p i c i o u s B l o c k s : 2951 Das letzte Beispiel in diesem Zusammenhang ist WinSCP.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 ihren Schwellenwert in Bezug auf das Caballero Rating, sowie die minimale Anzahl von Instruktionen die vorliegen m¨ ssen, auf die von Caballero selbst verwendeten Werten u anzupassen.Anschließend wird eine Analyse entsprechend dem vorangegangenem Muster durchgef¨ hrt. Wo nun das u Skript nicht mehr so grob wie in vergangener Analyse eingestellt ist, ergibt sich f¨ r die Crypt32.dll eine Ausgabe entu sprechend Anhang 8.5. Wie man sieht ergeben sich f¨ r jede u ¨ der 5 Ausgaben Caballero Ratings von weit uber die 50% und vergleichen wir dieses Ergebnis erneut mit den Ausga¨ ben der offentlichen Tools entsprechend Anhang 8.1 und 8.2 ¨ lassen sich große Ahnlichkeiten feststellen, was den Schluss

Num o f s u s p i c i o u s B l o c k s : 4 S t a r t a d r e s s e : block 0 x8b7f7 I n s t r u c t i o n s : 2 3 o f f u n c t i o n 0 x8b340 A r i t h . Log O p e r a t i o n e n : 14 Caballero Rating :60.87 Num o f s u s p i c i o u s B l o c k s : 4 S t a r t a d r e s s e : b l o c k 0 x8b967 I n s t r u c t i o n s : 2 3 o f f u n c t i o n 0 x8b340 A r i t h . Log O p e r a t i o n e n : 14 Caballero Rating :60.87 Num o f s u s p i c i o u s B l o c k s : 4 Abbildung 12. Ein Ueberblick der Funde in allen drei Tools Diese Bl¨ cke mit zwar ca. 10% niedrigerem Rating aber o h¨ herer Anzahl von Instruktionen unterstreichen diese Vero 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: L¨ sst a man das Fingerprint v2.0 das Sample begutachten, so erh¨ lt a man folgende Ausgabe: S t a r t a d r e s s e : block 0 x1000c9f0 I n s t r u c t i o n s : 2 1 o f f u n c t i o n 0 x1000c9d0 A r i t h . Log O p e r a t i o n e n : 13 Caballero Rating :61.90 Num o f s u s p i c i o u s B l o c k s : 3 S t a r t a d r e s s e : block 0 x1000ca34 I n s t r u c t i o n s : 2 1 o f f u n c t i o n 0 x1000c9d0 A r i t h . Log O p e r a t i o n e n : 13 Caballero Rating :61.90 Num o f s u s p i c i o u s B l o c k s : 3 S t a r t a d r e s s e : b l o c k 0 x100082d0 I n s t r u c t i o n s : 5 3 6 o f f u n c t i o n 0 x100082d0 A r i t h . Log O p e r a t i o n e n : 304 Caballero Rating :56.72 Num o f s u s p i c i o u s B l o c k s : 3 Betrachtet man in dieser Ausgabe nun beispielsweise die ersten beiden Bl¨ cke, so sieht man, dass diese der gleichen o Funnktion entspringen, n¨ mlich 0x1000c9d0“. Sucht man a ” diese Funktion, deren Hexadezimaler Wert vorliegt, in der ¨ Funktions- und BasicBlock Ubersicht, welches das Skript ebenfalls ausgegeben hat: F u n k t i o n s a d r e s s e :268468944 Funktionsname : md5Process FunktionsID :164 Basic Blocks : 0 : 0 x100082d0 , 0 x100088c5 so erkennt man an dem Funktionsnamen, dass sie zu einem md5Prozess geh¨ rt und selbiges gibt auch unser o ¨ offentlichen Tool IDA PRO/Findcrypt aus.Siehe daf¨ r Anu hang 8.6. Betrachtet man im n¨ chsten Fall CygoCrypt a (Funktion zu der dieser verd¨ chtige Block geh¨ rt und Funka o tionsname abgeleitet anhand dessen, aus der FunktionenUndBasicBlocks.csv) wird folgendes deutlich: Ausgabe Fingerprint v2.0: 12

nahe legt dass die Heuristik die Krypto verd¨ chtigen Bl¨ cke a o richtig erkennt. Selbiges ergibt die so verfeinerte Analyse des Kernel32 im direkten Vergleich mit den Ausgaben des PEID/Kanal : S t a r t a d r e s s e : b l o c k 0 x4d228 I n s t r u c t i o n s : 2 5 o f f u n c t i o n 0 x245c6 A r i t h . Log O p e r a t i o n e n : 17 Caballero Rating :68.00 Num o f s u s p i c i o u s B l o c k s : 2 S t a r t a d r e s s e : b l o c k 0 x4d299 I n s t r u c t i o n s : 3 5 o f f u n c t i o n 0 x245c6 A r i t h . Log O p e r a t i o n e n : 21 Caballero Rating :60.00 Num o f s u s p i c i o u s B l o c k s : 2 Wohigegen das IDA PRO Plugin FindCrypt kein Ergebnis geliefert hat, findet das Skript an dieser Stelle die entsprechend verd¨ chtigen Bl¨ cke. Redundant ist die erneute a o Analyse der Calc.exe, da eine Analyse mit allen drei Tools ¨ kein Ergebnis lieferte und eine Feineinstellung uberfl¨ ssig u ¨ w¨ re. Auch Notepad++ lieferte in den offentlichen Tools a keine Ausgabe aber wie bereits vermutet ist die Wahrscheinlich hoch, dass Fingerprint 2.0 hier Bl¨ cke erkennt o die mit großer Wahrscheinlichkeit kryptologischen Hintergrundes 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: S t a r t a d r e s s e : b l o c k 0 x8b517 I n s t r u c t i o n s : 2 3 o f f u n c t i o n 0 x8b340 A r i t h . Log O p e r a t i o n e n : 14 Caballero Rating :60.87 Num o f s u s p i c i o u s B l o c k s : 4 S t a r t a d r e s s e : b l o c k 0 x8b687 I n s t r u c t i o n s : 2 3 o f f u n c t i o n 0 x8b340 A r i t h . Log O p e r a t i o n e n : 14 Caballero Rating :60.87

[...] 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 ] Referenced Referenced Referenced :: at at at 000AABE0 : : 100AB7E0 10015938 1001596C 1001598C

9. Zusammenfassung
In der vorliegenden Arbeit wurde die Funktion des IDA PRO Python Skripts Fingerprint v2.0 anhand zweier Datens¨ tze, sowohl gutartig (Kera nel32.dll,Ping.exe,Notepad++.exe,Calc.exe,Crypt32.dll, Telnet.exe, WinSCP,BeeCrypt.dll und CygoCrypt-0.9.7.dll) als auch b¨ sartig(Conficker.dll (Wurm),verschiedene Bots), o getestet und seine F¨ hgikeit Bl¨ cke mit kryptographischem a o Hintergrund zu analysieren, mithilfe zweier kostenfreier,¨ ffentlich zug¨ nglicher Tools best¨ tigt.Einerseits dem o a a IDA PRO Plugin FindCrypt“und andererseits dem Plugin ” f¨ r das Underground Tool PEID Kanal“. Somit hatte diese u ” 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 dahingegen betrieben werden kann, dass man sich die Opcodes der betrachteten Ware genauer ansieht. Das f¨ hrte zu einer u statistischen Auswertung, einem Histogramm von Opcodes, seine absoluten und relativen Vorkomnisse beinhaltend.Im gutartigen Bereich wurden so die Histogramme von Kernel32.dll,Ping.exe,Notepad++.exe,Calc.exe,Crypt32.dll, Telnet.exe und WinSCP und auf b¨ sartiger Seite die von o Conficker.dll betrachtet. Jedoch wurde dann klar, dass man anhand der Opcodes, die ein sehr hohes Aufkommen im Bin¨ rcode aufweisen, keine aussagekr¨ ftige Schlussfolgea a rung treffen, weil solche wie push,mov... gutartige sowie b¨ sartige Software in beinahe gleichem bzw. sehr o ¨ ahnlichem Maß, pr¨ gen. Daher wurden jene Opcodes bea trachtet die sehr selten vorkommen wie jz,jb,jl, etc. Anhand der absoluten Werte, im Bezug darauf wie h¨ ufig sie im a Code erscheinen, wurden dann deutliche Unterschiede, wie auch in Bilars Arbeit, festgestellt und dadurch die Erkentniss gewonnen, dass gewisse Opcodes in Malware h¨ ufiger a vorkommen als in gutartiger Software, wodurch man wiederum daraus die M¨ glichkeit gewinnt anhand dieser Opo ¨ codes und ihrer statistischen Auswertung uber den gesam¨ ten Code hinweg, eine Vorhersage uber das m¨ gliche Maß, o der Gef¨ hrlichkeit dieser Datei zu treffen. Diese Vermua tung konnte schließlich noch unterstrichen werden, indem die verwendeten Datens¨ tze durch weitere Samples erweia tert (Auf gutartiger Seite durch BeeCrypt.dll,CygpCrypt.dll und auf b¨ sartiger durch verschiedene Bots, unter anderem o einem IRC Bot) und dann die Analyse erneut durchgef¨ hrt u wurde. 2. Im zweiten Teil der Ausarbeitung wurde die Funktionsweise des Dispatcher Tools von Juan Caballero, beschrieben in seiner wissenschaftlichen Arbeit Dispatcher: Enab” ling Active Botnet Infiltration using Automatic Protocol Reverse-Engineering“im Fingerprint v2.0 nachimplementiert, dar¨ ber hinaus getestet und verifiziert. Zu Beginn u 13

Schon am Funktionsnamen des verd¨ chtigen Blocks a ¨ l¨ sst sich hier eine Ubereinstimmung des RC2 Kryptos a erkennen.Zu den restlichen Funktionen mit zugeh¨ rigen o Funktionsnamen die vom Fingerprint v2.0 verd¨ chtigt wera den l¨ sst sich folgendes sagen: a 0 x1005fb40 , F u n k t i o n s n a m e : EVP DecodeBlock 0 x10028734 , F u n k t i o n s n a m e : bn sqr recursive 0 x10028410 , F u n k t i o n s n a m e : bn sqr recursive 0 x10014cf0 , Funktionsname : DES ede3 cbcm encrypt 0 x10014af0 , Funktionsname : DES cbc cksum 0 x10014330 , F u n k t i o n s n a m e : ossl old des xcbc encrypt 0 x100121f4 , F u n k t i o n s n a m e : ossl old des encrypt2 0 x100121f4 , F u n k t i o n s n a m e : ossl old des encrypt2 0 x100112d0 , F u n k t i o n s n a m e : ossl old des encrypt 0 x100112d0 , F u n k t i o n s n a m e : ossl old des encrypt 0 x10010d30 , F u n k t i o n s n a m e : ossl old des pcbc encrypt CygoCrypt verwendet eine Vielzahl von klassischen DES Verschl¨ sselungsalgorithmen und dar¨ ber hinaus, u u dessen erweiterte Form, den 3DES.Diese werden auch von PEID/Kanal erkannt, wie in Anhang 8.7 zu erkennen ist. Abgesehen davon liegt zudem ein Blowfish Algorithmus vor. In Abbildung 12 sieht man Gruppen von Krypto Algorithmen, in die ausgegeben Ergebnisse zusammengefasst wurden, so wurden beispielsweise folgende Ausgaben von FindCrypt Rijndael 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 Rijndael.

der Analyse wurden die Schwellenwerte der Heurisitk relativ niedrig bzw. niedriger als von Caballero selbst vorgeschlagen angesetzt um so eine gr¨ ßere Ausgabe zu ero zielen und diese zu analysieren und anhand der Kombination aus Zahl von Instruktionen und Caballero Rating ei¨ ne Vorhersage uber die Krypto Verd¨ chtigkeit des betracha teten Blocks zu treffen, welches m¨ glicherweise von den o ¨ anderen Tools ubersehen oder als nicht verd¨ chtig eingea 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 vorgeschlagenen und im Dispatcher verwendeten 0.55 bzw. 50% f¨ r das u Rating und 20 f¨ r die Zahl der Instruktionen angehoben und u erneut ein Analyse durchgef¨ hrt. Wie anschließend deutu lich wurde, nachdem dann auch sehr viel weniger Ausgaben get¨ tigt wurden, erkannte das Skript die von FindCrypt a und Kanal als Krypto verd¨ chtige Routinen identifizierten a Bl¨ cke.Darunter befanden sich unter anderem weit verbreio tete Blockverschl¨ sselungsalgorithmen wie DES und oder u Blockfish. Es wurde gezeigt, dass dynamische L¨ sungen o in der Analyse von Malware wenig anpassungsf¨ hig sind, a da automatisiert und nicht modifizierbar, was je nach metamorpher oder polynmorpher Malware problematisch werden k¨ nnte. Die hier betrachtete statische Analyse in Form o des IDA Python Skripts hingegen kann und wurde nach Bed¨ rfnissen des Users angepasst. Jedoch hat auch die stau tische L¨ sung nicht immer alle Bl¨ cke erkannt, was den o o Schluss nahe legt auf eine L¨ sung in Form einer Komo bination von dynamischen und statischen AV Strategien zur¨ ckzugreifen. u

lexikon/Befehlssatz-instruction-set. html,letzterZugriff28.04.12) [6] Prozessor Architekturen Rolf G¨ beli Technische Inforu ” matik II - Prozessor Architekturen“von Rolf G¨ beli) u ,letzter Zugriff 28.04.12 [7] Kenne deinen Feind.Fortgeschrittene Sicheritstechniken - Cyrus Peikari & Anton Chuvakin ”Kenne dei” nen Feind.Fortgeschrittene Sicherheitstechniken - Cyrus 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 Bilar http://cs.uno.edu/˜dbilar/papers/ Bilar_FingerprintingThroughOpcodes_ ICGeS07.pdf,letzter Zugriff 28.04.2012 [10] Digitaltechnik - Eine Praxisnahe Einf¨ hrung u - Was ist ein Mnemonic Armin Biere,Daniel Kroening,Georg Weissenbacher,Christoph M http://books.google.de/books? id=R7m0k215NEUC&pg=PA196&dq= was+ist+ein+mnemonic&hl=de&sa= X&ei=xmbT63EAYfM0QWW7Jj5Dg&ved= 0CEQQ6AEwAw#v=onepage&q=was%20ist% 20ein%20mnemonic&f=false ,letzter Zugriff 28.04.12 [11] Die Assemblersprache der intel 80x86-Prozessoren Prof Klaus W¨ st http://homepages.thm.de/ u ˜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 Standard 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) Universit¨ t Leipzig a http://www.informatik.uni-leipzig. de/˜meiler/Schuelerseiten.dir/ BLuebeck/des.html,letzter Zugriff 20.04.2012 [16] Cryptoshop.com http://www.cryptoshop. com/index.php,letzter Zugriff 28.04.12 14

Literatur
[1] Dispatcher: Enabling Active Botnet Infiltration using Automatic Protocol Revers-Engineering - Juan Caballero,Pongsin Poosankam,Christian Kreibich http: //prisms.cs.umass.edu/cs660sp11/ papers/dispatcher_ccs09.pdf,letzter Zugriff 28.04.2012 [2] Fingerprinting Malicious Code Through Statistical Opcode Analysis Daniel Bilar http://cs.uno.edu/˜dbilar/papers/ Bilar_FingerprintingThroughOpcodes_ ICGeS07.pdf,letzter Zugriff 21.04.2012 [3] Polymorphe Viren Virenshutz.info http: //www.virenschutz.info/virenschutz_ tutorials-108.html,letzter Zugriff 28.04.12 [4] Malware und Netzwerksicherheit RWTH Aachen http://www.rz.rwth-aachen. de/global/show_document.asp?id= aaaaaaaaaaavhyd,letzterZugriff28. 04.12 [5] Definition: Befehlssatz/Instruktion ITWissen.info http://www.itwissen.info/definition/

[17] Cryptography and Network Security - Symmetric 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 [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 Zugriff 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 Code.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 Caballero,Pongsin Poosankam,Christian Kreibich http: //prisms.cs.umass.edu/cs660sp11/ papers/dispatcher_ccs09.pdf,letzter Zugriff 28.04.2012 [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 - Critical 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

Name=Win32%2fConficker’’edia,letzter Zugriff 08.04.12 [29] PCgames - Wie gef¨ hrlich ist der Wurm a 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: //www.symantec.com/security_ response/writeup.jsp?docid= 2009-011316-0247-99,letzter Zugriff 08.04.12 [31] Was macht kernel32.dll auf meinem Computer? 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 nppcommunity.tuxfamily.org http:// npp-community.tuxfamily.org/ documentation/notepad-user-manual/ languages/built-languages,letzter Zugriff 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 Function 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 Versions MSDN.Microsoft.com http://msdn. microsoft.com/library/windows/ desktop/aa379884.aspx,letzter Zugriff abgerufen 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 Protocols TCP Guide http://www.tcpipguide. com/free/t_TelnetProtocol.htm, letzter Zugriff 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. fsf.org/wiki/BeeCrypt, letzter Zugriff 20.04.12 [43] This is the home of the Cygwin project Cygwin.com http://www.cygwin.com/,letzter Zugriff 28.04.12 [44] CryptCreateHash Die CryptCreateHash Support.Microsoft.com http://support. microsoft.com/kb/821762/de, CryptCreateHash-CryptHashData,letzter Zugriff 15.04.2012 [45] Introduction to IDAPython Ero Carrera http://www.scribd.com/doc/73753289/ Ida-Python-Intro,letzter Zugriff 29.04.12 [46] Introduction to IDAPython OpenRCE.org http://www.openrce.org/articles/ full_view/11,letzter Zugriff 29.04.12 Abbildungsverzeichnis [1] Vergleich der relativen H¨ ufigkeiten der 14 a h¨ ufigsten Opcodes beider Datens¨ tze a a Fingerprinting Malicious Code Through Statistical Opcode Analysis - Daniel Bilar,Table 1 Comparison of the 14 most frequent opco” des“http://cs.uno.edu/˜dbilar/papers/ Bilar_FingerprintingThroughOpcodes_ ICGeS07.pdf,letzter Zugriff 14.04.2012 [2] Vergleich der relativen H¨ ufigkeiten der 14 seltensa ten Opcodes beider Datens¨ tze a Fingerprinting Malicious Code Through Statistical 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 [3] Steuerflussgraph aus BasicBlocks und Spr¨ ngen u Informatik Handbuch 4. Auflage Hanser Verlag http://books.google.de/books?id= N4V2q941AD8C&printsec=frontcover&hl= de#v=onepage&q&f=false,letzter Zugriff 08.04.2012 16

[4] x86 Opcode Structure And Instruction Overview Fraunhofer-Institut f¨ r Kommunikation, Informationsu verarbeitung und Ergonomie FKIE x86 Opcode Structure and Instruction Overview http://net.cs. uni-bonn.de/fileadmin/user_upload/ plohmann/x86_opcode_structure_and_ instruction_overview.pdf,letzter Zugriff 08.04.2012 [5] Schematische Darstellung der Verbreitungsmethoden 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/ win32_conficker_aq_trojan_dropper_ kido_downad_e,letzter Zugriff 08.04.2012 [7] Blowfish Struktur iitd.vlab.co.in http://i.cmpnet. com/embedded/gifs/2003/0308/ 0308feat2fig1.gif,letzter Zugriff 21.04.2012 ¨ Anhange

9.1. Krypto-Analyse PEID/Kanal: Crypt32.dll
BASE64 t a b l e : : 000333A8 : : 77AB3FA8 CryptCreateHash [ Import ] : : 000004A0 : : 77A810A0 CryptDecrypt [ Import ] : : 0000051C : : 77A8111C CryptDeriveKey [ Import ] : : 00000514 : : 77 A81114 CryptEncrypt [ Import ] : : 00000518 : : 77 A81118 CryptGenKey [ I m p o r t ] : : 000004B8 : : 77A810B8 CryptGenRandom [ I m p o r t ] : : 0000050C : : 77A8110C CryptHashData [ Import ] : : 0000049C : : 77A8109C DES [ l o n g ] : : 00026BE8 : : 77AA77E8 RC2 [ c h a r ] : : 00080778 : : 77 B01378 SHA1 [ Compress ] : : 0001166C : : 77A9226C

SHA1 [ Compress ] : : 00025741 : : 77AA6341

9.2.

Krypto-Analyse Crypt:Crypt32.dll

IDA

PRO/Find-

77 A914E3 : f o u n d s p a r s e c o n s t a n t s f o r SHA 1 77A93C0A : f o u n d s p a r s e c o n s t a n t s f o r MD4 77 A94435 : f o u n d s p a r s e c o n s t a n t s f o r MD5 77 B01378 : f o u n d c o n s t a r r a y r c 2 PITABLE ( u s e d i n RC2 )

9.3. Krypto-Analyse PEID/Kanal:Kernel32.dll
BASE64 t a b l e : : 0007 CE50 : : 7C87DA50 C r y p t C r e a t e H a s h [ Name ] : : 0001C6AC : : 7C81D2AC C r y p t H a s h D a t a [ Name ] : : 0001 C654 : : 7C81D254

9.4. Krypto-Analyse PEID/Kanal:WinSCP.exe
BASE64 t a b l e : : :: BASE64 t a b l e : : :: BASE64 t a b l e : : :: BLOWFISH [ s b o x ] CRC32 CryptGenRandom [ Name ] 00421 B98 00822598 00430090 00830 A90 004 BE408 008BEE08 :: :: :: :: 00438120 00838 B20 004392FC 00839CFC

RC2 [ c h a r ] : : 004 A3278 :: RIJNDAEL [ S ] [ c h a r ] :: :: RIJNDAEL [ S i n v ] [ c h a r ] :: :: RIJNDAEL [ S i n v ] [ c h a r ] :: :: SHA1 [ Compress ] :: :: SHA1 [ Compress ] :: :: SHA 224 [ I n i t ] :: :: SHA 256 [ m i x i n g ] :: :: SHA 384 [ I n i t ] :: :: SHA 512 [ i n i t ] :: :: SHA 512 [ i n i t ] :: ::

008A3C78 00435AD4 008364D4 00435BD4 008365D4 004A53FC 008A5DFC 000 F7A78 004 F8478 0022BD44 0062 C744 0022 C15E 0062CB5E 0043 AF48 0083 B948 0022E90A 0062 F30A 0022 E9B6 0062 F3B6 0043 B064 0083BA64

9.5. Krypto-Analyse Fingerprint v2.0: Crypt32.dll
S t a r t a d r e s s e : block 0 x77affa04 I n s t r u c t i o n s : ( 2 5 ) of f u n c t i o n 0 x77aff973 : A r i t h . Log O p e r a t i o n e n : 17 Caballero Rating :68.00 Num o f s u s p i c i o u s B l o c k s : 5 S t a r t a d r e s s e : block 0 x77affa79 I n s t r u c t i o n s :36 of f u n c t i o n 0 x77aff973 A r i t h . Log O p e r a t i o n e n : 21 Caballero Rating :58.33 Num o f s u s p i c i o u s B l o c k s : 5 S t a r t a d r e s s e : block 0 x77affbb0 I n s t r u c t i o n s :22 of f u n c t i o n 0 x77aff973 A r i t h . Log O p e r a t i o n e n : 14 Caballero Rating :63.64 Num o f s u s p i c i o u s B l o c k s : 5 S t a r t a d r e s s e : block 0 x77a9440f I n s t r u c t i o n s :652 of f u n c t i o n 17

: : 004ACB61 : : 008AD561 DES [ l o n g ] : : 002330C8 : : 00633AC8 L i s t o f p r i m e s [ word ] : : 004A5A6A : : 008A646A MD5 : : 000EFCA2 : : 004 F06A2 MD5 : : 00229E6B : : 0062A86B P I f r a c t i o n (NIMBUS / BLOWFISH) : : 004380D8 : : 00838AD8 P r i m e : IETF 1024 , p r i m e modulus : : 0043A3A8 : : 0083ADA8 P r i m e : IETF 2048 , p r i m e modulus : : 0043 A428 : : 0083AE28

0 x77a9440f A r i t h . Log O p e r a t i o n e n : 431 Caballero Rating :66.10 Num o f s u s p i c i o u s B l o c k s : 5 S t a r t a d r e s s e : b l o c k 0 x77a84810 I n s t r u c t i o n s :47 of f u n c t i o n 0 x77a84810 A r i t h . Log O p e r a t i o n e n : 41 Caballero Rating :87.23 Num o f s u s p i c i o u s B l o c k s : 5

R e f e r e n c e d a t 10014 A34 [...] RC2 [ c h a r ] : : 000AABE0 : : 100AB7E0 R e f e r e n c e d a t 10015938 R e f e r e n c e d a t 1001596C R e f e r e n c e d a t 1001598C

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

100082 F3 : f o u n d f o r MD5 1002A1A8 : f o u n d Rijndael Te4 1002B5A8 : f o u n d Rijndael Td4 1002BB80 : f o u n d f o r SHA 1 1002BBB0 : f o u n d SHA256 K 1002BDB0 : f o u n d SHA512 K 10030188: found Blowfish p init 10030188: found f o r HAVAL 100301A8 : f o u n d HAVAL mc2 100301D0 : f o u n d Blowfish s init 10030228: found HAVAL mc3 100302A8 : f o u n d HAVAL mc4 10030328: found HAVAL mc5 1003137C : f o u n d f o r MD4

sparse constants const array const array sparse constants const array const array const array sparse constants const array const array const array const array const array sparse constants

9.7. Krypto-Analyse PEID/ Kanal: CygoCrypt.dll.dll
[...] DES ( c r y p t ) [ c h a r ] : : 000134 F0 : : 100140 F0 R e f e r e n c e d a t 100141 E0 R e f e r e n c e d a t 10014204 DES [ l o n g ] : : 0000 D720 : : 1000 E320 The r e f e r e n c e i s a b o v e . 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 10014 A04 18