Bonsoir à tous,
Comme chaque semaine ,je vais vous exposer mon petit article et un petit code dans le but d'illustrer le tout.
Après ces plusieurs posts ,j'ai décidé de faire un petit truc plutôt intéréssant pour celui-ci.
En effet il met en action de l'injection de dll ,l'utilisation d'api native ,du hook ( en modifiant l'iat ).
Mon but a donc été de montrer un code pouvant être intégré dans un rootkit ring 3.
Celui-ci va cacher un dossier au processus cible.
Bon à présent je vous expose la technique :
- Tous d'abord ,nous allons injecter notre dll dans un processus. ( à l'aide d'un d'injecteur )
- Ensuite ,notre dll va allez corrompre l'iat de kernel32.dll ,afin de détourner l'api native ( exporté par ntdll.dll ) NtQueryDirectoryFile.
- Et enfin le plus complexe ,est de réaliser une fonction capable de cacher notre dossier.
Voilà donc le mode opératoire.
Normalement si vous avez suivis les précédents post ,vous n'aurez aucun problème à injecter la dll ,et corrompre l'iat de kernel32.dll.
Ce qui peut poser problème en revanche,c'est l'élaboration de la fonction qui va cacher notre dossier.
J'ai décidé de ne pas l'expliquer ,car c'est plutôt complexe à expliquer et je vous conseil de faire énormement de test ,de tattonner le tout.
Je vais par contre vous renvoyez vers de la documentation française sur le "Comment faire ?" de la chose ( en fin de page ).
Comme je parlais de rootkit userland ,ce code est loin d'en être un ,tout d'abord le code ne prend en aucun cas le contrôle de l'userland.
Il va s'injecter dans un seul processus donc ,cependant il serait facilement réalisable d'injecter tous les processus lancés au moment de l'éxécution de l'injection.
Mais un petit problème resterait le cas des nouveaux processus : eux ne seraient pas injecter par notre dll.
Enfin bref tout cela pour susciter votre curiosité à vous de jouer à présent.
Un petit screenshot ,injection du notepad.exe :
Et un second screen ,cette fois-ci plus intéréssant : explorer.exe :
Les codes : h0l0c4ust's injector.c
h0l0c4ust.c (dll)
Les documents : - http://ivanlef0u.free.fr/repo/windoz/hidingfr.txt -> article sur lequel j'ai basé l'élaboration de ma fonction.
- http://www.rit.edu/~jrk9185/rootkit/6-7/rootkit.c -> une source trouvée ,qui peut aider je pense.
Voilà en espérant que vous allez bien assimilez la technique.
Bonne fin de soirée à vous cya.
PS : désolé pour le retard du post ,je suis en pleine période d'examen blanc.
PS2 : j'ai finalement commenté le code de la dll un petit peu .