Blog: On voulait parler des attaques cyber pendant les JO mais on n'a rien Ă dire
Blog: Casser des condensats de mots de passe...sans violence
Auteur: Vlad
Publié le
Comme certains le savent (ou pas), jâaime bien casser des condensats de mots de passe mais sans violence đ.
Avant tout choses, je vous recommande la lecture de la prĂ©sentation que jâavais faite Ă lâOSSIR en mai 2019 : https://www.ossir.org/paris/supports/2019/2019-05-14/2019OSSIR-_Casser_des_mots_de_passe_v1.0.pdf
Résumé de la présentation
Sans reprendre le contenu complet de la présentation, voici les principaux messages.
Casser des condensats, câest utile
Casser des condensats câest utile pour se protĂ©ger en identifiant les mots de passe les plus faibles. Depuis plusieurs mois, des cybercriminels attaquent massivement Office 365 Ă partir de deux principales attaques :
- Du « password spraying » consistant Ă essayer quelques mots de passe prĂ©visible (Entreprise2020, Password123âŠ) sur un grand nombre de comptes, afin de ne pas atteindre le seuil de blocage du nombre de tentative erronĂ©e par compte (souvent Ă 5) ;
- Du « password reuse » consistant Ă essayer les mots de passe trouvĂ© dans des fuites de donnĂ©es publiques sur les comptes associĂ©s. Si Martin DUPONT de chez Entreprise avait un compte Linkedin avec le mot de passe « Maman007 », suite Ă la fuite de la base de Linkedin en 2012, il yâa fort Ă parier que des attaquant vont tenter de compromettre son compte Office 365 en essayant de sây connecter avec le login martin.dupont@entreprise.com et le mot de passe « Maman007 ».
SĂ©bastien MĂ©riot dâOVH avait fait une trĂšs bonne prĂ©sentation sur le sujet Ă la confĂ©rence CORI&IN 2020 : Fuite de donnĂ©es & Credential Stuffing. Si vous nâavez pas pu la voir, en voici un rapide rĂ©sumĂ© : https://blog.xmco.fr/retour-sur-la-coriin-2020/
Casser des condensats peut Ă©galement servir lors dâun test dâintrusion, par exemple en environnement Active Directory en rĂ©cupĂ©rant des condensats de mots de passe grĂące Ă lâoutil responder ou en rĂ©alisant du Kerberoasting, ce qui marche plutĂŽt trĂšs bien đ . Pour les dĂ©tails sur le Kerberoasting, je vous recommande la lecture de cet excellent billet de blog en français de Pixis : https://beta.hackndo.com/kerberoasting/
Ăa se fait bien pour pas trop cher
Pour un coĂ»t modique (Ă lâĂ©chelle dâune entreprise ou dâune organisation criminelle), il est possible de disposer de matĂ©riel permettant de tester des dizaines de milliards de mots de passe par seconde pour casser des condensats.
Les résultats obtenus sont toujours intéressants
En gĂ©nĂ©ral, dans des entreprises nâayant pas rĂ©alisĂ© ce type dâopĂ©ration et/ou nâayant pas une sensibilisation forte Ă la sĂ©curitĂ©, les rĂ©sultats oscillent entre 60% et 80%.
RĂ©cemment, jâai travaillĂ© sur le sujet pour une entreprise et jâai pu retrouver les mots de passe de 85%des 80 000 comptes actifs dont :
- 1 900 mots de passe faisant parti des 10 pires mots de passe du monde (123456, azerty, password, 12345, 123123âŠ), le fameux « The Worldâs Top 10 Worst Passwords » ;
- 2 200 mots de passe contenant simplement le nom de lâentreprise ou avec lâannĂ©e en suffixe ;
- 3 140 mots de passe disponible dans des fuites de données publiques (« password reuse ») ;
- 25 638 mots de passe provenant de dictionnaires publiques comme CrackStation.
Alors oui ce nâest pas bon, oui câest dĂ©sagrĂ©able Ă dĂ©couvrir, oui cela peut faire peur, mais il est prĂ©fĂ©rable de le dĂ©couvrir en faisant ce type de vĂ©rification et lancer un plan de remĂ©diation, plutĂŽt que de fermer les yeux et laisser les cybercriminels exploiter ces faiblesses.
Solution(s)
Pour les conclusions, je vous renvoie vers ma prĂ©sentation que je complĂ©terai juste de : si vous utilisez Office 365 activez lâauthentification forte Ă double facteur, câest indispensable ; jâentends parler quasiment chaque jour de comptes compromis chez mes clients, contacts, prospects, copainsâŠ
Mon mode opératoire
Quand je rĂ©cupĂšre des condensats que je souhaites casser, je suis gĂ©nĂ©ralement le mĂȘme mode opĂ©ratoire, que jâamĂ©liore Ă chaque itĂ©ration.
Tout ceci est bien entendu perfectible, critiquableâŠ
1 â Recherche des condensats dans ma propre base
Je conserve une petite base associant des mots de passe et des condensats (NTLM et SHA1-160bits) provenants de publications comme celles du site hashes.org, de pastebin⊠Si les condensats à casser ne sont ni NTLM ni SHA1-160bits, je passe à la suite.
2 â Dictionnaire spĂ©cifique
Je construis un dictionnaire spécifique à ma cible, à partir:
- Du Wikipedia de lâentreprise ciblĂ©e, dans la plupart des langues ;
- Du site web de lâentreprise, de ses marques, de ses filiales, de sa maisons mĂšre⊠avec lâoutil CeWL (que je dĂ©teste car dĂ©veloppĂ© en Rubis) ou manuellement ;
- Dâarticles de presse sur lâentreprise, ses marques⊠;
- Des comptes Facebook de lâentreprise, de ses marques⊠plutĂŽt manuellement mais câest assez rapide ;
- Des Twitter de lâentreprise, de ses marques⊠avec lâoutil twofiquand jâarrive Ă le faire marcher, sinon manuellement (quasi aussi rapide) ;
- Je concatÚne toutes ces données brutes, construis quelques mots complexes ou expressions manuellement et cela me donne un premier dictionnaire.
Outil de cassage : hashcat avec ce dictionnaire et un ensemble de 3 millions de rÚgles de dérivations que je maintiens dans le temps (celles fournies par défaut avec hashcat sont déjà trÚs bien).
Durée : quelques minutes
3 â Tous les mots de passe de moins de 7 caractĂšres
La technique est simple, il sâagit de tester tous les mots de passe possible dâune longueur de 1 Ă 7 caractĂšres.
Outil : hashcat
Durée : dans les 15 minutes sur 2 cartes graphiques RTX 2080 pour des condensats NTLM
3 bis â Tous les mots de passe de moins de 8 caractĂšres
Si jâai le temps, je rĂ©alise la mĂȘme chose que prĂ©cĂ©demment mais avec tous les mots de passe possible dâune longueur de 8 caractĂšres.
Outil : hashcat
Durée : dans les 20 à 22h sur 2 cartes graphiques RTX 2080 pour des condensats NTLM
4 â Dictionnaire InsidePro
Jâutilise le dictionnaire InsidePro de 31Mo (en ayant supprimĂ© les doublons avec CrackStation, cf. la suite)
Outil : hashcat et mes 3 millions de rÚgles de dérivations
Durée : quelques dizaines de minutes sur 2 cartes graphiques RTX 2080 pour des condensats NTLM
5 â Dictionnaire Crackstation
Jâutilise le dictionnaire CrackStation (tĂ©lĂ©chargeable sur leur site) que jâai prĂ©cĂ©demment nettoyĂ©, triĂ© et dĂ©barrassĂ© de ses doublons (# sort -u | awk âlength($0) > 4 && length($0) < 41â )
Outil : hashcat et mes 3 millions de rÚgles de dérivations
Durée : dans les 24h sur 2 cartes graphiques RTX 2080 pour des condensats NTLM
6 â Dictionnaire perso
Depuis un moment je construis un dictionnaire de mots de passe Ă partir de tous les fuites de donnĂ©es que je peux rĂ©cupĂ©rer. A ce jour il faut 43Go. Il nâest pas exhaustif (je nâai ni le temps ni les rĂ©seaux criminels pour tout rĂ©cupĂ©rĂ© đ) mais il permet de complĂ©ter les dictionnaires prĂ©cĂ©dents.
Outil : hashcat et mes 3 millions de rÚgles de dérivations
Durée : entre 3 et 4 jours sur 2 cartes graphiques RTX 2080 pour des condensats NTLM
7 â Masques Ă©vidents
Je me suis crĂ©Ă© une liste de masques reprĂ©sentant des mots de passe pouvant ĂȘtre considĂ©rĂ©s comme classiques comme par exemple tous les mots de 8 lettres, dĂ©butants par une majuscule et suivi des 4 chiffres.
Outil : hashcat
Durée : entre 4 et 6 heures sur 2 cartes graphiques RTX 2080 pour des condensats NTLM
8 â Masques personnalisĂ©s
Avec les mots de passe prĂ©cĂ©demment rĂ©cupĂ©rĂ©s et une liste rĂ©duite de mots intĂ©ressants (nom de marque, de produit, de formule chimiqueâŠ) je rĂ©aliser un dictionnaire Ă partir duquel je vais gĂ©nĂ©rer des masques pour hashcat. Jâai dĂ©veloppĂ© un petit outil en python pour cela, que je peux fournir uniquement sur demande car⊠il nâest pas dâune propretĂ© absolue đ.
Par exemple, je définis les 4 groupes suivants : « Entreprise », 4 chiffres, 2 caractÚres spéciaux et 2 chiffres. Puis à partir de ces 4 groupes, je génÚre toutes les combinaisons possibles en incrémentant la longueur des éléments, ce qui donnerait les masques suivants ( ?d = chiffre, ?s= caractÚre spécial) :
Entreprise ?d ?s ?d Entreprise ?d ?s ?s ?d => ici câest le nombre de caractĂšres spĂ©ciaux qui a variĂ© Entreprise ?d ?s ?d ?d=> nous recommençons avec 2 chiffres au lieu dâun seul Entreprise ?d ?s ?s ?d ?d => Ă nouveau 2 caractĂšres spĂ©ciaux ⊠Entreprise ?d ?d ?d ?d ?s ?s ?d ?d => Je finis cette combinaison par tous les groupes dans leur intĂ©gralitĂ©s ?dEntreprise ?s ?d => ici câest une nouvelle combinaison oĂč je ne dĂ©bute plus par le nom de lâentreprise par le second groupe de 1 Ă 4 chiffres ⊠?d ?d ?d ?d Entreprise ?s ?s ?d ?d => fin de cette combinaison
Outil : hashcat
Durée : Je limite aux combinaisons aboutissant à des mots de passe de 10 à 12 caractÚres afin de ne pas dépasser une journée de calcul au total
9 â Masques dâimitation
LĂ encore, jâutilise les mots de passe prĂ©cĂ©demment rĂ©cupĂ©rĂ©s mais pour gĂ©nĂ©rer des masques qui auraient permis de les retrouver. Cette mĂ©thode est particuliĂšrement efficace đ.
Si par exemple, jâai le mot de passe « Coucou2020! », jâen dĂ©duits le masque suivant ( ?u = majuscule, ?l = minuscule, ?d = chiffre, ?s = caractĂšre spĂ©cial) : ?u ?l ?l ?l ?l ?l ?d ?d ?d ?d ?s
Jâai dĂ©veloppĂ© un petit outil en python pour cela, que je peux fournir uniquement sur demande car⊠il nâest, lĂ encore, pas dâune propretĂ© absolue đ.
Outil : hashcat
Durée : entre 12 et 24h mais mon script étant un peu plus évolué que le précédent, je limite ici la durée de cassage à 1 journée
10 â Mots de passe trouvĂ©s + rĂšgles de dĂ©rivations
LĂ encore, jâutilise les mots de passe prĂ©cĂ©demment rĂ©cupĂ©rĂ©s et je les utilise tout simplement comme un nouveau dictionnaire.
Outil : hashcat et mes 3 millions de rÚgles de dérivations
Durée : moins de 5 minutes sur 2 cartes graphiques RTX 2080 pour des condensats NTLM
Tout ceci peut ĂȘtre amĂ©liorĂ© et je dois encore :
- Connecter les scripts des phases 7, 8 et 9 afin dâĂ©liminer les masques redondants ;
- Rendre mes scripts plus pro et utilisables par une autre personne que moi-mĂȘme đ.
Si vous avez suivi, vous remarquerez que globalement, tout tourne autour des mĂȘmes mots de passe et que je peux difficilement trouver un mot de passe qui nâaurait pas Ă©tĂ© dĂ©jĂ trouvĂ© prĂ©cĂ©demment ou un mot de passe approchant. Câest vrai et câest pour cela que je fais Ă©voluer rĂ©guliĂšrement mon propre dictionnaire avec de nouveaux mots de passe, rĂ©ellement trouvĂ©s dans la nature.
Mais retrouver un mot de passe qui nâa jamais Ă©tĂ© utilisĂ© nulle part avant, non basĂ© sur un mot usuel et dâune bonne longueur⊠câest trĂšs difficile, vous savez donc quoi faire đ.
Levée de 11 M⏠pour Patrowl en série A : Vers une protection continue des actifs numériques
Blog: RegreSSHion, critical vulnerability on OpenSSH CVE-2024-6387