Vous êtes sur la page 1sur 12

La gestion de la protection dans des applications WinDev

par Emmanuel Lecoester Francis Morel


Date de publication : 09 Septembre 2009 Dernire mise jour : 09 Mai 2009

La gestion de la protection dans des applications WinDev par Emmanuel Lecoester Francis Morel

I - Les diffrents niveaux de protection.......................................................................................................................3 I-A - Confidentialit des applications et des donnes........................................................................................... 3 I-B - Protection contre les utilisations illicites........................................................................................................ 3 I-C - Intgrit des donnes.................................................................................................................................... 3 II - Confidentialit des applications et des donnes................................................................................................... 3 II-A - Historique - Protection des fichiers HF sous Windev 5.5............................................................................. 3 II-B - Historique - Protection des Excutables.......................................................................................................3 II-B-1 - Windev 7 et suivantes..........................................................................................................................4 II-B-2 - Depuis WinDev 11................................................................................................................................4 II-C - Protection des fichiers HF avec WinDev......................................................................................................4 II-C-1 - Mot de passe sur l'analyse.................................................................................................................. 4 II-C-1-a - Synthse : Mettre un mot de passe sur l'analyse....................................................................... 6 II-C-2 - Mot de passe sur les fichiers HyperFileSQL....................................................................................... 6 II-C-3 - Cryptage des fichiers HF..................................................................................................................... 6 II-C-3-a - Synthse : Protger un fichier HyperFileSQL............................................................................. 8 II-C-3-b - Conseil : Choix des mots de passe.............................................................................................8 II-C-4 - Modification des mots de passe HyperFileSQL...................................................................................8 II-C-4-a - Synthse : Modification du mot de passe par WDOUTILS......................................................... 8 III - Vulnrabilit des donnes et applications............................................................................................................ 8 III-A - Les DLL de Windev..................................................................................................................................... 9 III-B - Le point faible : les DLL de Windev.......................................................................................................... 10 III-C - La suppression des points faibles............................................................................................................. 11 III-D - Composant DataProtect.............................................................................................................................11 III-D-1 - II-D-1. Synthse : Mise en oeuvre de DataProtect 1.14................................................................... 11

-2Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2008 - Emmanuel Lecoester. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://windev.developpez.com/tutoriels/windev/protection-windev/

La gestion de la protection dans des applications WinDev par Emmanuel Lecoester Francis Morel

I - Les diffrents niveaux de protection I-A - Confidentialit des applications et des donnes
Pour s'assurer de la confidentialit des donnes, il faut : qu'intrinsquement le contenu des fichiers HyperFileSQL soit inaccessible, par quelque moyen (WDMAP, Editeur hexa...) que se soit, que l'application soient suffisamment protge pour empcher la dcouverte du mot de passe utilis en interne.

I-B - Protection contre les utilisations illicites


Une application protge contre des utilisations illicites est caractrise par une utilisation limite: un mode particulier (dmonstration par exemple) un ou plusieurs utilisateurs donns un nombre d'excutions spcifiques une date limite d'utilisation une version particulire ...

I-C - Intgrit des donnes


L'intgrit de la base de donnes, des liaisons... et le respect de ces rgles par le dveloppeur, l'utilisateur et l'application elle-mme, bien que lie la scurit des donnes, ne fait pas partie de ce document.

II - Confidentialit des applications et des donnes


Pour constater les volutions de Windev 7 et suivant un petit retour en arrire sur Windev 5.5 s'impose.

II-A - Historique - Protection des fichiers HF sous Windev 5.5


Bien que l'aide recommande d'utiliser 4 caractres minimum pour les mots de passes, le stockage dans le fichier HF est fait sur 2 octets, et encore sur chacun des ces octets seuls les codes 0x00 0x7f (127) sont utiliss. Soit au mieux 16129 possibilits. Dans ces conditions un algorithme simple en recherche par force brute est quasi-instantan. La protection des fichiers HyperFileSQL sous Windev 5.5 est donc totalement inoprante. L'utilisation de ces fichiers au format HF5.5 est donc proscrire pour les donnes sensibles.

II-B - Historique - Protection des Excutables


Toujours dans Windev 5.5, un simple diteur hexadcimal permet de visualiser quantit d'informations textuelles de la bibliothque. Tous les objets contenus dans la WDL sont clairement identifiables et pour chacun, tous les constituants sont aussi visibles. C'est d'ailleurs ce qui a permis la cration d'outils comme WDL.EXE, qui partir d'une bibliothque WDL, reconstituait toutes les fentres, images, classes, procdures....

-3Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2008 - Emmanuel Lecoester. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://windev.developpez.com/tutoriels/windev/protection-windev/

La gestion de la protection dans des applications WinDev par Emmanuel Lecoester Francis Morel

Pour peu que "Supprimer le code source la compilation" n'ai pas t coch lors de la cration, les objets reconstitus contenaient aussi le code source de l'application, sinon seul le Pcode cr tait prsent.

II-B-1 - Windev 7 et suivantes


Heureusement depuis Windev 7 les choses ont bien changs. L'entte des fichiers HF n'est plus limite en taille et les informations de protection (mots de passe et cryptage), sont stockes cryptes en quasi totalit. La bibliothque WDL est maintenant crypte/compacte et mme s'il tait possible de la dcrypter, le code source n'est plus jamais inclus. Seules quelques images restent accessibles en natif.Toutefois, dans certaines versions de Windev, l'inclusion des codes ncessaires l'utilisation de "Etat et Requtes" laissait, de faon incomprhensible, quelques informations textuelles dans le code de la WDL, voire mme une partie de code source de l'initialisation du projet.Un excutable windev est ainsi comparable un code obfusqu (impntrable), mme l'utilisation d'un dsassembleur ne permet pas la comprhension du code.En fait comme pour un programme obfusqu, la partie principale du code doit d'abord passer par une phase de dcompression, de dcryptage et d'interprtation avant d'tre excute. Seule la partie lanceur de Windev est "comprhensible" (en assembleur) dans un dbogueur.

II-B-2 - Depuis WinDev 11


On peut ainsi, en premire approche, raisonnablement penser que les applications Windev et les fichiers HyperFileSQL 11, 12 14 sont protgs efficacement, condition de respecter certaines rgles, objet de ce document.

II-C - Protection des fichiers HF avec WinDev


Actuellement il est possible de dfinir 3 types de protection dans HyperFileSQL Mot de passe sur l'analyse Mot de passe sur les fichiers HyperfileSQL Cryptage des fichiers HyperFileSQL

II-C-1 - Mot de passe sur l'analyse


Cette protection un double intrt : Eviter toute modification de l'analyse par une personne non autorise (mot de passe en dition) Empcher son utilisation dans une application non autorise (mot de passe en excution)

Par contre du fait de l'ouverture automatique de l'analyse associe une application, elle n'a aucun intrt pour assurer la confidentialit des donnes sans prcaution supplmentaire. Il faudrait ainsi utiliser HfermeAnalyse() ou quivalent puis HouvreAnalyse() dans le projet. La protection de l'analyse par un mot de passe en excution peut tre fait directement lors de la cration (tape 2) ou aprs cration dans l'onglet "Dtail" de sa description.

-4Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2008 - Emmanuel Lecoester. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://windev.developpez.com/tutoriels/windev/protection-windev/

La gestion de la protection dans des applications WinDev par Emmanuel Lecoester Francis Morel

Pour viter les demandes systmatiques chaque lancement du mode test ou lors de la gnration de l'excutable, le mot de passe en excution peut tre renseign dans l'onglet "Analyse" de la description du projet.

En remplissant ce champ le mot de passe de l'analyse ne sera plus demand ni en mode test, ni EN MODE EXECUTION. Il est crit crypt dans l'excutable.

-5Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2008 - Emmanuel Lecoester. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://windev.developpez.com/tutoriels/windev/protection-windev/

La gestion de la protection dans des applications WinDev par Emmanuel Lecoester Francis Morel

II-C-1-a - Synthse : Mettre un mot de passe sur l'analyse


Projet > Charger l'analyse Analyse > Description de l'analyse... > Onglet Dtail Mot de passe diteur (ouverture de l'analyse sous diteur) Mot de passe excution (ouverture de l'analyse en excution avec HOuvreAnalyse ou WDMAP) Projet > Description du projet > Onglet Analyse Mot de passe (aucun mot de passe ne sera alors demand lors de l'excution)

II-C-2 - Mot de passe sur les fichiers HyperFileSQL


Le mot de passe d'un fichier HyperFileSQL est dfini dans le code par programmation avec les fonctions HPasse(), HCration() et HcrationSiInexistant().Il n'est pas possible de dfinir directement un mot de passe dans l'diteur pour un nouveau fichier. Il n'est pas modifiable par programmation, pour un fichier existant Le mot de passe est demand lors de la modification automatique (par WdModfic) ou lors de l'ouverture par WDMAP. Utilis seul (sans cryptage) le mot de passe d'un fichier n'est d'aucun intrt vis--vis d'une protection des donnes. En effet le contenu en clair est visualisable avec un simple diteur hexadcimal.

II-C-3 - Cryptage des fichiers HF


Le cryptage des fichiers HyperFileSQL est dfini dans l'diteur d'analyse, pour chaque fichier dans l'onglet dtail de la description du fichier lui-mme.

-6Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2008 - Emmanuel Lecoester. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://windev.developpez.com/tutoriels/windev/protection-windev/

La gestion de la protection dans des applications WinDev par Emmanuel Lecoester Francis Morel

Ce cryptage peut tre spcifi sur les donnes elles-mmes, sur les index et sur les fichiers de mmo. Trois algorithmes en 128 bits sont proposs : Cryptage rapide optimis sur 128 bits Cryptage RC5 sur 12 boucles Cryptage RC5 sur 1- boucles

Le cryptage obtenu est natif, indpendant du mot de passe (voir aide HPasse). Aucune cl n'est demande pour effectue ce cryptage (probablement inscrite dans l'entte). Comme pour le mot de passe, utilis seul ce cryptage n'est que d'un intrt limit, le fichier est effectivement crypt mais visible dans WDMAP (ou tout appli WD pouvant ouvrir le fichier). Il est donc indispensable pour assurer la confidentialit des donnes d'activer le cryptage des donnes, des index et mmo ET d'ouvrir le fichier l'aide d'un mot de passe. Pour permettre la modification automatique des fichiers ainsi protgs, il faut aussi cocher "Activer la scurit renforce".

-7Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2008 - Emmanuel Lecoester. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://windev.developpez.com/tutoriels/windev/protection-windev/

La gestion de la protection dans des applications WinDev par Emmanuel Lecoester Francis Morel

II-C-3-a - Synthse : Protger un fichier HyperFileSQL


1 2 3 4 5 6 7 8 Projet > Charger l'analyse Structure de fichiers > Description > Onglet Dtail Slectionner le fichier protger Protection des donnes, activer le Cryptage (128 bits, RC5 12 boucles ou RC5 16 boucles) Cocher activer la scurit renforce Dans le code (de prfrence pas le code du projet) ouvrir les fichiers HyperFileSQL par HcrationSiInexistant("*","motdepasse") ou Hcration("*","motdepasse") ouutiliser Hpasse("*","motdepasse") Analyse > Gnration pour rgnrer l'analyse si ncessaire

II-C-3-b - Conseil : Choix des mots de passe


Utiliser au minimum 8 caractres. Utiliser des lettres (mots de passe insensibles la casse) ET chiffres ET caractres spciaux.Le mieux consiste mme utiliser des codes non imprimables. Eviter les mots courants issus des dictionnaires, prfrer une mini phrase. Construire le mot de passe, plutt que d'utiliser une chaine constante.En effet aprs l'interprtation du Pcode les chaines sont visibles clairement l'aide d'outils d'exploration de la mmoire.

II-C-4 - Modification des mots de passe HyperFileSQL


Il n'existe pas de possibilit directe de modification du mot de passe d'un fichier HF que celui-ci ait t mis dans le code ou modifi pralablement lors de la modification automatique du fichier. Ds que le fichier est cre, pour modifier ou supprimer le mot de passe il faut : soit changer le mot de passe lors de la modification automatique des fichiers (comme indiqu dans l'aide HPasse) soit utiliser le composant de la LST 64 "WD ChangeMotDePasse" soit crire une procdure interne ou un composant, qui l'aide des fonctions HAlias et HCopieEnregistrement effectue le transfert d'un fichier un autre

II-C-4-a - Synthse : Modification du mot de passe par WDOUTILS


1 2 3 4 5 Projet > Charger l'analyse Structure de fichiers > Rubriques Modifier la taille d'une rubrique existante ou ajouter une rubrique bidon Analyse > Gnration pour rgnrer l'analyse Lors de la modification Automatique HyperFileSQL (par WDOUTILS) - Cocher (ou ajouter si besoin) l'emplacement de recherche des fichiers modifier - Cocher les fichiers modifier dans la liste propose - Valider ventuellement la sauvegarde propose - Indiquer pour chaque fichier l'ancien mot de passe - Cocher "Je veux saisir ou changer les mots de passe" - Cocher chaque fichier et indiquer le nouveau mot de passe utiliser ValiderPenser changer le mot de passe dans votre code

III - Vulnrabilit des donnes et applications


Intrinsquement les fichiers HyperFileSQL peuvent rsister correctement une attaque par force brute, et disposent ainsi premire vue, d'une scurit satisfaisante.

-8Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2008 - Emmanuel Lecoester. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://windev.developpez.com/tutoriels/windev/protection-windev/

La gestion de la protection dans des applications WinDev par Emmanuel Lecoester Francis Morel

Le code gnr constitu par la bibliothque WDL compress et crypt est difficilement interprtable, mme avec un dsassembleur-dbogueur. Le point faible reste cependant les DLL associes indispensables au bon fonctionnement de l'application.

III-A - Les DLL de Windev


L'examen de ces dll, avec un simple diteur hexadcimal rvle quantits d'informations textuelles interprtables susceptibles d'tre utilises pour attaquer l'application.

En particulier, comme l'illustre l'image prcdente, l'identification des fonctions et des points d'entre est rendue aise par la proximit des noms des fonctions et des adresses mmoires correspondantes. Muni de ces informations et d'un simple dbogueur il est relativement ais d'obtenir les paramtres des fonctions de composante (les fonctions du WLangage). En particulier, illustr ici sur la fonction HPasse() un point d'arrt plac au bon endroit donne accs immdiatement au mot de passe du fichier (ici "FMLPASSWD" pour le fichier "FichPass3") quel qu'en soit la complexit.

-9Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2008 - Emmanuel Lecoester. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://windev.developpez.com/tutoriels/windev/protection-windev/

La gestion de la protection dans des applications WinDev par Emmanuel Lecoester Francis Morel

Il existe mme aujourd'hui, au moins une application "Hyper File Password Recovery Tool" (construite avec Windev) qui automatise tout ce processus et permet de retrouver les mots de passe perdus condition de disposer de l'application.

III-B - Le point faible : les DLL de Windev


Comme constat de cette analyse, on s'aperoit que quelle que soit la base de donnes utilise, pour casser la protection (mot de passe, cryptage...) d'une application Windev et accder ainsi aux donnes sensibles il suffit : d'avoir accs aux fichiers de la base de donnes d'avoir le fichier EXE ou WDL qui ralise le traitement intercepter que le mot de passe (ou code de cryptage) soit statique (indpendant du Pc, de l'utilisateur) que l'excutable ne soit pas protg du dbogage d'avoir la possibilit d'utiliser une session de dbogage

Les Dll de Windev 14 semblent dj un peu mieux protges et ne permettent pas, simplement, le fonctionnement en mode pas pas des dcompilateurs / dbogueurs.

- 10 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2008 - Emmanuel Lecoester. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://windev.developpez.com/tutoriels/windev/protection-windev/

La gestion de la protection dans des applications WinDev par Emmanuel Lecoester Francis Morel

Toutes les solutions qui permettent de supprimer une ou plusieurs de ces conditions contribueront la protection des donnes sensibles de l'application.

III-C - La suppression des points faibles


Ainsi parmi les solutions disponibles pour assurer la confidentialit des donnes on pourra donc : utiliser une application client/serveur ou les fichiers HyperFileSQL sont dans des dossiers inaccessibles, protgs en lecture, protger l'excutable contre les utilisations non autorises, utiliser des mots de passe dynamiques construits partir d'informations sres comme les caractristiques du PC, de Windows, des disques, de l'adresse MAC... intgrer un dispositif anti-dbogage dans l'excutable, pour empcher l'utilisation conjointe d'un dbogueur et le lancement par d'autres modules que Windows lui-mme.

Pour tre efficaces ces solutions doivent faire l'objet d'une attention toute particulire et ne peuvent aisment tre dcrites ici. Aussi le chapitre suivant prsente la solution anti-dbogage DataProtect.

III-D - Composant DataProtect


Ce composant, intgrable simplement dans les applications Windev 11, 12 ou 14 a pour principal but de restreindre (ou rendre plus difficile) les sessions de dbogage, interdisant ainsi : le lancement de l'application protge par un autre module excutable que Windows la pose de point d'arrt la consultation de la mmoire durant le fonctionnement de l'application

Il a t crit pour ne consommer que des ressources CPU limites 30 ms en mode rapide 300 ms en mode complet

Il dispose aussi d'un gnrateur de mots de passe dynamiques pour construire une chaine partir des caractristiques du serveur, de l'utilisateur, des disques... Il est disponible en tlchargement sur http://www.SoftProtect.fr

III-D-1 - II-D-1. Synthse : Mise en oeuvre de DataProtect 1.14

1 2 3

Tlcharger DataProtect (composant, documentation et exemple) et dezipper Dans le projet Windev protger : Atelier > Composant > Importer un composant dans le projet > A partir d'un fichier...Slectionner DataProtect.wdi et valider Dans l'diteur, Entourer chaque opration critique par le code suivant :

- 11 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2008 - Emmanuel Lecoester. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://windev.developpez.com/tutoriels/windev/protection-windev/

La gestion de la protection dans des applications WinDev par Emmanuel Lecoester Francis Morel

4 5 6

Au besoin crer vos mots de passe dynamiques par le code suivant : Crer l'excutable en intgrant le composant Dployer D'autres codes plus complets sont disponibles dans l'aide du composant

- 12 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2008 - Emmanuel Lecoester. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://windev.developpez.com/tutoriels/windev/protection-windev/