Trojaner Analysieren

w4rlock

Stammuser
Hallo HaBo Community ,

vor ein paar Tagen rief mich mein Vater an weil er bei der Arbeit eine email von einem angeblichen Inkassobüro bekommen hat , welches vorgab im Auftrag von einem großen Onlineshop für Damenmoden Abmahnungen zu verteilen und forderten auch direkt eine "Strafgebühr" über 450,00€.

Nach kurzem rumfragen in der Familie stellte sich heraus das niemand da jemals irgendwas bestellt hatte.
Mein Vater bat mich daraufhin die email(+Anhänge) mal anzusehen , was ich dann auch tat.

Die erste Auffälligkeit fand sich schon im email header , "xxx@orange.fr"
, schon etwas misstrauisch wandte ich mich dann dem Text zu , welcher zumindest sprachlich und grammatikalisch korrekt war.

Allerdings musste ich dann bei den angeblichen Rechnungsunterlagen doch schon ein wenig schmunzeln , eine 104kB große MS-DOS.exe mit Namen
"(Hans Müller) (Onlineshop) GmbH AG Rechnung"

(Namen ersetzt)

Eigentlich wollte ich die mail direkt löschen , aber da ich gerade anfange mir ein bisschen übers Reverse Engineering anzulesen , dachte ich mir wäre es ja vielleicht mal nett ein bisschen an einem "live" Beispiel zu üben.

Also hab ich mir die .exe auf meine VirtualBox gezogen und mal versucht ein bisschen was rauszubekommen , vorweg sei gesagt ich kann zwar ein wenig mit C++ programmieren und kenne grundlegende Assembler Befehle , aber da hörts dann schon auf , wie gesagt , es ist eigentlich ehr die Neugier herauszufinden was es machen würde und wie es funktioniert.


Ich habe mir daraufhin die Datei mal mit IDA angeschaut und das sieht dann so aus , nun eigentlich meine Frage , warum sehe ich so wenig ?

malware - Imgur

Ich habe schon versucht die Datei mit dem PE Explorer zu entpacken , aber der sagt mir nur das die Datei weder mit UPX noch mit den anderen beiden Packern (Name gerade entfallen :rolleyes:) gepackt ist.
Müsste man nicht weitaus mehr Funktionen sehen , und vor allem mehr Code ?
Und was bedeutet der graue/schwarze Balken oben ?
Im blauen Teil kann ich ja wunderbar den Code runterscrollen , und da auch IDA mir sagt das die Datei gepackt ist vermute ich mal ganz stark das die farbliche Veränderung mir sagen soll das IDA den Code nicht übersetzen konnte ?

Die eigentliche Frage lautet also , wie kann ich am schnellsten an verwertbare Ergebnisse kommen ?


edit : Hier mal der VT Link

edit2 :
Ich habe mir Lena's RE Tutorials schon einmal kurz angeschaut , allerdings arbeite ich mich gerademal durch die absoluten Basics durch , dh ich werde noch ne Weile brauchen bis ich zu sowas wie Unpacking komme , aber vielleicht hat ja hier jemand einen guten Ratschlag ;)

edit3 : Falls ihr die Screens in groß haben wollt kann ich sie gerne nochmal hochladen.


gruß

w4rlock
 

chr0n0s

Stammuser
Denkbar ist, dass der Trojaner ebenfalls verschlüsselten Code besitzt.

Dann wird "Reverse" ein munteres Spielchen und vllt. zum Anfang eine zu große Nummer.
 

CDW

Moderator
Mitarbeiter
VirtualBox (mit etwas Glück gibt es keine "Anti-VMWare/VBox/usw" Routinen)+ "LiveDebugger" wie Olly.

Falls es das "übliche" Zbot-Zeuchs ist - also was im Winter und vor paar Monaten Massenhaft als Telekomrechnung&Co per Mail versendet wurde, so ist es in Loader+Payload unterteilt. Payload verschlüsselt mit (XOR/RC4/AES/was auch immer - je nach Crypter und Autor unterschiedlich).

Es werden (wahrscheinlich) über PEB die SystemDLLs gesucht und dann über manuelles abklappern der Exporttabellen paar WinAPIs ermittelt (CreateProcess/WriteProcessMemory/ResumeThread - oder entsprechende NTDLL-interne Nt/Zw API-Äquivalenzen). Also ohne API-Einträge in der "statischen" Importtabelle und auch ohne "LoadLibrary/GetProcAddress" Aufrufe.

Dann wird stupide nach diesem PoC vorgegangen:
SIG^2 G-TEC - Dynamic Forking of Win32 EXE (wie gesagt, die konkreten APIs variieren mittlerweile - z.B ZwResumeThread aus der NTDLL statt ResumeThread aus Kernel32, das Prinzip bleibt aber seit 9 Jahren gleich :rolleyes: )

=> Start eines Prozess als "SUSPENDED", Entschlüsseln des Codes (der als Ressource, Sectionanhang usw - wie der Entwickler lustig/fähig war), Schreiben des neuen Codes per WriteProcessMemory (oder NTDLL Äquivalitenten) in den Prozessspeicher und Fortsetzung über (Zw)ResumeThread.

Relativ häufig ist das dann "doppelt-gemoppelt" - also der entpackte Code selbst ist auch bloß ein Memory-Loader, der erst den eigentlichen Bot (oder eher: Downloader) entpackt und ausführt.

Entpacken kann man das Ganze, in dem man in der NTDLL/Kernel32 BPs auf die entsprechenden APIs setzt. Wenn die Ausführung an (Zw)ResumeThread angelangt ist, dumpt man den Child-Prozess und hat den Code. Aber Achtung: ZwResmumeThread wird auch intern verwendet (daher setzt man i.d.R auch BPs auf die andenren APIs - damit man mitbekommt, dass gerade ein "Entpackvorgang" gestartet wurde).

PS: damit kommt man erst an den eigentlichen Bot ;).
Ob das nun tatsächlich Zeus ist - k.A. VT Kennzeichnung muss ja nicht unbedingt die zuverlässigste sein - vor allem wenn alles über Signaturen abläuft.
Professionell sah der "Endcode" schon aus (zumindest gab es Prüfungen der Return-Values usw ;) ), aber das "Drumherum" war bis jetzt nicht wirklich überzeugend - man hatte das Gefühl, dass Kids Zeus + ein paar "10 Euro Supa-Crypt0rs" zusammengemixt haben. Da gab es lustige Konstellationen - z.B Dank des "höchstprofessionell" programmierten Crypt0rz lief die Malware nur auf einem System mit deaktiviertem DEP (womit der eigentliche Bot natürlich keine Probleme hatte) *g*
 

w4rlock

Stammuser
Danke an alle , ich denke ich werd mir den Trojaner auf meine externe ziehen und vielleicht in ein paar Jahren mich nochmal dransetzen.

Großen dank auch an CDW für die mehr als gute Erklärung :)
 
Oben