« Practical Reverse Engineering » est né de la passion et de la volonté de Bruce Dang (@brucedang), alors jedi in training au sein du Microsoft Security Response Center (MSRC). Il en est l’architecte et la force motrice. À l’invitation de Fred (pappy), plus qu’une critique, voici une brève rétrospective, 10 ans après, de l'aventure qu'a représenté ce livre pour nous.
Avec les graines du projet en tête, Bruce a commencé à rassembler autour de lui un premier groupe de travail, début 2011 environ. Après quelques rebondissements, un noyau d’auteurs s’est alors dégagé : Bruce, Elias Bachaalany, Sébastien Josse et moi-même. En souvenir des très nombreuses nuits d’échanges et de discussions avec Rolf Rolles sur l’obfuscation et l’analyse de code, j’aimerais le citer en auteur de l’ombre également. Une fois le deal avec l’éditeur Wiley en poche, nous voici partis pour une bonne année de rédaction.
Une des motivations au cœur du projet était en quelque sorte de restituer nos connaissances à la communauté. Tout comme nous avions nous-mêmes appris de nos pairs, nos prédécesseurs, via une multitude de contenus, de tutoriels, etc. L’ambition du livre était donc de fournir les bases, un socle de connaissances propres au domaine du reverse-engineering. Plus qu’une liste de recettes à appliquer, nous avons cherché à mettre en avant la méthodologie, les chemins de pensées et les concepts clés, tout en gardant un côté « appliqué ». Ainsi, le livre associé aux exercices et cas pratiques proposés est vraiment conçu comme un matériel de formation. Le contenu est bien évidemment teinté de nos propres expériences et parcours. On y retrouve donc un fort penchant vers les environnements Windows.
Les chapitres 1 & 2 sont destinés à donner au lecteur les bases requises en architecture matérielle. Dans le cas général, c’est le matériau brut sur lequel travaille généralement le reverse-engineer : le code assembleur, à savoir les instructions exécutées par le processeur. De façon intéressante, les architectures Intel x86/x64 ainsi que ARM sont abordées (un support ARM sera releasé par Microsoft fin 2012 pour les tablettes Surface notamment). Cette dernière architecture a depuis continuellement gagné en exposition avec l'explosion du mobile.
Le chapitre 3 introduit le cœur de la méthodologie. Pour cela, nous utilisons le noyau Windows comme terrain de jeu, plus particulièrement l’analyse de rootkits et codes malveillants. Ce choix fait écho, au début des années 2010, à la déferlante de découvertes et analyses de ces magnifiques frameworks offensifs industrialisés dont certains sont rentrés à la postérité : Stuxnet, Duqu, Flame, Regin, etc. Comment se projeter sur l’analyse de tels codes est la question à laquelle ce chapitre tente de répondre : compréhension de l'environnement, des interfaces avec le système d’exploitation, de la structure attendue du code (ex. un driver), etc.
Le chapitre suivant (4) revient sur un aspect appliqué qui est la maîtrise de l’outil d’analyse dynamique, le debugger et notamment Windbg. Pour conclure, le chapitre 5 ouvre une perspective sur l’analyse de code durci ou obfusqué, technique couramment utilisée par certains codes malveillants afin de rendre leur analyse plus complexe.
Nous avons l’espoir que cet ouvrage aura servi à un certain nombre à se lancer, à découvrir, à expérimenter par eux-mêmes. Sa lecture et l’achèvement de tous les exercices proposés constituent un investissement important, mais (une nouvelle fois) que nous espérons gratifiant et bénéfique. Les retours reçus au cours de ces années ont en tout cas été pour nous la meilleure récompense. Personnellement, je remercie encore Bruce de nous avoir fait confiance et embarqués dans cette aventure.
- Auteurs : Bruce Dang, Alexandre Gazet, Elias Bachaalany (contribution de Sébastien Josse)
- Éditeur : Wiley
- Parution : 7 février 2014
- Nombre de pages : 480
- Prix : 42,80 euros