[C] [Win32] Injection de DLL dans un process avant son initialisation
|
25-03-2013, 19h03
(Modification du message : 08-01-2025, 22h57 par supersnail.)
Message : #1
|
|
supersnail
![]() Éleveur d'ornithorynques ![]() ![]() ![]() ![]() ![]() ![]() ![]() Messages : 1,614 Sujets : 72 Points: 466 Inscription : Jan 2012 |
[C] [Win32] Injection de DLL dans un process avant son initialisation
Bonjour all,
Comme certains le savent, je travaille (en plus de RE des malwares) sur un programme dénommé Stalker (dispo ici: http://github.com/aaSSfxxx/Stalker , qui a pour but de tracer les appels à WriteProcessMemory (une API win32 utilisé par pas mal de "crypters RunPE"). Pour ce faire, j'ai donc eu besoin d'injecter un "code" qui va charger une DLL qui place ses hooks sur certaines fonctions de kernel32 avant que le programme soit lancé (pour être certain de choper tous les appels à la fonction). Au départ, j'utilisais une technique similaire au RunPE (ie modifier le registre eax du process cible avec SetThreadContext pour le faire pointer vers le shellcode qui charge ma DLL et laisser le loader win32 faire le reste du boulot), mais cette technique ne prenait pas en charge les exécutables "managed" (ie .NET) qui sont traités différemment. J'ai donc 0vercl0k[] qui m'a conseillé iirc de hooker ZwCreateThread (une fonction de ntdll.dll) pour faire mes rituels vaudou, ce qui en pratique fonctionnait, mais... uniquement sous Windows XP :') (exit donc win7). Bref déçu mais armé de mon cerveau, je me décide donc de réfléchir et il me vient l'idée (au gré de diverses lectures intéressantes que j'ai vues passer sur twitter, notamment ceci) de rediriger le registre eip du programme (qui pointe normalement vers LdrInitializeThunk) vers mon "shellcode" qui fait un appel à LdrLoadDll pour charger la lib (et donc on doit se taper d'init des structures UNICODE_STRING à la main vu que dès qu'on tripote le système/kernel win32, tout se fait avec des UNICODE_STRING :>). Bref, après avoir testé, it works, même sur des programmes .NET, et surtout... ça fonctionne aussi sous win 7 ![]() Bref, venons-en au vif du sujet, le petit PoC que j'ai écrit :þ Code : #include <windows.h> Le code devrait être assez clair/commenté (pour tester, foutez une dll nommée "tapz.dll" qui affiche un MessageBox), m'enfin si vous avez des questions sur le code, feel free de me poser des questions ![]()
Mon blog
Code : push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp "VIM est merveilleux" © supersnail |
|
25-03-2013, 19h16
(Modification du message : 25-03-2013, 19h17 par Sh4dows.)
Message : #2
|
|
Sh4dows
![]() Tweetos ![]() Messages : 293 Sujets : 5 Points: 49 Inscription : Dec 2012 |
RE: [C] [Win32] Injection de DLL dans un process avant son initialisation
Citation :m'enfin si vous avez des questions sur le code, feel free de me poser des questionsJe peux t’appeler Dieu ? ![]() Très intéressant je dois dire, je vais analyser tout ça et si j'ai d'autres questions plus en rapport avec le sujet..
Faites ce que je dis et non ce que je fais !
|
|
25-03-2013, 20h28
Message : #3
|
|
Doliprane
![]() Newbie ![]() Messages : 6 Sujets : 2 Points: 0 Inscription : Mar 2013 |
RE: [C] [Win32] Injection de DLL dans un process avant son initialisation |
|
25-03-2013, 20h56
Message : #4
|
|
Horgh
![]() Membre actif ![]() Messages : 197 Sujets : 4 Points: 91 Inscription : Mar 2012 |
RE: [C] [Win32] Injection de DLL dans un process avant son initialisation
(25-03-2013, 20h28)Doliprane a écrit : J'ai rien compris ou presque mais merci quand même, ça à l'air ... intéressant http://www.codeproject.com/Articles/2082...g-revealed http://mnin.blogspot.com/2007/05/injecti...win32.html http://msdn.microsoft.com/en-us/library/...s.85).aspx Have fun RTFM ![]() Sinon pour en revenir au sujet, neat ton code. C'est simple finalement, et c'est bien efficace ![]() Je met de côté, ça me donne des idées tout ça. |
|
26-03-2013, 23h27
Message : #5
|
|
fr0g
![]() NTEuNDI2MzcsLTEuNzc4NDg4 ![]() ![]() ![]() ![]() ![]() Messages : 348 Sujets : 22 Points: 56 Inscription : Aug 2011 |
RE: [C] [Win32] Injection de DLL dans un process avant son initialisation
Bien joué, beau taf
![]() |
|
« Sujet précédent | Sujet suivant »
|
Sujets apparemment similaires… | |||||
Sujet | Auteur | Réponses | Affichages | Dernier message | |
Process windows | skii | 6 | 2,666 |
26-10-2016, 18h43 Dernier message: skii |
|
[ASM] Un jeu de la vie dans le MBR | gruik | 11 | 4,504 |
23-12-2013, 21h34 Dernier message: EpicOut |
|
[C-HELP] Malware Process Detecting | sakiir | 9 | 4,006 |
09-11-2013, 10h32 Dernier message: sakiir |
|
[MASM]Win32.Downloader | EpicOut | 5 | 2,444 |
02-11-2013, 17h10 Dernier message: sakiir |
|
[MASM] Extracteur de dll pour Backdoor.Win32.Papras | Horgh | 10 | 3,399 |
25-04-2013, 13h41 Dernier message: Kiwazaru |
|
![]() |
READ-ME - Règles avant de poster | Enila | 0 | 1,071 |
19-11-2012, 18h22 Dernier message: Enila |
Utilisateur(s) parcourant ce sujet : 3 visiteur(s)