Premiers pas.

Sur tout ce qui concerne la sécurité des réseaux et systèmes avec leur protection et comment les contourner.

Premiers pas.

Messagepar PPG » 28 Mai 2016, 00:00

Bonjours à tous,
je viens de m'inscrire sur le forum mais ça fait quelques jours que je le feuillette pour tenter de comprendre le fonctionnement.
Bon avant tout, je pensais connaitre quelques petites choses vu que dans mon travail je programme des cartes électroniques et finalement je suis obliger d'admettre que je suis une bille.

Je me suis lancer comme défi il y a 3 semaines de craquer un logiciel de gestion de restaurant. Il est proposé en libre téléchargement sur le site, en version complète mais verrouillée par un serial à mon avis codé par rapport au nom d'utilisateur. En plus je n'ai pas d'exemple de base ni de blacklisté. Le logiciel est très simpliste et la sécurité pas très poussée non plus, à mon avis.

Donc j'ai pris un désassembleur et j'ai balancé mon .exe. J'ai d'abord passé un bonne nuit de sommeil quand j'ai vu la tronche du truc puis j'ai cherché. J'ai compris qu'il fallait commencer pas trouver une ligne associée au système de cryptage (j'ai surement un vocabulaire d'un enfant de 4 ans mais je tente de me faire comprendre avec ce que j'ai) et ensuite suivre tout le cheminement pour encadrer la partie sécurité. Donc j'ai cherché des mots clés associés à la page du serial genre ( activation key, enter your name...) rien. Alors j'ai compris que c'était encore mais facile que je ne le pensais et je me suis senti tout petit petit petit et LA! j'ai décider de demander conseil, au moins pour savoir comment démarrer.

Je parle pas de faire de moi un grand hacker en 10 jours mais juste un petit panneau directionnel.
Le logiciel s'appelle Zat...yoo (sans les points), si quelqu'un veut bien regarder et m'aiguiller (genre le nom du type de sécurité, si c'est réussissable pour un novice comme moi, quels logiciels je peux ou doit utiliser...) oui me mâcher un peu ma première bouillie quoi.
Je sais que c'est pas le truc de la maison de donner du tout cuis et de toute façon j'en veux pas. C'est pas aider les gens que d'en faire des assistés, mais là :shock: me faut un peu de lumière SVP.

Merci d'avance de vos réponses, positives ou négatives, je prend tous les conseils.
Avatar de l’utilisateur
PPG
 
Messages: 5
Inscription: 27 Mai 2016, 23:04

Re: Premiers pas.

Messagepar aaSSfxxx » 28 Mai 2016, 09:53

Bonjour,

Tout d'abord je te conseille de regarder ce post. Aussi, ce serait bien de préciser quel désassembleur tu utilises (je parie w32dasm, vu qu'il est omniprésent dans les tutos vieillots qui peuplent le net :mrgreen: )

Sinon le gros hint que j'ai à donner c'est de passer sur un vrai désassembleur, IDA Pro :D (version payante mais des leaks sont dispo sur le web, ou sinon la version démo qui devrait être largement suffisante pour ce que tu veux faire).
Avatar de l’utilisateur
aaSSfxxx
Elève
Elève
 
Messages: 46
Inscription: 29 Novembre 2011, 17:53

Re: Premiers pas.

Messagepar PPG » 28 Mai 2016, 17:10

Effectivement, merci des conseils je crois que j'ai de quoi potasser avec tout ca.
Merci :)
Avatar de l’utilisateur
PPG
 
Messages: 5
Inscription: 27 Mai 2016, 23:04

Re: Premiers pas.

Messagepar PPG » 29 Mai 2016, 10:32

Bonjours, j'ai récupéré IDA Pro, c'est vrai qu'il a l'air bien plus complet.
J'ai donc buché sur les cours que j'ai pu trouver et la plupart disent de trouver un élément de la partie sécurité (genre la phrase d'erreur de la boite de dialogue). Je n'ai pas réussi à trouver d'ou viens la boite de dialogue. Alors je tente de prendre le problème dans un autre sens.
J'ai déjà pu observer une version enregistrée du programme donc je vois les différences de fonctionnement par rapport à la version d'essai.
La toute première page qui s'affiche en version d'essai permet de choisir les options proposées par différentes licences. J'en ai donc déduit qu'il n'existe pas un serial pour un nom mais plusieurs, soit un pour chaque type de licence. Ensuite, je sais que lorsque le programme est enregistré, la première page devient le menu principal avec ou sans les différentes options selon la licence choisie. Donc, si je commence à comprendre à un moment donné, au démarrage, il doit comparer une valeur extérieur (genre dword) et si =0, jump sur la page de choix des options. Donc si je trouve la valeur extérieur je peux retrouver ou elle est incrémentée donc la partie concernant la saisie du serial.

Ma question c'est est-ce que ce que je raconte tiens la route ou j'ai rien compris?
Avatar de l’utilisateur
PPG
 
Messages: 5
Inscription: 27 Mai 2016, 23:04

Re: Premiers pas.

Messagepar Martinooooo » 29 Mai 2016, 11:43

Chercher un == 0 à l'aveuglette dans un programme, c'est comme chercher une aiguille dans une botte de foin.
La base de l'analyse de programmes natifs x86 (sauf les crackme super faciles ou pour ceux qui aiment se faire du mal) c'est l'analyse dite "dynamique", c'est à dire liée à un debugger type ollydbg / x64dbg / le debugger interne d'IDA Pro (je ne suis pas fan mais il y en a qui l'utilisent) avec des beaux breakpoints.

Avant de se jeter à corps perdu, la première chose à faire est donc d'arriver à identifier d'où vient la limitation.
Par exemple s'il y a un message de type MessageBox qui dit au démarrage "version non enregistrée", il faut mettre des breakpoints sur MessageBoxA/W (voire CreateWindow/Ex si c'est une messagebox bien custom) et ensuite regarder la call stack (la pile d'appel) pour identifier d'où la fonction MessageBox a été appelée... et ainsi tracer où a été faite la comparaison qui a induit cet appel (attention, sur des programmes un peu complexes ou faits à partir de lib GUI particulières, tu peux avoir à remonter 10 call depuis le call MessageBox pour trouver la comparaison). Une fois que tu as la comparaison qui induit ou non cette MessageBox, tu as ton point d'appel pour chercher tout le reste et savoir quoi patcher.
En gros, tu utilises les API GUI de Windows pour identifier où sont créés les éléments du GUI qui indiquent que ton logiciel n'est pas enregistré (je t'ai donné l'exemple de la MessageBox, mais ça peut aussi être le texte d'un label par exemple, tu viseras plutôt SetWindowText, si possible avec un breakpoint conditionnel sur le texte qui t'intéresse sinon tu vas te retrouver avec 25000 "F5" à faire).

Tu peux aussi utiliser en statique les "string references", s'il y en a. S'il n'y en a pas, ils sont en général dans les resources du soft [cf resourcehacker etc] et il faut donc chercher le numéro de la ressource et à quel moment elle est initialisée par le GUI. A part si le programme est packé, c'est très rare que les strings soient chiffrés/cachés.

En gros: il faut pas hésiter à mettre des breakpoints partout, à modifier les flags/jump pour voir si t'as vu juste ou pas et bien utiliser sa bible des WinAPI: https://msdn.microsoft.com/en-us/library/windows/desktop/ff818516(v=vs.85).aspx
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: 571
Inscription: 19 Août 2008, 08:20
Localisation: DR8, le + utile DRx

Re: Premiers pas.

Messagepar PPG » 05 Juin 2016, 22:59

Re, je suis toujours sur mon programme. Visiblement j'ai sous estimé les programmeurs.
J'ai jeté un œil avec ces mots clés j'ai effectivement trouvé une messageboxa mais vu le nombre de messages du même type que celui de la clé incorrect, je doute que ce soit celui ci. De plus, aucun des mots apparaissant dans le logiciel ne sont inscrits dans le programme. Il doit donc y avoir un fichier annexe qui les contient mais quel type de fichier ça pourrait être? Par contre il y a souvent des mots "lisiblement" suivie de ".txt" mais ils ne correspondent pas à des fichiers externent existants... Ou du moins je ne les aient pas trouvés.
J'ai un nouvel élément. J'avais gardé une copie complète du programme avec licence dans un fichier que j'ai transféré sur mon PC perso.
Quand je l'ouvre de mon PC perso il est de nouveau "en évaluation" donc les données de licences sont forcément stockées ailleurs que dans le fichier d'installation (ce qui doit être le cas de 95% des logiciels mais bon...) J’avoue que je suis paumé... J'ai essayé sur un autre logiciel (FaststoneCapture) voir un peu si c'est moi qui comprenais rien mais ça va j'ai réussi a trouver la zone même si je n'ai pas trouvé la méthode exacte (j'ai pas trop cherché non plus vu que je suis sur zatyou), mais là, je crois que c'est bien plus costaud... Je pense que si quelqu'un pouvais jeter un œil au programme pour au moins avoir une opinion d'un expert ou une piste ça m'aiderais bien. J'ai jamais vu ce genre de fonctionnement. Même certaines explications pourrait je pense me donner des indices du style "entrer un code de désinstallation à l'endroit de la clé pour changer de version"???? Fin voila help svp. Si c'est non pour le coup de main je continuerais quand même a chercher et posterais mes découvertes si il y a mais j'ai un peu le sentiment d'apprendre le chinois avec un dictionnaire anglais-français là... Merci des réponses en tout cas ça m'aide vachement à comprendre. A bientot
Avatar de l’utilisateur
PPG
 
Messages: 5
Inscription: 27 Mai 2016, 23:04

Re: Premiers pas.

Messagepar Martinooooo » 06 Juin 2016, 00:07

J'ai l'impression que tu n'as pas bien saisi ce que je voulais dire. A te lire on a l'impression que tu n'as fait qu'une analyse statique (et une analyse statique, il vaut mieux l'éviter à part si on bosse sur un programme linux avec tous les noms de fonction en clair ou qu'on est un mastermind de la prog). Comme je dis au-dessus: si le programme affiche une messagebox qui te dit "pas bon", tu mets un bp sur messagebox (a/w/exa/exw, tout il est possible) et tu regardes d'où ça vient... etc...
Tu devrais commencer un peu par les bases avant de te jeter sur ta cible, ça ne marche que rarement de débuter sur sa cible (moi le premier... ma première cible j'y ai passé un sacré paquet de temps sans bien avancer au final, puis j'ai abandonné et quelques années après, j'ai commencé "sérieusement" le reverse engineering avec des bases saines (crackmes, tutos, essayer de comprendre ce que je fais autrement qu'en appuyant sur F2/F8/F5 dans tous les sens) et maintenant je le fais la main dans le slip en 4min avec 5g dans le sang. En gros: ne te jette pas dans la gueule du loup.
http://www.forumcrack.com/web/tutos-ga/ ... rs%200.htm is the way to go.
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: 571
Inscription: 19 Août 2008, 08:20
Localisation: DR8, le + utile DRx


Retourner vers Sécurité informatique

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

cron