In diesem Blogbeitrag wird erklärt, wie man einen WLAN Trace unter Linux erstellen kann. Dazu muss der WLAN Adapter in den sogenannten Monitor Modus gesetzt werden, damit wir alle Pakete aufnehmen können. Ohne den Monitormodus würde der Treiber fremde Pakete herausfiltern. Beim Tracen möchte man aber alle Pakete erhalten. Am besten verwendet man einen externen USB-WLAN-Adapter.
Was es zu beachten gibt
Um einen guten Trace zu erstellen muss der WLAN Adapter die gleichen Eigenschaften vorweisen, wie die Kommunikation, die aufgenommen werden soll. D.h. soll ein Trace gemacht werden von einer AP zu Client Kommunikation mit 40 MHz Bandbreite und 3 Streams, muss der WLAN Adapter, womit der Trace gemacht werden soll, auf 40MHz eingestellt werden und mind. 3 Streams unterstützen.
Monitor Mode einrichten
Um den Montor Mode einzurichten zu können muss er vom Treiber unterstützt werden. Ob dieser unterstützt wird oder nicht verrät uns das „iw“ Kommando unter Linux.
iw list
...
Supported interface modes:
* IBSS
* managed
* AP
* AP/VLAN
* monitor
* mesh point
* P2P-client
* P2P-GO
* outside context of a BSS
...
Der Monitor Mode kann wird wie folgt eingerichtet:
iw <wlan ifc> del
iw phy <phyname> interface add <monitor interface> type monitor
ifconfig <monitor name> up
zum Beispiel
iw wlan0 del
iw phy phy0 interface add mon0 type monitor
ifconfig mon0 up
Sollte beim letzten Befehl eine Fehlermeldung erscheinen, liegt es wahrscheinlich daran, dass es durch Software geblockt wird. Gründe dafür können ein eingeschalteter Network-Manager sein. Um dies zu vermeiden sollte der Network-Manager immer vorher ausgeschaltet werden. Sollte jedoch doch einmal das Interface geblockt sein kann es wie folgt wieder freigegeben werden.
rfkill list
...
1: phy0: Wireless LAN
Soft blocked: Yes
Hard blocked: no
...
rfkill unblock 1
Nun sollte der Monitor auf „up“ gesetzt werden können. Danach kann der notwendige Kanal eingestellt werden.
Richtiger Kanal
Um den richtigen Kanal zu finden, muss man erst mal herausfinden auf welchen Kanal sich der Access Point überhaupt befindet. Hierzu kann man das Linux-Tools „airodump-ng“ von der „aircrack-ng“-Suite verwenden.
airodump-ng -b[g/a] <monitor interface>
# 2.4 GHz Channels
airodump-ng -bg mon0
# 5 GHz Channels
airodump-ng -ba mon0
CH 4 ][ Elapsed: 0 s ][ 2019-11-20 11:24
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
11:22:33:44:55:66 -78 16 0 0 1 54 WPA2 CCMP PSK Test1
11:22:33:44:55:77 -71 45 0 0 6 54 OPN Test7
66:11:22:33:44:55 -70 63 0 0 7 54 WPA2 CCMP PSK Test3
22:33:44:55:66:77 -76 92 0 0 9 54 WPA2 CCMP PSK Test5
In diesem Beispiel sehen wir die aktuelle Verschlüsselung des gefunden Access Points, die SSID, die BSSID und den verwendeten Kanal. Zum Beispiel hat der Access Point mit der BSSID „11:22:33:44:55:77“ keine Verschlüsselung und sendet auf Kanal 6 mit der SSID „Test7“. Der AP mit der BSSID „22:33:44:55:66:77“ sendet mit der SSID „Test 5“ befindet sich auf Kanal 9 und ist mit WPA2-Personal und dem CCMP Cipher verschlüsselt.
Hier erstellen wir einen Trace vom AP mit der BSSID „11:22:33:44:55:77“, der auf Kanal 6 sendet. Nachdem „airodump-ng“ beendet wurde kann man den Kanal im Monitor Interface mit folgendem Befehl fest einstellen.
iw <monitor ifc> set channel <Kanal> [NOHT|HT20|HT40+|HT40-|80MHz]
iw mon0 set channel 6
Trace aufnehmen
Nachdem man den richtigen Kanal ausgewählt hat, kann man „tcpdump“ oder „wireshark“ mit dem frisch generierten Monitor Interface starten.
wireshark -i <monitor interface> -k
wireshark -i mon0 -k
Kommentare von Waldo Rama