WLAN – Paketanalyse mit Wireshark

Moin Moin,

heute möchte ich euch einen kleinen Überblick über einige Möglichkeiten der Paketanalyse mit Wireshark geben. Wireshark ist ein kostenloser Netzwerk Protokoll Analyzer der seit 1998 kontinuierlich weiterentwickelt wird.

Es gibt unterschiedliche Möglichkeiten WLAN Pakete aufzuzeichnen. Einige Beispiele:

  • AirPcap -> USB WLAN Karte zum mitschneiden von WLAN Traffic auf einem Windows PC
  • Access Point -> die WiNG Access Points von Extreme Networks bietet z.B. die Möglichkeit WLAN Traffic in PCAP Dateien zu schreiben
  • Linux -> bietet die Möglichkeit WLAN Traffic mitzuschneiden
  • macOS -> bietet die Möglichkeit WLAN Traffic mitzuschneiden

Es gibt noch einige weitere Möglichkeiten. Jede dieser Lösungen hat seine Vor- und Nachteile, auf die ich hier aber nicht weiter eingehen möchte.

Filter

Im Ersten Schritt möchte ich einige Filter zusammenfassen, die ich häufig einsetze:

TypFilter
Beacons Paketewlan.fc.type_subtype == 0x0008
Probe Request Paketewlan.fc.type_subtype == 0x0004
Probe Response Paketewlan.fc.type_subtype == 0x0005
Null Function Paketewlan.fc.type_subtype == 0x0024
WLAN Empfängerwlan.ra == MAC
WLAN Zielwlan.da == MAC
WLAN Senderwlan.ta == MAC
WLAN Quellewlan.sa == MAC
WALN BSS IDwlan.bssid == MAC
WLAN PHY Typewlan_radio.phy == x
z.B.
5 für 802.11a
6 für 802.11g
7 für 802.11n
8 für 802.11ac
WLAN Frequenzwlan_radio.frequency == x
radiotap.channel.freq == x
z.B. 2462
WLAN Kanalwlan_radio.channel == x
z.B. 11
WLAN Date Ratewlan_radio.data_rate == x
radiotap.datarate == x
z.B. 54
WLAN 802.11n MCSwlan_radio.11n.mcs_index == x
radiotap.mcs.index == x
z.B. 15
WLAN 802.11ac MCSwlan_radio.11ac.mcs == x
radiotap.vht.mcs.0 == x
z.B. 5
WLAN Kanal Breite 802.11nwlan_radio.11n.bandwidth == x
z.B. 0 für 20MHz
WLAN Kanal Breite 802.11acwlan_radio.11ac.bandwidth == x
z.B.
4 für 80MHz
7 für 20MHz Kanal 1/4

Bei den Filtern sind einige Werte wie z.B. Frequenz doppelt vorhanden. Hier wird zwischen wlan_radio und radiotap unterschieden.

wlan_radio, dieser Wert wird vom Sender mit dem Datenpaket übertragen und ist dadurch eine Information über die Quelle. wlan_radio.channel == 11 bedeutet also, dass dies Datenpaket auf Kanal 11 übertragen wurde.

radiotap, dieser Wert wird von der WLAN Karte des Empfängers eingefügt und gibt Information über den Empfang des Paketes aus. wlan_radio.channel == 10 bedeutet also, dass dies Datenpaket auf Kanal 10 empfangen wurde.

Es ist möglich, dass sich die Werte zwischen wlan_radio und radiotap unterscheiden. Wird ein Datenpaket auf Kanal 11 mit einer hohen Redundanz übertragen, kann ich dies auch auf Kanal 10 mitlesen. Unwahrscheinlich bzw. nicht möglich ist es, dass ein Datenpaket mit einem MCS von 15 gesendet und mit einem MCS von 14 empfangen wird.

Weitere Details zum Thema Radiotap und Definitionen können der Webseite entnommen werden.

Selbstverständlich können Filter auch nach belieben kombiniert werden. Hierzu gibt es einige Parameter:

WertBeschreibungBeispiel - WertBeispiel - Beschreibung
&&UNDA && BA und B
||ODERA || BA oder B
()fügt die gewählten Werte als positiven Filter zusammen(A || B) && CA und C oder B und C
!()fügt die gewählten Werte als negativen Filter zusammen!(A || B) && CNicht A und C oder nicht B und C
>größer alsA > BA größer als B
<kleiner alsA < BA kleiner als B
>=größer gleichA >= BA größer gleich B
<=kleiner gleichA <= BA kleiner gleich B
!=ungleichA != BA ungleich B
==gleichA == BA gleich B

Im weiteren Verlauf habe ich diese Parameter auch entsprechend zum Anpassen der Filter genutzt.

I/O Graph

Nachdem wir jetzt einige Filter kennen gelernt haben, wollen wir die Daten nun Analysieren und vergleichen. Hierzu kann man unter anderem den I/O Graph nutzen. Öffnen lässt dieser sich über Statistiken -> I/O Graph.

Es öffnet sich nun ein Fenster mit einem Kurvendiagramm. Dieses zeigt erst einmal alle Datenpakete im Zeitverlauf an.

Diese Anzeige liefert uns kaum Informationen, wir können aber z.B. den Filter für Retries nutzen und diese mit der Anzahl an Paketen vergleichen.

Dieser Vergleich ist vielleicht nicht zielführend, da ich hier sämtliche Pakete vergleiche. Dies inkludiert also auch ACK, Beacons, Probes usw.. Eventuell möchte ich nur Datenpakete und deren Retries vergleichen?

Hierfür könnten wir dann den Filter wlan.fc.type_subtype == 0x0028 || wlan.fc.type_subtype == 0x0020 für alle Datenpakete nutzen. Für die Retries bei diesen Datenpaketen nutzen wir dann noch folgenden Filter: (wlan.fc.type_subtype == 0x0028 || wlan.fc.type_subtype == 0x0020) && wlan.fc.retry == 1

Mit entsprechenden Filtern lassen sich somit beliebige Daten vergleichen. Ich könnte mir z.B. Filter pro Kanal oder pro BSSID erstellen. Vielleicht möchte ich aber auch ermitteln, wie viel Traffic ein bestimmter Client auf diesem Access Point erzeugt hat.

I/O Graph-Report

Habe ich mir jetzt die Unterschiedlichen Graphen erstellt, möchte ich diese vielleicht noch für einen Kunden innerhalb einer Dokumentation aufbereiten.

Hierfür gibt es die einfache Lösung über Save As… mir den Graphen als PDF zu speichern. Dieser Weg ist sehr einfach, sicherlich aber kein optisches Highlight. Eine Alternative Möglichkeit wäre z.B. amCharts. Dort lassen sich online kostenlose Graphen erstellen.

Über den kopieren Button im I/O Graph von Wireshark können wir uns die Werte kopieren und bei amCharts einfügen. Hierzu wählen wir auf der amCharts Webseite ein Template aus der Liste oder über Make a Chart aus. Wir landen nun in einem Editor, in dem wir die vorhanden Daten rechts unten erst einmal löschen.

Über den Import Button können wir anschließend unsere kopierten Daten aus dem Wireshark importieren. Hierzu fügen wir einfach die Daten in das Text Feld mit der Beschreibung Data, URL or browse ein.

Nachdem der Import bestätigt wurde, können wir die Daten rechts unten sehen. Nun müssen wir nur noch unseren Graphen einrichten.

Zum Einrichten des Graphen gehe ich folgende Schritte durch:

  1. General settings -> Category field -> Intervall Start auswählen. Hiermit wird die X Achse (Zeit) definiert.
  2. Graphs -> AmGraph-1 -> Titel -> Alle Datenpakete eintragen. Hiermit wird der 1. Graph benannt.
  3. Graphs -> AmGraph-1 -> DATA FIELDS -> Value field -> Alle Datenpakete auswählen. Hiermit wird der Inhalt des Graphen bestimmt.

Die Schritte 2. und 3. müssen jetzt für jeden weiteren Wert wiederholt werden. Anschließend haben wir ein optisch ansprechenden Graphen. Dieser lässt sich noch mit vielen weiteren Parametern entsprechend anpassen.

Zu guter Letzt kann ich mir den Graphen auch einfach als HTML exportieren lassen und auf meiner Webseite einbauen.

Spalten hinzufügen

Die Werte aus der Übersicht der Filter lassen sich nicht nur für Filter nutzen. Wir können uns die einzelnen Werte auch als Spalten im Wireshark anzeigen lassen. Die Standart Ansicht ist für WLAN Analysen nicht geeignet.

Für einen schnellen Überblick lasse ich mir gerne Informationen wie z.B. Kanal, Signal Stärke und Datenrate anzeigen. Hierzu kann ich innerhalb eines Datenpakets einfach den gewünschten Wert auswählen und über Als Spalte anwenden hinzufügen.

Sind die gewünschten Werte hinzugefügt, habe ich immer einen schnellen Überblick der Datenpakete.

Zeilen färben

Eine weitere Möglichkeit die Optik anzupassen, ist das Einfärben von einzelnen Zeilen. Auch hier werden wieder die entsprechenden Filter genutzt, um die Zeilen unterschiedlich zu färben. Der einfachste Weg ist es erneut den gewünschten Wert im Datenpaket auszuwählen und über Mit Filter einfärben -> Farbe 1 den gewünschten Wert anzupassen.

In diesem Beispiel habe ich unterschiedliche Farben entsprechend der Datenrate erstellt.

Ich kann die Filter auch detaillierter erstellen. Wähle ich statt der Farbe Neue Einfärbungsregel aus, kann ich Eingen eigenen Filter hinzufügen. In diesem Beispiel habe ich die Signal Stärke ausgewählt. Eine Farbe pro RSSI macht aber wenig Sinn, daher möchte ich alles unterhalb von -70dBm rot färben. -70dBm und besser soll grün gefärbt werden. Hierzu erstelle ich meine beiden Filter und wähle eine Vorder- und Hintergrund Farbe aus.

Durch die Konfiguration der Werte, kann ich auf einen Blick erkennen, welche Datenpakete mit der gewünschten Signalstärke und besser angekommen sind. Dies wird mir pro Zeile angezeigt und rechts aussen für einen größeren Bereich als Übersicht.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.