Entrez vos identifiants

x
OU
Vous avez oublié votre mot de passe ?
Utilisateur wiki : vous n'aviez pas d'email ?

Korben - Site d'actualité geek et tech

Go Top


BarWF – Cracker un mot de passe MD5 à la vitesse de l’éclair

BarWF est sans doute l'un des crackeur de mot de passe crypté en MD5 les plus rapide. Il utilise le chipset de votre carte graphique et peut bruteforcer un mot de passe sur une GeForce Nvidia 9600GT à une vitesse de 350 000 clés à la seconde.

Ça fonctionne sur des systèmes à base de SSE2 (Pentium 4, Core2duo, Athlon64, Sempron64, Phenom) et c'est optimisé pour les cartes graphiques GTX260, GTX280, 8800GT, 9600GSO, 8800GS, 8800GTS et les Windows 64 bits. (Mais ça marche aussi sur du 32 bits)

Bref, si ça vous intéresse, vous pouvez avoir toutes les infos et télécharger BarWF ici.

[photo]

Facebook Twitter Email Copier Url

74 Responses to “BarWF – Cracker un mot de passe MD5 à la vitesse de l’éclair”

  1. Lea dit :

    Bon, l’info est super intéressante mais comment dire…..

    Ceci : “mot de passe crypté en MD5” est pour la cryptologue que je suis une énormité. Je développe : MD5 est une fonction de hachage et non un algo de chiffrement. Donc on ne peut pas chiffrer un mot de passe avec MD5, on ne peut que le “hacher”. La principale (et énorme) différence est que dans un chiffrement il y a une histoire de clé, dans une fonction de hachage, il n’y en a pas. N’importe qui connaissant le message d’origine peut recalculer le haché.
    Donc, ce logiciel, qui m’a l’air très intéressant par ailleurs, permet de retrouver le mot de passe à partir de son haché (ou condensé) MD5.

    Pour plus d’info :
    http://fr.wikipedia.org/wiki/MD5
    http://fr.wikipedia.org/wiki/Fonction_de_hachage
    http://fr.wikipedia.org/wiki/Chiffrement

    P.S : contrairement à mon discours de l’autre jour sur chiffrer/crypter, là ce n’est pas une question de niveau de langue….

  2. C’est ce genre d’article qui m’a poussé à compliquer la tache des attaque par brute force (qui sont déjà envisageable qu’en local).
    J’ai décidé d’utiliser un autre algorithme de hachage nommé SHA-1 (plus puissant que MD5), de lui ajouter des caractères spéciaux (arbitraire) et de le re-haché en MD5. Cette méthode à pour conséquence qu’en cas d’intrusion sur le serveur ou sur l’ordinateur client, la personne devra, avant de trouver votre mot de passe, trouver un mot de passe de plus de 40 caractères ! Ce qui a pour effet, à l’heure actuelle, d’allonger la durée du traitement du cracking par Brute Force de quelques centaines d’années ;).

  3. PoP dit :

    Arf, j’avais écrit “MD5 est un hachage pas un cryptage” et puis je me suis dit que j’allais passer pour un grincheux à poster ça comme premier commentaire.
    Merci Lea! :-p

  4. Piwaï dit :

    J’appuie Lea et PoP, surtout que je suis en train de lire un énoooorme bouquin sur ce genre de truc (Network Security – PRIVATE communication in a PUBLIC World, que d’ailleurs je conseille car il est très détaillé), et effectivement on ne crypte pas en md5. Une fonction md5 est irréversible, on n’est pas censé pouvoir revenir au contenu d’origine.

    En l’occurrence, c’est désormais possible, il me semble que c’est à cause de certaines faiblesses du MD5. Mais ça demande quand même un certain temps.

    Christophe Jean > Je crois, mais je peux me tromper, que tout ce que tu fais là est globalement inutile, à part allonger le temps de hashage. Utiliser SHA-1 avec un salt devrait largement suffire, et rajouter une touche de md5 par dessus je n’en vois pas trop l’intérêt, tu pourrais tout aussi bien faire deux SHA-1 de suite, ou 10… enfin bref.

    Merci en tout cas Korben pour l’info, cela confirme le MD5 est définitivement à abandonner.

  5. Mich dit :

    Le site indique 350 M keys/sec, pour ma part je comprend 350 millions de clés par seconde et non “seulement” 350 000 clés/sec.

    Dommage que je n’ai pas de geforce 9xxx

  6. Mathieu dit :

    Sur ma GTX260 il monte a 600M/s + 150M/s sur le Q6600 :D

  7. PoP dit :

    Je sais pas pourquoi, mais quand je lis GTX je peux pas m’empêcher de voir une Fuego… :-D

  8. MatC dit :

    Hum, je vais tester ça, l’avantage de cet outils est d’être gratuit :)

    Dans le même genre, très puissant et surtout très complet, il y a ElcomSoft Distributed Password Recovery (http://www.elcomsoft.com/edpr.html) ;)

  9. nephtys dit :

    Omg je vien de tester c’est de la folie j’ai casser mon mdp avec ma 8800gts en 3 sec lol

  10. Pierre dit :

    Il n’empêche que de nombreux sites continuent de stocker les mots de passe en md5.

  11. coolmic dit :

    > Piwaï, si l’attaquant connaît le salt, et la méthode de hachage, je ne pense pas que ça le protège du brute force, le seul moyen de se défendre contre un brute force, c’est d’avoir soit un mot de passe super long, soit une fonction de hachage couteuse en temps de calcul (et encore, les PC deviennent de plus en plus puissants)!

    Le salt protège contre les attaques au dico, rainbow table, etc..

  12. Paganel75 dit :

    >> un mot de passe super long <<

    … ou une demande de mot de passe de type challenge/answer, contre laquelle les attaques en force brute, même lentes (3 essais par jour vers des dizaines de milliers de machines différentes, par exemple) ne peuvent rien.

    J’ai administré un jour un AIX où, quand le bon mot de passe était donné, on regardait de quand dataient les 4 tentatives infructueuses précédentes sur le même compte. Si elles dataient toutes de moins d’une heure, on répondait “Mot de passe incorrect” même si le mot de passe était correct. Il fallait pour débloquer le système un mot de passe de débloquage suivi cette fois-ci du bon mot de passe. De quoi décourager la brute force :-)

  13. PoP dit :

    Si y’en a que la crypto intéresse : http://www.ecrypt.eu.org/

  14. coolmic dit :

    La limitation du nombre de tentative marche bien contre les force brute!
    Mais dans mon exemple, c’est dans l’hypothèse que l’attaquant possède déjà le mot de passe hashé, l’algorithme complet du hashage effectué, et le salt si il y’en a un!
    Par exemple dans le cas où j’ai accès à une base de données d’un forum IPB avec des milliers d’inscrit, je suis sur que une partie des inscrits utilisent le même mot de passe sur le forum et sur gmail ou hotmail, IPB utilise un simple salt avec plusieurs hashage MD5, si j’arrive à trouver le mot de passe, j’aurais accès à son compte mail.

  15. Michael dit :

    @Korben, Miche et Mathieu : Testé et re-testé, c’est bien 350 000 000 key/sec qui sont annoncé sur le site, donc 750 millions pour Mathieu (oui on frise bien le milliard à la seconde, vous lisez correctement) ;)

    Par contre le soft nécessite encore beaucoup d’améliorations au niveau fonctionnel. Je le compare par exemple à Md5Bruter de timwarriner (faite un tour sur Google) qui lui permet de gérer les pauses, le découpage multi thread, core et machine, et surtout la recherche simultanée de plusieurs hash (bien pratique selon l’utilisation n’est-ce pas? :p)

  16. YDFiX dit :

    Votre steack, vous le voulez haché ou crypté ?! :-P

  17. Michail dit :

    I’m the author of thins thing :-)
    Active development is still in progress.
    Max speed is 3.6 billions/sec on 4x9800GX2 (screenshot on the forum).
    Initial research on AMD cards shows ~950mil on AMD 4870@800Mhz.

  18. Gilles dit :

    Ca dit pas combien de temps en moyenne faut pour un passe “moyen”, non ?
    Car s’il faut toujours 1 an pour décrypter un mot de passe car ce n’est plus “toto” le plus courant…

  19. Michail dit :

    AMD beta is out :-)

  20. YoyoS dit :

    I made 1062MHash/s with GPU 4870 not overclocked and a Q6600 overclocked to 3.2Ghz (90MHash/s) Total: 1150MHash/s !!!

  21. paulita dit :

    Sinon il y a les rainbow tables de hash md5.
    exemple site base de donnée : http://pollydevstorm.zapto.org/md5/index.php

  22. bauer dit :

    j’ai récupéré un ordi potable mais il y a un mot de passe pour ouvrir comment je pe faire pour m’en servir et enlever se mot de passe ? quelqu’un peut me renseigner ici?

  23. Gaiso dit :

    Bonjour je cherche comment ”hacker” un mot de passe habbo hotel (jeux en réseau) j’ai téléchargé barWF mais sans succé ou dumoin je n’arrive pas a le manipulé pouvez-vous m’aidez svp.

  24. Elfe dit :

    Bonjour,

    Je vous défie de cracker ce mot de passe haché en Md5 :

    7ad6d818e5e75bb2c3aa21a068203a4f

    Voyons voir si c’est si facile… :)

  25. Lea dit :

    @elfe : Q6600 overclocked to 3.2Ghz (90MHash/s) Total: 1150MHash/s !!!

    alors, convaincu? ;)

  26. Elfe dit :

    @ Lea : 100% Con-vaincu, lol

    mais très décu aussi… T_T
    Quel outil as-tu utilisé ? BarWF ?

    C’est vraiment important de hacher le mdp, même en JS.
    Ca évite de se le faire sniffer.

    Je pensais qu’un mot long avec quelques caractères spéciauxrésisterait car ni md5crack.com, ni Ophcrack n’arrivent à cracker les mdp un longs.

    En plus je viens de passer 2 heures à protéger le mot de passe de mon site avec un hachage javascript md5 afin que le mot de passe ne passe pas en clair sur le réseau. Et j’avais mis une bonne protection anti-Hack coté serveur.

    Est-il possible de hacher un mot de passe avec SHA-1 ou plus solide en javascript ??
    pour le md5 j’utilisais celui-là :
    http://actuel.fr.selfhtml.org/articles/javascript/md5/index.htm

  27. Elfe dit :

    @ lea : Je viens de trouver ce script js pour hacher en SHA-1 : http://www.movable-type.co.uk/scripts/sha1.html

    Ca vaut le coup tu penses, que je l’utilise pour mon site web ou c’est aussi crackable comme le md5 ?
    VOICI le mot de passe haché en SHA-1 : 948c5c77e30b9e359cdbbef227224ac92bc217b3

    Peut tu le cracker aussi ? Quelqu’un ici le peut-il ?
    Je ne préfère jurer de rien cette fois… ^^
    J’attends l’avis des Hackers. Puis-j’implémenterai ça sur mon site si c’est du solide.

  28. Lea dit :

    Pour casser ton MD5, je ne me suis pas embêtée. J’ai utilisé http://www.authsecu.com/decrypter-dechiffrer-cracker-hash-md5/decrypter-dechiffrer-cracker-hash-md5.php

    Utiliser SHA1 est une nette amélioration ^^ Bien que l’on commence à trouver des collisions sur SHA1… si tu peux utiliser SHA256 c’est idéal sinon SHA1 est une solution temporaire viable. Le NIST (l’organisme américain de standardisation) a lancé un concours pour une nouvelle fonction de hachage qui deviendra le nouveau standard. Pour l’instant le gagnant n’est pas encore connu et donc encore moins présent dans les bibliothèques JS :P Et pour les paranoïaques sachez qu’il y a 2 fonctions françaises qui sont dans les finalistes ;)

    Pour des informations à jour te permettant de savoir quel algorithme utiliser (et avec quelle taille de clé pour les signatures/chiffrements/MAC), le mieux est de se référer aux données publiées par le réseau d’excellence européen en crypto ECRYPT II. Pour 2010 le rapport est là: http://www.ecrypt.eu.org/documents/D.SPA.7.pdf

    Si tu as d’autres questions, n’hésite pas ;)

  29. Elfe dit :

    @ lea : D’accord, j’oublie définitivement le md5.
    Voici le script que je vais utiliser, en SHA256 comme tu le recommandes :

    http://www.movable-type.co.uk/scripts/sha256.html

    Merci vraiment de tes conseils!
    Je m’intéresse à la crypto et j’étudie les travaux d’Eric Filiol.

    J’entends tellement dire partout que les mots de passe
    circulent en clair sur le réseau et qu’on peut les sniffer facilement que j’ai décidé de résoudre ce problème. Voilà qui est fait je pense. :)
    merci!

  30. Elfe dit :

    @ Lea : Finalement, le SHA-256 n’est pas très solide non plus… :(

    Comme à chaque texte haché corespond toujours le même résultat,
    il suffit donc de créer une table de correspondance pour toutes les combinaisons possibles. Exemple :

    a = ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
    b = 3e23e8160039594a33894f6564e1b1348bbd7a0088d42c4acb73eeaed59c009d
    ab= fb8e20fc2e4c3f248c60c39bd652f3c1347298bb977b8b4d5903b85055620603
    etc.

    Enfantin ensuite de classer les correspondances dans une table ordonnée alphabétiquement.Ce qu’ont déjà commencé à faire les crackers…

    le mot “bonjour” haché en SHA-256 donne : 2cb4b1431b84ec15d35ed83bb927e27e8967d75f4bcd9cc4b25c8d879ae23e18

    Le site http://sha256.free.fr/site/index.php?pg=sha256
    trouve la solution en 1 seconde. Nul doute qu’une base de donnée plus complète, (comme doit en avoir la NSA depuis longtemps) peut déchiffrer le SHA-256 aussi facilement que le md5. Vu qu’à chaque séquence correspond une séquence unique.

    Je ne peut me contenter d’une système aussi facile à retourner.
    1: Je vais donc mettre au point mon propre système de chiffrage en javascript.
    (je vais créer ma propre variante (aléatoire) du code de Vignère : analyse de fréquence impossible.)

    2: Puis chiffrer ce code javascript de façon très solide, afin que cela prenne plusieurs semaines à casser par un éventuel cracker de haut niveau, et ne soit pas à la portée du premier script-kiddie venu de faire la retro ingénierie.

    3: Changer chaque semaine (informatiquement) mon système de chiffrement.

    Qu’en penses-tu ?

  31. Lea dit :

    Je pense que tu ne veux pas une fonction de hachage. Si ton objectif est d’obtenir de la confidentialité, les fonctions de hachage ne sont pas faites pour ça! Une fonction de hachage assure l’intégrité.

    Donc la question est :
    Est-ce que tu peux mettre en place une clé secrète commune entre ton client et ton serveur? Si c’est le cas, le plus efficace est d’utiliser un chiffrement à clé secrète (typiquement AES, et regarde dans le rapport que j’ai déjà cité pour la taille optimal de la clé). Attention pour plus de sécurité il est conseillé d’avoir une clé commune pour chaque paire client-serveur…. donc ça peut être vite énorme en taille si tu as beaucoup de clients.

    Si tu as un problème quelconque pour partager ta clé secrète ou que tu souhaites limiter le nombre de clés nécessaires, alors utilise du chiffrement à clé publique. Tu dois avoir RSA dans une de tes bibliothèques. De même regarde dans le rapport pour la taille de clé la plus efficace dans ton cas.

    Saches que faire son propre schéma de chiffrement est un métier. Il existe de nombreuses attaques possibles et le faire “au pif au mètre” peut donner un schéma cassable très rapidement ;)

    Enfin, changer de schéma de chiffrement toutes les semaines est inutile si tu utilise un schéma sûr (comme RSA ou AES), par contre si tu est paranoïaque tu peux changer les clés toutes les semaines ^^

  32. Elfe dit :

    Voici à quoi ressemble mon code javascript une fois rendu illisible :

    var _0x6f07=[“\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65″,”\x6C\x65\x6E\x67\x74\x68″,”\x63\x65\x69\x6C”,”\x63\x68\x61\x72\x43\x6F\x64\x65\x41\x74″,”\x70\x6F\x77″,”\x66\x6C\x6F\x6F\x72″,”\x74\x6F\x48\x65\x78\x53\x74\x72″,”\x70\x72\x6F\x74\x6F\x74\x79\x70\x65″,””];function sha256Hash(_0xd4d0x2){var _0xd4d0x3=[0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,0xd807aa98,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2];var _0xd4d0x4=[0x6a09e667,0xbb67ae85,0x3c6ef372,0xa54ff53a,0x510e527f,0x9b05688c,0x1f83d9ab,0x5be0cd19];_0xd4d0x2+=String[_0x6f07[0]](0x80);var _0xd4d0x5=_0xd4d0x2[_0x6f07[1]]/4+2;var _0xd4d0x6=Math[_0x6f07[2]](_0xd4d0x5/16);var _0xd4d0x7= new Array(_0xd4d0x6);for(var _0xd4d0x8=0;_0xd4d0x8<_0xd4d0x6;_0xd4d0x8++){_0xd4d0x7[_0xd4d0x8]= new Array(16);for(var _0xd4d0x9=0;_0xd4d0x9<16;_0xd4d0x9++){_0xd4d0x7[_0xd4d0x8][_0xd4d0x9]=(_0xd4d0x2[_0x6f07[3]](_0xd4d0x8*64+_0xd4d0x9*4)<<24)|(_0xd4d0x2[_0x6f07[3]](_0xd4d0x8*64+_0xd4d0x9*4+1)<<16)|(_0xd4d0x2[_0x6f07[3]](_0xd4d0x8*64+_0xd4d0x9*4+2)<<8)|(_0xd4d0x2[_0x6f07[3]](_0xd4d0x8*64+_0xd4d0x9*4+3));} ;} ;_0xd4d0x7[_0xd4d0x6-1][14]=((_0xd4d0x2[_0x6f07[1]]-1)*8)/Math[_0x6f07[4]](2,32);_0xd4d0x7[_0xd4d0x6-1][14]=Math[_0x6f07[5]](_0xd4d0x7[_0xd4d0x6-1][14]);_0xd4d0x7[_0xd4d0x6-1][15]=((_0xd4d0x2[_0x6f07[1]]-1)*8)&0xffffffff;var _0xd4d0xa= new Array(64);var _0xd4d0xb,_0xd4d0xc,_0xd4d0xd,_0xd4d0xe,_0xd4d0xf,_0xd4d0x10,_0xd4d0x11,_0xd4d0x12;for(var _0xd4d0x8=0;_0xd4d0x8<_0xd4d0x6;_0xd4d0x8++){for(var _0xd4d0x13=0;_0xd4d0x13<16;_0xd4d0x13++){_0xd4d0xa[_0xd4d0x13]=_0xd4d0x7[_0xd4d0x8][_0xd4d0x13];} ;for(var _0xd4d0x13=16;_0xd4d0x13<64;_0xd4d0x13++){_0xd4d0xa[_0xd4d0x13]=(sigma1(_0xd4d0xa[_0xd4d0x13-2])+_0xd4d0xa[_0xd4d0x13-7]+sigma0(_0xd4d0xa[_0xd4d0x13-15])+_0xd4d0xa[_0xd4d0x13-16])&0xffffffff;} ;_0xd4d0xb=_0xd4d0x4[0];_0xd4d0xc=_0xd4d0x4[1];_0xd4d0xd=_0xd4d0x4[2];_0xd4d0xe=_0xd4d0x4[3];_0xd4d0xf=_0xd4d0x4[4];_0xd4d0x10=_0xd4d0x4[5];_0xd4d0x11=_0xd4d0x4[6];_0xd4d0x12=_0xd4d0x4[7];for(var _0xd4d0x13=0;_0xd4d0x13>>_0xd4d0x17)|(_0xd4d0x18<>>3);} ;function sigma1(_0xd4d0x18){return ROTR(17,_0xd4d0x18)^ROTR(19,_0xd4d0x18)^(_0xd4d0x18>>>10);} ;function Ch(_0xd4d0x18,_0xd4d0x1e,_0xd4d0x1f){return (_0xd4d0x18&_0xd4d0x1e)^(~_0xd4d0x18&_0xd4d0x1f);} ;function Maj(_0xd4d0x18,_0xd4d0x1e,_0xd4d0x1f){return (_0xd4d0x18&_0xd4d0x1e)^(_0xd4d0x18&_0xd4d0x1f)^(_0xd4d0x1e&_0xd4d0x1f);} ;Number[_0x6f07[7]][_0x6f07[6]]=function (){var _0xd4d0x21=_0x6f07[8],_0xd4d0x22;for(var _0xd4d0x8=7;_0xd4d0x8>=0;_0xd4d0x8–){_0xd4d0x22=(this>>>(_0xd4d0x8*4))&0xf;_0xd4d0x21+=_0xd4d0x22.toString(16);} ;return _0xd4d0x21;} ;

    Pensez-vous que c’est suffisant comme protection ?
    Qu’en pensent également les geeks et hackers de korben.info ?
    Quelqu’un peut-il rétablir ce javascript ou le “déchiffrer” afin d’ accéder au mot de passe ?

  33. Elfe dit :

    @ lea:

    Les hachages sont pour vérifier l’intégrité d’un fichier, d’accord.
    Mais alors pourquoi ya t-il des sytèmes pour cracker md5, SHA-256 ? Cela veut dire que comme moi, beaucoup utilisent ce système (à tort) pour chiffrer les mots de passe. Grosse erreur donc!

    à la question : “Est-ce que tu peux mettre en place une clé secrète commune entre ton client et ton serveur?” Réponse : Oui, exactement.

    L’utilisateur tape son mot de passe, javascript le chiffre, puis côté serveur, php compare (sans le déchiffrer) à celui stocké sur le serveur.
    Si on ne peut pas “déchiffrer” le javascript, la protection du mdp me parait valable et il ne circule plus en clair sur le réseau. Qu’en penses-tu ?

  34. Lea dit :

    Les systèmes pour cracker les fonctions de hachages sont là pour casser le fait qu’une fonction de hachage est une fonction à sens unique… Et puis pour casser les codes des gens qui utilisent, à tord, une fonction de hachage comme méthode de chiffrement…..

    Je ne développe pas en JS donc ton code ne me dira rien… Par contre, ce que tu me dis sur ton protocole c’est :

    côté client : l’utilisateur choisit un mdp et le hache/chiffre
    il envoie le résultat sur le réseau
    coté serveur : tu as une base de données des chiffrés/hachés et tu compares?

    Si c’est le cas ton hash/chiffrement ne sers à rien. Suppose que je sois un attaquant je récupère le haché/chiffré que l’utilisateur envoie. Après j’ouvre une session au nom de l’utilisateur en utilisant ce haché! Et pourtant je ne connais pas le mdp….. Moralité c’est une mauvaise idée…

    Si tu veux que l’utilisateur prouve qu’il connait son mot de passe sans le révéler et sans que ses réponses puissent être réutilisées, il faut utiliser les moyens qui vont avec. Donc 1) il faut que ton serveur envoie un challenge à l’utilisateur sinon on pourra toujours faire l’attaque décrite plus haut…
    2) que ton client calcule une réponse qui dépend du mot de passe ET du challenge (par exemple chiffre son mdp concaténé au challenge)
    3) le serveur vérifie que tout va bien en déchiffrant le tout et en comparant avec sa base de donnée.

    Je crois qu’un peut de lecture te ferais du bien :
    http://fr.wikipedia.org/wiki/Preuve_%C3%A0_divulgation_nulle_de_connaissance

  35. cool dit :

    Non mais ca sert à rien de se casser la tête à vouloir faire du chiffrage en JS.
    Si tu veux quelque chose de sécurisé, tu utilise le ssl.

    Vu que ta fonction de chiffrage/hashage en Js est en clair, il suffit de faire un petit brute force pour trouver le résultat. A moins que le mot de passe soit très très très long, ton mot de passe sera cracké en quelques minutes.

    Une solution est l’utilisation d’une clé secrète assez longue, MAIS qui ne doit pas transité dans le réseau. L’idéal c’est de donner en main propre la clé secrète dans une clé USB par exemple.

    Sinon tu utilises un algo comme RSA, dans lequel le serveur et le client ont leur propre clé privé, mais c’est vulnérable au man of the middle (une personne intercepte les données et envoie ses propres messages au client et au serveur).

  36. Elfe dit :

    @ Lea et Cool,

    Je vous propose un challenge : Essayez d’entrer sur mon site : http://allwebradio.free.fr/index.html

    Le login est : challenge

    Le mot de passe, (haché en SHA-256) est :

    5c5001f7455b5210f683e94088b1729fca1978458689d81a88b6b0de6b40d2c8

    (je vous l’offre, comme si vous l’aviez sniffé sur le réseau)

    Lea, si tu envoies le mot de passe haché, il sera haché à nouveau et ne sera plus correct. Si tu désactives javascript ou que tu crée un formulaire depuis un autre site en envoyant le mot haché correctement, le serveur ne te laissera pas entrer. car j’y ai déjà pensé.

    @ Cool : Tu peux regarder le code javascript autant que tu veux. Bonne chance.

    Si vous arrivez à entrer, vous serez capable de lire la phrase.

    Je suis curieux de savoir comment vous aurez fait! Et j’améliorerai alors mon sytème. ^^

    Challenge ouvert à tout le monde…

  37. Lea dit :

    Désolé, je suis en rédaction de mémoire de thèse donc répondre en 5 minutes à des questions de crypto ok mais pas plus.

    En plus de ça, je fais des protocoles de crypto toute la journée donc casser un proto de manière théorique je sais faire mais pas “en pratique” donc, il faudrait que je me mette en équipe avec quelqu’un… donc trop d’investissement pour moi. Bon courage a toi.

  38. Elfe dit :

    @ Lea :
    En tous cas, tu m’as appris énormément de choses aujourd’hui. Je m’intéresse à la crypto et t’as l’air super calée.

  39. Androc dit :

    @Elfe : dans l’absolu, ce n’est pas une bonne idée de faire des hash en javascript, même si la solution peut sembler satisfaisante dans un premier temps.

    Pour info, j’ai pété ta protection en 1s sans connaître le mot de passe. Pour “preuve”, voici le nom du fichier php auquel on accède : “w……e.php”

    Tout simplement parce que le hash passe en clair et que c’est comme si tu passais le mot de passe.

    Le javascript doit rester à sa place : c’est à dire, faire des petits traitements, des effets visuels, des requêtes AJAX, etc. mais c’est tout !

    Si tu veux faire un site web sécurisé, utilises une vraie authentification au sein d’un canal sécurisé (SSL).

    Edit : à la rigueur tu peux te servir du SHA1 en javascript pour “faire des trucs” mais pas pour faire de la “sécurité” comme tu le fais.

    En espérant t’avoir convaincu … ;)

  40. Lea dit :

    @androc merci ;)

    Et moi j’ai un chapitre à finir donc je vous laisse ^^

  41. Androc dit :

    @Lea: A votre service ma bonne dame et bon courage pour la thèse, dont le sujet est ?…

  42. Lea dit :

    En gros : Outils crypto et applications à la protection de la vie privée. (le titre est pas encore fixé pour de vrai…)

  43. Androc dit :

    Je vois l’idée, une thématique du style : est-ce vraiment viable de vouloir protéger sa vie privée à 100% ? Est-ce accessible à n’importe qui ou réservé à une “élite” ?

  44. Elfe dit :

    androc, bien joué! je viens de voir dans mes logs que tu as réussi, effectivement. La page est bien celle que tu indiques. well done!:)

    Comment se fait-il que le mot de passe circule en clair puisque je le réçois haché sur le serveur ? même wireshark me le donne haché et non pas en clair…

    Je pensais que js est à sa place, puisqu’il ne sert pas à déchiffrer le mdp.

    Tu peux me dire comment tu obtiens le mdp en clair ?? Merci de m’expliquer. :)

  45. Lea dit :

    @androc : une thématique crypto pure et dure sur des briques crypto et des appli qui permettent (un peu) de respect des utilisateurs…

    @elfe : relis l’attaque que j’ai écrite. On a jamais besoin de connaitre le mot de passe dans ton truc. Man-in-the-Middle attack, tu connais? Et schtroumpf! une fonction de hachage c’est pour faire de l’intégrité pas du chiffrement :P

    Bon la thésarde en rédaction que je suis craque… Elfe, utilise une solution classique. ssl c’est cool…

    Help, please…

  46. Androc dit :

    C’est très simple.
    C’est un problème de conception.

    En fait tu “fais un truc” côté client et tu envois unes chaîne d’authentification au serveur.

    Celui-ci reçoit un “login” et un “mot de passe”.

    Tu as beau l’envoyer en clair, en klingon, en couleur, à l’envers, en base 64, en buvant de la bière ou en te grattant le cul, du point de vue du serveur c’est un login et un mot de passe. Du moment que le client et le serveur sont en phase pour savoir comment obtenir le login/mot de passe, ça sera équivalent à un message en clair.

    Alors, ok l’humain ne connaîtra pas le mot de passe, dans ton exemple, mais il n’en a pas besoin vu que le serveur authentifie l’utilisateur en fonction de son hash.

    Tu peux même “renforcer” la “sécurité” de ton site en hashant le login, si quelqu’un sniff la connexion, c’est mort.

    Le seul avantage d’avoir hashé ton mot de passe est que si tu l’utilises pour une autre appli (tes mails, un compte de jeu sur internet, etc) le méchant hacker ne pourra pas s’authentifier car il n’aura pas le mot de passe en clair.

    Tu peux te convaincre de ce que je raconte en installant Tamper Data pour Firefox.

    – Tu vas sur ton site
    – Ensuite tu fais Outils->Altérer données->Démarrer altération
    – Tu tapes “challenge” en login sur ton site et “prout” (ou n’importe quoi) en mot de passe, tu valide
    – Tu fais “altérer les données” dans la popup Tamper Data, tu remplaces le hash que tu vois par le hash que tu as donné et bingo

  47. Elfe dit :

    J’ai compris! mince alors! :)

  48. Androc dit :

    AES : symétrique. Même joueur, joue encore.
    RSA : asymétrique. Si tu le fais mal (sans graine aléatoire) ça sera identique, je ferai une attaque par re-jeu.

    Tu peux chiffrer avec ce que tu veux ça n’a aucune importance dans le cas présent.

    Tu devrais éviter de réinventer la roue, surtout avec des outils non adaptés et te concentrer sur de la vraie sécurité.

    Mais bon, rassure toi, il y a des experts qui font bien pire que toi : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx

    Edit : ah oui et puis ça ne sert à rien non plus de rendre illisible ton javascript, je n’ai même pas regardé la source de ta page.

  49. Elfe dit :

    @androc : Ta technique semble vraiment imparable.

    Existe t-il un moyen (non payant) d’échapper aux sniffers ?

  50. Elfe dit :

    Je viens de découvrir que d’autres que moi se sont intéressés à transmettre des données de formulaire chiffrées depuis javascript et sans SSL!

    Le premier, (utilisant javascript, jQuery et RSA pour le chiffrement : ‘Jcryption’ est disponible ici : http://www.jcryption.org
    (en anglais). Daniel Griesser, son auteur, nous dit:
    “I created jCryption because I thought there must be an easier way to protect data of HTML forms in the internet than to install a SSL certifacte. So I started with jCryption and I hope it’s useful.”

    Le deuxième projet, ‘jCryption2’, en français, de Samuel Roze, est dispo ici : http://www.d-sites.com/projets/jcryption2/
    “jCryption est une petite application JavaScript utilisant jQuery à ajouter à votre site qui permet de crypter un formulaire de données à l’aide d’un système de clé publique/clé privée. Ainsi, tout ce qui circule sur le réseau est protégé! Cela peut être utile lorsque qu’il vous est impossible de mettre en place un accès HTTPS ou lorsque le client (le visiteur) ne supporte pas le HTTPS mais a le JavaScript.”

    Voilà 2 auteurs que je vais contacter pour participer à les aider!

    @ Androc, qu’en penses-tu ? car selon toi, SSL est obligatoire.
    Ta technique redoutable permet aussi de craquer leur chiffrement ?
    Penses-tu que leur système est fiable, ou craquable en cas de sniffage ?
    Si ça résiste au sniffer, je l’installe pour mes applis. ^^

    Démo ici : http://www.jcryption.org/examples/
    J’apprends beaucoup de choses avec Lea et toi, merci beaucoup!

  51. Androc dit :

    Hello,

    si le RSA est correctement implémenté, ça peut éventuellement “le faire”.
    Mais bon … il faut que la personne en face ai JavaScript d’activer.
    Je pense que tu trouveras plus souvent un client qui supporte SSL mais pas JavaScript que l’inverse.
    J’en veux pour preuve mon ancien portable qui ne supportait pas JavaScript mais avec lequel je pouvais me connecter sur des sites sécurisés.

    Le problème, c’est que du côté serveur tu es obligé de gérer cette authentification, en envoyant ta clé dans la page mais apparemment, c’est prévu par les deux plugins.

    MAIS ces deux plugins n’utilisent le RSA que pour la partie chiffrement et non authentification.

    Donc, dans le cadre d’une procédure de login, avec ça tu vas résister à des attaques de type écoute passive->rejeu mais en aucun cas à une attaque du type main in the middle.

    Donc, si c’est juste pour faire ça il y a beaucoup plus simple à faire :
    – le serveur envoi une chaîne aléatoire au client
    – le client hash le mot de passe, concatène avec la chaîne aléatoire et hash le tout
    – le client envoie le hash final au serveur
    – le serveur compare le hash final avec chaîne aléatoire+hash du mot de passe correspondant au login et boum, ça fait des chocapic

    Tu as sans doute sensiblement la même sécurité pour un effort de calcul bien moindre.

    L’intérêt de ces deux plugins c’est de pouvoir chiffrer n’importe quel formulaire et non pas uniquement “protéger” un mécanisme de login, mais bon ça reste un exercice amusant qui ne doit pas être utilisé là où la sécurité est vraiment primordiale.

    Ca peut être intéressant pour masquer les données aux petits malins qui ne font qu’écouter la ligne mais c’est tout.

    Si quelqu’un est actif sur la ligne (man in the middle) t’es tout con avec ton RSA en JavaScript.

    – envoie de la clé publique du serveur au client
    – le vilain intercepte cette clé publique, la stocke et envoie au client SA propre clé publique
    – le client reçoit la clé publique du vilain, chiffre ses données avec et l’envoie au “serveur”
    – le vilain pas beau reçoit le message chiffré, le déchiffre avec sa clé privée, le lit, se marre bien parce que le nom de ta rue est “poilaubras”, note sur un bout de papier ton numéro de carte bleue, chiffre le message clair avec la clé publique du serveur et l’envoie au serveur
    – le serveur est tout content car il a reçu une nouvelle commande d’un client

    Bref …

    Donc ça peut être rigolo pour résister aux écoutes passives “vite fait” mais c’est tout.

    Et encore, vu que la longueur de clé par défaut est 512bits, si les données sont intéressantes sur la durée (numéro de CB, préférences sexuelles, mot de passe, etc.) le vilain pas beau tout moche peut casser le chiffre en différé.

  52. Elfe dit :

    @Androc : Je comprends enfin tout le processus grâce à tes explications!

    grande différence entre chiffrer un formulaire et protéger une connexion!!

    Et effectivement, tu as raison. Si quelqu’un sniffe la connection, c’est mort.

    J’ai testé encore ce matin, le sniffer enregistre tout! Mot de passe chiffré ou pas. Il affiche les fichiers auquels on s’est connecté avec leur contenu source complet… ça fait froid dans le dos… Donc SSL obligatoire, oui.

    J’ai appris vraiment beaucoup de choses, merci!

    ————————————————————
    Bon, un petit jeu de Hack juste pour le fun : (attention, c’est pour s’amuser)

    Essayez de casser ma protection javascript et de lire le nombre affiché sur la page 2 de mon site :
    login=challenge
    mot de passe haché en SHA-256 = be178c0543eb17f5f3043021c9e5fcf30285e557a4fc309cce97ff9ca6182912

    http://allwebradio.free.fr/index2.php

    P.S : ATTENTION Comme l’a écrit Androc, ce type de “protection” NE VAUT RIEN! car il suffit de décoder Javascript. Et En cas de sniffer, ça vaut que dalle.

    C’est juste pour voir en combien de temps quelqu’un peut trouver la solution et accéder à la page. Qui va réussir en 1er ? encore Androc ? ^^

    Good Hacking!

  53. cool dit :

    21996

    Ca sert a rien de transformé les caractères en hexa.

    J’utilise firebug, et je lance
    console.log(_0x4921);

    Et paf, j’ai tout en clair!

  54. Androc dit :

    Je reviens de déjeuner et que vois-je ? Tu essayes encore de faire des protections en JavaScript ? :)

    Il 2 ne 1 faut 9 pas 9 faire 6 de protections de ce type, ça ne sert à rien :)

    Edit : @cool: oups j’avais pas vu, pareil :D

  55. Androc dit :

    Arf, crotte, je ne peux pas éditer mon commentaire à nouveau.

    @Elfe : ne va pas croire qu’il nous a fallu 2h à Cool ou moi même pour trouver la solution, on ne surveille pas non plus le fil tout le temps. En tout et pour tout, il nous a fallu le temps de “découvrir” ta nouvelle interface de connexion (5s), de comprendre à quoi sert ce nouveau champ (optionnel, 10s), de regarder la source (5s), de lancer Firebug (2s), de mettre des espions sur la/les valeurs qui vont bien (10s).

    Encore une fois, je ne sais pas ce qui se cache derrière le hash, je n’ai même pas essayé de comprendre à quoi sert ce nouveau champ, on obtient directement la valeur de la page à afficher sans problème.

    A la rigueur, si tu veux vraiment t’amuser avec une protection JavaScript, fais la méthode que je t’ai indiqué ou utilises jCryption mais c’est juste pour s’amuser.

  56. Androc dit :

    Et merde, encore pas possible d’éditer.

    J’ajouterai, pour enfoncer le clou, que cette fois ni le login, ni le mot de passe n’étaient requis pour réussir :)

  57. Elfe dit :

    @cool : Le challenge n°3 sera beaucoup, beaucoup plus dur. héhé. ^^

    @Androc

    J’ai pensé que je pourrais vendre cette super protection Javascript à la société qui est citée dans ton lien “thedailkywtf.com”. :)
    Avec un peu de bol, ils vont l’acheter! lol

    p.s: Le nouveau champ est là pour le fun. Mais il peut servir à hacher.
    RV sur le challenge n°3. Ce sera du sérieux cette fois. ;)

  58. Androc dit :

    Tant que ça sera des protections en JavaScript, à moins de ne pas reposer sur de l’obscurantisme, ça sera cassé.

    Nous ne sommes pas non plus là pour tester tes challenges de sécurité afin de te prouver que tu n’utilises pas la bonne approche ;)

    Si tu veux apprendre des choses en sécurité/crypto en t’amusant, va ici : http://www.newbiecontest.org
    Il y a plusieurs petits challenges sympas, notamment en JavaScript, tu verras qu’aucune protection reposant sur de l’obfuscation de code est efficace.

  59. Elfe dit :

    @ Androc : sympa ton lien, merci! Comme promis, pas de javascript cette fois. ;)
    @ Cool : Bonne chance! Je te sais persévérant.
    @ Lea : La cryptologue que tu es devrait aimer ce challenge!

    Le 3ème et dernier challenge est à votre hauteur, chers amis.
    Il s’agit cette fois de cracker le mot suivant, haché en SHA-256 :

    4148a40b6f91e2b22b89a901559ee3d4ff08ff410b0c850250b20cf1bce41bbc

    Cette fois, les plugins de firefox ne pourront pas vous aider. :)
    Un indice toutefois : le mot est composé uniquement de lettres majuscules.

    Je donnerai la solution dans quelques jours…
    Good Hacking!!

  60. Androc dit :

    Mouais, si le but est uniquement de faire tourner un bruteforcer pour trouver le mot de passe … bof. Je passe mon tour, ça n’est pas intéressant.

  61. Elfe dit :

    @ Androc : il n’y pas d’outil de brute force pour le sha256 à ma connaissance.
    de plus, le mot à trouver n’est pas dans le dictionnaire.

    Bon, quelques indices supplémentaires :

    -le mot est composé de seulement 4 lettres majuscules. ( pas de chiffres, ni minuscules, ni caractères spéciaux.)

    -Il suffit donc de comparer toutes les lettres possibles avec leur hash correspondant!

    Il n’y pas un Hacker dans la salle ??? :)

  62. Androc dit :

    Un bruteforcer bête et méchant est extrêmement simple à faire, si ton mot de passe ne fait que 4 lettres majuscules, il tombe en 1s sur un PC moderne (et même moins moderne).

    Ca n’est pas un challenge, désolé :)

  63. Elfe dit :

    @Androc : c’est simple maintenant que je t’ai donné 99% de la solution.

    Héhé, j’attends de voir tourner ton algorithme en ligne, si c’est “si simple”. :)

    Je n’allais pas mettre un mot de passe hyper-difficile, sinon même un brute force aurait pris des siècles.

    Par contre, personne n’a encore trouvé la solution, c’est donc toujours un challenge. ^^

  64. Androc dit :

    Homme de peu de foi … DAAD

    Je ne me suis pas servi de ton indice et j’ai fait tourné un bruteforcer codé rapidement en Python en testant toutes les combinaisons (minuscules, majuscules, chiffres, caractères spéciaux) en partant de 1 caractère, jusqu’à trouver la solution.

  65. Elfe dit :

    @ Androc : peut-on voir ton script tourner online pour être sûr que tu n’as pas triché ? Sinon bien joué Androc, une fois de plus, réponse exacte! héhé :)

    J’ai une question : Pourquoi certains webmasters hachent les mots de passe stockés en bdd? Mauvaise habitude ? quelle est l’utilité ?? (Ne vaudrait-il pas mieux les chiffrer, à la limite ?) Surtout que Lea a bien précisé que le hachage sert seulement à tester l’intégrité.

  66. Androc dit :

    Et comment aurais-je tricher ? :)
    Non il ne tourne pas online car c’est un petit script python. Je pourrais le transformer en php pour te le prouver mais bon …

    Pourquoi certains webmaster stockent les hash des mots de passe ?
    La vraie question est “pourquoi certains stockent leurs mot de passe en clair ?”.

    Il faut stocker les hash des mots de passe, tout simplement parce que si quelqu’un utilise une faille sur le site web et réussi à accéder à la base de données, il aura tous les mots de passe en clair.
    Alors que si il obtient les hash ils faudra en plus qu’il les pète.

    “Oui mais, les mots de passe circulent en clair, donc quel est l’intérêt de les stocker sous forme de hash si ils sont interceptés avant ?”.

    En effet, si ils sont interceptés en clair, t’es niqué. D’un autre côté il arrive bien plus souvent que le site web soit vulnérable plutôt qu’un attaquant ai la possibilité d’écouter la ligne.
    De plus, il existe SSL pour se prémunir de l’écoute.

    En effet Lea a dit “ça sert à tester l’integrité”, c’est le but premier du hash.
    Mais dans le cas des mots de passe, cela permet de masquer un texte clair pour éviter que le secret soit éventé directement.

  67. Elfe dit :

    @ androc : haha, naan, je plaisante, je sais bien que t’as pas triché. ;)
    J’ai moi-même mis seulement quelques minutes pour coder ça en php :
    (sympa à faire pour le côté récursif)

    http://elfe444.chez.com/brute_force6.php (on génère toutes les combinaisons, on hache, on compare: DAAD s’affiche en rouge. enfantin.)

    Merci encore pour tes explications très claires Androc.

  68. Slymayer dit :

    Je l’essayerai sur ma GTX470, mais en attendant j’en connais un autre extrêmement véloce qui utilise également les GPUs avec les CPUs, mais surtout il a l’avantage de répartir les tâches sur plusieurs PCs, et ne fait pas que MD5, j’ai nommé Distributed Password Recovery.

  69. marc dit :

    31000 mhashs/s mon vaio <3

A gagner – Des codes abonnement pour F-Secure Key

bigstock

Aujourd'hui je vous propose de gagner des codes pour des abonnements d'un an pour Key, le gestionnaire de mot de passe de F-Secure.

Si vous êtes adeptes des ouvertures de comptes en ligne à tout-va, ce petit soft peut vous être d'une grande utilité, voir pour ceux qui décideraient de renforcer tous leurs mots de passe en cours d'utilisation.

Avec Key vous pouvez stocker tous vos mots de passe et y accéder facilement, sur n'importe quel appareils, desktop ou mobile et même générer des mots de passe renforcés et uniques chaque fois que vous en avez besoin.

Pratique pour ceux qui ont tendance à aller au plus vite en mettant la date de naissance du dernier né ;)

Pour jouer ça se passe tranquillou avec Kontest:

Toutes les fonctionnalités de Key sont listées ici

Vous avez aimé cet article ? Alors partagez-le avec vos amis en cliquant sur les boutons ci-dessous :

Twitter Facebook Google Plus Linkedin email
Rejoignez les 57018 korbenautes
et réveillez le bidouilleur qui est en vous
abonnez-vous en savoir plus
"Vous aimez bidouiller ?" Oui j'adore l'informatique et la technologie
Suivez Korben Un jour ça vous sauvera la vie.. Ou celle d'un(e) ami(e)
  • Rejoignez les 57016 bidouilleurs de la grande famille des Korbenautes
    «Je considère que votre email est aussi important que le mien.»
    Korben
  • Les Derniers Articles du Blog

  • Inscrivez vous aux bon plans

  •  
  • Site hébergé par
    Agarik Sponsor Korben
  • DANS TON CHAT (BASHFR)

    <Keratine> si une faute d'orthographe voulait dire je t'aime
    <Keratine> je t'offrirais ton skyblog :)
    <La_Gonze> euh.. comman je doi le prendre sa? :/

    -- http://danstonchat.com/5535.html
  • Un boitier externe pour booter des ISO à

    gogo sans se prendre la tête

    Il s'agit d'un boitier externe pour disque dur 2,5" fabriqué par la société Zalman, qui a la particularité d'avoir un petit écran de contrôle et qui permet de choisir l'ISO sur laquelle vous souhaitez booter...lire la suite

    Microsoft récupère vos clés de chiffrement.

    Voici comment les en empêcher

    Si vous avez acheté un appareil sous Windows 10 équipé d'une puce qui chiffre par défaut le disque, ne vous pensez pas en sécurité pour autant : La clé de récupération qui vous permet de déchiffrer vos données...lire la suite

    En ce moment dans l'univers "Raspberry Pi"

    Voir tous les articles »