Anti Debugging « I Know Kung-Fu »

janvier 28th, 2007 at 06:44 admin

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

Entry Filed under: Non classé

1 Comment

  • 1. jhd  |  mai 15th, 2007 at 14:42

    Très bon article, source très utile :)


Trackback this post


Calendar

octobre 2021
L Ma Me J V S D
« fév    
 123
45678910
11121314151617
18192021222324
25262728293031

Most Recent Posts