WLAN-Monitoring mit ELK-Stack

Durch die zunehmende Verbreitung von BYOD (Bring Your Own Device), Wearables und IoT Geräten, und der damit verbunden steigenden Teilnehmeranzahl in Firmennetzwerken wird es immer wichtiger zu wissen, wie die einzelnen Geräte sich im Netz verhalten haben. Um dies jederzeit nachvollziehen zu können, helfen Monitoring und Logmanagement.

Das Erkennen von böswilligem Traffic (Rogue AP, MAC Spoofing, Karma Attack) oder Abweichungen der Netzwerknutzung sollte im Rahmen eines zentralen Logmanagements geschehen. Ebenso das Erfassen und Darstellen des normalen Netzwerkverkehrs und aller Teilnehmer, um bei Bedarf verglichen und eindeutig dargestellt werden zu können.

Mit dieser Thematik setzen wir uns im Rahmen unseres Praktikums bei der TO auseinander.

Hierzu wurde folgendes System aufgebaut:

OLYMPUS DIGITAL CAMERA

Überblick

Um im Frequenzbereich des Wlan ISM-Bandes alle Pakete zu erfassen, wird jeder in Deutschland verfügbare Kanal (1 – 13) jeweils separat überwacht und geloggt. Hierbei werden ausschließlich Metadaten berücksichtigt; also nur dass die Geräte kommunizieren, nicht aber der Inhalt dieser Kommunikation. Nachfolgend ein Beispiel eines solchen Logs:

{"BSSID":"10:98:76:54:32:10", "FirstTimeSeen":"2016-10-06 10:09:03", "LastTimeSeen":"2016-10-06 11:06:06", "channel": 4, "max_speed":" 54","Privacy":"WPA2WPAOPN", "Cipher":"CCMP TKIP ","Authentication":"PSK", "Power":-57, "#beacons":   31481,"#IV":       0, "LANIP":"  0.  0.  0.  0", "ID-length":  7, "ESSID":"WLAN", "wlan_type":"AP","timestamp":"1475744767"}
{"StationMAC":"01:23:45:67:89:10", "FirstTimeSeen":"2016-10-06 07:24:10", "LastTimeSeen":"2016-10-06 11:06:11", "Power":-78, "#packets": 1378, "BSSID":"(not associated)" ,"ESSID":"", "ProbedESSIDs":"A, B, C","#probes":3,"wlan_type":"CL","timestamp":"1475744775"}

 

Die gesammelten Log-Daten (Protokoll-Daten) werden weiterverarbeitet. Hierzu wird der Elastic Stack (Elasticsearch, Logstash, Kibana) genutzt. Die Logs werden mit Logstash aufbereitet und dann an die Datenbank Elasticsearch weitergeben. Kibana bedient sich bei Elasticsearch mit den gewünschten Logs.

Doch zunächst einmal müssen die Logs verarbeitet werden. Das passiert in diesem Fall mit Logstash. Der erste Schritt hat das Ziel, die Logs ohne weitere Hintergedanken oder anderweitigen Nutzen zunächst getrennt in Feld und zugehörigen Wert abzulegen. Da sie im JSON-Format vorliegen, lässt sich hierfür der gleichnamige Filter verwenden. Im Anschluss ist auch der date-Filter eine sinnvolle Implementierung. Dieser rechnet die bisherige Uhrzeit, die in Unixtime im Log zu sehen ist, in einen leichter lesbaren Zeitstempel um. Die Signalstärke welche in den einzelnen Logs vorkommt, hat die Einheit dBm. Dank einer zusätzlichen Formel in Ruby ist sie nun auch in Nanowatt zu sehen.

Was ebenfalls sehr interessant an diesen Daten ist, ist die Frage welchen Herstellern die einzelnen Clients zuzuordnen sind. Hierfür wird der oui-Filter genutzt, der einer gegebenen MAC-Adresse (sofern sie nicht zu neu oder gar selbst konfiguriert ist) den Hersteller zuordnet.

Im Feld ProbedESSIDs (vom Client angefragte Netze) stehen teilweise mehrere Elemente, also beispielsweise „A, B, C, D“. Dies wird aber nicht mit einem anderen Fall wie „B, C, D“ zusammengefasst. Um nun aber betrachten zu können, wie oft das Netz „B“ insgesamt angefragt wurde, wird der split-Filter zur Hilfe genommen. Dieser trennt das Feld „A, B, C, D“ in vier einzelne Felder „A“, „B“, „C“, „D“ auf, die jeweils einem Klon des Originallogs zugeordnet werden. Nachfolgend ein Beispiellog zur besseren Verdeutlichung.

Vorher:

{"StationMAC":"01:23:45:67:89:10", "FirstTimeSeen":"2016-10-06 07:24:10", "LastTimeSeen":"2016-10-06 11:06:11", "Power":-78, "#packets": 1378, "BSSID":"(not associated)" ,"ESSID":"", "ProbedESSIDs":"A, B, C","#probes":3,"wlan_type":"CL","timestamp":"1475744775"}

Nachher:

{"StationMAC":"01:23:45:67:89:10", "FirstTimeSeen":"2016-10-06 07:24:10", "LastTimeSeen":"2016-10-06 11:06:11", "Power":-78, "#packets": 1378, "BSSID":"(not associated)" ,"ESSID":"", "ProbedESSIDs":"A","#probes":3,"wlan_type":"CL","timestamp":"1475744775"}

{"StationMAC":"01:23:45:67:89:10", "FirstTimeSeen":"2016-10-06 07:24:10", "LastTimeSeen":"2016-10-06 11:06:11", "Power":-78, "#packets": 1378, "BSSID":"(not associated)" ,"ESSID":"", "ProbedESSIDs":"B","#probes":3,"wlan_type":"CL","timestamp":"1475744775"}

{"StationMAC":"01:23:45:67:89:10", "FirstTimeSeen":"2016-10-06 07:24:10", "LastTimeSeen":"2016-10-06 11:06:11", "Power":-78, "#packets": 1378, "BSSID":"(not associated)" ,"ESSID":"", "ProbedESSIDs":"C","#probes":3,"wlan_type":"CL","timestamp":"1475744775"}

In Kibana kann man die Logs auf Dashboards auch grafisch darstellen. Leicht lässt sich ablesen, welches Netz am häufigsten angefragt wurde, welcher Client am aktivsten war und von welchem Hersteller das zugehörige Gerät ist.

20161128-dashboard-bssid-essid

 

20161128-dashboard-connection-access_point-client

Um über Dinge wie die verschiedenen Signalstärken oder die Verteilung der Anfragen über die verschiedenen Kanäle den Überblick zu behalten, sind das Dashboard und entsprechende Grafiken eine große Hilfe.

20161128-dashboard-channel-power-privacy
Update

Die obigen Grafiken wurden aus einem Testlauf erstellt, der über eine Nacht stattgefunden hat. Im Januar wurden eine Woche lang Logs gesammelt.

Diese Grafik zeigt die Verteilung zwischen Access Point und Client besonders deutlich.
Das Sammeln der Daten begann an einem Montagabend und endete eine Woche später.
Die Access Points senden gleichmäßig Signale, während es bei den Clients vom Wochentag und der Uhrzeit abhängt.

Die linke Tabelle zeigt die Top Ten der verfügbaren Netze, die mittlere Tabelle die Top Ten der verfügbaren Access Points. In der rechten Tabelle sind diese beiden Werte kombiniert, sie zeigt die Top Ten der verfügbaren Netze mit zugehörigen Access Points.

Es ist klar zu sehen, dass „00:00:00:00:00:10“ und „00:00:00:00:00:11“ zum TO-Mitarbeiter-Netz gehören. Diese beiden Access-Points sind aber nicht in der mittleren Tabelle zu sehen, was darauf schließen lässt, dass diese APs möglicherweise in einem anderen Gebäudeteil stationiert sind.

Anwendungsbeispiele

Erkennen von Karma Attacken:

Ein Interface sendet regelmäßig zufallsgenerierte Netzwerkanfragen (Probes) und simuliert somit ein Gerät, welches sich mit einem seiner bekannten Netze verbinden will. Falls das Gerät auf Anfragen wie „HasdfPADSF=987SDF=)(123“ Antworten erhält sowie eine Verbindung angeboten bekommt, kann mit hoher Wahrscheinlichkeit davon ausgegangen werden, dass hier eine missbräuchliche Nutzung vorliegt.

Rogue AP:

Via MAC Korrelation lässt sich feststellen ob ein aktiver Access Point zum Netzwerk gehört oder nicht. Bei Bedarf kann auch eine Client Verbindung zu unerlaubten APs mittels Deauthentication unterbunden werden.

MAC Spoofing:

Meldet sich ein Gerät mit einer bekannten MAC Adresse im Netzwerk an, weist aber ansonsten Abweichungen im Verhalten auf, so kann dies ein Hinweis auf unerlaubte Netzwerknutzung sein. Mögliche Abweichungen können fehlende Probes sein oder auch eine veränderte Signalstärke. Kurz: der Fingerabdruck des Geräts scheint nicht zu passen.

Benötigt werden:

Hardware:

  • 01 x Laptop (14 Interfaces gleichzeitig nur mit USB 3.0 + mind. 2 Controllern möglich)
  • 01 x USB 3.0 Express Card
  • 14 x Wireless USB Adapter
  • 04 x USB 3.0 Hub
  • 04 x Powerbank
  • 01 x SSD HD 250GB

Software:

  • Elastic Stack (Elasticsearch, Logstash, Kibana)
  • Aircrack-ng (mit JSON patch) inkl. Abhängigkeiten

Über uns

Kennenlernen durften wir die TO auf einer Messe unserer Hochschule. Ein allgemeines Interesse an IT-Sicherheit, Begeisterung für einen vielfältigen Umgang mit Betriebssystemen und Netzwerk-Technologien sowie die Aussage „Wir sind Hacker!“ waren überzeugend. Schnell folgten unsere Bewerbungen als Praktikanten.

Nach einem sehr angenehmen Vorstellungsgespräch war dann relativ schnell klar, Daniel bekommt einen Platz im allgemeinen Bereich der IT-Sicherheit, während Colien im Log Management tätig ist. Wir wurden von allen Kollegen sehr herzlich aufgenommen, was den Einstieg ziemlich leicht gemacht hat. In den bisherigen drei Monaten durften wir schon an Kundenterminen (Installationen, Workshops, Pentests) und internen Veranstaltungen (TOsecurity Breakfast) teilnehmen sowie das oben erklärte Projekt selbstständig durchführen. Das absolute Highlight bisher war jedoch der Teamevent, den wir gemeinsam mit den Kollegen in escape-Räumen verbringen durften.

Schreibe einen Kommentar

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

CAPTCHA *