cours5.pdf

69
Introduction ` a la protection logicielle Techniques de protection simples Techniques avanc´ ees : les packers Conclusion Protection logicielle et reverse engineering Licence Pro Renaud Tabary: [email protected] 2009-2010 Licence Pro Introduction ` a la s´ ecurit´ e informatique

Transcript of cours5.pdf

Page 1: cours5.pdf

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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