PDA

Voir la version complète : Reverse Code Engineering pour les Nuls : Introduction



Chevrosky
25/04/2010, 00h29
Salut!


Je tiens d'abord a remercier el-farouk pour l'idée, Maverick pour son enthousiasme, et Samir_dz pour l'espace et la compréhension. :D


Reverse Code Engineering est un art d'une extreme vitalité pour les professionnels et les experts de la sécurité d'aujourd'hui.De la rétro-ingénierie d'un malware à la découverte des vulnérabilités dans un binarie, un tel savoir est exigé de nos jours afin de pouvoir sécuriser convenablement une organisation dans un monde ou l'évolution des menaces est en perpétuelle croissance ( plus de 1 millions de virus en 1998 d'apres les laboratoires de Kaspersky).



Reverse Code Engineering est une compétence essentielle ?


Les pirates utilisent de plus en chevaux de Troie personnalisés qui ne sont pas détectés par les antivirus. En outre, de nombreux programmes binaires contiennent des vulnérabilités, telles que les dépassements de tampon et de l'utilisation de très faibles algorithmes cryptographiques. La seule facon de découvrir ces vulnérabilités critiques pour les programmes de closed-source ( le contraire d'open source) est bien le reverse code engineering.
Le RCE est également nécessaire afin de comprendre les mécanismes complexes de l'obscurcissement binaires utilisés par les fournisseurs de protection contre la copie, ainsi que l'obscurcissement mis en place par les éditeurs de logiciels commerciaux.


Dans cette section, vous apprendrez les connaissances d'analyse binaires nécessaires pour découvrir la vraie nature de tout binaire Windows ( Rappelez vous qu'un Logiciel freeware ne veut pas dire Open Source), vous apprendrez également comment reconnaitre la construction des langages de haut niveau ( branching statements (if, else, switch), looping functions et le code socket réseau), essentiels à l'exécution d'une analyse consciencieuse et professionnelle d'un binaire.


En somme, vous apprendrez :

- Comprendre les états de branchement conditionnel

- Identification des variables

- Gestion de la mémoire

- Formats d'exécutable de Win32

- Fondements de l'IDA Pro

- Utilisation avancée de l'IDA Pro avec le code hostile

- Utilisation d'OllyDbg pour l'analyse d'exécution de logiciels malveillants

- Mode débogage du noyau (Kernel) avec SoftICE (ring 0)

- Dump d'un exécutables à partir de la mémoire

- Localisation des API non documentées

- Le Reversing de ntdll.dll

- Obfuscation de formats de fichiers

- Comprendre les fonctions de hachage

- Travailler avec des fichiers binaires cryptées

- Unpacking ( décompression ) d'UPX et d'autres types de compression (ACProtect, ASProtect, Armadillo, Obsidium, Themida, PCGuard, etc)

- Découvrir les débordements de pile

- Suivi des modifications du Registre

- Contrecarrer le code anti-debugger

- Débogage des programmes multi-thread , etc



Après avoir appris ces connaissances préliminaires importantes, vous avancerez à l'analyse de :


- Code hostile & Malware ( vers, virus, chevaux de Troie, les rootkits et les bots ) .

- Vulnérabilités dans les binaires ( des vulnérabilités de chaine de format, les conditions de dépassement de mémoire tampon, et l'identification des lacunes des schémas cryptographiques).

- Les schémas d'obscurcissement binaires utilisés par : ( les Pirates informatiques, les concepteurs de Trojans et les algorithmes de protection contre la copie ).

Vous apprendrez supplémentairement comment reconnaitre les caractéristiques des compilateurs (optimiseurs) modernes ( la famille gcc 4.x et l'omniprésent Visual Studio. NET).







PS : Le prochain post sera consacré a l'assembleur

http://fr.wikipedia.org/wiki/Assembleur

el-farouk
25/04/2010, 11h55
snip

Salam,

Peut tu faire une traduction à l'algérienne pour cet article? histoire de le rendre comestible pour nos tète (nous les V.I.N. ou Very Ignorant Newbies)

MoiAtmane
25/04/2010, 11h59
Merci pour cette introduction, que je trouves un peu orientée.
Si vous permettez chevrosky, j'estimes qu'il faut aussi expliquer et rappeler ce que signifie "Reverse Engineering" globalement en omettant le mot code, notement pour les nuls(titre du sujet oblige) j'aurais préféré pour débutants. on indiquant ce lien Wikipedia :http://en.wikipedia.org/wiki/Reverse_engineering ou http://fr.wikipedia.org/wiki/R%C3%A9tro-ing%C3%A9nierie

J'attends votre prochain post.

mes salutations

Chevrosky
25/04/2010, 21h23
Merci el-farouk et MoiAtmane pour vos répliques! Accordez moi 72 heures pour repenser carrément mon approche,je prendrai en considération vos remarques et suggestions.En ce qui concerne le titre de l'article, un lien comblera surement des lacunes http://fr.wikipedia.org/wiki/Pour_les_nuls ;)

milax
25/04/2010, 23h02
Parmi les points d'entrée de ce monde, peut être le désassemblage (IDA ou windasm (je sais pas si il obsolète celui là :) ), approche dead list donc et live approach (softice).
:)

Chevrosky
26/04/2010, 00h59
Parmi les points d'entrée de ce monde, peut être le désassemblage (IDA ou windasm (je sais pas si il obsolète celui là :) ), approche dead list donc et live approach (softice).
:)

Est ce que tu as appris a faire la différence entre un désassmbleur et un debuggeur en mode noyau ? Softice est mort depuis 2006, on peut citer quelques remplaçant , à savoir http://rr0d.droids-corp.org/, qui est open source. http://www.sysersoft.com/ qui nécessite une license, mais un excellent remplacant. TRW 2000 http://www.knlsoft.com/ payant aussi, pourtant il était gratuit les premiers temps de son developpement. Dans le pire des cas y'a le WinDbg de chez windows dispo sur http://www.microsoft.com/whdc/devtools/debugging/default.mspx.
En ce qui concerne l'approche, je pralais de la mienne concernant la facon dont je comptais animer cette section du forum.



PS: http://www.linice.com/ un clone, mais sous Linux. ;) Je vous promets qu'on touchera a tout ( Windows + Linux + Mac OS x), alors s'il vous plait, soyez patients!

Merci!

MoiAtmane
26/04/2010, 11h36
En ce qui concerne le titre de l'article, un lien comblera surement des lacunes

je voulais juste dire qu'une étape vous a échappé dans l'introduction compte tenu du titre sans plus, mais bon, une mise au point est toujours bienvenue. (ceci témoigne mon intéressement à cette rubrique)
bonne continuation et merci !

Hakim3i
26/04/2010, 12h01
Merci j'att tes cours
sinon ça c'est pas pour les NULL !
faut au moi étre nul ;)

Chevrosky
26/04/2010, 13h41
je voulais juste dire qu'une étape vous a échappé dans l'introduction compte tenu du titre sans plus, mais bon, une mise au point est toujours bienvenue. (ceci témoigne mon intéressement à cette rubrique)
bonne continuation et merci !

MoiAtmane, je vous remercie pour l'interet que vous portez pour cette séction
, sachez que vos remarques et vos mises au point seront toujours les bienvenue.Merci!


Merci j'att tes cours
sinon ça c'est pas pour les NULL !
faut au moi étre nul ;)

;)

bassim
26/04/2010, 20h53
Peut tu faire une traduction à l'algérienne pour cet article? histoire de le rendre comestible pour nos tète (nous les V.I.N. ou Very Ignorant Newbies)

Salut,
Le problème c'est que le sujet est un peu complexe. Pas évident de l'expliquer à des débutants en informatique, il faut avoir un minimum de pré-requis (en système d'exploitation) et de pratique (en programmation).

Chevrosky
27/04/2010, 00h55
Salut,
Le problème c'est que le sujet est un peu complexe. Pas évident de l'expliquer à des débutants en informatique, il faut avoir un minimum de pré-requis (en système d'exploitation) et de pratique (en programmation).

Si je suis la, c'est surement pour relever le défis, quitte à faire des tutorials en dialecte algérien.

oufda
13/09/2010, 21h36
je soutiens l'avis de Chevrosky

Aboucymbale
06/10/2016, 07h01
Salut!


Je tiens d'abord a remercier el-farouk pour l'idée, Maverick pour son enthousiasme, et Samir_dz pour l'espace et la compréhension. :D


Reverse Code Engineering est un art d'une extreme vitalité pour les professionnels et les experts de la sécurité d'aujourd'hui.De la rétro-ingénierie d'un malware à la découverte des vulnérabilités dans un binarie, un tel savoir est exigé de nos jours afin de pouvoir sécuriser convenablement une organisation dans un monde ou l'évolution des menaces est en perpétuelle croissance ( plus de 1 millions de virus en 1998 d'apres les laboratoires de Kaspersky).



Reverse Code Engineering est une compétence essentielle ?


Les pirates utilisent de plus en chevaux de Troie personnalisés qui ne sont pas détectés par les antivirus. En outre, de nombreux programmes binaires contiennent des vulnérabilités, telles que les dépassements de tampon et de l'utilisation de très faibles algorithmes cryptographiques. La seule facon de découvrir ces vulnérabilités critiques pour les programmes de closed-source ( le contraire d'open source) est bien le reverse code engineering.
Le RCE est également nécessaire afin de comprendre les mécanismes complexes de l'obscurcissement binaires utilisés par les fournisseurs de protection contre la copie, ainsi que l'obscurcissement mis en place par les éditeurs de logiciels commerciaux.


Dans cette section, vous apprendrez les connaissances d'analyse binaires nécessaires pour découvrir la vraie nature de tout binaire Windows ( Rappelez vous qu'un Logiciel freeware ne veut pas dire Open Source), vous apprendrez également comment reconnaitre la construction des langages de haut niveau ( branching statements (if, else, switch), looping functions et le code socket réseau), essentiels à l'exécution d'une analyse consciencieuse et professionnelle d'un binaire.


En somme, vous apprendrez :

- Comprendre les états de branchement conditionnel

- Identification des variables

- Gestion de la mémoire

- Formats d'exécutable de Win32

- Fondements de l'IDA Pro

- Utilisation avancée de l'IDA Pro avec le code hostile

- Utilisation d'OllyDbg pour l'analyse d'exécution de logiciels malveillants

- Mode débogage du noyau (Kernel) avec SoftICE (ring 0)

- Dump d'un exécutables à partir de la mémoire

- Localisation des API non documentées

- Le Reversing de ntdll.dll

- Obfuscation de formats de fichiers

- Comprendre les fonctions de hachage

- Travailler avec des fichiers binaires cryptées

- Unpacking ( décompression ) d'UPX et d'autres types de compression (ACProtect, ASProtect, Armadillo, Obsidium, Themida, PCGuard, etc)

- Découvrir les débordements de pile

- Suivi des modifications du Registre

- Contrecarrer le code anti-debugger

- Débogage des programmes multi-thread , etc



Après avoir appris ces connaissances préliminaires importantes, vous avancerez à l'analyse de :


- Code hostile & Malware ( vers, virus, chevaux de Troie, les rootkits et les bots ) .

- Vulnérabilités dans les binaires ( des vulnérabilités de chaine de format, les conditions de dépassement de mémoire tampon, et l'identification des lacunes des schémas cryptographiques).

- Les schémas d'obscurcissement binaires utilisés par : ( les Pirates informatiques, les concepteurs de Trojans et les algorithmes de protection contre la copie ).

Vous apprendrez supplémentairement comment reconnaitre les caractéristiques des compilateurs (optimiseurs) modernes ( la famille gcc 4.x et l'omniprésent Visual Studio. NET).







PS : Le prochain post sera consacré a l'assembleur

http://fr.wikipedia.org/wiki/Assembleur

Merci l'ami pour ton sujet, moi même je pratique le reverse code engineering (pas simple à première vue) mais cette pratique requiert une méthodologie très spécifique. J'ai des docs en PDF je vais voir si je peux les retrouver et les poster ici.