The following techniques are essential in the process of penetration testing for a wireless network.
1.1 - Connecting the wireless interface card
- We start plugging-in the Alpha USB device to the computer "kali" and then booting it. From the console, we can use iwconfig to confirm that the wireless card has been detected and the drivers properly loaded. The virtual interface used for wireless connections will be wlan0:
- Next, bringing the interface wlan0 up:
- Checking that wlan0 is actually up:
1.2 – Sniffing packets
- The first step in the sniffing process would be to use the command airmon-ng in order to put the card into monitor mode, also known as promiscuous mode in the wired networks. It means that the wireless interface will accept all the packets off the air in the working channel, regardless its destination.
- The command airmon-ng, without options, detects the available card wlan0:
- Because It is not possible to use directly wlan0 in monitor mode, a monitor mode interface is created, called mon0, virtually attached to wlan0, that will be able to read wireless frames off the air:
- Checking that mon0 has been properly created:
- Verifying that mon0 is working in monitor mode:
- Its MAC address is 00-c0-a0-71-1a-36, same as wlan0:
1.3 - Capturing packets
- For the purpose of capturing and analyzing the sniffed packets, the tool Wireshark can be launched:
Under Capture -> Interfaces:
- The interface mon0 is picked up, and then Start:
1.4 – Analyzing packets
- At next image, captured broadcast packets from Alfa Network interface card can be seen. The Protocol field is 802.11, as expected for wireless packets:
- Expanding the third row, the additional information is telling that the frame includes a "Probe Request" broadcast , because the client's Alfa wireless card is requesting information from any available access point:
- Next, with the purpose of expanding a little bit this practice, the client is connected to the network created by the Access Point, whose SSID is "spaniard":
- The Acces Point asks for authentication to allow the client to join the network "spaniard":
- Again, from Wireshark, captured packets sniffed by the interface mon0:
- Now, there are a lot of different frames in the air:
- In order to filter packets created by the Access Point, the filter wlan.bssid == 00:25:f2:9b:91:23 is used, being the hexadecimal number the Motorola AP's MAC address:
- These packets are coming from source Motorola_9b:91:23 and destination broadcast, being its type Beacon frame. With these packets, the AP is announcing itself to any client that could be listening. As expected, the BSSID is the AP's MAC address, 00:25:f2:9b:91:23. A lot more information of the AP is available from capturing packets with Wireshark, as it will be seen alongside later chapters.
1.5 – Working with channels
- A very interesting command is airodump-ng, which helps to determine in which channel the interface is running on. It is very important to remember that a wireless interface can work only in one channel at a given instant. This means that it is not posible for a wireless card to sniff on all channels and bands at the same time.
- With the purpose of sniffing packets from and to an specific AP, it is necessary to lock up the wireless card on the same channel that the AP, the 6 in this case:
- Setting mon0 on channel 6:
- After the airodump-ng command, it is necessary to add the MAC address of the AP and the monitoring interface mon0:
- Then, all the information about the AP and the clients connected to it is seen. Also, the encryption methods used, and son on. Anyway, these concepts will be studied in more details at next chapter:
- As said before, the working channel for the wireless interface is the 6:
- It can be verified that now the working frequency is 2.437 GHz, corresponding to channel 6 center:
- Another useful utility of airodump-ng is the ability to make the interface hopping from different bands and channels:
- As the time goes by 4, 12, 24, 32, 40 seconds …, the interface hops between channels 6, 5, 3, 13, 2 …
- As previously said, the interface is working in a single channel for a given second, regardless it can hop to another channel some seconds later.
- This option is essential so that the wireless interface card can detect different Access Points in the sorrounding area, each of them working in a different band or channel. Again:
1.6 - Injecting packets
- This practice consists of the Alfa card being able to inject arbitrary packets into the air without actually being connected to the AP. So, first of all we need to disconnect the attacker "kali" from the "spaniard" network.
- Injecting packets from the client “kali” means that it will be acting as a new AP, in other words a “spoofed AP”. For that, “kali” will be creating arbitrarily beacon frames as if it would be an AP broadcasting its SSID “example”.
- One of the commands to achieve this goal is mkd3, adding the mon0 interface, option b for “beacon flood mode”, option -n for name SSID “example”:
- These packets are captured by Wireshark:
- Also, from the client “roch” the spoofed AP's SSID “example” can be detected:
- Another option could be to use the aireplay-ng command, to inject packets into a network, for instance “spaniard” In this case, the wireless interface detects the AP and then injects “probe request” packets, even without actually being connected to the AP. The used options are -9 (tests injection and quality), -e (setting the target AP's SSID), -a (setting the target AP's BSSID or MAC address), and finally the used interface mon0.
- From this practice it can be deduced that anyone can create and broadcast beacon frames (imitating a real or legitimate AP, being SSIDs in clear text or unencrypted), or inject probe request packets. These security tricks will be very valuable for attacks seen at next chapter.