Categories:

Bekannte Angriffe auf das WLAN erkennen: Mit Aruba Instant und Graylog ein Wireless Security Dashboard bauen!

Veröffentlicht von empy
Lesezeit: 9 Minuten

Aruba Instant bietet mit seinem eingebauten Intrusion Detection System (IDS) detaillierte Einblicke in das WLAN-Umfeld der eigenen Access Points. Wie man aus dem Aruba Instant IDS, Syslog sowie Graylog ein einfaches IDS-Dashboard baut, welches erfolgreiche und fehlerhafte Login-Versuche in das eigene WLAN anzeigt, habe ich bereits erklärt. Sogar E-Mail-Benachrichtigungen in Echtzeit sind möglich.

Mein erweitertes Wireless Security Dashboard

Heute möchte ich mein einfaches IDS-Dashboard ausbauen. Neben den Login-Versuchen soll es verbreitete WLAN-Angriffe übersichtlich darstellen. Zudem sollen besondere Ereignisse in der WLAN-Nachbarschaft auf einen Blick sichtbar werden.

Aruba Instant liefert mir sämtliche Informationen, welche ich für mein Wireless Security Dashboard benötige, bequem per Syslog. Glücklicherweise habe ich bereits früher alle Vorbereitungen (Installation von Graylog bzw. Einrichten als Syslog-Server) bereits abgeschlossen. So muss ich nur die relevanten Nachrichten aus der Syslog-Datenflut herausfiltern.

Erkennbare Vektoren des Aruba Instant IDS und Syslog-ID

HPE Aruba hat sein IDS ist sehr genau dokumentiert und erklärt übersichtlich alle auswertbaren Vektoren. Dabei werden für jeden Angriff, den das IDS erkennen kann, Syslog-IDs angegeben. Mit diesen IDs können dann die Angriffe eindeutig identifiziert werden. Das erspart mir die Suche im Freitext. Pro Angriffsvektor gibt es eindeutige Kennungen, die ich zur Anzeige in meinem Wireless Security Dashboard nutzen kann.

SicherheitsvektorBewertungSyslog-ID
40 MHz IntoleranceHinweis126052, 126053, 127052, 127053
802.11n Greenfield ModeHinweis126054, 127054
Ad hoc NetworkHinweis126033, 127033
Ad hoc Network (own SSID)Warnung126068, 127068
AP FloodingWarnung126034, 127034
Cloned APAlarm126006, 127006
AP SpoofingAlarm126069, 126070, 127069, 127070
Beacon Frame SpoofingAlarm126086, 127086
Client FloodingAlarm126064, 127064
CTS Rate AnomalyAlarm126073, 127073
RTS Rate AnomalyAlarm126074, 127074
Invalid OUIHinweis126029, 126030, 127029, 127030
Unexpected MACAlarm126079, 127079
EAPOL Key OverflowHinweis126082, 127082
IE Tag OverflowHinweis126084, 127084
Assoc Request MalformedHinweis126080, 127080
Authentication MalformedHinweis126083, 127083
HT IE MalformedHinweis126081, 127081
Large Frame DurationWarnung126085, 127085
Windows BridgeHinweis126039, 126040, 126041, 126042, 127039, 127040, 127041, 127042
Deauthentication BroadcastAlarm126047, 127047
Disassociation BroadcastAlarm126066, 127066
Cloned SSIDAlarm126007, 127007
Block-ACK DoSAlarm126087, 127087
Disconnect Station AttackAlarm126035, 127035
FATA-JackAlarm126072, 127072
Evil Twin HotspotAlarm126088, 127088
Meiners Power Save DoSWarnung126109, 127109
OmertaWarnung126071, 127071
Rate AnomalyAlarm126061, 126062, 126063, 127061, 127062, 127063
Own Client Transmitting UnencryptedHinweis126065, 127065
Own Client MisassociationWarnung126075, 127075
Null Probe ResponseWarnung126045, 127045
Übersicht der Syslog-IDs der IDS-Signaturen von Aruba Instant. Ich werte nur die aufgeführten Ereignisse in Graylog aus.

Die IDS-Ereignisse möchte ich im Dashboard verschiedenartig aufbereiten. Einerseits möchte ich eine Gruppierung der Angriffe nach Schweregrad, andererseits interessiert mich ihr historischer Verlauf sowie die Herkunft der Angriffe, d.h. welcher AP die Signatur aufgezeichnet hat.

HINWEIS: AUF UNÜBLICHE SYSTEMEINSTELLUNG IM WLAN-UMFELD ZURÜCKZUFÜHREN ODER NICHT BEST-PRACTICE ENTSPRECHEND. 

WARNUNG: ANGREIFER AKTIV FÜR URSACHE VERANTWORTLICH ODER ERNSTHAFTE AUSWIRKUNGEN AUF ENDBENUTZER ODER PERFORMANCE.

ALARM: ANGREIFER FÜHRT UNMITTELBAR ANGRIFF AUF DAS WLAN AUS, UM DEN BETRIEB DES WLANS DAUERHAFT ZU STÖREN, USERDATEN ZU ERHALTEN BZW. INS NETZWERK EINZUDRINGEN.

Anschalten vom IDS in Aruba Instant

Im Artikel über ein einfaches IDS habe ich bereits die Integration von Aruba Instant und Graylog per Syslog beschrieben. Folgt dem Artikel, wenn ihr Syslog in Aruba Instant noch nicht konfiguriert habt.

Um Daten vom Aruba Instant IDS zu erhalten, muss das System zunächst aktiviert werden. Dies geschieht in Aruba Instant unter „Konfiguration -> IDS“. Stellt unter „Erkennung“ die Einstellung für Infrastruktur und Clients auf „hoch“. Im Bereich „Schutz“ müsst ihr keine Einstellungen aktivieren bzw. verändern.

IDS unter Aruba Instant

Nachdem die Einstellungen bestätigt wurden, überträgt Aruba Instant die erkannten IDS-Ereignisse per Syslog direkt an Graylog.

Input Extractor in Graylog anlegen

Bereits jetzt lassen sich über die Suche alle IDS-Ereignisse anzeigen. Nutzt dazu in der Suche folgenden String:

"|ids-"

Zum Bauen eines vollwertigen Wireless Security Dashboards reicht das leider jedoch noch nicht. Schließlich sollen alle Ereignisse gruppiert nach Schweregrad ausgewertet werden.

Mit Hilfe eines Input Extractors in Graylog kann der eingehende Datenstrom aus Syslog untersucht werden und dessen Inhalte können in einzelne Datenfelder aufgeteilt werden. Extraktoren werden dabei auf jede Syslog-Nachricht angewendet, die empfangen wird. So können Textdaten aus dem Datenstrom extrahiert werden und in eigenständige Datenfelder kopiert werden. Dies erleichtert später eine einfache Filterung und Analyse.

Ich möchte später im Dashboard die IDS-Ereignisse anhand der Syslog-ID darstellen. Zudem möchte ich einen sprechenden Namen mit mehr Aussagekraft einsetzen. Damit dies möglich ist, benötige ich die Syslog-ID in einem eigenen Datenfeld.

Der Input Extractor wird im Hauptmenü unter „System -> Inputs -> Manage Extractors“ eingefügt, und zwar für den Input, den ihr für Aruba Instant bzw. dem Syslog UDP Input erstellt habt. Im Bereich „Add extractor“ solltet ihr dann auf den Knopf „Get Started“ klicken, um zur folgenden Eingabemaske zu gelangen.

Extraktor in Graylog anlegen. Er kopiert die Syslog-ID in ein eigenes Feld.

Wählt eine beliebige Message aus und nutzt den Knopf „Load Message“. Im Anschluss drückt ihr am rechten Rand neben dem Feld „message“ auf das Dropdown „Select extractor type“ und wählt dort „Substring“ aus. Befüllt dann die Eingabemaske exakt so, wie auf folgendem Screenshot, insbesondere den „Begin index“, End index“ sowie die „Condition“.

Anmerkung: Wenn ihr meiner Anleitung folgt, könnt ihr die passenden Werte direkt verwenden und braucht die Parameter nicht mühsam selbst herausfinden. Daher ist die Nachricht, die ihr zum Bauen der Abfrage auswählt, völlig egal. Wollt ihr selbst Abfragen bauen, solltet ihr die korrekte Nachricht selbstverständlich auswählen.

Extraktor so konfigurieren, dass er nur in relevanten Messages die Syslog-ID parsen kann.
Begin index52
End index58
ConditionOnly attempt extraction if field contains string
Field contains string|ids-
Store as fieldaruba_ids_attack_id_lookup
Extraction strategyCopy
Extractor TitleAruba IDS Attack ID
Parameter für den Substring-Extraktor.

Am Ende der Eingabemaske erstellt ihr den Extractor mit dem passenden Button. Ab jetzt könnt ihr das Datenfeld „aruba_ids_attack_id_lookup“ in allen Suchen explizit durchsuchen (nach Syslog-IDs) oder in Diagrammen / Spalten einzeln darstellen.

In einem nächsten Schritt werde ich noch einen Konverter hinzufügen, dieser muss jedoch erst noch angelegt werden. Der Konverter wird dann später anstelle der extrahierten Syslog-ID einen Klarnahmen in das Datenfeld einsetzen. Schließlich soll das Dashboard nicht nur IDs anzeigen, sondern alle Ereignisse mit Klarnamen benennen. Zudem gibt es einige Syslog-IDs, die den gleichen IDS-Angriff beschreiben. Und Namen sagen mehr als tausend IDs.

Syslog-ID mit Hilfe eines Lookup-Table in Klartext umwandeln

Während der Extractor die Syslog-IDs aus der Message parst, soll diese direkt in Klartext umgewandelt werden. Schließlich kann ich mir nicht alle Syslog-IDs von Aruba Instant merken. Daher möchte ich die Syslog-ID mit einem sogenannten Lookup-Table in Graylog konvertieren.

Der passende Menüpunkt verbirgt sich unter „System -> Lookup-Table“. Im Bereich „Data Adapter“ muss zunächst eine passende Mechanik ausgewählt werden. Nutzt den Button „Create Data Adapter“ und wählt als Adapter-Typ „CSV-File“ aus.

Der CSV-Adapter vergleicht die geparsten Syslog-IDs aus dem Extraktor mit Datenfeldern. Gegenstand des Vergleichs ist eine CSV-Datei. Diese CSV-Datei muss manuell vorbereitet und im Anschluss in das Dateisystem des Graylog-Servers übertragen werden.

Zunächst müsst ihr also eine CSV-Datei erstellen (UTF-8), welche zwei Spalten beinhaltet: Key und Value. Ihr braucht nicht herumprobieren, folgt einfach meiner Anleitung. Führt zunächst die Eingaben wie folgt aus, um den Adapter zu erstellen. Im nächsten Schritt könnt ihr dann entweder meine Vorlage nutzen, um die CSV-Datei zu erstellen oder ihr ladet euch meine bereits erstellte CSV-Datei einfach herunter.

CSV-Adapter konfigurieren.
TitleAruba IDS ID Matcher
DescriptionMatches Syslog ID from Aruba IDS to Attack Name
Namearuba-ids-id-matcher
Custom Error TTL
File path/home/empy/graylog_lookup_arubaids.csv
Check interval60
Separator;
Quote character
Key columnids_key
Value columnids_attack_name
Parameter für den CSV-Adapter.

Erstellt dann folgende CSV-Datei im UTF-8-Format oder ladet euch die fertige Datei hier herunter.

"ids_key";"ids_attack_name"
"126052";"40 MHz Intolerance"
"126053";"40 MHz Intolerance"
"127052";"40 MHz Intolerance"
"127053";"40 MHz Intolerance"
"126054";"802.11n Greenfield Mode"
"127054";"802.11n Greenfield Mode"
"126033";"Ad hoc Network"
"127033";"Ad hoc Network"
"126068";"Ad hoc Network (own SSID)"
"127068";"Ad hoc Network (own SSID)"
"126034";"AP Flooding"
"127034";"AP Flooding"
"126006";"Cloned AP"
"127006";"Cloned AP"
"126069";"AP Spoofing"
"126070";"AP Spoofing"
"127069";"AP Spoofing"
"127070";"AP Spoofing"
"126086";"Beacon Frame Spoofing"
"127086";"Beacon Frame Spoofing"
"126064";"Client Flooding"
"127064";"Client Flooding"
"126073";"CTS Rate Anomaly"
"127073";"CTS Rate Anomaly"
"126074";"RTS Rate Anomaly"
"127074";"RTS Rate Anomaly"
"126029";"Invalid OUI"
"126030";"Invalid OUI"
"127029";"Invalid OUI"
"127030";"Invalid OUI"
"126079";"Unexpected MAC"
"127079";"Unexpected MAC"
"126082";"EAPOL Key Overflow"
"127082";"EAPOL Key Overflow"
"126084";"IE Tag Overflow"
"127084";"IE Tag Overflow"
"126080";"Assoc Request Malformed"
"127080";"Assoc Request Malformed"
"126083";"Authentication Malformed"
"127083";"Authentication Malformed"
"126081";"HT IE Malformed"
"127081";"HT IE Malformed"
"126085";"Large Frame Duration"
"127085";"Large Frame Duration"
"126039";"Windows Bridge"
"126040";"Windows Bridge"
"126041";"Windows Bridge"
"126042";"Windows Bridge"
"127039";"Windows Bridge"
"127040";"Windows Bridge"
"127041";"Windows Bridge"
"127042";"Windows Bridge"
"126047";"Deauthentication Broadcast"
"127047";"Deauthentication Broadcast"
"126066";"Disassociation Broadcast"
"127066";"Disassociation Broadcast"
"126007";"Cloned SSID"
"127007";"Cloned SSID"
"126087";"Block-ACK DoS"
"127087";"Block-ACK DoS"
"126035";"Disconnect Station Attack"
"127035";"Disconnect Station Attack"
"126072";"FATA-Jack"
"127072";"FATA-Jack"
"126088";"Evil Twin Hotspot"
"127088";"Evil Twin Hotspot"
"126109";"Meiners Power Save DoS"
"127109";"Meiners Power Save DoS"
"126071";"Omerta"
"127071";"Omerta"
"126061";"Rate Anomaly"
"126062";"Rate Anomaly"
"126063";"Rate Anomaly"
"127061";"Rate Anomaly"
"127062";"Rate Anomaly"
"127063";"Rate Anomaly"
"126065";"Own Client Transmitting Unencrypted"
"127065";"Own Client Transmitting Unencrypted"
"126075";"Own Client Misassociation"
"127075";"Own Client Misassociation"
"126045";"Null Probe Response"
"127045";"Null Probe Response"

Nun müsst ihr die Datei auf den Debian-Server kopieren, auf dem Graylog läuft. Ich empfehle WinSCP, das ist am einfachsten: Verbindet euch mit WinSCP. Loggt euch dann mit den Benutzerdaten ein, die ihr beim Aufsetzen des Servers verwendet habt. Kopiert nun die CSV-Datei in das Verzeichnis, dass ihr beim Erstellen des „Data Adapters“ angegeben habt. (Im Beispiel: /home/empy/graylog_lookup_arubaids.csv)

Zurück in Graylog könnt ihr dann den Data-Adapter testen, indem ihr in der Übersicht den Data Adapter auswählt und im Bereich Test-Lookup eine Syslog-ID im Feld „Key“ händisch eintragt. Drückt dann auf „Look up“. Wenn alles funktioniert, könnt ihr weitermachen.

Damit der Lookup-Table insgesamt funktioniert, muss noch ein Caching-Verhalten konfiguriert werden. Dieses legt fest, ob die CSV-Datei gecached werden soll oder nicht.

Geht in den Bereich „Caches“, legt einen Data Cache wie folgt an und bestätigt dann mit dem Button am Ende der Eingabemaske.

TitleNo cache
DescriptionNo cache
Nameno-cache
Cache konfigurieren.

Erst jetzt könnt ihr den eigentlichen Lookup-Table zur finalen Verwendung anlegen. Achtet darauf, dass ihr den „Default single value“ aktiviert und einen Wert hinterlegt. So habt ihr ein Fallback, wenn eine Syslog-ID nicht in der CSV-Datei vorhanden ist. Wählt zudem auch den zuvor angelegten Data Adapter sowie das erstelle Cache-Verhalten aus. Bestätigt am Ende der Seite Maske mit dem entsprechenden Button.

Lookup-Table führt den Data Adapter samt Cache zusammen. Er wird im nächsten Schritt dem Input Extractor zugewiesen.
TitleAruba IDS ID Matcher
DescriptionMatches Syslog ID from Aruba IDS to Attack Name
Namearuba_ids_matcher
Enable single default valueYes
Default single valueUnbekannter IDS Angriff
Enable multi default valueNo
Data AdapterAruba IDS ID Matcher (aruba-ids-id-matcher)
CacheNo Cache (no-cache)
Lookup-Table konfigurieren.

Wechselt nun zurück zum Input Extractor („System -> Inputs -> Manage Extractors“) und fügt dort einen Konverter vom Typ Lookup-Table hinzu. Wählt dann den eben erstellten Lookup-Table aus und bestätigt am Ende der Seite.

Hinweis: Das Datenfeld „aruba_ids_attack_id_lookup“ kann ab jetzt nur noch über die per CSV definierten Begriffe durchsucht werden, da der Lookup-Table alle neuen Werte ab Zuweisung zum Extraktor überschreibt.

Das Dashboard ergänzen

Die Erstellung eines Dashboards in Graylog habe ich bereits dargestellt. Im Folgenden muss dieses Dashboard um die weiteren Widgets erweitert werden. Vergesst nicht, das Dashboard zu speichern, wenn ihr mit der Erstellung aller Widgets fertig seid.

Das Wireless Intrusion Detection Dashboard beinhaltet folgende Metriken: Erfolgreiche Logins, fehlerhafte Login-Versuche und alle IDS-Ereignisse. Auf der rechten Seite Hinweise, Warnungen und Alarme zu IDS-Ereignissen, deren historischen Verlauf, Angriffstyp sowie Quelle.

WLAN-Anmeldungen und Fehlerhafte Anmeldeversuche

Seid ihr meiner Anleitung gefolgt, habt ihr den folgenden Schritt bereits erledigt: Legt zwei Widgets vom Typ „Aggregation“ an und achtet auf die folgenden Details:

 WLAN-Anmeldungen (last 60 minutes)Fehlerhafte Anmeldeversuche WLAN (last 30 days)
Zeitrauman hour agoa month ago
Suchstring„/wpa2_key4 success“„MIC failed“
Group ByRollout Columns: aktivieren
Field: timestamp
Interval: „Auto“ deaktivieren, 1 Days einstellen.
MetricsFunction: Count
Field: –
Name: Message Count
Function: Count
Field: Select
Name: Message Count
Sort
VisualizationType: Single Number
Trend: aktivieren
Trend Preference: Neutral
Type: Area Chart
Show Event annotations: deaktivieren
Interpolation: step-after
Darstellung von „WLAN-Anmeldungen“ und „Fehlerhafte Anmeldeversuche“

IDS-Ereignisse

Legt ein Widget vom Typ „Message Table“ mit folgenden Details an:

IDS Ereignisse
Zeitrauma day ago
Suchstring|ids-
Fieldstimestamp, source, aruba_ids_attack_id_lookup
Message PreviewYes
Sortingtimestamp
DirectionDescending
Decorators
Darstellung von „IDS-Ereignisse“

Hinweis, Warnung und Alarm

Legt drei Widgets vom Typ „Aggregation“ an und nutzt folgende Parameter, um die Widgets für die Anzeige nach Schweregrad zu erzeugen:

HinweisWarnungAlarm
Zeitrauma day agoa day agoa day ago
Suchstringaruba_ids_attack_id_lookup:“40 MHz Intolerance“ OR aruba_ids_attack_id_lookup:“802.11n Greenfield Mode“ OR aruba_ids_attack_id_lookup:“Ad hoc Network“ OR aruba_ids_attack_id_lookup:“Invalid OUI“ OR aruba_ids_attack_id_lookup:“EAPOL Key Overflow“ OR aruba_ids_attack_id_lookup:“IE Tag Overflow“ OR aruba_ids_attack_id_lookup:“Assoc Request Malformed“ OR aruba_ids_attack_id_lookup:“Authentication Malformed“ OR aruba_ids_attack_id_lookup:“HT IE Malformed“ OR aruba_ids_attack_id_lookup:“Windows Bridge“ OR aruba_ids_attack_id_lookup:“Own Client Transmitting Unencrypted“aruba_ids_attack_id_lookup:“Ad hoc Network (own SSID)“ OR aruba_ids_attack_id_lookup:“AP Flooding“ OR aruba_ids_attack_id_lookup:“Large Frame Duration“ OR aruba_ids_attack_id_lookup:“Meiners Power Save DoS“ OR aruba_ids_attack_id_lookup:“Omerta“ OR aruba_ids_attack_id_lookup:“Own Client Misassociation“ OR aruba_ids_attack_id_lookup:“Null Probe Response“aruba_ids_attack_id_lookup:“Cloned AP“ OR aruba_ids_attack_id_lookup:“AP Spoofing“ OR aruba_ids_attack_id_lookup:“Beacon Frame Spoofing“ OR aruba_ids_attack_id_lookup:“Client Flooding“ OR aruba_ids_attack_id_lookup:“CTS Rate Anomaly“ OR aruba_ids_attack_id_lookup:“RTS Rate Anomaly“ OR aruba_ids_attack_id_lookup:“Unexpected MAC“ OR aruba_ids_attack_id_lookup:“Deauthentication Broadcast“ OR aruba_ids_attack_id_lookup:“Disassociation Broadcast“ OR aruba_ids_attack_id_lookup:“Cloned SSID“ OR aruba_ids_attack_id_lookup:“Block-ACK DoS“ OR aruba_ids_attack_id_lookup:“Disconnect Station Attack“ OR aruba_ids_attack_id_lookup:“FATA-Jack“ OR aruba_ids_attack_id_lookup:“Evil Twin Hotspot“ OR aruba_ids_attack_id_lookup:“Rate Anomaly“
Group ByRollout Columns: aktivieren
Direction: Row
Field: aruba_ids_attack_id_lookup
Limit: 15
Rollout Columns: aktivieren
Direction: Row
Field: aruba_ids_attack_id_lookup
Limit: 15
Rollout Columns: aktivieren
Direction: Row
Field: aruba_ids_attack_id_lookup
Limit: 15
MetricsFunction: Count
Field: source
Function: Count
Field: source
Function: Count
Field: source
VisualizationPie ChartPie ChartPie Chart
Darstellung von „Hinweis“, „Warnung“ und „Alarm“

IDS History

Legt ein Widget vom Typ „Aggregation“ mit den folgenden Parametern:

IDS History
Zeitrauma day ago
Suchstring|ids-
Group ByRollout Columns: aktivieren
Direction: Row
Field: timestamp
Interval: „Auto“ deaktivieren, 1 Hours einstellen.
MetricsFunction: Count
Name: Message Count
VisualizationType: Bar Chart
Mode: Group
Darstellung von „IDS History“

IDS Anzahl und IDS Quelle

Erstellt zwei Widgets vom Typ „Aggregation“ mit folgenden Einstellungen:

IDS AnzahlIDS Quelle
Zeitrauma day agoa day ago
Suchstring|ids-|ids-
Group ByRollout Columns: aktivieren
Direction: Column
Field: aruba_ids_attack_id_lookup
Limit: 15
Rollout Columns: aktivieren
Direction: Row
Field: source
Limit: 15
MetricsFunction: Count
Field: aruba_ids_attack_id_lookup
Name: Gesamt
Function: Count
Field: source
Name: Detections nach Herkunft
VisualizationType: Bar Chart
Mode: Group
Type: Pie Chart
Darstellung von „IDS Anzahl“ und „IDS Quelle“