[QST] Dev de sécurité logiciel

Tout sur les langages de programmation.

[QST] Dev de sécurité logiciel

Messagepar hannibal.76 » 03 Décembre 2012, 10:02

Bonjour a tous,

je viens vous demandez conseil sur la fabrication de sécurité logiciel.
En effet je ne comprend pas comment faire pour que mon code de soit pas facilement faillible.

Par exemple voici le schéma d'une sécu que j'ai dev (C++)
hxxp://www.imagup.com/data/1169190895.html
(Le client n'a pas accès au server)

Donc ici je pense que la faille ce trouve du codé soft, lorsque je check le retour du serveur.
Vue que tout ce retrouve basé sur un if. Il suffit de changer ce if par un if not et hop la secu est brisé.

Donc auriez vous de piste, des liens de doc,etc sur la maniéré de générer une protection un peux moins passoire.

Merci d'avance pour votre aide.
try{
I know HTML & CSS
(How To Meet Ladies) & (Countless Sex Styles)
}
catch(...){
Just play with me :D
}
Avatar de l’utilisateur
hannibal.76
Crackeur expert
Crackeur expert
 
Messages: 240
Inscription: 27 Août 2007, 21:31

Re: [QST] Dev de sécurité logiciel

Messagepar etherlord » 03 Décembre 2012, 10:38

Un schéma comme ça, il n'y avait pas vraiment besoin de le joindre en tant qu'image :D

Donc ici je pense que la faille ce trouve du codé soft, lorsque je check le retour du serveur.
Vue que tout ce retrouve basé sur un if. Il suffit de changer ce if par un if not et hop la secu est brisé.


C'est la problématique de base de toute protection....et tu imagine bien que si les logiciels actuels sont encore 'cassables' alors que de nombreux
développeurs se creusent sur le sujet depuis des années, c'est que ce n'est pas si simple que ça....

Les solutions, entre autres il y a celles auquelles tu t'est heurté en tant que cracker.

- implémenter des anti-debug un peu moins flagrant que l'appel à IsDebuggerPresent
- ne pas baser sa protection sur un seul if..... (multiplier les conditions, vérifications à de multiples endroits du soft qui ne font pas appel à une fonction....)
- aller chercher du code sur le serveur (uniquement si le serial est valide) : cette solution pose de gros problèmes (nécessite connexion permanente), d'un autre
coté ton implémentation pose le même problème... ne pas négliger le cas ou le client ne peut pas atteindre le serveur
- vérification interne de l'intégrité de ton code (il y a moyen d'aller plus loin qu'un CRC....)
- obfuscation du code

etc.....

le principal pour moi serait de faire preuve d'un peu d'imagination et de justement, ne pas recopier les méthodes actuellement appliquées, même si elles
semblent atractives...

etherlord
etherlord
Triumvirat
Triumvirat
 
Messages: 2476
Inscription: 22 Mars 2004, 16:12

Re: [QST] Dev de sécurité logiciel

Messagepar hannibal.76 » 03 Décembre 2012, 11:12

Oui, le schéma était pour que cela soit le plus explicite possible. Mais c'est vrai qu'il est un peux inutile :D

Le problème est que je n'ai jamais implémenté de protection, donc pour l'instant, je ne peux pas être créatif. Il faut tout d’abord que j'apprenne les méthodes de base.
Donc si tu avais quelque liens ou même le sources de quelque crackme/keygenme que tu trouve pas mal, cela me permettrai de voir les méthodes possibles et je pourrai ensuite faire de l'original
(et pourquoi pas vous les proposé en crackme :D )
try{
I know HTML & CSS
(How To Meet Ladies) & (Countless Sex Styles)
}
catch(...){
Just play with me :D
}
Avatar de l’utilisateur
hannibal.76
Crackeur expert
Crackeur expert
 
Messages: 240
Inscription: 27 Août 2007, 21:31

Re: [QST] Dev de sécurité logiciel

Messagepar Horgh » 03 Décembre 2012, 11:46

Au risque de lancer un débat, je pense que de la crypto (bien utilisée) est également une bonne option, ça permet de renforcer la sécurité du schéma de protection et de décourager les 'petits' crackers (inconvénient, la crypto attire les grosses teams :') )
Avatar de l’utilisateur
Horgh
Maître des ténèbres
Maître des ténèbres
 
Messages: 526
Inscription: 21 Janvier 2010, 16:24

Re: [QST] Dev de sécurité logiciel

Messagepar Bango » 03 Décembre 2012, 11:55

hannibal.76 a écrit:(et pourquoi pas vous les proposé en crackme :D )

Oh oui :D

Horgh m'a coupé l'herbe sous le pied ;)
Crypto + Obfuscation + Anti-debug "originaux" sont largement suffisants pour décourager le néophyte (pas le passionné qui aime le défi de taille...mais contre ça, il n'y aucune protection ;) )

D'autant plus que là tu parles de vérification d'un serial saisi, mais n'as-tu pas également intégré une simple variable IsRegistered? ou un truc du genre :roll:

M'enfin, à coup d'ECC 128 bits, RSA 2048 en planquant un minimum les clefs pour éviter le trop rapide +patch... associé à quelques bâtons dans les roues, et en bonus un check serveur (perso, en tant qu'utilisateur, j'aime po être obligé d'être co), avec des hiddens checks à gogo et réellement hidden et vicieux, tu seras à l'abri pour un moment :D
\ô/
Avatar de l’utilisateur
Bango
Modérateur
Modérateur
 
Messages: 1527
Inscription: 23 Juillet 2007, 15:33
Localisation: Gotham city

Re: [QST] Dev de sécurité logiciel

Messagepar hannibal.76 » 03 Décembre 2012, 12:04

La question est, tu pense a crypter quoi ?
Pour l'instant je crypte que les connexions extérieure (socket SSL).

D'autant plus que là tu parles de vérification d'un serial saisi, mais n'as-tu pas également intégré une simple variable IsRegistered? ou un truc du genre


Sur le serveur oui, il y a ce type de méthode. Pourquoi, cela pose problème ?

Après je peux peut être calculer un hash sha-256 de mon exe, l'envoyé direct au serveur qui le vérifiera en plus du serial.
Mais cela peut etre la aussi faillible, si on arrive a forcer l'envoie de la bonne valeur.
try{
I know HTML & CSS
(How To Meet Ladies) & (Countless Sex Styles)
}
catch(...){
Just play with me :D
}
Avatar de l’utilisateur
hannibal.76
Crackeur expert
Crackeur expert
 
Messages: 240
Inscription: 27 Août 2007, 21:31

Re: [QST] Dev de sécurité logiciel

Messagepar Bango » 03 Décembre 2012, 13:42

>Sur le serveur oui, il y a ce type de méthode. Pourquoi, cela pose problème ?

Alors, un utilisateur "légal" ne peut lancer le software en étant enregistre sans connexion? :shock:
Ça ne me plairait pas :cry:
Après pourquoi pas, mais il suffit de renvoyer la bonne valeur au test IsRegistered, et même pas besoin de réfléchir au serial :roll:

Tu as l'air d'être attaché a la vérification par serveur. Parceque tu penses que c'est plus efficace ou c'est une nécessité?
Quand on parle de crypto, c'est plus sur une vérification d'un numéro de série.
Il n'y a pas de limites à l'imagination, ça peut être un keyfile (ou même 2, avec des multichecks) dont le contenu est chiffre avec un algo modifie type blowfish, aes, des en masquant au maximum la clef, puis une vérification sur le contenu avec signature ras 2048 (encore une fois, il faut chercher à masquer la clef au Max), et/ou de l'ecc. Tu en décourageras une grande partie :D
Maintenant, rien n'est infaisable... :D tu pourras toujours tomber sur un Gus qui va y passer nuit et jours jusqu'à y arriver.
Comme dit etherlord, si LA solution existait, ça se saurait :wink: mais tu peux quand même ecarter les crackeurs du dimanche.
\ô/
Avatar de l’utilisateur
Bango
Modérateur
Modérateur
 
Messages: 1527
Inscription: 23 Juillet 2007, 15:33
Localisation: Gotham city

Re: [QST] Dev de sécurité logiciel

Messagepar hannibal.76 » 03 Décembre 2012, 15:08

Tu as l'air d'être attaché a la vérification par serveur. Parceque tu penses que c'est plus efficace ou c'est une nécessité?

Un peux des deux. Je suis obligé de faire ceci pour la gestion de droit, en fonction de la clé, il n'y a pas les même fonctionnalité d’accessible.
Enfin, après je pense qu'il y a moyen de ce passer du serveur.
Tu pense que passer par un serveur n'est pas forcement plus complexe a détourner ?
Enfin, le fait est que actuellement il y a déjà une protection avec un serveur (local par contre) et même avec mes faibles connaissance je n'ai aucun problème pour le détourné.

Comme dit etherlord, si LA solution existait, ça se saurait mais tu peux quand même ecarter les crackeurs du dimanche.

Sa je le sais bien, avec du temps et des connaissance tout est possible.

Maintenant, rien n'est infaisable... tu pourras toujours tomber sur un Gus qui va y passer nuit et jours jusqu'à y arriver.

Sa me plait bien moi d'avoir des gens qui trouve une solution de contournement, temps qu'il m'explique par ou ils sont passé ;)

Je vais voir comment faire pour masquer la clé, car actuellement j'ai testé de passer par du RC4 (dans le flux ssl) mais le clé de chiffrage reste en clair.
Si je stocke la clé du RC4 mais modifier avec un xor , cela suffit t'il pour masquer un peut la clé ?
try{
I know HTML & CSS
(How To Meet Ladies) & (Countless Sex Styles)
}
catch(...){
Just play with me :D
}
Avatar de l’utilisateur
hannibal.76
Crackeur expert
Crackeur expert
 
Messages: 240
Inscription: 27 Août 2007, 21:31

Re: [QST] Dev de sécurité logiciel

Messagepar Bango » 03 Décembre 2012, 16:37

hannibal.76 a écrit:Je suis obligé de faire ceci pour la gestion de droit, en fonction de la clé, il n'y a pas les même fonctionnalité d’accessible.

Rien ne t'empêche d'intégrer les notions de droits/modules/fonctionnalités/délais d'expiration/etc... dans le contrôle de la clef ;) (surtout avec un fichier licence)

hannibal.76 a écrit:Tu penses que passer par un serveur n'est pas forcément plus complexe a détourner ?

Je ne pense pas. Comme l'a évoqué etherlord, il y a également la possibilité de récupérer du code absent du soft (avec les inconvénients que cela implique pour l'utilisateur :roll: ), seulement une fois que l'utilisateur a validé sa licence, mais un petit leak par exemple et c'est fini.
Je ne pense pas que ce soit complexe, c'est différent.

hannibal.76 a écrit:ça me plaît bien moi d'avoir des gens qui trouvent une solution de contournement, temps qu'il m'explique par où ils sont passés ;)

Je doute malheureusement que tu n'aies un retour :D

hannibal.76 a écrit:Je vais voir comment faire pour masquer la clé, car actuellement j'ai testé de passer par du RC4 (dans le flux ssl) mais la clé de chiffrage reste en clair.
Si je stocke la clé du RC4 mais modifiée avec un xor , cela suffit-il pour masquer un peu la clé ?

Ça suffit pour la masquer "un peu" ;) Dans tous les cas, c'est toujours mieux qu'en clair, même si de toute façon, la clef sera bien initialisée à un moment ou à un autre. Tu peux aussi modifier l'algo de chiffrement pour qu'il ne soit pas 'standard', faudra au moins que le gars qui s'y colle soit capable d'identifier la modification...et ça peut aussi empêcher les sniffers de signature de détecter l'algo.

M'enfin, à mon avis, rien ne vaut un bon vieux fichier licence bien tordu, avec plein de hiddens, mais ça n'est que mon avis :P
\ô/
Avatar de l’utilisateur
Bango
Modérateur
Modérateur
 
Messages: 1527
Inscription: 23 Juillet 2007, 15:33
Localisation: Gotham city

Re: [QST] Dev de sécurité logiciel

Messagepar hannibal.76 » 03 Décembre 2012, 16:41

M'enfin, à mon avis, rien ne vaut un bon vieux fichier licence bien tordu, avec plein de hiddens, mais ça n'est que mon avis

Et bien écoute, je vais me renseigné sur les fichiers de licence car je ne comprend rien a ta phrase :D
try{
I know HTML & CSS
(How To Meet Ladies) & (Countless Sex Styles)
}
catch(...){
Just play with me :D
}
Avatar de l’utilisateur
hannibal.76
Crackeur expert
Crackeur expert
 
Messages: 240
Inscription: 27 Août 2007, 21:31

Re: [QST] Dev de sécurité logiciel

Messagepar Bango » 03 Décembre 2012, 17:24

hannibal.76 a écrit:je ne comprends rien à ta phrase

Bah je ne m'exprime pas trop mal pourtant non? :)

Bon je vais te donner un exemple, ça vaut rien, c'est un exemple hein:

Admettons, tu récupères un fichier d'info de l'utilisateur, et tu crées ça:
--- LICENCE ---
DateInstall 03122012 | MACAdress CRC_DU_MAC | Mod1 Pro | Mod2 ProPlus | UserName Papa | Signature xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | Checksum1 1234 | Checksum2 456789 |.........
--- END ---

(tu n'es pas obligé d'utiliser des mots si explicites - UserName, signature, checksum....)
Tu chiffres en blowfish modifié (ou rsa, obligé de factoriser/patcher la private pour recréer un fichier) les params avec une clef récupérée sur le hardware de l'utilisateur ( N° de volume, adresse mac, sid, ce que tu veux quoi)
Tu mets une signature de oufzor (ecc, rsa) , en masquant les clefs publiques tant que faire se peut, et tu crées ta signature avec seulement les 2premiers chars + l'avant dernier char de chaque param (ou tous ou la somme de chaque lettre du param, etc...)
Tu rajoutes des petits checksums de ton invention
Tu peux donc mettre en params tout un tas de module, fonctionnalités etc..., et calculer des checksums dessus
Tu chiffres ensuite le tout en aes, ou des ou que sais-je , et hop, ta vérif de licence devrait avoir un peu de gueule :)

Ensuite, tu ne contrôles pas tout dans l'ordre à la suite dans une seule grosse routine, ça permet au reverser de bien s'organiser, et tu t'en donnes à cœur joie dans les hiddens, ça peut être aléatoire, un chrono, à l'exécution d'une fonctionnalité, etc,etc,etc, faut faire preuve de créativité.

Voualà, moi c'est comme ça que je ferais. C'est aussi une question de goût :)
\ô/
Avatar de l’utilisateur
Bango
Modérateur
Modérateur
 
Messages: 1527
Inscription: 23 Juillet 2007, 15:33
Localisation: Gotham city

Re: [QST] Dev de sécurité logiciel

Messagepar Todd » 03 Décembre 2012, 21:14

Salut,

c'est un sujet passionnant. :D

Je trouve aussi que le serveur n'apporte pas grand chose en terme de sécurité et côté développement ça demande encore plus de connaissances. :roll:
Par contre, l'utilisation d'un serveur peut apporter un suivi très utile sur la véritable popularité d'un programme et dénombrer les versions crackées, mais aussi "forcer" les mises à jour afin de tester si certaines techniques sont plus efficaces que d'autres. :wink:

J'ai entendu l'autre jour qu'aujourd'hui le succès d'un film ne se mesure plus seulement sur les entrées au cinéma, mais aussi sur les téléchargements illégaux ! :shock:

Beaucoup de logiciels sont développés et s'adaptent seulement aux besoins du ou des auteurs, mais malheureusement ces mêmes logiciels évoluent sans tenir compte des habitudes des utilisateurs :? ... même si je vous donne l'impression de m'éloigner du sujet :| ... le rapport est qu'il n'y aurait aucun intérêt à blinder une protection en passant 6 mois dessus, alors qu'on atteint difficilement les 10 téléchargements. :P

Todd
Avatar de l’utilisateur
Todd
Modérateur
Modérateur
 
Messages: 1795
Inscription: 19 Avril 2009, 12:11

Re: [QST] Dev de sécurité logiciel

Messagepar baboon » 04 Décembre 2012, 09:54

Ce qui est très simple a dev et très efficace pour les "petits softs" (comprendre pour les quels il y a peu de probabilité qu'une clé soit leakée) c'est tout simplement de chiffrer le code de l'exe avec une clé contenue dans la licence (et éventuellement dépendante de paramètre hardware comme le n° de série du disque dur, l'adresse mac de la carte réseau etc. (bien que je ne sois pas fan de ce type de méthode ca emmerde toujours le consommateur, mais ca réduit encore plus le risque de leak de clé)).

Tu rajoutes à ça une petite signature RSA 2048 / ECC 256 et tu es tranquille, sans un serial leaké (+ éventuellement les paramètres HW) le cracker ne peut rien faire.
Pour ce qui est du chiffrement du code tu le fais tout simplement en utilisant des balises dans ton code C / C++ (en utilisant __emit(0xXX) [Visual C Compiler] ou asm __volatile__ (".byte 0xXX"); (GCC) par exemple, ne pas oublier de virer les optimisations comme l'inline pour ces fonctions) et en chiffrant le binaire à partir de ces marqueurs une fois la compilation terminée.
Newbie mais ayant soif d'apprendre et étant motivé
Avatar de l’utilisateur
baboon
Modérateur
Modérateur
 
Messages: 3279
Inscription: 08 Juillet 2005, 17:49

Re: [QST] Dev de sécurité logiciel

Messagepar Martinooooo » 04 Décembre 2012, 14:46

baboon a écrit:Ce qui est très simple a dev et très efficace pour les "petits softs" (comprendre pour les quels il y a peu de probabilité qu'une clé soit leakée) c'est tout simplement de chiffrer le code de l'exe avec une clé contenue dans la licence (et éventuellement dépendante de paramètre hardware comme le n° de série du disque dur, l'adresse mac de la carte réseau etc. (bien que je ne sois pas fan de ce type de méthode ca emmerde toujours le consommateur, mais ca réduit encore plus le risque de leak de clé)).


Je plussoie le plus ce message. Il n'y a qu'à regarder Artisteer qui a une fonction isReg et qui a son module de sauvegarde des fichiers crypté par du gros RSA décryptable qu'avec une clé valide (et en plus il n'est téléchargeable sur le serveur qu'avec une clé valide). Et il a beau être connu, il faut attendre des mois pour avoir des leaks.
Acme::Don't
Acme::Bleach
Acme::Pony
Lingua::Romana::Perligata
The Lingua::Romana::Perligata makes it makes it possible to write Perl programs in Latin. (If you have to ask "Why?", then the answer probably won't make any sense to you either.)
Avatar de l’utilisateur
Martinooooo
Maître des ténèbres
Maître des ténèbres
 
Messages: 575
Inscription: 19 Août 2008, 08:20
Localisation: DR8, le + utile DRx

Re: [QST] Dev de sécurité logiciel

Messagepar hannibal.76 » 04 Décembre 2012, 14:57

Merci a tous pour tout ces précisions.
Je vais bien étudier tout cela et vous proposez un petit crackme/keygenme lorsque je serai satisfait du résultat ;)
try{
I know HTML & CSS
(How To Meet Ladies) & (Countless Sex Styles)
}
catch(...){
Just play with me :D
}
Avatar de l’utilisateur
hannibal.76
Crackeur expert
Crackeur expert
 
Messages: 240
Inscription: 27 Août 2007, 21:31

Suivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot] et 1 invité