Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les failles des applications.

Sujet résolu
Anonyme
    27 octobre 2006 à 13:21:32

    Salut a tous!

    Hier soir, je me suis posez une question:

    Comment les "hackers" font pour "trouver" une faille dans un processus autrement dit un executable?


    Exemple:
    Lsass et le ver sasser

    Voilas a partir de là j'ai voulu en connaitre un peu plus sur le piratage.


    J'ai donc crée un executable qui demande un nom et un mot de passe
    pour pouvoir ouvrire une page web (Google :soleil: ) (jai utilise curl pour sa)... et la...

    JAI UNE TITANESQUE QUESTION:
    COMMENT UN TYPE POURRAIT CONNAITTRE LE PASS ET LE LOGIN QUE DEMANDE MON EXE? o_Oo_O

    Voilas cela me tracasse car même en etant programmeur les "hackers" reste sur certains points (comme celui la) des magiciens pour moi :euh: .
    Or j'aimerai connaitre leur façons de procédés.
    Bien sûr je ne compte pas en devenir un (Sa tourne en rond un moment :-° ) mais juste connaitre leur "manière de faire".

    Et apartir de là, savoir si certaines choses dans mes applications sont
    vulnérables ou pas.

    PS: Eviter toute sorte de morale ou extrait de loi je les connait déja. :-°
    -Ne dite pas comment "faire" mais simplement la "façon" sans rentré dans les détails.

    Merci d'avance! :D

    @++
    • Partager sur Facebook
    • Partager sur Twitter
      27 octobre 2006 à 13:28:07

      Citation

      COMMENT UN TYPE POURRAIT CONNAITTRE LE PASS ET LE LOGIN QUE DEMANDE MON EXE? o_Oo_O


      Facile : si en lisant les sources de ton programme, on peut trouver le pass et le login, alors il existe un moyen (que je ne connais pas, mais qui existe forcément) de le retrouver à partir de l'exe.

      Si en changeant les sources de ton programme, on peut retirer la protection offerte par le pass et le login, alors il existe un moyen (que je ne connais pas, mais qui existe forcément) de retirer cette protection en modifiant l'exe.

      Bref, fait des programmes libres, ça t'obligera à les sécuriser :)

      Quelles méthodes de sécurité peux-tu employer ? Toutes celles qui sont sûres quand le programme est open-source.
      Par exemple tu peux demander à l'utilisateur d'envoyer le pass à une page web distante que tu contrôle, et qui elle donnera au programme le droit d'accès à la page que tu veux ouvrir avec curl (par exemple en renvoyant un ticket temporaire d'authorisation).
      Comme ça, le pass n'est pas stocké dans ton programme, mais dans la base web distante, et tu ne peux avoir la page finale qu'en possenssion du mot de passe. Donc un pirate qui s'attaque uniquement à ton programme ne peut pas casser cette protection.
      • Partager sur Facebook
      • Partager sur Twitter
        27 octobre 2006 à 13:29:17

        Si tu veux comprendre, lis quelque cour sur le craking.
        C'est se que j'ai fais( mais je ne souhaite pas utiliser mes connaissances pour pirater des applications )et mintenant je comprend comment ils font.
        Ils le font graçe à un editeur hexadecimal.
        PS : je ne dit pas cela pour insiter qui que se soit à devenir craker.Je ne fais que répondre à la question.
        • Partager sur Facebook
        • Partager sur Twitter
        http://tuclictugeek.fr - Avis et Test sur Jeux-vidéo et Mangas
          27 octobre 2006 à 13:31:35

          Sans vouloir paraître alarmiste, je suis pas sûr que ce sujet tiendra longtemps s'il s'oriente vers le cracking et non la sécurité des logiciels.
          • Partager sur Facebook
          • Partager sur Twitter
            27 octobre 2006 à 13:32:55

            tu peux aussi dessasembler un programme mais bon là il faut comprendre l'assembleur et c'est pas gagné
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              27 octobre 2006 à 13:33:33

              blazé o_O
              j'avait pas pense a sa.
              par contre je ne te suit pas ten:
              un editeur hexadecimal... euuhhh oui, mais il va m'apporté koi celui la? :/
              ou plutot il va faire koi celui la?! o_O
              • Partager sur Facebook
              • Partager sur Twitter
                27 octobre 2006 à 13:41:14

                T'afficher en clair les chaines de caractères ! :D
                • Partager sur Facebook
                • Partager sur Twitter
                  27 octobre 2006 à 13:41:43

                  Si tu stockes ta chaîne de caractère en clair dans ton code source alors il est accessible depuis l'exécutable via n'importe quel éditeur hexadécimal. il est aussi possible de fouiller la mémoire du processus de ton programme pour essayer de récupérer le mot de passe en clair depuis la mémoire.

                  Si tu veux un peu de documenter il existe un outil Open-Source qui s'appelle Password Safe et qui représente un peu le "cocktail" de tous ce qu'on peut faire pour contrer les pirates (il est sur SourceForge). Il y'a aussi un article de "Programmation sous Linux" qui en parle et qui est disponible sur leur site : http://rock.linux.com.pl/proglinux/fr/modules/wmpdownloads/viewcat.php?cid=1 ("Mesures de sécurité sous PasswordSafe")
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    27 octobre 2006 à 13:44:23

                    aaaa okiii :) sa m'eclaire !

                    j'ai donc lu mon exe a partir d'un hediteur exadecimal:
                    jai après de longue minute reusis a trouve le pass et le login mais!
                    tout en sachant que dans la collone de droite c'est de l'hexadecimal et dans la colone de gauche c'est les chaines de caracteres telle quel.
                    Mais alors:
                    pourquoi il y a des chaine de caractere du genre:

                    ce programme ne peut pas etre lancer sous ms dos
                    ou
                    ─M↔yyyyy

                    alors que ces chaines ne sont absolument pas presentes dans ma source? o_O ?!!

                    mais a part voir les differente chaine de caractere dans un exe.Esqu'il y a d'autre "truc" interressant pour le hacker apart "les chaines de caractere" situer dans mon exe? :/

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 octobre 2006 à 13:52:40

                      ─M↔yyyyy ne sont pas des chaines de caractère, c'est du code binaire affiché en héxadecimal, donc ca n'a pas forcement de sens pour un etre humain ! :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 octobre 2006 à 13:52:50

                        Soit le code suivant :

                        #include <stdio.h>
                        #include <stdlib.h>
                        #include <string.h>


                        int main(void)
                        {
                            const char* user = "ddxs";
                            const char* pass = "lol";

                            char _user[128];
                            char _pass[128];

                            printf("\n[?]User : ");
                            memset(_user, 0, sizeof(_user));
                            fgets(_user, sizeof(_user), stdin);
                            *(_user + strlen(_user) - 1) = 0;

                            printf("\n[?]Password : ");
                            memset(_pass, 0, sizeof(_pass));
                            fgets(_pass, sizeof(_pass), stdin);
                            *(_pass + strlen(_pass) - 1) = 0;

                            if (strcmp(user, _user) == 0)
                            {
                                if (strcmp(pass, _pass) == 0)
                                    printf("\n[+]Connected.");
                                else
                                    printf("\n[-]Bad password.");
                            }
                            else
                                printf("\n[-]Bad login.");

                            return 0;
                        }



                        Je le compile, je l'ouvre tout simplement avec NotePad :

                        Image utilisateur


                        Quant au cracking, il ne consiste pas forcément à trouver le passwd mais aussi à détourner ta protection sans pour autant avoir trouvé le passwd.

                        Comment stocker des informations dans un .exe en sécurité ? :

                        En utilisant des outils de cryptage très puissants tel l'algorithme Md5.
                        Dans ce cas l'éxecutable stockerait le mot de passe crypté en md5 donc même si le hacker le trouve il aura peu de chances de le décrypter.
                        Le programmme ressemblerait à ça :


                        /* [...] */
                        const char* hash_pass = "9cdfb439c7876e703e307864c9167a15" /* Hash md5 du mot "lol" */
                        /* [...] */
                        if (strcmp(md5(_pass), hash_pass) == 0)
                        /* [...] */


                        C'est ce que font la plupart des systèmes d'indentification PHP utilisant la BDD :)
                        Pour ce faire il faut implémenter l'algorithme Md5 à votre programme, chose que je n'ai jamais faite mais je sais que c'est possible ^^'

                        ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 octobre 2006 à 13:57:04

                          En gros, on utilise StudPE pour voir les protections d'un programme, si il est packé ou non. Si c'est le cas, on le unpack.
                          Après on utilise un désassembleur, plusieurs existe comme W32DASM pour voir le programme en assembleur. Puis on cherche les sauts dans le programme au alentour de l'endroit ou il y a écrit le pass et le pseudo.
                          A partir de là, on fait plusieurs break pour que le débugger, nous affiche le test qui s'effectue. Sinon on modifie le saut. C'est à dire que si le pass est faux on envoi vers le message d'erreur, et si c'est le bon on envoi vers le bon message, donc on modifie pour que ça envoi toujours vers le bon message comme sa, même sans connaître le passe, on peut utiliser l'application.
                          Plusieurs type de sauts existent : je/jne/jmp/jnp/jp etc qui correspond chacun à un équivalent en héxadécimal, c'est pour ça qu'on utilise un éditeur héxadécimal.
                          Grâce à l'offset que nous donne le désassembleur, on trouve exactement la bonne ligne dans l'éditeur héxadéciml, et là on modifie les sauts en remplaçant 74 par 75 par EB par truc etc.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            27 octobre 2006 à 14:08:44

                            Citation : ddx39

                            Pour ce faire il faut implémenter l'algorithme Md5 à votre programme, chose que je n'ai jamais faite mais je sais que c'est possible ^^'


                            http://www.openssl.org/
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              27 octobre 2006 à 14:16:48

                              a oki :)
                              et pour ce qui est du ver sasser il a fait comment lui?
                              ou plutot quesqu'il a été interressant pour lui de prendre des trucs dans Lsass? :)
                              a koi sa lui a servi en gros?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                27 octobre 2006 à 14:27:24

                                Citation : charly90

                                COMMENT UN TYPE POURRAIT CONNAITTRE LE PASS ET LE LOGIN QUE DEMANDE MON EXE? o_Oo_O

                                Les essayer tous :) .
                                C'est ce que M@teo21 et Xplosif ont fait sur les 4 cadenas qui gardaient leur serveur (j'ai fait ça aussi sur un antivol que j'avais trouvé par terre, sauf que là c'est plus facile vu qu'on repère un peu à l'oreille...).
                                Chacun avait une combinaison de chiffres qui ensemblent formaient un nombre situé entre 000 et 999.
                                Ça s'appelle un "brut force", ou du "brut forcing".
                                C'est pour ça que quand tu râtes ton premier mot de passe sous Linux, il attend un peu, si tu le râtes une deuxième fois, il attend encore plus longtemps, etc...
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  27 octobre 2006 à 14:48:59

                                  Citation : Bogoris

                                  Citation : charly90

                                  COMMENT UN TYPE POURRAIT CONNAITTRE LE PASS ET LE LOGIN QUE DEMANDE MON EXE? o_Oo_O


                                  Les essayer tous :) .
                                  C'est ce que M@teo21 et Xplosif ont fait sur les 4 cadenas qui gardaient leur serveur (j'ai fait ça aussi sur un antivol que j'avais trouvé par terre, sauf que là c'est plus facile vu qu'on repère un peu à l'oreille...).
                                  Chacun avait une combinaison de chiffres qui ensemblent formaient un nombre situé entre 000 et 999.
                                  Ça s'appelle un "brut force", ou du "brut forcing".
                                  C'est pour ça que quand tu râtes ton premier mot de passe sous Linux, il attend un peu, si tu le râtes une deuxième fois, il attend encore plus longtemps, etc...



                                  Complètement irréalisable !
                                  Le nombre de possibilité d'un mot de passe à n caractères différents pris parmi n carctères possibles est (n!) [alors avec des possibilités de carctères identiques ... :-° ]
                                  De plus, on peut prendre n aussi grand qu'on veut là !
                                  Donc si n tends vers l'infini, le nb de mot de passe possible tend aussi vers l'infini ;)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    27 octobre 2006 à 17:23:43

                                    Citation : Pierre89

                                    Citation : Bogoris

                                    Citation : charly90

                                    COMMENT UN TYPE POURRAIT CONNAITTRE LE PASS ET LE LOGIN QUE DEMANDE MON EXE? o_Oo_O


                                    Les essayer tous :) .
                                    C'est ce que M@teo21 et Xplosif ont fait sur les 4 cadenas qui gardaient leur serveur (j'ai fait ça aussi sur un antivol que j'avais trouvé par terre, sauf que là c'est plus facile vu qu'on repère un peu à l'oreille...).
                                    Chacun avait une combinaison de chiffres qui ensemblent formaient un nombre situé entre 000 et 999.
                                    Ça s'appelle un "brut force", ou du "brut forcing".
                                    C'est pour ça que quand tu râtes ton premier mot de passe sous Linux, il attend un peu, si tu le râtes une deuxième fois, il attend encore plus longtemps, etc...



                                    Complètement irréalisable !
                                    Le nombre de possibilité d'un mot de passe à n caractères différents pris parmi n carctères possibles est (n!) [alors avec des possibilités de carctères identiques ... :-° ]
                                    De plus, on peut prendre n aussi grand qu'on veut là !
                                    Donc si n tends vers l'infini, le nb de mot de passe possible tend aussi vers l'infini ;)


                                    Seulement un ordi est capable de tellement d'opération par seconde qu'il peut très bien le faire même si ça peut prendre deux trois jours, des programmes tel que John the Ripper sont spécialement dédié à ca (brute force). Une autre alternative est l'attaque par dictionnaire mais ces deux techniques sont facilement contrable en instaurant un temps de latence entre chaque saisie du mot de passe pour la première et pour la deuxième l'utilisation d'une valeur "sel" peut faire l'affaire.

                                    (et puis, ho, ta déjà vu un mot de passe d'humain classique faire plus de 10-15 caractère :D )
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      27 octobre 2006 à 17:45:38

                                      Citation : charly90

                                      j'ai donc lu mon exe a partir d'un hediteur exadecimal:


                                      'h' character badly located. Please check your GPS equipment

                                      Citation : Pas de titre


                                      Mais alors:
                                      pourquoi il y a des chaine de caractere du genre:

                                      ce programme ne peut pas etre lancer sous ms dos
                                      ou
                                      &#9472;M&#8596;yyyyy

                                      alors que ces chaines ne sont absolument pas presentes dans ma source? o_O ?!!


                                      Elles le sont dans le code de démarrage (celui qui appelle main() et dans les bibliothèque statiques.

                                      Citation : Pas de titre


                                      mais a part voir les differente chaine de caractere dans un exe.Esqu'il y a d'autre "truc" interressant pour le hacker apart "les chaines de caractere" situer dans mon exe? :/


                                      Il peut désassembler ton code, voire tenter une rétro-génération du code source C, qui sera évidemment différent du tien, difficile à lire, incomplet, mais qui peut renseigner sur la structure du code.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Music only !
                                      Anonyme
                                        27 octobre 2006 à 17:46:32

                                        je ne vais pas faire les calculs mais avec un code de 10 caractères (chiffres et lettres) ça doit donner quelque chose comme: xxx possibilités, alors en moyenne l'ordinateur le plus puissant du monde devrait mettre quelques centaines de millions d'années à le retrouver.

                                        mais c'est sûr que pour un pass de trois lettres c'est simple...
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          27 octobre 2006 à 17:59:47

                                          Citation : 0v3rb1t

                                          je ne vais pas faire les calculs mais avec un code de 10 caractères (chiffres et lettres) ça doit donner quelque chose comme: 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 possibilités


                                          non ça fait "seulement" 839 299 365 868 340 224 possibilités, soit 62^10 (62 == 26 * 2 + 10 pour deux fois 26 lettres et 10 chiffres)
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            27 octobre 2006 à 18:02:57

                                            Citation : 0v3rb1t

                                            je ne vais pas faire les calculs mais avec un code de 10 caractères (chiffres et lettres) ça doit donner quelque chose comme: 100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 possibilités, alors en moyenne l'ordinateur le plus puissant du monde devrait mettre quelques centaines de millions d'années à le retrouver.

                                            mais c'est sûr que pour un pass de trois lettres c'est simple...



                                            Non, tu te trompes, 10 caractères alpha-numeriques, sans caractères spéciaux, c'est pas beacoup, en quelques heures seulement c'est tout à fait possible avec un processeur moyen ;)
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              27 octobre 2006 à 18:12:22

                                              Apparement mon post a servi à rien...
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                27 octobre 2006 à 18:15:44

                                                Citation : Conficius

                                                Apparement mon post a servi à rien...

                                                :lol:;)
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Music only !
                                                  27 octobre 2006 à 18:15:57

                                                  Citation : Conficius

                                                  Apparement mon post a servi à rien...



                                                  Si, ce que tu as dit c'est les bases du cracking.
                                                  C'est juste que là ça a un peu dérivé sur le brute forcing ^^'
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  Anonyme
                                                    27 octobre 2006 à 18:19:39

                                                    le brute forcing c'est efficace que sur de petits mots de passe avec de très bons algorithmes
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      27 octobre 2006 à 18:24:00

                                                      Citation : 0v3rb1t

                                                      le brute forcing c'est efficace que sur de petits mots de passe avec de très bons algorithmes


                                                      C'est pour cela que je n'ai pas parlé du brute forcing.
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Anonyme
                                                        27 octobre 2006 à 19:05:57

                                                        abon ...quoiquil en soit vous n'avez toujour pas repondu a ma deuxieme question! :)
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          27 octobre 2006 à 19:08:12

                                                          Citation : charly90

                                                          et pour ce qui est du ver sasser il a fait comment lui?
                                                          ou plutot quesqu'il a été interressant pour lui de prendre des trucs dans Lsass?



                                                          Faut dire que ta deuxième question a beacoup dérivé par rapport à ta question initiale :p .
                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                          Anonyme
                                                            27 octobre 2006 à 19:15:04

                                                            ben je voit pas en quoi des chaine de caractere dans lsass lui aurait ete utilile!
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              27 octobre 2006 à 20:33:22

                                                              -> Sasser

                                                              Le ver Sasser n'en a que faire des informations contenues dans lsass.exe, celui-ci utilise juste une faiblesse (une faille) présente dans l'éxecutable (BoF ?) pour faire ce qu'il a à faire (se propager). ;)
                                                              Si tu me demande de t'expliquer comment il fait, je ne saurais pas te répondre, heuresement d'ailleurs, si la création de telles oeuvres d'art serait à la portée de tout le monde Microsoft aurait du souci à se faire ;)
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Les failles des applications.

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown