Challenge Securitech 2007 :)
WinDbg est un outil exécrable.
J'étaye cette affirmation par un extrait du blog Microsoft consacré au langage de script WinDbg :
"- I also prefer not to explain the source code details for security reasons. "
Ce qui signifie en français :
"Le langage de script est tellement illisible que si je ne vous explique pas ce que je cherche à faire, vous ne pouvez pas comprendre par vous même."
La situation va peut-être s'améliorer grâce à ce projet : PyDbgExt, qui est pour le moment en version "Beta". On attend également la version Ruby, probablement réalisée par un labo d'Issy-Les-Moulineaux :)
Mais après le débogage noyau sous Vista, il existe un autre domaine dans lequel WinDbg est incontournable : le débogage ".NET", auquel j'ai l'occasion de m'intéresser actuellement.
Pour donner un exemple, voici le challenge que je vous propose (d'où le titre de ce billet :).
J'ai téléchargé le décompilateur .NET (gratuit) "Fox Community Edition" de la société Xenocode. Il ne demande qu'un login/mot de passe pour se lancer. Mais le site d'enregistrement est tellement contrôlé, que même avec des informations valides, il refuse de me créer un compte !
Le challenge consiste donc à contourner la boite de dialogue initiale, de la manière la plus rapide et la plus élégante possible.
Quelques précisions sur le fonctionnement de l'obfuscateur Xenocode (utilisé ici) :
- Le bytecode .NET est obfusqué.
- Il n'y a qu'un seul fichier exécutable, qui contient les librairies du .NET Framework (il n'est donc pas nécessaire d'installer le .NET Framework sur la cible d'exécution).
- Ces librairies sont chargées dynamiquement en mémoire, selon une technique proche de celle du Meterpreter.
- Le bytecode est compilé just-in-time en assembleur x86.
Petite précision : contrairement au vrai Challenge Securitech, il n'y a rien à gagner :)