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

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

Zeus Technik

Diskussion: Zeus Technik im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hi, Ich beschäftige mich schon seit längeren mit Hooking und habe mir gerade den Zeus Code geholt. Da ich ...

Antwort
Alt 18.05.11, 19:56   #1 (permalink)
 
Registriert seit: 16.05.10
Michiluki Leistung: Facit NTK
Likes: 0
Standard Zeus Technik

Anzeige

Hi,

Ich beschäftige mich schon seit längeren mit Hooking und habe mir gerade den Zeus Code geholt.
Da ich denke man darf den Src Code nicht posten hoffe ich mal das sich damit schon jemand anders beschäftigt hat, aufjedenfall versteh ich die Injection ansich nicht.

Verstanden habe ich schon void *newImage = Core::initNewModule

Aber der Abschnitt:

Code:
LPTHREAD_START_ROUTINE proc = (LPTHREAD_START_ROUTINE)((LPBYTE)newImage + (DWORD_PTR)((LPBYTE)Core::_injectEntryForThreadEntry - (LPBYTE)coreData.modules.current));
HANDLE thread = CWA(kernel32, CreateRemoteThread)(process, NULL, 0, proc, NULL, 0, NULL);
Ist mir ein Rätsel.

newImage ist die Adresse im Fremden Prozess + 0 - GetModuleHandleW(NULL)

Aber wieso Funktioniert das und welche Methode ruft dieser dann auf ?
Ich schätze mal ich übersehe irgendwas grundsätzliches, hoffe mir kann jemand helfen da mich die Technik dahinter doch recht intressiert
Michiluki ist offline   Mit Zitat antworten
Alt 20.05.11, 13:42   #2 (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

Also:
Code:
void *Core::initNewModule(HANDLE process, HANDLE processMutex, DWORD proccessFlags)
{
  void *image = PeImage::_copyModuleToProcess(process, coreData.modules.current);
  if(image == NULL)return NULL;
da muss man wohl nicht so viel dazu sagen.
"_copyModuleToProcess" alloziert Speicher und macht einige Schritte des Windows PE Loaders nach - vor allem Sections korrekt im Speicher ausrichten sowie vorhandene Relocationstabelle durchzugehen.
Sofert man sich mit dem PE Format auskennt, sollte das nachvollziehen keine großen Schwierigkeiten bereiten (sonst in PECOFF von Microsoft oder zahlreichen PE Referenzen nachschlagen )

D.h nach diesem Schritt:
Code:
Core::initNewModule(blub)
liegt das Modul im "fremden" Speicher vor.

Damit das Ganze auch funktioniert, müssten eigentlich auch die Imports abgearbeitet werden und die IAT entsprechend gefüllt werden :
Code:
initLoadModules
erledigt es. Im übrigen recht simpel, ohne die Exports selbst zu parsen *enttäuscht vom Zeus sei*. Andererseits - je simpler, desto zuverlässiger.
Code:
  if(!PeImage::_loadImport(coreData.modules.current, __GetProcAddress(coreData.modules.kernel32, "LoadLibraryA"), __GetProcAddress(coreData.modules.kernel32, "GetProcAddress")))return false;
InitLoadMoudles wird im core::init aufgerufen. Das wird wiederum im "injectEntryForThreadEntry" getan (der defaultModuleEntry() Aufruf).

Zu Deiner Rechnung:
Zitat:
Adresse im Fremden Prozess + 0 - GetModuleHandleW(NULL)
Warum 0? Die Funktion wird doch gar nicht aufgerufen
Ich mag zwar grundsätzlich kein C/C++ und bin da längst nicht so fit, allerdings schaut mir das sehr nach der Ermittlung der Methodenadresse aus und nicht nach einem Aufruf .
Würde also Ergeben: ImageBase im Fremden Prozess + Adresse von "_injectEntryForThreadEntry" im aktuellen - ImageBase des aktuellen Prozess == Adresse von "injectEntryblub" im fremden Prozess.
D.h CreateRemoteThread ruft im Injecteten Code letzendlich "_injectEntryForThreadEntry" auf, die den Inittialisierungskram erledigen sollte.
__________________
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
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 20.05.11, 15:14   #3 (permalink)
Senior Member
 
Registriert seit: 13.07.08
enkore Leistung: K 6-3enkore Leistung: K 6-3enkore Leistung: K 6-3
Likes: 85
Standard

Ich bin wirklich deeply impressed, ZeuS ist ja mal sehr sauber geschrieben.
__________________
"It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."
+++ BREAKING +++ Troll ertrinkt im Planschbecken +++
enkore ist offline   Mit Zitat antworten
Alt 20.05.11, 15:54   #4 (permalink)
Themenstarter
 
Registriert seit: 16.05.10
Michiluki Leistung: Facit NTK
Likes: 0
Standard

Ach ich bin ein Trottel hab ganz übersehn das die Methode garnicht aufgerufen wird

Danke jedenfalls das du dir die Zeit genommen hast.

lg,
Michiluki
Michiluki ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Zeus Technik
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



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