Eh ! Hook moi ça !

Nous allons aborder dans cette article une manière de hooking dans le kernel-land qui à le mérite de ne pas touche directement le code de la fonction cible (comme le inline-hook ou le hot patching) et qui n’est pas facile à désactiver, je ne vais pas dire en plus … je vous laisse le soin de lire l’article.

Cette manière n’est pas une de mes inventions, elle a été proposé sur rootkit.com par une personne d’origine chinoise dont les explications ne m’était pas décryptable c’est pour cela que j’ai décidé de faire un article sur le fonctionnement de cette technique.

Beaucoup de personnes disent « ah ca ! J’ai compris … » mais ne vont pas plus loin. Je ne suis pas de ces personnes car toute technique a sa futilité et comprendre le pourquoi de chaque instruction du code est indispensable selon mon point de vue.

Je vais commencer par détaillez de la façon la plus simple possible le fonctionnement des registres de debug.

Continue la lecture

De la réalité a la virtualité … 2/2

Fin d’année scolaire …. Début de stage …. Fatigue à cause d’angine tout ça à fait que retarder l’arrivée de la deuxième partie. Donc j’ai décidé de poster le code sans explications car la motivation s’est atténuée avec les imprévues s’accumulants.

Le code n’est pas finalisé mais cela ne pose pas de grands problèmes pour démontrer la validité de la technique. Vos remarques, vos questions sont les bienvenues en commentaires , ou un petit mail.

Je remercie encore une fois ivanlef0u et Mxatone qui m’ont été d’une aide importante.

Mais aussi la team FRET pour avoir initié le projet Winternals dont je me suis servi dans mon code :)

Voila j’espère à bientôt avec un peu plus de motivations. See u later !

Continue la lecture

De la réalité a la virtualité … 1/2

Alors pilule rouge ou pilule bleue ?

Non désole cette article ne va pas parler de cette trilogie où ils ont utilisé Nmap. A ce jour on ne sait toujours pas pourquoi d’ailleurs ?

La virtualité, une chose tant convoité par l’humain. Il n’y a qu’à regarder l’essor que connais les MMORPG depuis quelques temps pour comprendre qu’une vie virtuelle est tellement réjouissante pour le moral humain.
« Rêve ta vie en couleur, c’est le secret du bonheur. » Peter Pan connaissait t-il déjà les vies virtuelles ?
Les statisticiens ( pour une fois qu’ils servent … ) de chez Gartner annonce qu’en 2011, 80% des internautes auraient une seconde virtuelle.

Tout ça pour annoncer le sujet de ce petit article. Naviguant sur le Web je tombe sur un article paru dans Phrack #63 qui annonçait les rootkits de 4ème génération.
Oui je suis en retard :) mais mieux vaut tard que jamais. La technique proposée par Sherri Sparks et Jamie Butler est intitulée Virtual memory Subversion.

Continue la lecture

Injection de code sous Windows

Je suis tombé sur un POC de c0de90e7 sur Rootkit.com qui exposait une nouvelle technique d’injection de code dans un processus qui emploi une technique plus furtive que celles utilisées jusqu’alors.
Avant d’expliquer en détail le procédé très astucieux employé par cette personne, je vais d’abord rappeler quelques notions techniques.

I. CreateRemoteThread

Cette API est présente sous Windows NT, 2000, XP, Vista semble-t-il. Comme son nom l’indique celle-ci permet de créer un thread dans un autre processus.

Son prototype:

1
2
3
4
5
6
7
8
9
HANDLE WINAPI CreateRemoteThread( //Renvoi un Handle sur le thread créé.
  HANDLE hProcess, //Handle sur le processus cible.
  LPSECURITY_ATTRIBUTES lpThreadAttributes, //Pointeur sur un déscripteur de sécurité choisi pour le thread
  SIZE_T dwStackSize, //Spécifie la taille de la pile à l'initialisation du thread.
  LPTHREAD_START_ROUTINE lpStartAddress, //Adresse du début de la routine.
  LPVOID lpParameter, //Pointeur sur des paramètres éventuels.
  DWORD dwCreationFlags, //Flags servant par exemple a créer le thread sans le lancer : CREATE_SUSPENDED...
  LPDWORD lpThreadId //Pointeur sur un DWORD pour recevoir l'ID du thread créé.
);

Continue la lecture