Mein Ziel ist es, Netzwerkprotokolle (z. B. Apache, Syslog, Active Directory-Sicherheitsüberwachung usw.) mithilfe von Clustering / Anomalieerkennung für Intrusion Detection-Zwecke zu analysieren.
Aus den Protokollen habe ich viele Textfelder wie IP-Adresse, Benutzername, Hostname, Zielport, Quellport usw. (insgesamt 15-20 Felder). Ich weiß nicht, ob es einige Angriffe in den Protokollen gibt, und möchte die verdächtigsten Ereignisse (Ausreißer) hervorheben.
Normalerweise markiert die Anomalieerkennung die Punkte mit geringer Wahrscheinlichkeit / Häufigkeit als Anomalien. Die Hälfte der Protokollsätze enthält jedoch eine eindeutige Kombination von Feldern. Die Hälfte der Datensätze im Datensatz hat also die niedrigstmögliche Häufigkeit.
Wenn ich die auf Clustering basierende Anomalieerkennung verwende (z. B. Cluster suchen und dann Punkte auswählen, die weit von allen Clusterzentren entfernt sind), muss ich den Abstand zwischen verschiedenen Punkten ermitteln. Da ich 15 bis 20 Felder habe, wird es ein mehrdimensionaler Bereich sein, in dem die Dimensionen Benutzername, Port, IP-Adresse usw. sind. Die Mahalanobis-Entfernung konnte jedoch nur auf normalverteilte Merkmale angewendet werden. Dies bedeutet, dass es keine Möglichkeit gibt, den Abstand zwischen Datenpunkten zu ermitteln und Cluster zu erstellen ...
Stellen wir uns zum Beispiel vor, ich habe Benutzer Alice, Bob, Carol, Dave, Eve und Frank im Datensatz von 20 Datensätzen. Sie können die folgende Anzahl von Vorkommen in der Datenbank haben: 2,5,2,5,1,5. Wenn ich Benutzernamen einfach Zahlen zuordne, z
Alice --> 1
Bob --> 2
Carol --> 3
Dave --> 4
Eve --> 5
Frank --> 6
Dann sieht meine Wahrscheinlichkeitsverteilung für Benutzernamen wie folgt aus:
p (1) = 0,1, p (2) = 0,25, p (3) = 0,1, p (4) = 0,25, p (5) = 0,05, p (6) = 0,25
Dies ist natürlich keine Normalverteilung, und dies macht auch wenig Sinn, da ich Benutzernamen auf andere Weise zuordnen könnte ...
Eine einfache Zuordnung von Feldern wie Benutzername, Aktion, Portnummer, IP-Adresse usw. zu Nummern bringt also nichts.
Daher möchte ich fragen, wie die Textfelder verarbeitet / Merkmale normalerweise konstruiert werden, um eine unbeaufsichtigte Erkennung von Anomalien / Ausreißern zu ermöglichen.
EDIT: Datenstruktur.
Ich habe ungefähr 100 Spalten in der Datenbanktabelle, die Informationen von Active Directory-Ereignissen enthalten. Aus diesen 100 Spalten wähle ich die wichtigsten (aus meiner Sicht) aus: SubjectUser, TargetUser, SourceIP-Adresse, SourceHostName, SourcePort, Computer, DestinationIPaddress, DestinationHostName, DestinationPort, Aktion, Status, FilePath, EventID, WeekDay, DayTime.
Ereignisse sind Active Directory-Ereignisse, bei denen EventID definiert, was protokolliert wurde (z. B. Erstellung eines Kerberos-Tickets, Benutzeranmeldung, Benutzerabmeldung usw.).
Das Datenbeispiel sieht folgendermaßen aus:
+ --------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - + | ID | SubjectUser | TargetUser | SourceIPaddress | SourceHostName | SourcePort | Computer | DestinationIPaddress | DestinationHostName | DestinationPort | Aktion | Status | FilePath | EventID | WeekDay | DayTime | + --------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - + | 171390673 |? |? |? |? |? | domaincontroller1.domain.com | 1.1.1.1 | domaincontroller1.domain.com |? | / Authentifizierung / Überprüfen | / Erfolg |? | 4624 | 1 | 61293 | + --------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - + | 173348232 |? |? |? |? |? | domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com |? | / Authentifizierung / Überprüfen | / Erfolg |? | 4624 | 1 | 61293 | + --------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - + | 180176916 |? |? |? |? |? | domaincontroller2.domain.com | 2.2.2.2 | domaincontroller2.domain.com |? | / Authentifizierung / Überprüfen | / Erfolg |? | 4624 | 1 | 61293 | + --------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - + | 144144725 |? | John.Doe | 3.3.3.3 | domaincontroller3.domain.com | 2407 | domaincontroller3.domain.com | 3.3.3.4 | domaincontroller3.domain.com |? | / Authentifizierung / Überprüfen | / Erfolg |? | 4624 | 3 | 12345 | + --------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- - +
Insgesamt habe ich ungefähr 150 Millionen Veranstaltungen. Bei verschiedenen Ereignissen sind unterschiedliche Felder ausgefüllt, und nicht alle Ereignisse beziehen sich auf die Benutzeranmeldung / -abmeldung.
quelle
Antworten:
Ich bin definitiv kein Experte für die Erkennung von Anomalien . Es ist jedoch eine interessante Gegend und hier sind meine zwei Cent. Betrachten Sie zunächst Ihren Hinweis, dass "Mahalanobis-Abstand nur auf normalverteilte Features angewendet werden kann". Ich bin auf einige Untersuchungen gestoßen, die argumentieren, dass es immer noch möglich ist , diese Metrik in Fällen von nicht normalen Daten zu verwenden. Überzeugen Sie sich selbst von diesem Dokument und diesem technischen Bericht .
Ich hoffe auch, dass Sie die folgenden Ressourcen zur unbeaufsichtigten Anomalieerkennung (AD) im Kontext der IT-Netzwerksicherheit mit verschiedenen Ansätzen und Methoden nützlich finden : In diesem Dokument wird ein geometrischer Rahmen für unbeaufsichtigte AD vorgestellt. Dieses Papier verwendet einen dichtebasierten und einen gitterbasierten Clustering- Ansatz. Diese Präsentationsfolien erwähnen die Verwendung selbstorganisierender Karten für AD.
Abschließend empfehle ich Ihnen, einen Blick auf meine folgenden Antworten zu werfen, die meines Erachtens für das Thema relevant sind und daher hilfreich sein könnten: Antwort auf Clustering-Ansätze , Antwort auf nicht entfernungsbasiertes Clustering und Antwort auf Softwareoptionen für AD .
quelle
Zunächst denke ich, dass es einige Dinge gibt, mit denen Sie sich möglicherweise abfinden müssen.
Eine harte Einschränkung, die ich bei diesem Problem sehe, ist, dass Sie wahrscheinlich darauf vorbereitet sein sollten, eine ziemlich hohe Falsch-Positiv-Rate zu haben. Soweit ich weiß, ist die Basisrate von Datensätzen, die Teil einer Netzwerkanomalie sind, ziemlich niedrig (Zitieren erforderlich). Nennen wir es aus Gründen der Argumentation 1000: 1-Gewinnchancen. Selbst wenn Sie ein Muster beobachten, das 100-mal wahrscheinlicher ist, wenn der Datensatz ein Eingriff ist, als wenn es legitim ist, sagt die Bayes-Regel, dass die hinteren Chancen 10: 1 sind, dass der Verkehr immer noch legitim ist.
Das andere Problem ist, dass einige Eingriffe selbst im Prinzip schwer zu erkennen sind . Wenn mich zum Beispiel jemand dazu gebracht hätte, ihnen meinen Computer zu geben, und sie sich dann bei diesem Dienst angemeldet und eine streng geheime Datei heruntergeladen hätten, an der ich gearbeitet hatte, wäre dies ziemlich schwer zu finden. Grundsätzlich kann ein ausreichend entschlossener Angreifer sein aufdringliches Verhalten fast willkürlich dem normalen Verhalten des Systems nahe bringen.
Darüber hinaus sind Ihre Gegner intelligente und keine statistischen Prozesse. Wenn Sie also ein Muster erkennen und es schließen, reagieren sie möglicherweise einfach, indem sie diesem Muster nicht mehr folgen. Aus diesem Grund sehen Sie beispielsweise viele Spam-Nachrichten mit Leerzeichen zwischen allen Buchstaben (die Ihnen "
V I A G R A
" oder was auch immer bieten ). Spamfilter stellten fest, dass die Zeichenfolge "viagra" Spam war, sodass die Angreifer gerade anfingen, etwas anderes zu tun.Aus diesem Grund denke ich, dass es sich lohnt, ziemlich genau darüber nachzudenken, welche Arten von Eingriffen Ihrer Meinung nach die Mühe wert sind, erkannt zu werden. Hier gibt es sicherlich niedrig hängende Früchte. Lassen Sie also nicht zu, dass das Perfekte der Feind des Guten ist, und versuchen Sie, einen Algorithmus zu entwickeln, der alle Eingriffe erkennt.
Abgesehen davon, lassen Sie uns über die tief hängenden Früchte sprechen. Ich denke, es könnte für Sie produktiv sein, Ihre Analyseeinheit von einzelnen Datensätzen auf eine Gruppe von Datensätzen zu verlagern .
Sie haben beispielsweise gesagt, dass die Hälfte aller Datensätze eindeutige Feldkombinationen enthält. Vermutlich werden beispielsweise die meisten Quell-IPs in mehr als einem Datensatz angezeigt - es sind die anderen Felder in der Anforderung, die sich ändern und die Kombination eindeutig machen. Wenn Sie die Anforderungen nach IP gruppieren, können Sie Fragen stellen wie:
Sie können ähnliche Aktionen für andere Gruppierungen ausführen, z. B. Benutzername:
Ich weiß nicht von irgendwelchen off-the-shelf Klassifizierer , die besonders dazu geeignet zu sein scheinen, weil das Potenzial Verhalten Ihrer Benutzer wird so verändert, und Sie sind wahrscheinlich vor allem in interessiert Veränderungen im Verhalten im Laufe der Zeit. Das bedeutet, dass Sie wahrscheinlich eine Art Modell erstellen möchten, was jeder Benutzer / jede IP / was auch immer in Zukunft tun wird, und Abweichungen von diesem Modell kennzeichnen möchten. Aber das ist ein ziemlich intensiver Prozess, wenn Ihre Benutzer unterschiedliche Verhaltensmuster haben!
Aufgrund dieser Schwierigkeit denke ich, dass es im Moment produktiver sein könnte, die oben beschriebene Art der Explorationsmodusanalyse durchzuführen. Das wird Sie wahrscheinlich darüber informieren, welche Arten von Mustern am interessantesten sind, und dann können Sie ausgefallene statistische Algorithmen verwenden, um diese Muster zu erkennen.
quelle
Ich denke, dass Sie in erster Linie einen Datensatz benötigen, der Daten für einen Zeitraum ohne Angriffe aufzeichnet . Dieser Datensatz sollte die Variationen erfassen, die einem System inhärent sind, das sich normal verhält. Ich möchte betonen, dass es nicht um einen kommentierten Datensatz geht.
Als nächstes würde ich versuchen, alle (oder Teilmengen) von Metriken in einer zu kombinieren. Diese neue Metrik sollte das Ausmaß der "Überraschung" widerspiegeln. Zum Beispiel bedeutet ein niedriger Wert, dass das System normal läuft, ein hoher Wert Peak / Plateau bedeutet, dass es eine schnelle Änderung gibt. Hier denke ich an CUSUM- oder Shewhart-Chart-Style-Charts.
Können Sie einige Beispiele für die verfügbaren Daten angeben? Sind es hauptsächlich Zeichenfolgen, Zahlen, 1/0 Indikatoren?
quelle
Eine Möglichkeit besteht darin, ein Bayes'sches Netzwerk zwischen den Funktionen zu lernen, wenn einige Hintergrunddaten ohne Angriffe vorliegen. Das Erlernen eines Bayes'schen Netzwerks ist nützlich, da dadurch die bedingte Unabhängigkeit zwischen Funktionen hergestellt wird. Daher haben Sie es nicht mit jeder möglichen Kombination von Funktionen zu tun. Wenn beispielsweise Merkmal A B und C und Merkmale B und C zusammen D betreffen, lernen Sie nur ein Modell dafür, wie A B beeinflusst, wie C beeinflusst wird und wie B und C D gemeinsam beeinflussen. Dieses Modell erfordert weitaus weniger Parameter als die gesamte Wahrscheinlichkeitsverteilung und ist der Hauptgrund, warum Bayes'sche Netzwerke verwendet werden, anstatt nur die gesamte gemeinsame Wahrscheinlichkeitsverteilung zu speichern. Um die Anomalie bei einem Bayes'schen Netzwerk zu testen, berechnen Sie die Wahrscheinlichkeit eines eingehenden Datenpunkts mithilfe des erlernten Bayes'schen Netzwerkmodells. Wenn die Wahrscheinlichkeit sehr gering ist,
quelle
Ich fand die Antwort von Ben Kuhn pragmatisch und aufschlussreich.
Jetzt umfasst mein eigener Hintergrund die Bereiche Textklassifizierung, Expertensysteme, Clustering und Sicherheit. Vor diesem Hintergrund würde ich gerne glauben, dass ich dem Gespräch etwas hinzufügen könnte. Die vorherigen Aussagen von Ben Kuhn heben jedoch hervor, dass einfache Ansätze viele Fehlalarme hervorrufen können. Wenn IT-Mitarbeiter mit vielen Fehlalarmen konfrontiert werden, "schalten" sie sich normalerweise aus, weil sie einfach nicht die Zeit haben, ständig Falsch-Positive zu verfolgen.
Was tun?
Sicherlich könnten Protokolle mit Angriffen hilfreich sein, aber dann haben wir einen Catch-22, es sei denn, Unternehmen teilen irgendwie Angriffsdaten. Während einige Silicon Valley-Start-ups möglicherweise eine solche Bedrohungsverteilung verfolgen, was könnten wir sonst noch tun?
Ein möglicher Ansatz besteht darin, eine Simulation des Netzwerks zu erstellen und dann einen Weg zu finden, um Angriffe gegen die Simulation zu generieren. Angenommen, wir erstellen eine Simulation, bei der die schwarzen Hüte (auch simuliert) den weißen Hüten nicht im Voraus bekannt sind. Angesichts dieser Angriffe können wir dann versuchen, Algorithmen zu erstellen, die diese Angriffe erkennen sollen. Wenn die schwarzen Hüte unabhängig von den weißen Hüten funktionieren, haben wir einen echten Kampf, der sich abspielen wird. Wenn die Angreifer in das System eindringen oder unentdeckt bleiben, sind die weißen Hüte bis zu einem gewissen Grad ausgefallen.
Man könnte sogar eine Anreizstruktur haben, wenn die Sicherheitsanalysten des Black-Hat-Teams für ihre Erfolge (Reithosen oder unentdeckte Angriffe) belohnt werden. In ähnlicher Weise wird die Gruppe, die die weißen Hüte umfasst, für das Anhalten von Reithosen und / oder das Erkennen von Angriffen belohnt.
An diesem Arrangement ist nichts Perfektes. Offensichtlich könnten echte schwarze Hüte die Talente des "freundlichen" schwarzen Hut-Teams übertreffen. Trotzdem scheint es mir als Person mit einer angemessenen Datenanalyse sehr schwierig zu sein, den Erfolg von weißen Hüten zu quantifizieren, ohne die schwarzen Hüte besser zu verstehen. Fazit ist dies. Wenn wir nicht wissen können, was echte schwarze Hüte tun, sind freundliche schwarze Hüte das nächstbeste.
Ich habe auch eine ziemlich ungewöhnliche Idee. Angenommen, zusätzlich zu den freundlichen schwarzen und weißen Hüten gibt es ein Team mit grauen Hüten. Was bedeutet es, ein grauer Hut zu sein? Die Idee ist einfach. Graue Hüte dürfen sehen, was die freundlichen schwarzen Hüte und die weißen Hüte tun. Aber warum?
Nehmen wir an, dass die freundliche schwarze Hüte Start - Attacken Ansätze A, B und C, und die weißen Hüte nie entdecken jeder dieser drei Ansätze. Nun, die grauen Hüte können sehen, was sowohl die freundlichen schwarzen als auch die weißen Hüte tun, und sie versuchen zu überlegen, welche Prinzipien verwendet werden könnten, um diese unentdeckten Angriffe zu entdecken. Wenn der graue Hut solche Prinzipien findet, kann das graue Hut-Team diese Prinzipien mit dem weißen Hut-Team teilen, ohne die genauen Angriffe im Detail zu beschreiben.
Die Hoffnung ist, dass diese "Hinweise" des Teams mit dem grauen Hut dem Team mit dem weißen Hut einen Schub in die richtige Richtung geben, ohne zu viel preiszugeben.
Im Nachhinein entschuldige ich mich, wenn es in meiner Antwort wirklich nicht um bestimmte Techniken geht. Offensichtlich geht es in meiner Antwort nicht um bestimmte Techniken. Nach meiner Erfahrung scheitern jedoch viele Probleme beim maschinellen Lernen - einschließlich der Sicherheitsprobleme - häufig daran, dass die Daten unzureichend sind. Dieser Ansatz, bei dem weiße, graue und schwarze Hüte verwendet werden, kann dazu beitragen, Daten zu erstellen, mit denen ein Sicherheitsunternehmen (oder IT-Mitarbeiter) nicht nur die Wirksamkeit seiner Abwehrmaßnahmen quantifizieren, sondern auch eine Organisationsstruktur bereitstellen kann, die das Team der weißen Hüte vorantreibt ihre Verteidigung und ihre Überwachung schrittweise zu verbessern.
Ich habe wirklich keine Ahnung, ob der von mir vorgeschlagene Ansatz originell ist. Ich habe noch nie von grauen Hüten gehört, aber ich denke tatsächlich, dass die Rolle grauer Hüte entscheidend sein könnte, um das weiße Team voranzutreiben, ohne zu viel preiszugeben.
Hinweis: Meine Verwendung des Begriffs "grauer Hut" ist hier nicht Standard. Siehe http://www.howtogeek.com/157460/hacker-hat-colors-explained-black-hats-white-hats-and-gray-hats/ . Also sollte stattdessen ein anderer Begriff verwendet werden, vielleicht "gestreifter Hut".
Trotzdem bleibt die Idee dieselbe: Ein gestreifter Hut kann helfen, zwischen der Arbeit freundlicher schwarzer Hüte und Verteidiger (weiße Hüte) zu vermitteln, so dass bestimmte Ideen und Hinweise mit den weißen Hüten vernünftig geteilt werden können.
quelle
Seit ich die ursprüngliche Frage gestellt habe, habe ich viel zu diesem Thema recherchiert und kann nun meine Ergebnisse als Antwort liefern.
Zunächst entwickeln wir in unserem Labor ein SIEM-System, das Anomalieerkennungsalgorithmen verwendet. Die Beschreibung des Systems und der Algorithmen finden Sie in meinem Artikel Auf dem Weg zu einem System zur komplexen Analyse von Sicherheitsereignissen in großen Netzwerken
Außerdem habe ich in meiner Antwort auf eine ähnliche Frage zu Cross Validated eine kurze Zusammenfassung zum Umgang mit solchen Daten geschrieben
quelle