NOTE Post Réécriture : Cet article, et bien dâautres, fait parti de la sĂ©rie âScript kiddieâ. Il a Ă©tĂ© Ă©crit il y a plusieurs annĂ©es. Son contenu nâest pas Ă jour et il contient potentiellement des erreurs. Plus dâinformation sur la page de prĂ©sentation de la sĂ©rie.
La mĂ©thode BruteForce consiste Ă tester toutes les possibilitĂ©s pour trouver un mot de passe. Câest une technique trĂšs simple qui peut demander beaucoup de temps, on prĂ©fĂ©rera donc lâutiliser en dernier recours ou en mĂȘme temps quâune autre attaque (au cas oĂč). Pour plus dâinformations sur le vocabulaire employĂ©, rĂ©fĂ©rez-vous au chapitre sur la cryptographie.
Pour faire nos expériences, on se basera sur un hash trÚs simple que vous pouvez obtenir avec la commande suivante :
echo "12345" | md5sum | tr -d â -â
d577273ff885c3f84dadb8578bb41399
Collez-le Ă lâintĂ©rieur dâun fichier nommĂ© pass.txt.
Accessoirement, vous aurez Ă©galement besoin de dictionnaires, câest-Ă -dire de grandes listes de mots constituant un ensemble de possibilitĂ© de mot-de-passe. Vous en trouverez Ă cette adresse.
John The Ripper, lâattaque sur CPU
John The Ripper est lâoutil de cracking prĂ©fĂ©rĂ© des hackers. Il utilise les ressources du processeur (CPU) pour attaquer, ce qui en fait un outil facile Ă installer par apport Ă dâautre, et qui donne lâavantage dâavoir de bonnes performances sans carte graphique (dans la limite de la puissance de lâordinateur).
Pour lâinstaller, soit vous passez par GitHub, soit par snap :
apt install john
John The Ripper, que lâon va appeler JtR maintenant, offre de nombreux avantages, comme la reconnaissance du hash, le fonctionnement sur de multiple types de hash et de multiple plateformes.
Il dispose Ă©galement de plusieurs mĂ©thodes dâattaque :
- Crack seul : le mode le plus rapide pour les fichiers de mot-de-passe
- Dictionnaire : compare les hash avec un fichier de possibilité
- Incrémentale : essaye toutes les possibilités, ce qui est trÚs long
Câest trois techniques peuvent se mettre en commande, et sâexĂ©cuter trĂšs simplement :
john --single pass.txt
john pass.txt --wordlist=[chemin]
john --incremental pass.txt
Une fois le travail effectué, pour voir le résultat, tapez simplement :
john --show pass.txt
Afin de gagner un peu de temps, vous pouvez préciser le type de hash que vous allez donner à john :
john --single pass.txt --format=RAW-MD5
Vous pouvez obtenir la liste des formats supportés avec :
john --list=formats
Laissez-moi dĂšs Ă prĂ©sent vous montrer un cas bien pratique dâutilisation de JtR. Avec ce logiciel, il devient trĂšs facile de contourner les mots de passe dâune archive zip.
Par exemple, créons une archive avec cette commande :
zip -e -r pass.zip pass.txt
Le programme vous demande alors de saisir un mot de passe, puis de le vérifier. Je vous encourage à en mettre un pas trÚs long afin de ne pas surcharger John lors de ce petit exercice.
On va Ă prĂ©sent utiliser la commande zip2john pour crĂ©er un hash Ă partir de cette archive. Sur certaines installations, la commande peut ĂȘtre john-the-ripper.zip2john :
zip2john pass.zip > hash.txt
Notre nouveau fichier contient Ă prĂ©sent le hash de lâarchive, il nây a plus quâĂ le cracker simplement avec cette commande :
john --format=zip hash.txt
Vous nâavez plus quâĂ rĂ©cupĂ©rer le mot-de-passe avec la commande plus haute.
Hashcat, lâattaque au GPU
Hashcat est Ă©galement un logiciel de BruteForce trĂšs utilisĂ© par les communautĂ©s de Hackers. Sa grande diffĂ©rence avec john est que, bien quâil soit possible de le faire fonctionner sur le CPU, il fonctionne majoritairement sur la carte graphique (GPU). Ainsi, il va nous falloir quelques instructions en plus pour le faire fonctionner parfaitement.
Dâabord installons-le avec :
apt install hashcat
Nous allons Ă©galement recourir Ă un deuxiĂšme paquet qui sera trĂšs utile pour beaucoup dâopĂ©rations : https://github.com/hashcat/hashcat-utils.git
Vérifiez ensuite si hashcat est pris en charge par votre carte graphique avec cette commande :
hashcat -I
Si elle renvoie ceci :
hashcat (v5.1.0) starting...
No devices found/left.
Câest quâil va falloir installer les drivers de votre carte graphique. Quelques instructions sont prĂ©sentes ici : https://hashcat.net/hashcat/
Je possĂšde un intel i915, si câest aussi votre cas, vous trouverez votre bonheur ci-dessousâŠ
https://registrationcenter-download.intel.com/akdlm/irc_nas/vcp/15532/l_opencl_p_18.1.0.015.tgz
Pour avoir un peu plus dâinformations sur hashcat, le mieux reste encore de jeter un Ćil Ă sa documentation :
hashcat -h
On remarquera que les paramĂštres les plus imortants sont en haut du tableau.
En effet, -a et -m respectivement utilisé pour rentrer en mode attaque et pour
spécifier le type de hash seront souvent présents dans vos instructions.
Vous avez ensuite la liste des algorithmes pris en charge. Le nombre prĂ©sent sur la colonne de gauche correspond au nom de lâalgorithme que vous allez essayer de cracker. Vous avez les formats de hash, les modes dâattaques, le branchement de lâattaque sur le GPU ou le CPU, les performances de la machine allouĂ©es Ă lâexĂ©cution et enfin quelques exemples dâutilisation.
Je nâai presque rien Ă ajouter, Ă part appliquer Ă hashcat notre exemple de tout Ă lâheure. Si lâon reprend notre fichier pass.txt, la commande pour cracker le mot-de-passe prĂ©sent Ă lâintĂ©rieur sera alors :
hashcat -m 0 -a 0 -o resultat.txt pass.txt richelieu.txt
Ici jâutilise lâalgorithme MD5, en mode dâattaque par dictionnaire.
Le résultat sera placé dans le fichier resultat.txt,
aprÚs avoir décrypté le fichier pass.txt grùce à la liste de mots (dictionnaire) richeulieu.txt.
Comme pour John The Ripper, je vais vous présenter une utilisation un peu plus pratique de Hashcat.
Vous vous rappelez du chapitre sur les réseaux wifis ?
Eh bien il est temps de passer Ă lâĂ©tape supĂ©rieure avec hashcat en augmentant la rapiditĂ© du crack.
Pour ce faire, nous avons besoin du fichier contenant le handhake et nous allons le passer dans un des programmes de hashcat-utils.
En effet, le handshake sera dans le fichier avec lâextension .cap.
Hashcat ne comprenant pas ce genre de fichier, il va falloir le convertir avec hcat-utils en hccapx.
Allez dans le dossier /src du dépÎt hashcat-utils, puis tapez :
./cap2hccapx [fichierCap] [sortieHccapx]
Le premier chemin est celui vers votre fichier .cap, le deuxiÚme sera pour le nom du fichier dans lequel écrire.
Il va falloir ensuite trouver le mode que hashcat va utiliser :
hashcat --help
Ici, on cherche le protocole WPA, vous pouvez ajuster la sortie du manuel avec grep.
Ăa devrait sâafficher comme ceci :
2500 | WPA-EAPOL-PBKDF2 Network Protocols
Une fois choisi, tapez :
crunch [min] [max] [chaĂźne] (options) | hashcat -m 2500 [fichierHccapx]
Avec Hashcat, la rapidité de votre ordinateur devrait accrue. Elle dépendra cette fois-ci de la puissance de votre carte graphique.
Hydra, lâattaque de services
Passons à présent à un logiciel de BruteForce un peu moins utilisé que les deux autres, Hydra. Hydra sert majoritairement à attaquer des services pour trouver un mot de passe, là ou les deux autres sont utilisés pour le crack sur des hash présents sur la machine.
Pour installer Hydra :
apt install hydra
Je vous conseille de faire comme avec hashcat et de jeter directement un Ćil Ă lâaide qui est plutĂŽt bien remplie :
hydra -h
Vous avez la liste des services pouvant ĂȘtre attaquĂ©s par hydra en dessous de supported services, ainsi que quelques exemples dâutilisation Ă la fin. On en dĂ©duira quâune des syntaxes les plus couramment utilisĂ©es est la suivante :
hydra -l [nomUtilisateur] -P [dictionnaire] [IP] [service]
Un rapide exemple pour la route. Si je veux trouver le mot de passe du super-utilisateur sur la machine 80.74.144.93Â :
hydra -l root -P 1millionProbable.txt -s 2121 80.74.144.93 ssh
Il me faut tout de mĂȘme faire un petit apartĂ© sur les services Web puisque ceux-ci ont une syntaxe un peu particuliĂšre :
hydra -l [nom] -P [dictionnaire] [IP] http-post-form â[chemin]:[var1]=[val1]&[var2]=[val2](&[plus2parametres]):[Echec]â
Expliquons cette commande qui est assez grosse pour le coup :
-l correspond au nom dâutilisateur-Pau dictionnaire[IP]Ă lâadresse de celui que vous attaquezhttp-post-formau service que vous attaquez. Attention cependant, HTTP et HTTPS ne sont pas les mĂȘmes services et prendront respectivement http-post-form et https-post-form[chemin]reprĂ©sente le dossier du serveur web vers lequel est envoyĂ© le formulaire. Vous le trouverez dans lâen-tĂȘte de la requĂȘte[var1]et[var2]sont des variables qui prennent respectivement les valeurs [val1] et [val2][plus2parametres]sont les paramĂštres supplĂ©mentaires Ă lâexĂ©cution de la requĂȘte[Echec]reprĂ©sente la phrase qui sâaffiche en cas de mauvais mot de passe sur le service.
Si certains mots ne vous paraissent pas clairs, tous ces termes ainsi que de plus amples explications sont prĂ©sents dans la partie sur les requĂȘtes HTTP modĂ©fiĂ©es.
Comme un exemple vaut mieux quâun long discours, voici ce que cette commande peut donner :
hydra -l Administrateur -p richelieu.txt 172.17.200.30 http-post-form "/login:user=^USER^&password=^PASS^:Ăchec de la connexion (nom dâutilisateur ou mot de passe non valide)"
Ainsi, ^USER^ prendra la valeur de -l (ou -L) et ^pass^ la valeur de -p (ou -P).
Vous voilĂ maintenant prĂȘts Ă pouvoir contourner nâimporte quel mĂ©canisme de sĂ©curitĂ©. Cependant, gardez bien Ă lâesprit que cette mĂ©thode doit constituer le dernier recours de lâexploitation et non pas la stratĂ©gie de base. Elle sâavĂšre pratique pour rĂ©cupĂ©rer un maximum de mot-de-passe hashĂ© dans une base de donnĂ©es, mais inutile pour rĂ©cupĂ©rer les identifiants du super-utilisateur sur le service SSH quand dâautres mĂ©thodes sont disponibles sur la machine.
Bonus : DĂ©couvrir les rĂ©pertoires cachĂ©s dâun site
Un service web est un dossier comportant plusieurs ressources que le client peut consulter. Bien souvent, il sâagit de document HTML, XML, PHP ou de simples textes, mais il peut sâagir dâautres types de fichier (CSS, JavaScript, Musique, Images, VidĂ©os, etc.).
Il demeure cependant un problĂšme, nous ne pouvons pas nous promener librement sur le site sans avoir lâURL exacte pour consulter une ressource. Cela ne pose pas de soucis quand elles sont indexĂ©es (mises en lien sur une page), mais lorsque lâadministrateur cache volontairement des informations, il est plus difficile de les retrouver.
Ainsi, le logiciel DirBuster rĂ©pond Ă ce problĂšme en essayant chaque possibilitĂ© dâURL que vous lui donnerez. Autrement dit, il va vĂ©rifier si tels ou tels pages existent selon le dictionnaire que vous lui avez donnĂ©.
Vous le trouverez ici : https://sourceforge.net/projects/dirbuster/
Une fois dĂ©compressĂ©, le dossier comporte plusieurs listes ainsi que le logiciel sous le format .jar, il faut avoir Java dâinstaller pour le lancer, vous trouverez suffisamment dâinformations sur Internet pour savoir comment faire.
Lancer DirBuster :
java -jar DirBuster-0.12.jar
Ici, nous nous pencherons uniquement sur une utilisation classique de DirBuster, libre Ă vous dâapprofondir derriĂšre. Pour se faire :
- Dans Target URL, rentrez le nom du site Ă attaquer.
- Number of threads dĂ©signe la puissance allouĂ©e Ă lâattaque (le nombre de threads qui seront utilisĂ©s par le programme
- Select scanning type permet de choisir la mĂ©thode de bruteforce entre lâutilisation dâun dictionnaire ou la gĂ©nĂ©ration de mot de passe (comme avec crunch). Il faut ensuite remplir les champs en dessous selon ce que vous voulez.
- Dir to start représente le dossier à partir duquel attaquer. à savoir que le / présent veut dire que vous commencez avec la racine.
- File extension dĂ©signe les extensions qui seront recherchĂ©es, sĂ©parez-les dâune virgule sans espace. Les dossiers seront obligatoirement visĂ©s.
Une fois tout cela rempli, appuyez sur Start, le programme fait le reste du boulot.
Dâautres logiciels, un peu plus modernes, existent et peuvent constituer de bonnes alternatives Ă DirBuster si lâinstallation de java vous effraie. Par exemple : https://github.com/stefanoj3/dirstalk.
Par apport aux autres méthodes de BruteForce, la recherche de dossiers cachés sur un site web est indispensable. Elle peut vous donner accÚs à des panels secrets et à des interfaces de connexion bien gardées.