Password Sony
Il y a quelques jours, le réseau social professionnel LinkedIn a été victime d'un piratage de grande ampleur. Un hacker russe a réussi à mettre la main sur 6,5 millions de comptes (le service totalise en tout 161 millions de membres). Voici une analyse rapide, des quelques explications qui sont disponibles aujourd'hui.

Piratage de LinkedIn

À la suite de ce piratage, un fichier de plusieurs méga-octets a été mis en ligne. On va donc le télécharger et l'analyser pour obtenir plus d'informations :

$ wget www.tux-planet.fr/public/hack/showoff/linkedin/combo_not.zip
$ unzip combo_not.zip
$ ls -lh combo_not.txt
259M combo_not.txt
$ wc -l combo_not.txt
6 458 020 combo_not.txt

Nous sommes en présence d'un fichier texte de 260 Mo, qui contient environ 6,5 millions de lignes. On regarde le contenu :

$ head -n 5 combo_not.txt
000000a94d47b9ca82c58a3b092a50263b40f66e
000000a9876203148923f97c6f1a0635472e1e38
000000a9bf60e7f17fcac444a54791af780743a3
000000a97e734e7ed9766d1ce08ebc68d3e93ab2
000000a9b4b1b3497aac51e212ac9efdb00e7f4e

$ tail -n 5 combo_not.txt
000000a9e3c4a47ef783d462ef21317ce01b9264
000000a98f954c31b650dda48b6b3a4d5dc98b5e
000000a9d898684732caa690f8869e4f525f17a2
000000a91fa0b607e0dbdc34452a1215ac27d760
000000a906f329bbd9d545b25556ed44aebe81e6

La longueur du hash (40 caractères) ainsi que sa forme ne font aucun doute : il s'agit d'un hash SHA-1. Si l'on observe de plus près, on remarque rapidement que les 6 premiers caractères sont des zéros. Cette séquence n'est pas normale.

On fait un test de hachage sur le mot de passe "linkedin", en partant du principe que sur 6,5 millions de comptes, il y a bien au moins une personne qui a utilisé le nom du service comme password :

$ echo -n "linkedin" | openssl sha1 | awk '{print $2}'
7728240c80b6bfd450849405e8500d6d207783b6

On enlève les 5 premiers caractères et on cherche la sous-chaîne dans le fichier :

$ grep 40c80b6bfd450849405e8500d6d207783b6 combo_not.txt
0000040c80b6bfd450849405e8500d6d207783b6

Bingo, on trouve un résultat. Ce petit test permet de confirmer la théorie suivante : les 5 premiers caractères des hashs ont bel et bien été remplacés par des zéros volontairement, sûrement par le hacker. À mon avis, ce dernier a voulu prouver qu'il avait bien réussi à pirater le site, sans pour autant mettre en ligne la totalité des informations.

À partir de là, on ne peut pas vraiment aller plus loin dans l'investigation. Si vous avez un compte chez LinkedIn, vous pouvez toujours vérifier si votre mot de passe fait partie de la liste, avec cette commande (remplacez la chaîne password par votre mot de passe) :

$ grep `echo -n "password" | openssl sha1 | awk '{print $2}' | cut -c6-40` combo_not.txt
0000040c80b6bfd450849405e8500d6d207783b6

Même si vous ne le trouvez pas, je vous recommande de le changer.

Pour conclure, je dirais que les développeurs de LinkedIn ont fait une erreur, celle de ne pas utiliser un salage personnalisé en plus du hachage SHA-1. Car, dans l'état actuel des choses, notre pirate russe peut aujourd'hui décoder l'ensemble des 6,5 millions mots de passe. L'utilisation d'un salage maison lui aurait sûrement compliqué la tâche, en partant de l'hypothèse qu'il n'a pas eu accès au code de l'application et qu'il a utilisé une faille du type "injection SQL".

Seul bon point, les développeurs n'ont pas utilisé l'algorithme MD5, que l'on a tendance à retrouver systématiquement dans ce genre de scénario.

Merci à @Déborah et @Cobratrance pour la relecture.


17 Commentaires pour "Analyse du piratage des 6,5 millions de comptes de LinkedIn"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    Manifestement les 4 premiers digits ne sont pas tronqués pour tous les mots de passe (j'ai vérifé pour le mien ;) . Il demeure donc possible de remonter à certains mots de passe pour ce fichier. Le problème est que les gens utilisent souvent le même mot de passe pour accéder à différents services sur le web ...

    sidney , le 8 juin 2012 à 17:04
  •  

    @sidney : effectivement, je n'avais même pas vu étant donné que je n'ai inspecté que le début et la fin du fichier. D'après mes calcul, il y a 2 millions de lignes avec un hash non tronqué :

    $ grep -v "^00000" combo_not.txt | wc -l
    2 936 840

    Du coup, je comprends pas pourquoi il manque les 5 premiers caractères sur le reste des lignes. Ça na plus de sens.

    Sinon, comme on a pas le nom du login en face du hash, cela n'a pas de sens de chercher à cracker les hashs complets...

    pti-seb , le 8 juin 2012 à 18:00
  •  

    Cela m'a fait plaisir de "contribuer" à ton article :) (@cobratrance, c'est moi)
    Si tu as en a besoin une prochaine fois, n'hésite pas à me le demander.
    Sinon, l'article est très intéressant et instructif.

    Ypnose , le 9 juin 2012 à 00:06
  •  

    Bonjour, et merci pour cet article intéressant.

    Dès le titre, je note un raccourcis qui a sa petite importance : ce ne sont pas 6,5 millions de comptes qui ont été piratés, mais 6,5 millions de mots de passe hashés qui ont été publiés.

    La nuance est de taille : pour retrouver quel mot de passe correspond à quel hash, le pirate s'est évidemment débarrassé des hash qui se répètent, ceci afin de ne pas refaire N fois le même travail pour des mots de passe identiques.

    On peut donc supposer que c'est beaucoup plus que 6,5 millions de comptes qui ont été piratés.

    brigade de repression des inexactitudes , le 9 juin 2012 à 12:19
  •  

    Je croyais que le principe du hashage, c'était que l'on ne puisse pas remonter à la source avec le hash...ou du moins nécéssitait une grosse puissance de calcul par brute force (même si des simplification ont été trouvées). En plus avec 6 million de mdp à décrypter. A mon avis ceux qui craignent le plus sont les mots de passe générés par dictionnaires.

    felow , le 9 juin 2012 à 13:25
  •  

    c'est bien d'avoir les mot de passe de 6.5 millions d'utilisateurs mais si vous ne savez pas à quel login il corresponde? LAWL

    Car ou sont les login?

    sl33k , le 9 juin 2012 à 14:06
  •  

    C'est assez rapide ce faire un dico multi caractères sous Linux. Ensuite faire un hash sur le password afin de faire une comparaison.
    Il est quand même à rappeler qu'un hash n'est PAS un cryptage :)

    @sl33k > C'est sans doute volontaire, comme les "00000" avant les hashs.

    En tout cas, c'est une belle réussite :)

    Djerfy , le 9 juin 2012 à 14:45
  •  

    il n'y à pas des "0000" dans tout les hash.

    sl33k , le 9 juin 2012 à 14:54
  •  

    @sl33k : @brigades : quand tu exploite une faille de type injection SQL, tu as accès à tous les champs de la base de données. Donc si il y a eu extraction des mot de passe, il y a de grande chance que le pirate ai eu accès au login correspondant.

    @sl33k : pour les hashs qui n'ont pas de 0000, c'est un grand mystère...

    @felow : oui, avec un hash, on peut difficilement l'inverser et il faut faire de la brute force. Si les mots de passes utilisés ne sont pas complexe et comporte que quelques caractères, cela devient assez simple de les cracker.

    pti-seb , le 9 juin 2012 à 15:07
  •  

    @pti-seb > Grand chance ? Je dirai même plus que c'est sur :) C'est simplement qu'il ne fournis pas tout et qu'il garde le reste pour lui. Comme le détails de l'injection SQL faite ...

    Et un script qui génère un dictionnaire de plusieurs Giga avec fonction de brute force en hash c'est facilement réalisable... Reste juste la puissance de calcul du PC quoi :)

    Djerfy , le 9 juin 2012 à 15:32
  •  

    @pti-seb : il me semble que mon message a été mal compris. Bien sûr que le hacker doit posséder les logins.

    Je veux juste souligner que, contrairement à ce qui est répété plusieurs fois dans cet article, ce ne sont pas 6,5 millions de comptes qui ont été piratés mais certainement beaucoup plus.

    La seule chose qu'on sait c'est que le pirate a publié 6,5 millions de mots de passes (hashés) différents. Si l'on tient compte du nombre considérable de gens qui utilisent les mêmes mots de passes de base ("0000", "1234", "john", "password", "linkedin", "secret", etc.), il n'y a aucune chance pour qu'en piratant 6 millions de comptes le pirate se soit retrouvé avec 6 millions de hash différents (puisqu'il n'y a pas de grain de sel).

    Le titre est trompeur et bien en dessous de la réalité. Je suis prêt à parier que le nombre de comptes piratés est au moins le double du chiffre annoncé.

    brigade de repression des inexactitudes , le 9 juin 2012 à 20:36
  •  

    Bonjour,
    @Seb, merci pour cet article. J'aimerais te signaler un problème technique (peut être) sur ton site. Lorsque je suis sur la page index, sur cet article, il affiche 3 commentaires seulement alors qu'il y en a beaucoup plus.

    Ensuite lorsqu'on regarde le résultat de
    $ head -n 5 combo_not.txt
    000000a94d47b9ca82c58a3b092a50263b40f66e
    000000a9876203148923f97c6f1a0635472e1e38
    000000a9bf60e7f17fcac444a54791af780743a3
    000000a97e734e7ed9766d1ce08ebc68d3e93ab2
    000000a9b4b1b3497aac51e212ac9efdb00e7f4e

    $ tail -n 5 combo_not.txt
    000000a9e3c4a47ef783d462ef21317ce01b9264
    000000a98f954c31b650dda48b6b3a4d5dc98b5e
    000000a9d898684732caa690f8869e4f525f17a2
    000000a91fa0b607e0dbdc34452a1215ac27d760
    000000a906f329bbd9d545b25556ed44aebe81e6

    Je vois une série de 6 zéros, non pas 5, merci de m'expliquer si je me trompe.

    NimaX , le 10 juin 2012 à 10:05
  •  

    vérifier si votre mot de passe est dans la liste : https://lastpass.com/linkedin/

    SMed79 , le 10 juin 2012 à 11:01
  •  

    @SMed79 > A vérifier quand même si ce site est vraiment sécurisé et vrai... Sinon rien de mieux pour accélerer le processus :)

    Imaginer que cette page soit fausse, c'est vous même qui dites que tel password = tel hash... Alors ?

    Djerfy , le 10 juin 2012 à 11:04
  •  

    @Djerfy > j'ai tester avec: linkedin, azerty,123123, 123456, 654321, password ... (en trouve toujour des utilisateur qui ne prenant pas au sérieux les mots de pass :/

    Un gestionnaire de MDP : http://keepass.info/

    conseil pour obtenir le mot de passe parfait : http://xkcd.com/936/

    SMed79 , le 10 juin 2012 à 11:39
  •  

    @NimaX : j'ai mal compté, je corrige. Sinon pour le problème d'affichage des commentaires, c'est le plugin de cache du site qui doit faire des sienne...

    pti-seb , le 10 juin 2012 à 14:57
  •  

    Bonsoir,

    Est-il possible de fournir un script permettant de tester à la volée des mots de passe présent dans un fichier texte ?

    J'ai tenté de le créer, sans succès, malgré l'ajout de mot de passe tel que "linkedin" ou "azerty" dans mon fichier de mot de passe personnel. Le voici :

    #!/bin/sh
    # Création du canal, basé sur un fichier texte contenant la liste des mots de passe à tester
    exec 3<dictionnaire-JM.txt

    # Lecture du canal 3 et création de la variable mdp_a_tester
    while read lig 0<&3
    do
    mdp_a_tester=`echo $lig`
    grep `echo -n mdp_a_tester | openssl sha1 | awk '{print $2}' | cut -c6-40` combo_not.txt

    Jean-Marc , le 12 août 2014 à 23:10

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum