SSTIC 2010 - Vendredi matin : 3ème conf

Audit d’applications .NET

par Nicolas Ruff

.Net ce n’est pas très populaire (contrairement à JBoss et Java ;)). OCS 2007 c’est un truc d’entreprise qui fait tout et n’importe quoi pour la communication en entreprise (c’est le MSN pro quoi).

L’objectif de l’audit (à part faire une conf) c’est de connaitre une telle usine à gaz et de pouvoir mettre en place de la défense en profondeur.

OCS est exposé à l’extérieur, pour permettre la mise en place de Webex et autres trucs du genre. Le problème avec un tel système, c’est de l’appréhender (doc, outils d’admin, analyse boite noire, analyse réseau).

Le reste de la présentation se concentre sur l’analyse de code .Net

L’avantage c’est que le code .Net peut être utilisé dans plein de langages qui sont compilés en .Net (ex : IronPython). Pour l’analyse de code, il est possible de la compiler en code x86 natif et l’analyser (mais l’auteur ne le recommande pas).

« Le bytecode .Net c’est comme le bytecode java, ya juste les commentaires qui disparaissent à la compilation. » Avec Reflector.Net (gratuit) on peut donc reconstituer le code d’origine à partir du Bytecode .Net

Coté analyse dynamique, on peut utiliser WinDbg pour debugger du .Net. Coté profiling, il y a un objet COM qui permet sa mise en oeuvre, on peut même s’en servir pour faire de l’instrumentation.

L’introspection dynamique du code permet de faire pas mal de choses aussi (Cf Reflector), comme dans n’importe quel langage dynamique digne de ce nom :). Pour l’analyse de code il existe aussi le Phoenix framework.Net (le metasm de .Net).

Petite démo sur Songsmith (la meilleur appli microsoft d’après Linus Torvald). Et donc avec ces outils on peut remonter au bytecode, et l’analyser. Après instrumentation des fonctions qui vont bien, on entre une clef bidon (AAA-AAA-AAA-AAA) et sans vraiment comprendre comment ça marche 😉 on bidouille un registre et hop l’application est enregistrée avec la super-clef et une petite musique au passage !!!