Le reverse engineering (ou rétro-ingénierie) expliqué Robert DellImmagine le 5 août 2008 à 11h01, dans la rubrique Produits & Technologies Commentaires (4) décompilerdésassemblerretro ingénieriereverse engineering Besoin de créer rapidement une signature contre une nouvelle menace à propagation rapide ou d’analyser la capacité de nuisance réelle d’un logiciel espion ? Il est donc grand temps de commencer à désosser ce programme… Cette opération est l’une des principales méthodes utilisées par les pirates pour trouver de nouvelles vulnérabilités dans les applications et les systèmes d’exploitation. De plus, il s’agit d’un puissant outil utilisé par les professionnels pour analyser le niveau de sécurité de leurs applications. Nous parlons bien ici de rétro-ingénierie de programme, encore appelée ingénierie inverse, rétroconception ou reverse engineering. Si vous n’aviez jusqu’à maintenant jamais envisagé de retrousser vos manches pour vous plonger dans l’étude du fonctionnement de certains pilotes système et d’applications malveillantes récemment découvertes, le moment est venu. Pour les professionnels de la sécurité, la rétro-ingénierie peut s’avérer un puissant moyen de garantir et de maintenir la sécurité des systèmes. Le désossage d’un programme consiste à examiner avec exactitude la manière dont une application ou un composant logiciel fonctionne réellement. Tandis que des individus malveillants désossent le programme d’un logiciel pour trouver des failles système et conçoivent à partir de là des logiciels espions, des logiciels publicitaires illégaux ainsi que des chevaux de Troie, les mêmes techniques peuvent être utilisées par les professionnels de la sécurité. En effet, ces derniers peuvent procéder à l’analyse scientifique d’un système infecté par un virus ou un logiciel espion tout simplement pour connaître la réelle dangerosité de codes malveillants. S’agissait-il d’un logiciel publicitaire pas vraiment nuisible ? Ou d’un programme capable de capturer chaque touche saisie sur le clavier du système ? Les informaticiens qui maîtrisent l’ingénierie inverse des programmes peuvent également utiliser cette tactique pour créer des signatures à la volée qui seront ensuite déployées sur leurs systèmes de détection/prévention d’intrusions, ainsi que des évaluations perspicaces de pénétration des applications. Parmi les autres utilisations possibles de la rétro-ingénierie figurent la découverte des interfaces API non renseignées ou le portage de pilotes ainsi que l’analyse des correctifs (patchs) logiciels. En vous familiarisant avec quelques outils cités ci-dessous et en étudiant (ou en suivant un cours de programmation en langage d’assemblage), vous étofferez grandement vos compétences en sécurité. Attention. Avant de commencer à désosser le code d’une quelconque application logicielle, assurez-vous de disposer des autorisations légales nécessaires. En effet, de nombreuses applications commerciales sont régies par des contrats qui interdisent ce procédé, l’ingénierie inverse pouvant en outre être illégale selon la législation dont vous dépendez. Désassembleurs L’un des principaux outils utilisés en rétro-ingénierie est un désassembleur qui inverse le processus des assembleurs pour tenter de récréer le code d’assemblage à partir du code machine binaire compilé et illisible. Parmi les désassembleurs Windows commerciaux figurent IDA Pro et PE Explorer ainsi que de célèbres désassembleurs en freeware dont IDA 3.7, IDA Pro Freeware 4.3 et BORG Disassembler. Désosser le code permet d’étudier avec précision la manière dont fonctionne un programme, voire d’en identifier les vulnérabilités potentielles. Par exemple, si vous inversez le code de logiciels espions présents sur un système, vous pouvez déterminer avec exactitude le type d’information que l’application essayait de récupérer, ainsi que ses autres fonctionnalités. Décompileurs Les décompileurs poussent le processus un peu plus loin en tentant de reproduire le code dans un langage de haut niveau. Le langage C est souvent utilisé en raison de sa relative simplicité et de son caractère primitif qui facilitent le processus de décompilation. Cependant, la décompilation présente des inconvénients. En effet, lors du processus de compilation original, beaucoup de données et d’éléments de lisibilité sont perdus et ne peuvent pas être reproduits. Alors que la science de la décompilation est encore récente, les résultats sont bons, sans pour autant être merveilleux. Néanmoins, il s’agit d’une compétence qui vaut grandement la peine d’être apprise. Les décompileurs classiques sont notamment DCC Decompiler, le Boomerang Decompiler Project, Reverse Engineering Compiler (REC) et ExeToC. Déboguers Grâce aux débogueurs, les désosseurs d’un programme peuvent suivre l’exécution de ce dernier et examiner différentes valeurs et actions à travers le flux applicatif. Les rétro-ingénieurs peuvent définir des » points de rupture » applicatifs sur des instructions, des appels de fonction, voire des emplacements de mémoire, afin d’étudier les emplacements spécifiques de l’exécution du programme. Les débogueurs Windows sont notamment OllyDbg , WinDBG et IDA Pro. Comme c’est très souvent le cas avec la sécurité informatique, la pratique de la rétro-ingénierie a en quelque sorte induit une course aux armements. D’où la pratique de techniques d' » anti-rétro-ingéniérie » ou obscurcissement de programmes, processus consistant à chiffrer ou à brouiller le code machine. Il est notoire que ceux qui écrivent des virus brouillent le code pour occulter les fonctionnalités de leurs programmes malveillants et perturber la création de signatures. Même si le processus est encore relativement immature, toujours plus nombreuses sont les organisations et les entreprises qui obscurcissent leur code propriétaire pour protéger leur propriété intellectuelle ou qui rendent beaucoup plus difficile la recherche de vulnérabilités exploitables par des pirates. Une liste d’outils d’obscurcissement est disponible ici et là. Lorsque vous saurez désosser un programme, vous serez en mesure de déterminer l’ampleur d’une menace la prochaine fois que vous pénétrerez et testerez un serveur ou un site Web pour lequel vous ne disposez pas du code source ou que vous découvrirez un programme inconnu que vous jugerez ou suspecterez d’être du code malveillant. Les individus mal intentionnés utilisent la rétro-ingénierie de programmes pour exploiter des systèmes. Pourquoi les professionnels de la sécurité se priveraient-ils de ce procédé pour protéger leurs systèmes ? Vous avez aimé cet article? Cliquez sur le bouton J'AIME ou partagez le avec vos amis! Notez L'article Participez ou lancez la discussion!