Participant

anonymous

YOLO CTF

 Mon premier CTF 

Passwords


Vous êtes face à la page de connection d'un site web.
On vous demande un login/mot de passe...
Que faites vous ?

Le login est souvent prévisible car il suit des règles : initiale puis nom, ou prenom.nom,...
Le mot de passe, quand à lui, a souvent été choisi rapidement... En ralant... Et sera basé sur des prénoms, un modèle voiture, ou une actrice de films bulgares, avec une majuscule au début et des chiffres à la fin...
Avec un peu d'info et de méthode, ça peut se retrouver vite.
Il existe des petits programmes qui à partir d'un nom vont générer des variantes pour nous.

Pour nous simplifier la vie, des dictionnaires de mots de passe, issus de hacking de grosses entreprises existent.
Rockyou.txt est une liste de mots de passe triée par fréquence d'utilisation. Le plus utilisé étant 123456...
Souvent, les équipments sont livrés avec des comptes par défaut. Là aussi des listes existent.

Pour savoir si votre mot de passe préféré est déjà dans la nature, allez faire un tour sur : https://haveibeenpwned.com/
Si un de vos comptes a été compromis et que vous utilisez une règle prévisible, des scripts peuvent tenter de se connecter à d'autres serveurs avec ces informations...

Entre nous, rien ne vaut un bon gestionnaire de mot de passe qui génère un mot de passe aléatoire. Par exemple : https://keepass.info/

Une affaire de famille
1

Jean Bon vient de monter sa startup spécialisée dans la vente de sabres lasers.
Il a passé la soirée à consolider ses commandes, en pensant à ses dernières vacances en Martinique.
Avant de rentrer, regarder le dernier épisode de Game of Throne, il sauvegarde ses documents dans un zip chiffré sur une clef usb.
Quand winzip lui demande un mot de passe, sans contrainte particulière, il a un souvenir d'une vague formation en sécurité, et il entre rapidement un mot de passe de plus de 8 lettres facile à retrouver.

Le flag est le mot de passe qu'il va utiliser.

Au boulot
2

Les affaires décollent, Jean peut se permettre prendre Jar Jar en stage pour développer une solution de gestion de stock adaptée aux sabres laser en php.
Jar Jar trouve rapidement un super code sur github, et l'installe sans tarder.
Au moment de créer son compte, Jean découvre avec énervement que le logiciel refuse de créer son compte s'il n'y a pas de lettre majuscule dans le mot de passe.

Le flag est le mot de passe que Jean va utiliser.

Une politique de sécurité forte
3

Le logiciel de gestion de stock marche plutôt bien. Jar Jar, se dit qu'il est temps de penser à le sécuriser un peu.
Il décide de renforcer la sécurité en forcant l'utilisation d'un caractère spécial dans le mot de passe.
Pendant ce temps Jean, focalisé sur le marché américain et la conversion euro/dollars, ne se doute pas qu'il va devoir bientôt changer son mot de passe.

Le flag est le futur mot de passe que Jean va utiliser.

Au boulot
10

Au vu des besoins croissants, Jar Jar se voit contraint de migrer vers un progicel plus adapté. Il l'installe et part en week-end.

 https://yoloctf.org/password/index.php 

Ouvrez cette url dans un nouvel onglet.


Au moment de se connecter, Jean réalise qu'il n'a aucune idée du login/password utilisé par Jar Jar.
Il va chercher sur internet des couples login/password par défaut connus sur le git

 https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ 


Il ouvre mysql-betterdefaultpasslist.txt et il teste à la main...

Note pour plus tard... Les constructeurs ont souvent leurs propres mots de passe par défaut. Une petite liste est dispo dans le fichier default-passwords.csv du même github. Utile quand on récupère un vieux routeur ou une installation par défaut d'un serveur Tomcat...

Au boulot
15

Le logiciel n'étant pas adapté, Jar Jar en installe un autre et part en vacances.

 https://yoloctf.org/password/index_hydra.php 

Ouvrez l'url dans un nouvel onglet du navigateur.

Au moment de se connecter, Jean réalise qu'il n'a, cette fois encore, aucune idée du login/password utilisé par Jar Jar.
Il n'a pas envie de se taper une nouvelle liste à la main, et décide d'automatiser la saisie des mots de passe avec THC Hydra.
THC Hydra est un outil qui va brute forcer des login à partir de listes de user/password.
La doc de THC-Hydra est disponible en https://github.com/vanhauser-thc/thc-hydra

Il lance une kali et récupère deux fichiers unix_users.txt et unix_passwords.txt qui sont rangés avec d'autres dictionnaires de mots de passe dans

 /usr/share/wordlists/metasploit/. 

Ces fichiers sont disponibles dans le terminal en

 - challenges/ctf-passwd/unix_users.txt 
 - challenges/ctf-passwd/unix_passwords.txt 


Dans le terminal ce site est accessible en HTTP (pas en HTTPS), sans le prefix d'url /password/, et avec le nom de serveur 'ctf-passwd-web'.

 curl http://ctf-passwd-web/index_hydra.php 

En regardant le code HTML de la page on en déduit les information nécessaires à l'attaque.
La méthode (get/post) d'envoi des données par la page web vers le serveur, et les nom des champs utilisés.

 <form action=""  method="post"> ==> Méthode POST 
 <input type="text" class="form-control" id="login" name="login"> ==> champ login 
 <input type="password" class="form-control" id="password" name="password"> ==> champ password 


 # hydra -h 
 ctf-passwd-web               : notre serveur</br> 
 http-form-post               : http et post</br> 
 /index_hydra.php             : url à tester</br> 
 login=^USER^&password=^PASS^ : les parametres à tester avec les fichiers Users et Passwords</br> 
 -L unix_users.txt            : fichier contenant la liste des logins</br> 
 -P unix_passwords.txt        : fichier contenant la liste des mots de passe</br> 
 Authentification             : message présent sur la page en cas d'echec de l'authentification</br> 
 -v                           : Verbose 
 -f                           : Une fois un login/password trouvé arréter de chercher 



Note: dans un CTF, les serveurs sont configurés pour limiter le débit des requètes et ne pas se retrouver à genoux sous la charge.
Généralement, on n'aime pas le bruteforce.
Si le mot de passe ne sort pas très vite avec les listes par 'défaut', c'est que ce n'est pas la bonne méthode.

Aide sur hydra: Dans le terminal

 hydra -h 
 hydra -U https-form-post