Archive for janvier 28th, 2007

Anti Debugging « I Know Kung-Fu »

Un soir, idlant sur irc, je vois naître une discussion à propos des crackmes proposés par le site http://newbiecontest.n0ne.org . Ce qui semble le plus difficile aux concurrents est de bypass les divers packers avec leurs tricks anti-debug à la mord moi le nœud. Ils se bypassent pour la plupart sans trop de prob, le problème c’est qu’ensuite la résolution du crackme en lui-même est souvent simple (ou pas ….).

Moi avec mon spirit de kernel kodeur nioub drogué aux chocapics, me suis souvenu d’un trick de shaolin monk concernant la détection d’un process débuggé, voyez plutôt:

« One can notice that although some applications like to set Peb->BeingDebugged to FALSE to trick anti-debugging programs, there is no way to set DebugPort to NULL, since the Kernel itself would not let you debug (and you also don’t have access to kernel structures). »
http://www.openrce.org/articles/full_view/24
Magnifique article d’Alex Ionescu sur les API de debuggage, n’est-il pas ? :}

Le DebugPort est un membre de la structure EPROCESS, structure noyau existant pour chaque process et contenant mass infos sur le chtit process. Le trip est le suivant, si un process est débuggé alors son DebugPort est différent de 0, qu’importe si on l’attache après l’avoir lancé ou qu’on le lance avec un debugger.

Tout est dit là ffs :]. On se code un driver qui va parcourir les EPROCESS linkés entre-elles, on check les DebugPort de chacune, si celui-ci est différent de 0, PAF on kill le process. Au moins le debugger souffre pas ;)

Le driver crée un kernel thread qui va scanné indéfiniment jusqu’a l’unload du driver. J’ai mit la fréquence de scan à 2 sec pour éviter de faire trop ralentir votre système. Autre remarque, les structures noyau n’étant pas les mêmes d’une Version de Win à l’autre, ce code ne marche que pour les xp, sp2 sur, sp1 à voir :]

Après si quelqu’un veut intégrer cela à un de ses crackmes, qu’il m’en parle on pourra faire un truc plus propre. Au moins là pas besoin de packer ni d’obfuscations, on peut se concentrer uniquement sur un beau code et les gens devront gentiment le reverse en dead-listing imho :}

Le code, le binaire, le loader de driver, tout est dans le pack :]

http://ivanlef0u.fr/repo/AntiDebug.rar

Enjoy

1 comment janvier 28th, 2007


Calendar

janvier 2007
L Ma Me J V S D
« déc   fév »
1234567
891011121314
15161718192021
22232425262728
293031  

Posts by Month

Posts by Category