Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Hacks & Crackmes Tests, Fragen oder Hilfestellungen. Crackmes und Hackits werden hier diskutiert.

Unpacker: ExeStealth 2.7x, Yoda's Crypter 1.2/1.3, ExeShield 1.x

Diskussion: Unpacker: ExeStealth 2.7x, Yoda's Crypter 1.2/1.3, ExeShield 1.x im Forum Hacks & Crackmes, in der Kategorie Software Home; Anzeige heute im Sonderangebot: 3 Unpacker zum Preis von einem Y0da's Cryptor 1.2/1.3 ExeStealth 2.76/2.75/2.74; ExeShield 1.3RC (ExeShield von "tom ...

Antwort
Alt 12.02.07, 01:38   #1 (permalink)
CDW
Moderator
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard Unpacker: ExeStealth 2.7x, Yoda's Crypter 1.2/1.3, ExeShield 1.x

Anzeige

heute im Sonderangebot: 3 Unpacker zum Preis von einem

Y0da's Cryptor 1.2/1.3
ExeStealth 2.76/2.75/2.74;
ExeShield 1.3RC (ExeShield von "tom commander" und nicht von ExeShield Team (die sind aktuell bei 3.8 oder 3.9))
ExeShield 1.4 (Ultra Edition) sollte auch kein Problem sein, wenn das eigentliche Programm genutzt wurde (es sind noch Morphine/PE Crypter oder ähnliche UPX Scrambler beigelegt).

Es sollte eigentlich ein Unpacker für ExeStealth 2.76 werden. Da aber der "böse" y0da sich scheinbar sowohl bei ExeStealth wie ExeShield bedient und es natürlich nirgendwo erwähnt hat , wird auch sein Packer gleich mitentpackt


Und es existieren keinerlei Checks, ob es sich tatsächlich um eine mit den oben erwähnten "Cryptoren" gepackte Executable handelt - alles was nach einer gültigen Win32 Exe ausschaut, wird entpackt (dafür werden auch Executables entpackt, die nach dem Packen mit YC/ES nicht mehr laufen bzw wo einige Optionen genutzt wurden, die unter XP SP1/SP2 nicht mehr funktionieren ), also am besten schon vorher selber gucken worum es sich handelt - ob mit RDG oder PEID.

Getestet mit allen gängigen Compilern:VB,Delphi5/7,C++,Borland C++, MASM, MSVC++ 6/7

OS: getestet auf XP SP1

Quelltext (MASM) liegt bei. Programm wird noch ein paar kleine optische Überarbeitungen erfahren und natürlich Bugfixing, deshalb verlinke ich es vorerst.

Was schön wäre: Tests mit größeren VB Applikationen (da für VB ein recht hässlicher Hack integriert ist, der mit meinen Testprogrammen gut klappt - mit größeren Projekten konnte ich es aber nicht testen) und unter Win2000 oder anderen Versionen. Unter ME/9.x wird es nicht laufen.
www.cdw.de.vu/UnExeStealth.zip

__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 14.02.07, 00:04   #2 (permalink)
Member of Honour
 
Benutzerbild von +++ATH0
 
Registriert seit: 02.04.05
+++ATH0 Leistung: K 6-3+++ATH0 Leistung: K 6-3+++ATH0 Leistung: K 6-3
Likes: 76
Standard

Witzig, dass ich für meinen ersten Versuch einen Packer zu schreiben Y0das Crypter als Vorbild genommen hab *hust* kopiert hab *hust*.
So setzt sich das wohl fort. *g*

Was ich mich frage ist, ob es eine Gefahr birgt Schädlinge damit zu entpacken, weil der Unpacker ja die Executable mit CreateProcess startet (und zwar, wenn ich das richtig verstanden habe, um LoadLibrary calls abzufangen um IAT zu rebuilden).

Die Frage ist also, wieviel von der Executable wird ausgeführt. Und kann da schon Schadcode enthalten sein?

Ich denke die Frage lässt sich hiermit beantworten:

Code:
invoke GetProcAddress,eax,addr LoadLib
		    mov ebx,eax
		    xor eax,eax
		   start_loop: 
		   invoke VirtualProtectEx,prozinfo.hProcess,ebx,100h,PAGE_EXECUTE_READWRITE,addr out_
		   .if eax==0
		   	  invoke ResumeThread,prozinfo.hThread
	          invoke SuspendThread,prozinfo.hThread
	          jmp start_loop
		   .endif
]

Er resumed und stoppt solange kurz den Process bis er es schafft die Page, wo sich LoadLibraryA befindet, als ausführbar, beschreib-und lesbar markieren kann. Dann sollte der interne "Unpacker" die IAT geschrieben haben und du kannst die grabben.

Nur verstehe ich das nur ansatzweise und die zusammenhänge sind für mich noch nicht ganz klar. Wäre nett, wenn du mir den Teil nochmal erklären würdest.

Dann ist sicherlich auch verständlich ob der Prozess vielleicht noch kurz nach dem internen IAT rebuild solange resumed sein könnte, dass er Schaden anrichten kann.

Ach ja: Keep up the good work.
+++ATH0 ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 14.02.07, 01:31   #3 (permalink)
CDW
Moderator
Themenstarter
 
Benutzerbild von CDW
 
Registriert seit: 20.07.05
CDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: OpteronCDW Leistung: Opteron
Likes: 202
Standard

Zitat:
Original von +++ATH0
Was ich mich frage ist, ob es eine Gefahr birgt Schädlinge damit zu entpacken, weil der Unpacker ja die Executable mit CreateProcess startet (und zwar, wenn ich das richtig verstanden habe, um LoadLibrary calls abzufangen um IAT zu rebuilden).

Die Frage ist also, wieviel von der Executable wird ausgeführt. Und kann da schon Schadcode enthalten sein?
Das Problem ist eher: es gibt keinerlei Checks ob es sich um einen der Packer handelt.
D.h wenn PEID/RDG sich irren und die Exe ist entweder nicht gepackt oder mit irgendetwas, was LoadLibraryA nicht nutzt (es gibt ja alternative APIs oder Wege), wird alles ausgeführt.


Zitat:
Ich denke die Frage lässt sich hiermit beantworten:
...
Er resumed und stoppt solange kurz den Process bis er es schafft die Page, wo sich LoadLibraryA befindet, als ausführbar, beschreib-und lesbar markieren kann. Dann sollte der interne "Unpacker" die IAT geschrieben haben und du kannst die grabben.
Jep, dass ist ein hässlicher Hack. Nach dem Suspend-Start ist nämlich die Kernel32.DLL nocht gar nicht geladen - da muss aber unbedingt ein BP rein. So wird einfach schön gepollt und gewartet. Allerdings ist zum "Platzierzeitpunkt" noch nichts mit IAT los.
Wenn die "markierung" gelungen ist, heißt es, dass erst jetzt BPs platziert werden können.
Eleganter und sicherer wäre es zuerst einen BP am EP zu platzieren. Dann müsste ich allerdings noch schauen, was es mit den TLS Callbacks auf sich hat (anfangs wurde auch die letze Section immer entfernt, nur ging das bei Borlandcompilaten nicht gut, da TLS Zeug in die letze Section verlagert wurde und nach dem Entfernen nicht mehr vorhanden war).

Zitat:
Dann ist sicherlich auch verständlich ob der Prozess vielleicht noch kurz nach dem internen IAT rebuild solange resumed sein könnte, dass er Schaden anrichten kann.
An sich nicht. Nach dem zweiten Stopp in LoadLibraryA wird nur noch gelesen/geschrieben und nichts mehr ausgeführt.Deshalb können auch Programme entpackt werden, die wegen IAT-Redirection oder sonstigen Optionen nicht (mehr) laufen.

Zitat:
Nur verstehe ich das nur ansatzweise und die zusammenhänge sind für mich noch nicht ganz klar
Im Prinzip passiert folgendes:
Exe wird gestartet. Es wird "gepollt" mit Resume/Suspend und VirtualProtectEx, bis Kernel32.DLL im Zielprogramm verfügbar ist.

Dann wird am Anfang der LoadLibraryA ein BP platziert und abgewartet ("infinite_loop") , bis die Ausführung da ankommt. Zu diesem Zeitpunkt ist der Packer dabei, für sich selbt benötigte API Adressen zu sammeln. Der zweite BP wird am RETN der LoadLibraryA platziert - das Ganze nur, um die Funktion auszuführen und nochmal am Anfang der LoadLibraryA einen BP zu plaztieren. Denn wenn diese Funktion zum zweiten Mal aufgerufen wird, beginnt der Packer damit, die IAT zu füllen. In ESI findet man dann gleich einen Pointer auf eine "interne Import Struktur" (RVA zum DLL Namen, RVA zum FirstThunk usw) und kann sie einfach abklappern: abgesehen vom ersten DLL Namen ist noch alles "verschlüsselt" (ROL al,4). Das ist dann auch bei allen 3 gleich
Ansonsten wird der Code noch leicht überarbeitet (sind noch zuviele unbenötigte Reste vom PECompact Unpacker drin) .
__________________
Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf!
Selig, wer nichts zu sagen hat und trotzdem schweigt.
CDW ist offline   Mit Zitat antworten
Alt 14.02.07, 14:18   #4 (permalink)
Member of Honour
 
Benutzerbild von +++ATH0
 
Registriert seit: 02.04.05
+++ATH0 Leistung: K 6-3+++ATH0 Leistung: K 6-3+++ATH0 Leistung: K 6-3
Likes: 76
Standard

Danke für die Erläuterungen. Jetzt wird einiges klar.
Gefahr besteht also noch, wenn der Schädling gar nicht damit gepackt ist und LoadLibraryA nicht benutzt.
Sollte ich also Viren oder Würmer zum studieren entpacken wollen, sollte ich das doch lieber in VMWare machen.
Man sollte ja prinzipiell Schädlinge nur sandboxed untersuchen.
+++ATH0 ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Hacks & Crackmes » Unpacker: ExeStealth 2.7x, Yoda's Crypter 1.2/1.3, ExeShield 1.x
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Crypter coden Späßer Code Kitchen 3 13.10.09 21:00
Wie funktioniert ein Crypter in C/C++? st0rmy_w4ters Code Kitchen 7 22.04.09 15:34
EXE Crypter löst Virenalarm aus boehmi Applikationen 5 06.11.08 08:55
Unpacker : Yoda's Protector 1.02/1.03 CDW Hacks & Crackmes 0 12.11.07 17:44
Exe-Crypter nuKin (In)security allgemein 1 08.08.04 19:22


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61