cours5.pdf
-
Upload
mesmin-lie-mbadinga-nziengui -
Category
Documents
-
view
31 -
download
2
Transcript of cours5.pdf
![Page 1: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/1.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Protection logicielle et reverse engineering
Licence Pro
Renaud Tabary: [email protected]
2009-2010
Licence Pro Introduction a la securite informatique
![Page 2: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/2.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Plan
1 Introduction a la protection logicielleQu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
2 Techniques de protection simplesLe numero de serieObfuscation de codeChiffrement de codeVerifications furtives
3 Techniques avancees : les packersDefinitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
4 ConclusionRecapitulatifLe present/futurLe metier de reverse engineer
Licence Pro Introduction a la securite informatique
![Page 3: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/3.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Plan
1 Introduction a la protection logicielleQu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
2 Techniques de protection simples
3 Techniques avancees : les packers
4 Conclusion
Licence Pro Introduction a la securite informatique
![Page 4: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/4.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Le reverse engineering
Definition
Le reverse engineering, traduit en francais par retro-ingenierie, estl’activite qui consiste a etudier un objet pour en determiner lefonctionnement interne ou sa methode de fabrication.
Licence Pro Introduction a la securite informatique
![Page 5: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/5.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Objectifs du RE
Plusieurs objectifs peuvent motiver une ingenierie inverse :
Comprendre le fonctionnement de cet objet, pour etre enmesure de l’utiliser correctement ou de le modifierFabriquer une copie de cet objet alors qu’on ne peut en obtenirni les plans ni les methodes de fabrication
Activite generalement illegale sur un plan juridique
Creer un nouvel objet ayant des fonctionnalites identiques al’objet de depart, sans violer de brevetAnalyser un objet produit par un concurrent, soit dans le cadred’une activite de veille concurrentielle soit pour detecter depotentielles violations de brevets
Licence Pro Introduction a la securite informatique
![Page 6: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/6.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Applications legales du reverse engineering
Le reverse engineering a le plus souvent une application legale
Etude d’un protocole reseau pour son portage sur d’autresplateformes (exemple : samba)
Etude d’un format de fichier pour son portage sur d’autresplateformes (exemple : OpenOffice et les .doc)
Veille technologique : verifier que vos concurrents ne violentpas vos brevets
Etude de malwares : comprendre les virus/vers/rootkits pourmieux s’en defendre
Recherche de vulnerabilite dans un logiciel
Legal pour les entreprises agrementees (exemple Guillermito)
Licence Pro Introduction a la securite informatique
![Page 7: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/7.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Applications illegales
... mais est egalement utilise a des fins illegales
Espionnage industriel
Vol d’algorithmes ou meme de logiciels d’une entrepriseconcurrente
Piratage de logiciel
1 Etude du logiciel via Reverse Engineering2 Localisation des moyens de protection
Verification du numero de serie, protection anti-copie, ...
3 Publication sur internetd’un patch supprimant les protections
Etude des vulnerabilites d’un logiciel en vue d’une exploitation
Licence Pro Introduction a la securite informatique
![Page 8: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/8.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Plan
1 Introduction a la protection logicielleQu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
2 Techniques de protection simples
3 Techniques avancees : les packers
4 Conclusion
Licence Pro Introduction a la securite informatique
![Page 9: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/9.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Analyse statique
Definition
L’analyse statique d’un programme est un processus permettantd’evaluer un programme ou une partie d’un programme en sebasant sur sa forme, sa structure, son contenu ou sadocumentation. A opposer a l’analyse dynamique.
Reviens a examiner le programme comme si on lisait un fichiertexte normal. On ne l’execute pas.
Licence Pro Introduction a la securite informatique
![Page 10: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/10.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Les desassembleurs
Outil le plus souvent utilise pour l’analyse statiquesemi-automatisee
Un desassembleur permet a partir d’un executable binaire,d’obtenir son code en langage machine. Le code obtenu necontient bien sur plus aucun commentaire ni labels
Les desassembleurs les plus performants arrivent a retrouver letype des variables, permettent de les renommer et, si ils lepeuvent, generent automatiquement un nom a partir del’utilisation qui en est fait
Le desassembleur le plus utilise et le plus general enenvironnement win32 est IDA. Il existe d’autres desassembleurqui ciblent des executables generes par des compilateurs precismais nous ne les aborderons pas dans ce cour
Licence Pro Introduction a la securite informatique
![Page 11: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/11.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
IDA
IDA est un desassembleur professionnel tres puissant quipermet a l’utilisateur de s’approprier le code d’une applicationgrace a l’analyse tres fine qu’il fait du code, de l’utilisation desregistres et de la pile
Cette analyse lui permet d’isoler les fonctions, leurs relations,leurs variables locales etc.
Certains plugins (tres chers) permettent meme dans certainscas de retrouver le code source originel du programme analyse
Licence Pro Introduction a la securite informatique
![Page 12: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/12.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Exemple IDA
Licence Pro Introduction a la securite informatique
![Page 13: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/13.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Analyse dynamique
Definition
L’analyse dynamique d’un programme est le processus permettantd’evaluer un programme ou une partie d’un programme en sebasant sur son comportement a l’execution
Licence Pro Introduction a la securite informatique
![Page 14: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/14.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Les debogueurs
Un debogueur permet, comme son nom l’indique, de deboguerun programme, c’est-a-dire de suivre son deroulement pas apas, de controler son execution grace a des points d’arret, lapossibilite de modifier le contenu des registres, de la memoireetc.
Les debogueurs sont plus intrusifs que les desassembleurscomme IDA. Ils permettent neanmoins de mieux analyser leprogramme, etant donne que l’on observe son comportementin vivo
Un avantage est egalement la possibilite de modifier leprogramme au cours de son execution (exemple : ne pasexecuter une routine de verification de license)
Lors des TPs, nous utiliserons OllyDbg, un debogueur tresutilise et gratuit
Licence Pro Introduction a la securite informatique
![Page 15: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/15.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
OllyDbg
Licence Pro Introduction a la securite informatique
![Page 16: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/16.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Plan
1 Introduction a la protection logicielleQu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
2 Techniques de protection simples
3 Techniques avancees : les packers
4 Conclusion
Licence Pro Introduction a la securite informatique
![Page 17: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/17.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Pourquoi proteger son logiciel ?
Les desassembleurs et les debogueurs permettent d’etudier unexecutable sans posseder sa source
Proteger les logiciels d’une entreprise est alors indispensablePour eviter l’espionnage industriel
Perte de leadership par exemple
Pour ne pas qu’il soit pirate
Perte de revenu pour l’entreprise
Licence Pro Introduction a la securite informatique
![Page 18: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/18.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Le cout du piratage en France
Le cout du piratage dans le monde / en France :
Annee Taux de piratage Manque a gagner en M$2003 36%/45% 28 803 / 2 311
2004 35%/45% 32 778 / 2 928
2005 35%/47% 34 482 / 3 191
2006 35%/45% 39 698 / 2 676
2007 38%/42% 47 809 / 2 601
Figure: Source : BSA and IDC Global Software Piracy Study
Licence Pro Introduction a la securite informatique
![Page 19: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/19.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Comment proteger son logiciel ?
JuridiquementTous les logiciels sont proteges par le droit d’auteurDeposer un brevet pour une technologie innovante
En bloquant ou freinant le piratage du logicielEn obfuscant le code binaire du programmeEn detectant et en bloquant les tentatives de reverseengineering du logicielEn utilisant des mesures preventives (Version de demoincompletes, verification a distance du numero de license, ...)En utilisant des outils de protection professionnels
En utilisant des mesures punitivesWatermarking, ou comment retrouver l’origine d’un logicielpirateBlacklisting des licenses de logiciels piratesRecours en justice
Licence Pro Introduction a la securite informatique
![Page 20: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/20.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Qu’est-ce que le reverse engineering ?Les outils pour le reverse engineeringLes enjeux de la protection logicielle
Objectifs de ce cours
Le piratage logiciel est une grande nuisance pour l’entreprise
La faute en revient souvent aux developpeurs :
Qui sous-estiment le probleme pose par la retro-ingenierieQui essayent de proteger eux-memes leur applicationQui utilisent mal les protections commerciales
Objectifs de ce coursIntroduction a la protection logicielle et au reverse engineering
Licence Pro Introduction a la securite informatique
![Page 21: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/21.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Plan
1 Introduction a la protection logicielle
2 Techniques de protection simplesLe numero de serieObfuscation de codeChiffrement de codeVerifications furtives
3 Techniques avancees : les packers
4 Conclusion
Licence Pro Introduction a la securite informatique
![Page 22: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/22.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Protection par numero de serie
La protection la plus intuitive pour proteger un logiciel est laverification d’un numero de serie
Si celui-ci est valide, le logiciel fonctionneSi il est invalide, le logiciel ne demarrera pas ou sera bride
AtoutsTres simple a implementer (if (num serie! = 1234) exit();)Nombre d’algorithmes de verification du numero de serie infiniPossibilite de verification du numero sur internet
InconvenientsUne simple analyse statique permet parfois de retrouver lenumero de serieIl est toujours possible de ne pas executer la routine deverification
Licence Pro Introduction a la securite informatique
![Page 23: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/23.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Exemple
Licence Pro Introduction a la securite informatique
![Page 24: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/24.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Comment pallier a ces defauts ?
Defauts de cette methodeToujours possible de desassembler et analyser la routine deverificationPossible de modifier l’application pour fausser la verification
SolutionsObfusquer le code machine de la routine verificationChiffrement du code machine de la routine verificationUtilisation d’algorithmes asymetriques
Licence Pro Introduction a la securite informatique
![Page 25: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/25.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Plan
1 Introduction a la protection logicielle
2 Techniques de protection simplesLe numero de serieObfuscation de codeChiffrement de codeVerifications furtives
3 Techniques avancees : les packers
4 Conclusion
Licence Pro Introduction a la securite informatique
![Page 26: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/26.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
L’obfuscation
L’obfuscation a pour but de par l’homme d’une applicationincomprehensible directement par l’homme
Le code devra etre traite avant de pouvoir etre analyse et sil’obfuscation est bien faite, la programmation d ?un outil quieliminera entierement et automatiquement l’obfuscation seraquasi impossible
En theorie cependant, il est impossible d’obfusquerparfaitement un programme (Barak)
Licence Pro Introduction a la securite informatique
![Page 27: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/27.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Differentes sortes d’obfuscations
Rendre le code le moins clair possible, utiliser des moyensdetournes pour arriver au meme resultat :
Exemple
var1 = var2 + var3 →var1 = (var1 + var2 ∗ const + var3 ∗ const − var1)/const
Insertion de code inutile, ou code ”mort”
Exemple
var1+ = var2[. . . ]var1− = var2if(TRUE) {...} else {...}
Obfusquer le flot de controle, ajout de sauts inutiles, appelsde fonctions inutils, ”melanger” les instructions
Licence Pro Introduction a la securite informatique
![Page 28: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/28.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Quoi obfusquer ?
Souvent, on preferera obfusquer le code machine d’unprogramme (c’est ce que voit le reverse engineerer) plutotqu’obfusquer son code source
Obfusquer le code source nuit a la maintenanceLe compilateur effectuera de toute maniere des optimisations
Il ne faut pas obfusquer tout le programme
Perte de performance
Seulement les fonctions critiques
Verification du numero de seriesAlgorithmes a forte valeur ajoutee
Licence Pro Introduction a la securite informatique
![Page 29: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/29.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Exemple d’obfuscation
Obfuscation du code mov al, byte ptr [edi]
Licence Pro Introduction a la securite informatique
![Page 30: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/30.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Autre exemple
Ici le debogueur n’est meme plus capable d’analysercorrectement le code machine
Licence Pro Introduction a la securite informatique
![Page 31: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/31.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Plan
1 Introduction a la protection logicielle
2 Techniques de protection simplesLe numero de serieObfuscation de codeChiffrement de codeVerifications furtives
3 Techniques avancees : les packers
4 Conclusion
Licence Pro Introduction a la securite informatique
![Page 32: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/32.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Le chiffrement de code
En assembleur, le code peut etre manipule comme des donnees
Le code sensible de l’application est stocke chiffre sur ledisque dur
Il apparaıt chiffre lors de l’analyse statique
A l’execution seulement, le code sensible est dechiffre, avantd’etre execute
cf. exemple au tableau
Pour compliquer la tache, la routine de dechiffrement estsouvent obfusquee
Licence Pro Introduction a la securite informatique
![Page 33: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/33.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Code chiffre
Code chiffre
Licence Pro Introduction a la securite informatique
![Page 34: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/34.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Code dechiffre
Code dechiffre
Licence Pro Introduction a la securite informatique
![Page 35: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/35.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Avantages/inconvenients
Avantages :Les routines importantes du programme n’apparaissent pas enclair avant d’etre executeeRend beaucoup plus difficile l’analyse statiqueAssocie a l’obfuscation, souvent efficace contre les crackeursamateurs
Certaines routines de dechiffrement, une fois obfusquee, fonten effet plusieurs Mo
InconvenientsL’analyse dynamique est toujours possible
A condition de savoir ou s’arreter pour regarder (par exemple,juste apres le dechiffrement des routines importantes)
Il est toujours possible d’enregistrer le programme une fois quetoutes les routines ont ete dechiffrees (dumping)
Licence Pro Introduction a la securite informatique
![Page 36: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/36.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Plan
1 Introduction a la protection logicielle
2 Techniques de protection simplesLe numero de serieObfuscation de codeChiffrement de codeVerifications furtives
3 Techniques avancees : les packers
4 Conclusion
Licence Pro Introduction a la securite informatique
![Page 37: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/37.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Verifications furtives
Le debogage est surement le processus de reverse engineeringle plus puissant
Il est cependant un peu intrusif, et il est donc possible dedetecter dans un programme si l’on est en train d’etre debogueLa plupart des protections embarquent donc des testsanti-debogage :
Si aucun debogeur n’est detecte, le programme se deroulenormalementSi un debogeur (ou toute modification du programme) estdetecte, le programme agira d’une maniere erronnee
L’idee est de modifier le programme de la maniere la plussubtile possible
Le cracker se rendra compte que son piratage du logiciel n’aete detecte que le plus tard possible... et devra donc recommencer depuis le debut
Licence Pro Introduction a la securite informatique
![Page 38: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/38.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Exemple
Modification furtive (Vietcong)
Licence Pro Introduction a la securite informatique
![Page 39: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/39.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Verifications possibles
Verification d’integrite du code
Detecte les modifications (patch) du logiciel
Appels d’APIs specialisee
CheckRemoteDebugger, IsDebuggerPresent, etc
Verification des temps d’execution
Un debogeur est toujours plus lent que l’execution simple duprogramme
Induire le debogeur en erreur
Effacement des points d’arret, exceptions multiples,multi-threading, etc.
Licence Pro Introduction a la securite informatique
![Page 40: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/40.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Le numero de serieObfuscation de codeChiffrement de codeVerifications furtives
Les protections maison
La plupart des logiciels amateurs ne sont pas proteges, oualors par un simple numero de serie
Quelque fois des protections plus sophistiquees sontappliquees (chiffrement, obfuscation)
Dans tous les cas, ce sont souvent des protection triviales, quine posent aucun frein a un pirate competent
C’est pourquoi proteger soi-meme son logiciel est souvent unemauvaise idee
Pour le milieu proferssionnel, mieux vaut utiliser des solutionsde protection existantes
Licence Pro Introduction a la securite informatique
![Page 41: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/41.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Plan
1 Introduction a la protection logicielle
2 Techniques de protection simples
3 Techniques avancees : les packersDefinitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
4 Conclusion
Licence Pro Introduction a la securite informatique
![Page 42: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/42.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Qu’est-ce qu’un packer ?
C’est un logiciel charge de proteger votre programme
Il s’insere dans votre logiciel pour
Proteger le logiciel contre le reverse engineeringFaire en sorte que si la protection est enlevee, le logicieldevient inutilisableAjouter un mecanisme de verification de licenseParfois compresser le programme (d’ou le nom de packer)
De nombreuses solutions existent
ThemidaStarForceMCFACTAsPro, etc.
Licence Pro Introduction a la securite informatique
![Page 43: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/43.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Qu’est-ce qu’un packer ?
Logiciel de protection logicielle (packer) :
Licence Pro Introduction a la securite informatique
![Page 44: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/44.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Comment est protegee votre application
Le code de votre programme est chiffre
La routine de dechiffrement est situee dans le packer
Packer qui contient les routines de validation de license
Pour pirater le programme, il faut donc neutraliser le packer(on parle d’unpacking)
Le code du packer est quant a lui developpe par des expertsen securite
Extremement protege (chiffrement, obfuscation de qualite etc.)Rebute la plupart des crackeurs amateurs
Licence Pro Introduction a la securite informatique
![Page 45: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/45.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Avantage des packers professionnel
Ils sont techniquement plus aboutis que les protectionsmaisons
Utilisation de drivers de protectionChiffrement, obfuscation, verification du numero de serie surinternet, la totale
Plus fiables
Certaines offres sont tres pointues, et se basent sur desmateriels qu’il est tres dur de reverser
Dongle USB, carte a puceexemple MCFACT (Cubase) : la protection a tenu plus d’un an
Licence Pro Introduction a la securite informatique
![Page 46: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/46.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Plan
1 Introduction a la protection logicielle
2 Techniques de protection simples
3 Techniques avancees : les packersDefinitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
4 Conclusion
Licence Pro Introduction a la securite informatique
![Page 47: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/47.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Mesures logicielles
Anti-desassembleurs
Le plus efficace restant le chiffrement
Anti-debogeurs
Peuvent cibler un ou plusieurs debogueursIl est cependant toujours possible a un cracker averti de elseviter
Obfuscation a outrance
Utilisation de drivers noyau
Les routines de verification sont situees dans un driver windowsIl est tres difficle d’analyser un driver ”blinde”
Utilisation de peripheriques securises (ex : carte a puce)
Ces peripheriques sont proteges physiquement
Licence Pro Introduction a la securite informatique
![Page 48: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/48.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Un anti-debugeur
Anti-debogueur exploitant une faille de OllyDBG :
Licence Pro Introduction a la securite informatique
![Page 49: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/49.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Plan
1 Introduction a la protection logicielle
2 Techniques de protection simples
3 Techniques avancees : les packersDefinitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
4 Conclusion
Licence Pro Introduction a la securite informatique
![Page 50: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/50.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Fusion avec l’application
Meme si la routine de verification de license est extremementprotegee au sein du packer ...
.. il y a toujours le risque qu’elle soit supprimee toutbonnement
Aussi les packers professionnels se doivent de fusionner avecl’application protegee
Si le packer est supprime ou modifie, le programme serainutilisableLe plus souvent, ce sont des verifications furtives
Licence Pro Introduction a la securite informatique
![Page 51: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/51.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Exemple : les triggers de SecuROM
SecuROM est une packer utilise dans la protection des jeuxvideos, il a beaucoup fait parler de lui en 2002 avec unenouvelle forme de protection anti-cracking : les triggers
Les triggers sont une fonctionnalite offerte par SecuROM quipermet aux developpeurs d’utiliser les APIs Windows pourrealiser des verifications furtives du code pour s’assurer que laprotection du jeux n’a pas ete enlevee
Certains appels aux API windows dans l’application protegeesont rediriges vers le packer
Si un argument special est donne, le packer renvoit une valeurpredefinieSinon, il appelle l’API windows qui a ete detournee
Licence Pro Introduction a la securite informatique
![Page 52: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/52.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Redirection d’APIs
Licence Pro Introduction a la securite informatique
![Page 53: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/53.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Pourquoi ca marche
Si un cracker veut supprimer la protection (le packer), il vadevoir rerediriger les appels aux APIs qui ont ete detournes
C’est facile, sauf que :
Lorsque l’API windows sera appelee avec l’argument special ..... la valeur speciale ne sera pas retournee (c’etait le code dupacker qui s’en chargeait)
Le programmeur de l’application quant a lui, effectue des testssur la valeur de retour
Si la valeur de retour n’est pas celle attendue, il sait que lepackeur a ete supprime
Verifications furtives
Licence Pro Introduction a la securite informatique
![Page 54: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/54.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Exemple
Exemple d’application (mal) deprotegee
Licence Pro Introduction a la securite informatique
![Page 55: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/55.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Exemple
Exemple de jeux (mal) deprotege (Vietcong) : verificationfurtive
Licence Pro Introduction a la securite informatique
![Page 56: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/56.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Plan
1 Introduction a la protection logicielle
2 Techniques de protection simples
3 Techniques avancees : les packersDefinitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
4 Conclusion
Licence Pro Introduction a la securite informatique
![Page 57: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/57.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
VMProtect : Virtualisation de code
VMProtect va virtualiser le code de l’application c’est-a-direcreer un processeur virtuel logiciel qui interpretera lesinstructions qui auront ete transformees au depart
Le code ainsi transforme ne pourra pas etre desassemble parles desassembleur x86 et ne pourra pas etre deboguedirectement
La virtualisation est utilisee dans toutes les protectionsrecentes de qualite
Elle bloque le cracker qui devra etudier le processeur logicielet creer un outils qui fera la relation instruction du processeurlogiciel → instruction x86
Licence Pro Introduction a la securite informatique
![Page 58: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/58.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Fonctionnement d’un programme normal
Licence Pro Introduction a la securite informatique
![Page 59: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/59.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Un programme Virtualise
Licence Pro Introduction a la securite informatique
![Page 60: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/60.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
Definitions et avantages des packersProtections contre le reverse engineeringFusion avec l’applicationVirtualisation
Au final
Il devient tres difficile a un pirate de reverser une applicationprotegee par un packer professionnel
Egalement tres couteux pour les protections materielles
La protection parfaite n’existe pas (c’est theoriquementimpossible)
Le but est de decourager les pirates
Et de les ralentir... au moins jusqu’a la prochaine version du logiciel
Certaines protections commerciales y arrivent tres bien (lerecord est d’un an)
Licence Pro Introduction a la securite informatique
![Page 61: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/61.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
RecapitulatifLe present/futurLe metier de reverse engineer
Plan
1 Introduction a la protection logicielle
2 Techniques de protection simples
3 Techniques avancees : les packers
4 ConclusionRecapitulatifLe present/futurLe metier de reverse engineer
Licence Pro Introduction a la securite informatique
![Page 62: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/62.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
RecapitulatifLe present/futurLe metier de reverse engineer
Recapitulatif
Le reverse engineering logiciel est l’art d’analyser et demodifier des programmes sans en posseder la source
L’objectif de la protection logicielle est de freiner le processusde piratage
Analyse par desassemblage ou debogageModification du binaire pour supprimer les routines anti-copie
Tout logiciel commercial se doit d’etre protege
Licence Pro Introduction a la securite informatique
![Page 63: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/63.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
RecapitulatifLe present/futurLe metier de reverse engineer
Recapitulatif
Developper sois-memes une protection, necessite beaucoup detemps et d’investissement, mais est tres enrichissant
Nous avons vu en cours et en TP les protections les plussimples et les plus repandues : numero de serie, chiffrement,obfuscation, verifications furtives
Neanmoins, l’utilisation de protections professionnelles estrecomandee
Utilisez toutes les options qu’elle vous offreN’hesitez pas a vous renseigner sur son efficacite, a chercherdes outils, des techniques permettant de le contournerN’hesitez pas a rajouter d’autres verifications par vous-meme
Licence Pro Introduction a la securite informatique
![Page 64: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/64.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
RecapitulatifLe present/futurLe metier de reverse engineer
Recapitulatif
Il est toujours necessaire d’observer une bonne politique desecurite
Evitez de distribuer des versions d’evaluation 100%fonctionnelles, meme protegeesGarder un fichier des clientsUtilisez les options permettant de calculer le numero de serie apartir d’une variable materielle (adresse MAC, numero de seriedu disque dur ...) ?
Licence Pro Introduction a la securite informatique
![Page 65: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/65.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
RecapitulatifLe present/futurLe metier de reverse engineer
Plan
1 Introduction a la protection logicielle
2 Techniques de protection simples
3 Techniques avancees : les packers
4 ConclusionRecapitulatifLe present/futurLe metier de reverse engineer
Licence Pro Introduction a la securite informatique
![Page 66: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/66.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
RecapitulatifLe present/futurLe metier de reverse engineer
Protections materielles
Le logiciel est distribue avec un peripherique securise
Dongle USB, carte a puce
Une partie du programme est ecrite dans le peripheriquesecurise
Une partie importante du programme
Le logiciel est alors dependant du peripherique securise
Pour chaque version du programme distribue, une seulperipherique securise correspondLe peripherique securise joue le role de license
Le peripherique securise est :
difficile a clonerdifficile a analyser/lireGrace a des moyens physiques
Licence Pro Introduction a la securite informatique
![Page 67: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/67.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
RecapitulatifLe present/futurLe metier de reverse engineer
Utilisation d’un peripherique securise
Licence Pro Introduction a la securite informatique
![Page 68: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/68.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
RecapitulatifLe present/futurLe metier de reverse engineer
Plan
1 Introduction a la protection logicielle
2 Techniques de protection simples
3 Techniques avancees : les packers
4 ConclusionRecapitulatifLe present/futurLe metier de reverse engineer
Licence Pro Introduction a la securite informatique
![Page 69: cours5.pdf](https://reader035.fdocuments.net/reader035/viewer/2022081401/55721408497959fc0b939aa5/html5/thumbnails/69.jpg)
Introduction a la protection logicielleTechniques de protection simples
Techniques avancees : les packersConclusion
RecapitulatifLe present/futurLe metier de reverse engineer
Le metier de Reverse Engineer
Il consiste a etudier des executables de toutes sortes, desprotection logicielles, des malwares, des formats etc.
Le reverse engineer developpe des outils, des protections etfait de la recherche
Les salaires peuvent varier entre 50 000 euros et 100 000 eurosbrut par an. Mais une personne faisant seulement du reverseaura en general un salaire moins eleve qu’une personne faisantdu reverse , ainsi que de la recherche et du developpement
En France, les postes de reverse engineer sont rares et souventmoins bien paye que dans les autres pays
Licence Pro Introduction a la securite informatique