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