Sécurité : tester les mots de passe

Bonjour,

Il faut bien commencer par là, c’est le premier rempart de l’ordinateur : le mot de passe !
Je cherche donc des outils pour tester les mots de passe.
J’ai trouvé ‘Crack-md5’ et ‘john’ dans les dépots Debian.

J’ai fait un essai avec Crack-md5, mais je n’arrive pas à grand-chose… J’ai l’impression que je ne l’utilise pas convenablement.

[code]spider:/etc/rups# Crack /etc/passwd
Crack 5.0a: The Password Cracker.
© Alec Muffett, 1991, 1992, 1993, 1994, 1995, 1996
System: Linux spider.beronono.com 2.6.26-2-vserver-686-bigmem #1 SMP Sun Jun 21 08:34:07 UTC 2009 i686 GNU/Linux
Home: /usr/share/Crack
Invoked: ./Crack /usr/share/Crack/run/filenTMjDY
Stamp: debian

Crack: The dictionaries seem up to date…
Crack: Sorting out and merging feedback, please be patient…
Crack: Merging password files…
Crack: Creating gecos-derived dictionaries
mkgecosd: making non-permuted words dictionary
mkgecosd: making permuted words dictionary
Crack: launching: cracker -kill run/Kspider.beronono.com.13124
Done[/code]

J’ai bien lancé ‘Crack-Reporter’ ensuite, mais les résultats “ne me parlent pas”…
Et dans les fichiers présents dans /usr/share/Crack/run/ rien non plus

Queqlqu’un peut-il me donner un coup de main ou me donner un lien vers un tuto ou howto ?

Merci d’avance

pour john

source sur le site http://formation-debian.via.ecp.fr/ssh.html

:smt006

[quote=“sinozis”]pour john

source sur le site http://formation-debian.via.ecp.fr/ssh.html
:smt006[/quote]

Extra, merci ! :smiley:

Je viens de m’en rendre compte, je pense que le processeur est sollicité de la me manière avec Crack-md5… Et comme un crétin, ne voyant rien venir, j’ai lancé la commande 4 fois… Donc 4 processus comme ça en même tempscracker -kill run/Kspider.beronono.com.29136 Processeur 95.1 % :laughing:

Il tourne encore, je l’ai lancé à 8h45…
Et mes mots de passe sont TRES facile à casser, alors avec des mots de passe en béton…

T’es sûr que c’est pour tester tes mots de passes…? ^^
Car si c’est le cas, je peux d’ores et déjà te dire que le MD5 c’est mauvais !

Suffit d’aller là pour s’en convaincre : freerainbowtables.com/fr/

[quote=“Cluxter”]T’es sûr que c’est pour tester tes mots de passes…? ^^
Car si c’est le cas, je peux d’ores et déjà te dire que le MD5 c’est mauvais !

Suffit d’aller là pour s’en convaincre : freerainbowtables.com/fr/[/quote]

Je ne suis sur de rien, je pose la question ! :mrgreen: [quote=“lol”]Je cherche donc des outils pour tester les mots de passe.
J’ai trouvé ‘Crack-md5’ et ‘john’ dans les dépots Debian.

J’ai fait un essai avec Crack-md5, mais je n’arrive pas à grand-chose…
[…]
Queqlqu’un peut-il me donner un coup de main ou me donner un lien vers un tuto ou howto ?

Merci d’avance[/quote]
Peux tu me dire pourquoi c’est mauvais ?
Je vais aller voir ton lien. Je n’y connais rien en cryptage…
Merci :wink:

[quote=“Cluxter”]je peux d’ores et déjà te dire que le MD5 c’est mauvais ![/quote]Me dire que c’est mauvais est très bien, m’expliquer pourquoi serait encore mieux… Ton lien n’apporte pas de réponse, ton intervention n’a aucun intérêt :frowning:

Arf, désolé, pourtant je croyais que tout était expliqué sur le site.

Donc en fait, ce projet consiste à calculer le MD5 pour des milliards de mots de passes. Le but est d’obtenir la correspondance “MD5 / mot de passe en clair” pour tous les MD5 qu’il est possible de créer. En effet, comme la taille d’un MD5 est fixe et donc limitée, une fois qu’on connaît toutes les associations “MD5 / mot de passe en clair”, il suffit de prendre la liste (qui pèse plusieurs centaines de gigaoctets ; ces listes sont appelées des “rainbow tables”), de recherche le MD5 et de regarder sa correspondance en clair.

C’est en fait une simple technique d’indexation. On calcule une fois pour toutes tous les hashes, et après une simple recherche permet de retrouver très rapidement le texte d’origine.

Si tu veux tester ça en ligne sans télécharger quelques terraoctects de rainbow tables : authsecu.com/decrypter-dechi … sh-md5.php

Tu rentres ton hash MD5 et s’il a déjà été calculé, tu auras la correspondance en clair.

Pour SHA-256, c’est déjà beaucoup plus difficile puisque la longueur du hash est bien plus longue, donc il faudra beaucoup plus de temps et de mémoire pour calculer la rainbow table.

[quote=“Cluxter”]Arf, désolé[/quote] :wink: Pas de quoi… J’ai pas mal fouillé hier soir, et j’y vois plus clair déja.

Merci pour tes infos et explications :smt023 Très clair !

Je n’ai abouti à rien avec Crack-md5. En ce moment “john” tourne, mais ça fait déjà 4 heures, et je pense que je vais aboutir au même résultat… nul

Je vais (peut-être) essayer ta solution, mais, est-ce bien raisonnable de donner son IP et de faire cracker ses mots de passe sur Internet ???

EDIT : En fait mon idée c’était de pouvoir tester les mots de passe de tout le monde sur mes machines et d’être prévenu d’un “weak password”. ça a l’air possible, mais tu as raison il doit falloir télécharger des Go de dictionnaires… Pas toujours gratuits !

Bon, petit cours sur les mots de passes. Mettez votre ceinture et avalez un aspirine :smt027

La sécurité d’un mot de passe se base principalement sur 2 choses :

  • le mot de passe utilisé en lui-même : “1234” sera bien plus facile à trouver que “x7kG9éa#”) ;

  • l’algorithme de hashage utilisé : comme je l’ai expliqué, le MD5 ne vaut plus grand chose à l’heure actuelle comparé au SHA-256.

Comme c’est précisé sur le second site que je t’ai passé, il existe 3 méthodes pour retrouver un mot de passe (en excluant le keylogger, le flingue sur la tempe ou choses de ce genre bien sûr) :

  • le brute force : on teste les mots de passes un à un ; très long, mais fini par fonctionner dans 100% des cas si on a assez de temps (et donc de ressources) ;

  • le dictionnaire : si on utilise un mot comme “bonjour1234”, il est très probable qu’il soit dans des dictionnaires préétablis ;

  • les rainbow tables : une fois qu’un hash a été calculé, on l’enregistre dans une table avec sa correspondance en clair, ce qui permet à n’importe qui d’utiliser par la suite ces associations pour retrouver instantanément le mot de passe en clair à partir du hash.

Pour tester la résistivité du mot de passe au brute force, il suffit de définir des règles simples du style : inclure au moins 2 minuscules + 2 majuscules + 2 chiffres + 2 caratères spéciaux, avec une longueur totale d’au moins 15 caractères. Là on est sûr d’avoir un mot de passe difficilement crackable par brute force, car il faudra utiliser tout le jeu de caractères disponibles sur une longueur importante pour trouver le mot de passe. C’est très coûteux en temps, ou alors en ressources si on souhaite diminuer le temps (à chaque caractère qu’on rajoute, cela augmente le temps de brute force de manière exponentielle).

Ensuite le dictionnaire : la règle est de n’utiliser aucun mot de passe qui puisse être compris par un être humain, ou aucune suite facile à retenir. Les attaques par dictionnaires peuvent être intelligentes, c’est-à-dire combiner plusieurs mots de passes du dictionnaire pour en former d’autres, ou utiliser des mots de passes du dictionnaire en rajoutant un bout de brute force. Ainsi, utiliser “bonjour7Gx” est moins sécurisé que d’utiliser “1éFkg2”, bien que le premier soit plus long que le deuxième. Evidemment, il faut absolument bannir tout mot de passe du style “coucou”, “pouet”, etc., les attaques par dictionnaires étant les premières réalisées sur un mot de passe grâce à la rapidité d’exécution qu’elles procurent.

Enfin, les attaques par rainbow tables : il faut dans un premier temps regarder quel algorithme de hashage a été utilisé.
S’il s’agit du MD5, les tables complètent existent en téléchargement gratuit, donc il faut partir du principe qu’un cybercriminel désireux de pirater vos comptes se sera payé le luxe d’avoir quelques disques de 1 To pour stocker la totalité des rainbow tables du MD5, et pourra donc retrouver n’importe quel mot de passe MD5 en quelques minutes.

Il existe alors différents algorithmes de hashage plus ou moins sécurisés. Et leur sécurisation ne dépend pas uniquement de la taille du hash, car il existe des failles mathématiques qui permettent dans certains cas d’accélérer les calculs de hashes, ce qui permet de gagner du temps dans la génération des hashes, ou par exemple si on trouve une relation du style “si le hash contient un ‘k’, alors le mot de passe contient au moins un ‘z’”. Ainsi, l’algorithme de hashage reconnu comme étant le plus sûr actuellement est SHA-512. Il mesure 512 bits, soit 64 caractères alphanumériques, ce qui donne 36^64 combinaisons de mots de passes différents, soit 40 milliards de milliards de fois le nombre d’atomes dans l’univers… Bon courage à celui qui voudrait générer la rainbow table ! Il est tout simplement impossible de stocker les résultats en entier (à moins de disposer d’un ordinateur quantique, mais on n’en est pas là). Attention toutefois : en règle générale, plus le hashage est sécurisé, plus il faut de ressources pour générer le hash, ce qui peu être coûteux en performances dans certains cas (si on a beaucoup de comptes à gérer en même temps sur un serveur notamment).

On peut également ajouter que les algorithmes de hashage peuvent être fortement améliorés en rajoutant ce que l’on appelle une graine entre le mot de passe en clair et le hash. J’explique : si le hash de “azerty” est “1234abcd” (je dis n’importe quoi pour l’exemple), alors si on connaît le hash on va pouvoir dire que le mot de passe est “azerty”. Mais si avant de calculer le hash j’ai rajouté une lettre au mot de passe pour former par exemple “azertyx” (“x” étant la graine), le hash sera modifié et deviendra par exemple “4567plom”. Et la personne qui regardera ce qui se trouve en face de “4567plom” tombera sur un mot de passe en clair qui est “azertyx”, alors que le mot de passe d’origine est “azerty”. Donc on ne retrouve pas le mot de passe d’origine grâce à une rainbow table dans ce cas ! Et si on change de graîne pour chaque nouveau mot de passe, alors il faudrait générer toutes les rainbow tables à nouveau pour chaque nouveau mot de passe, ce qui finalement revient à faire du brute force. Mais attention : si le pirate est capable de deviner quelle graîne est utilisée, il pourra peut être retrouver facilement le mot de passe en clair (il n’aura qu’à enlever la graine pour retrouver le mot de passe d’origine). Ou même, si la graine est trop facile comme dans notre exemple, il lui suffira de prendre quelques secondes de plus pour retrouver le bon mot de passe. Après on peut toujours améliorer le crackage en découvrant des failles mathématiques, mais ça complique quand même sacrément la chose ! Au passage, inutile de vous dire quel OS utilise une graîne et lequel n’en utilise pas…

Donc en conclusion, pour vérifier si un mot de passe peut tenir le choc, il faut vérifier que :

  1. la longueur du mot de passe est suffisamment grande ;
  2. le mot de passe contient différents types de caractères ;
  3. le mot de passe ne contient aucune expression contenue dans un dictionnaire ;
  4. l’algoritme de hashage est suffisamment sûr ;
  5. le système de gestion des mots de passe utilise une graine.

Dans le cas où on voudrait savoir si un mot de passe est résistant de manière générale (ie. sans connaître le système sur lequle il sera utilisé), il faut tester les 3 premiers points, les 2 derniers ne dépendant généralement pas de l’utilisateur final. Et c’est souvent là le problème, car on peut avoir le meilleur mot de passe du monde, s’il est stocké en clair dans un fichier c’est moyen…

Un dernier conseil : changer régulièrement de mot de passe aide à se prémunir des vols. En effet, si quelqu’un arrive un jour à dérober le mot de passe, on peut toujours espérer qu’il n’arrivera pas à dérober le prochain ou que cela lui demande trop de temps pour qu’il soit encore valide quand il voudra l’utiliser.

Donc lol, pour ton projet, le mieux c’est que tu testes la longueur du mot de passe, les types de caractères qu’il contient, et enfin que tu installes des dictionnaires pour effectuer une attaque par dictionnaires sur le mot de passe (c’est relativement rapide).
Pour les 2 derniers points, tu ne peux malheureusement rien prédire si tu ne connais pas le système sur lequel le mot de passe sera utilisé.

Merci beaucoup Cuxter,

C’est extrêmement clair et mériterait une place au Wiki Wiki Grand-Wiki… :laughing:

Merci aussi d’avoir pris la peine d’une réponse aussi complète, cela t’a pris du temps, je n’en demandais pas autant !
Ce sujet est déjà dans mes favoris, inutile de l’ajouter. Je m’y référerais souvent.

Le résumé de ta complète et complexe explication serait : le mot de passe le plus difficile à retenir sera le meilleur…

Il faut que je trouve des wordlist pour compléter “john”, il rame depuis ce matin pour essayer de cracker un mot de passe enfantin… Je dois lui donner de la matière faute de quoi il est inopérant.

Imposer un longueur minimale aux mots de passe (comme le font beaucoup de sites sur Internet) est le premier pas. Est-il possible aussi d’imposer des caractères “non classiques” (majuscules, nombres, ponctuation) ? Mais ça, je chercherais, j’ai déjà abusé - sans le vouloir - (enfin je ne crois pas que ce soit perdu, le nombre de lecteur de ce fil augmente d’heure en heure)

Encore merci.
:smiley: :smiley: :smiley:
Laurent

PS: j’ai pas eu besoin d’aspirine, pas mal !

Il y a une limitation à laquelle je viens de penser : le clavier.

C’est très bien de chercher un mot de passe compliqué, sur un clavier azerty…
Mais que se passera-t-il lorsqu’en console, après un crash, je me retrouverais sur un clavier qwerty ?

C’est facile quand il s’agit de lettres ou de chiffres, mais pour la ponctuation et les caractères spéciaux ? quant à moi, j’en serais incapable (à moins d’avoir un autre ordinateur à disposition, passer en qwerty et comparer… très simple…)

Pour ma part, je vais y penser pour mes prochains mots de passe… :wink:

Encore faut-il avoir accès à la somme MD5 du mot de passe à craquer. Comme déjà dit, /etc/shadow n’est lisible que par root.

Merci pour le post Cluxter!

Et elle est ou cette 'tite graine dans nos linux? Moi aussi je casserai bien mes mots de passes avec google :slightly_smiling: ( korben.info/casser-les-codes … oogle.html )

J’imagine qu’elle est la meme pour tous les hash d’un meme systeme, sinon il faudrait stocker (graine,username) en plus du hash.

Les mots de passe du genre s3cr3t , remplacant des e par des 3 et autres O par des 0, etc… font maintenant aussi partie de la recherche par dictionnaire donc à eviter.

Vous avez probablement entendu parler du piratage de twitter. J’ai lu ca il y a quelques jours:

“Another Security Tip For Twitter: Don’t Use “Password” As Your Server Password”

techcrunch.com/2009/07/15/an … -password/

:smt005

Grâce à toutes vos informations, conseils et liens… j’ai réussi à cracker avec “john” un mot de passe… :smiley:

  1. Installer john (aptitude install john)
  2. Télécharger des dictionnaires, celui par défaut de john est trop léger… ICI par exemple.
  3. Dézippez tout ça dans un répertoire de votre choix
  4. Téléchargez ici ce script et suivez les instructions pour créer votre Méga-wordlist
  5. Changez /etc/john.conf pour qu’il utile votre dictionnaire
  6. Lancez en rootspider:~/Desktop/Giga-wordlist# john /etc/shadow Loaded 3 password hashes with 3 different salts (FreeBSD MD5 [32/32]) bigorno (xxxxx) Il à mis à peu près une heure à “casser” son premier mot de passe…

PS Pour les étapes 3 et 4, il vous faudra pw-inspector (pas dans les dépôts évidemment), vous pouvez télécharger les sources ICI et compiler tout ça.

:bulb: Vous pouvez modifier le script qui est adapté au crack de cléfs WPA (il enlève les mot de moins de 8 caractère et ceux de plus de 63). Vous pouvez descendre à 5 ou 6 et aller jusqu’a 10-12 maxi pour des mots de passe utilisateurs.

:arrow_right: Encore une fois, et comme le précise si justement Pascal, c’est pour vérifier l’efficacité des mots de passe de ses utilisateurs. Il faut être en root pour accéder à /etc/shadow…

Oui, par exemple en PHP ça peut se faire très facilement (suffit de prendre chaque caractère de la chaîne et de les comparer un à un aux éléments d’un tableau rempli des caractères à intégrer obligatoirement au mot de passe par exemple).

[quote]Il y a une limitation à laquelle je viens de penser : le clavier.

C’est très bien de chercher un mot de passe compliqué, sur un clavier azerty…
Mais que se passera-t-il lorsqu’en console, après un crash, je me retrouverais sur un clavier qwerty ?
[/quote]
Anéfè. C’est pour ça que pour les mots de passe susceptibles d’être utilisés sur des claviers qwerty, je me limite à des lettres et des chiffres.

Effectivement, mais dans le cas où quelqu’un pourrait booter sur un Live-CD sur un ordi qui n’a pas de partition cryptée, ça pose un sacré souci de sécurité.

Bonne question ! Surement dans les lignes de codes du kernel… Si tu trouves tu nous dis ! :wink:

[quote]J’imagine qu’elle est la meme pour tous les hash d’un meme systeme, sinon il faudrait stocker (graine,username) en plus du hash.
[/quote]
Je ne crois pas justement, si je me souviens bien j’avais lu une page qui expliquait la différence de sécurité entre Windows et Linux à propos des graines et Linux la calcule je ne sais plus comment, c’est un peu plus complexe que ce que j’ai expliqué. Je vais essayer de retrouver ça.

Sauf que dans ce cas là le type n’a plus besoin du /etc/shadow pour faire ce qui lui plaît. :smt002

Sauf que dans ce cas là le type n’a plus besoin du /etc/shadow pour faire ce qui lui plaît. :smt002[/quote]
Pas faux :smt003
Mais si l’idée est d’obtenir le mot de passe pour accéder à une boite mail par exemple (parce qu’on sait qu’il s’agit du même mot de passe, ou on veut au moins tenter), dans ce cas ça peut être très intéressant.

Ouaip :smt002

A ce propos, les performances sont-elles diminuée de beaucoup sur les partitions chiffrées ? Je n’ai pas encore essayé.

Il me semble qu ‘elle n’ est pas figée.
En fait pour créer la seed, c’est la fonction srand qui est utilisée avec une valeur aléatoire; epoch à l’heure de la génération de la seed ou le pid du process par exemple (bien que devant un bon hacker se ne soit pas top secure!)

J’ ai lu ça dans un tres bon bouquin que je vous recommande : “Techniques de hacking” de Jon Erickson.Chaque page est une pure merveille.On apprend enormément de choses et Jon est assez didactique bien que les sujets soient plutôt compliqués à faire comprendre aux novices.
En tout cas, moi qui suis loin d’ être un hacker, j’ ai appris plus de choses dans ce bouquin que dans n’ importe quel autre support et sur plusieurs sujets.
Un indispensable pour toute personne souhaitant entrer dans les entrailles du monde binaire :wink: