Verwenden von LLMs und ESRE zum Suchen ähnlicher Benutzersitzungen
In unserem vorherigen Artikel haben wir uns mit der Verwendung des GPT-4 Large Language Model (LLM) befasst, um komplexe Linux-Benutzersitzungen in prägnanten Zusammenfassungen zusammenzufassen. Wir haben die wichtigsten Erkenntnisse aus unseren Experimenten hervorgehoben und die Nuancen der Datenvorverarbeitung, der prompten Abstimmung und der Anpassung von Modellparametern beleuchtet. Im Rahmen desselben Experiments widmeten wir einige Zeit der Untersuchung von Sitzungen, die Ähnlichkeiten aufwiesen. Diese ähnlichen Sitzungen können den Analysten anschließend dabei helfen, verwandte verdächtige Aktivitäten zu identifizieren. Wir haben die folgenden Methoden untersucht, um Ähnlichkeiten in Benutzersitzungen zu finden:
- In dem Bestreben, ähnliche Benutzerprofile und Sitzungen aufzudecken, bestand ein Ansatz darin, Sitzungen nach den von den Benutzern ausgeführten Aktionen zu kategorisieren. Dies haben wir erreicht, indem wir das Language Model Model (LLM) angewiesen haben, Benutzersitzungen in vordefinierte Kategorien zu kategorisieren
- Darüber hinaus nutzten wir die Fähigkeiten von ELSER (Elastic's retrieval model for semantic search), um eine semantische Suche auf die Modellzusammenfassungen durchzuführen, die aus dem Sitzungszusammenfassungsexperiment abgeleitet wurden
Diese Forschung konzentriert sich auf unsere Experimente mit GPT-4 für die Kategorisierung von Sitzungen und ESRE für die semantische Suche.
Nutzung von GPT für die Kategorisierung von Sitzungen
Wir haben einen Kollegen aus der Sicherheitsforschung mit Fachkenntnissen konsultiert, um neun Kategorien für unseren Datensatz von 75 Sitzungen zu definieren. Diese Kategorien verallgemeinern die wichtigsten Verhaltensweisen und signifikanten Merkmale, die in den Sitzungen beobachtet wurden. Sie umfassen die folgenden Aktivitäten:
- Docker-Ausführung
- Netzwerkbetrieb
- Datei-Suche
- Verwendung der Linux-Befehlszeile
- Verwendung von Linux-Sandbox-Anwendungen
- Pip-Installationen
- Paket-Installationen
- Ausführung von Skripten
- Prozessausführungen
Lehren
Für unsere Experimente haben wir eine GPT-4-Bereitstellung in Azure AI Studio mit einem Tokenlimit von 32 KB verwendet. Um das Potenzial des GPT-Modells für die Sitzungskategorisierung zu untersuchen, haben wir eine Reihe von Experimenten durchgeführt, bei denen wir das Modell angewiesen haben, Sitzungen zu kategorisieren, indem wir dasselbe JSON-Zusammenfassungsdokument eingegeben haben, das wir für den Prozess der Sitzungszusammenfassung verwendet haben.
Diese Bemühungen umfassten mehrere Iterationen, bei denen wir uns auf die Verbesserung von Eingabeaufforderungen und Few-Shot-Learning konzentrierten. Was die Modellparameter betrifft, so haben wir eine Temperatur von 0 beibehalten, um die Ausgaben weniger vielfältig zu machen.
Schnelle Entwicklung
Imbiss: Das Einfügen von Erläuterungen für Kategorien in die Eingabeaufforderungen wirkt sich nicht auf die Leistung des Modells aus.
Die Komponente zur Sitzungskategorisierung wurde als Erweiterung der Eingabeaufforderung für die Sitzungszusammenfassung eingeführt. Wir untersuchten, wie es sich auswirkt, wenn neben den Eingabeaufforderungen auch kontextbezogene Erklärungen für jede Kategorie einbezogen werden. Interessanterweise zeigten unsere Ergebnisse, dass das Anhängen des illustrativen Kontexts die Leistung des Modells nicht signifikant beeinflusste, verglichen mit Eingabeaufforderungen ohne solche ergänzenden Informationen.
Im Folgenden finden Sie eine Vorlage, die wir verwendet haben, um den Kategorisierungsprozess des Modells zu steuern:
You are a cybersecurity assistant, who helps Security analysts in summarizing activities that transpired in a Linux session. A summary of events that occurred in the session will be provided in JSON format. No need to explicitly list out process names and file paths. Summarize the session in ~3 paragraphs, focusing on the following:
- Entities involved in the session: host name and user names.
- Overview of any network activity. What major source and destination ips are involved? Any malicious port activity?
- Overview of any file activity. Were any sensitive files or directories accessed?
- Highlight any other important process activity
- Looking at the process, network, and file activity, what is the user trying to do in the session? Does the activity indicate malicious behavior?
Also, categorize the below Linux session in one of the following 9 categories: Network, Script Execution, Linux Command Line Utility, File search, Docker Execution, Package Installations, Pip Installations, Process Execution and Linux Sandbox Application.
A brief description for each Linux session category is provided below. Refer to these explanations while categorizing the sessions.
- Docker Execution: The session involves command with docker operations, such as docker-run and others
- Network: The session involves commands with network operations
- File Search: The session involves file operations, pertaining to search
- Linux Command Line Utility: The session involves linux command executions
- Linux Sandbox Application: The session involves a sandbox application activity.
- Pip Installations: The session involves python pip installations
- Package Installations: The session involves package installations or removal activities. This is more of apt-get, yum, dpkg and general command line installers as opposed to any software wrapper
- Script Execution: The session involves bash script invocations. All of these have pointed custom infrastructure script invocations
- Process Execution: The session focuses on other process executions and is not limited to linux commands.
###
Text: {your input here}
Wenigstes Tuning
Imbiss: Das Hinzufügen von Beispielen für jede Kategorie verbessert die Genauigkeit.
Gleichzeitig untersuchten wir die Wirksamkeit der Verbesserung der Modellleistung, indem wir ein Beispiel für jede Kategorie in die obige Eingabeaufforderung einfügten. Diese Strategie führte zu einer deutlichen Verbesserung, die die Genauigkeit des Modells um 20 % erhöhte.
Auswerten von GPT-Kategorien
Die Bewertung von GPT-Kategorien ist entscheidend, um die Qualität und Zuverlässigkeit der Ergebnisse zu messen. Bei der Auswertung der Kategorisierungsergebnisse wurde ein Vergleich zwischen der Kategorisierung des Modells und der vom Sicherheitsexperten zugewiesenen menschlichen Kategorisierung (in der folgenden Abbildung als "Ground_Truth" bezeichnet) gezogen. Wir haben die Gesamtgenauigkeit basierend auf der Anzahl erfolgreicher Übereinstimmungen für die Kategorisierungsbewertung berechnet.
Wir stellten fest, dass GPT-4 beim Umgang mit Proben mit mehreren Kategorien vor Herausforderungen stand. Bei der Zuweisung einer einzelnen Kategorie stimmte diese jedoch in 56 % der Fälle mit der menschlichen Kategorisierung überein. Die Kategorie "Linux Command Line Utility" stellte eine besondere Herausforderung dar, da 47 % der falsch negativen Ergebnisse oft fälschlicherweise als "Prozessausführung" oder "Skriptausführung" klassifiziert wurden. Diese Diskrepanz entstand aufgrund der eng verwandten Definitionen der Kategorien "Linux Command Line Utility" und "Process Execution" und es gab möglicherweise auch unzureichende Informationen in den Eingabeaufforderungen, wie z. B. Prozessbefehlszeilenargumente, die als wertvolles Unterscheidungsmerkmal für diese Kategorien hätten dienen können.
Angesichts der Ergebnisse unserer Evaluierung kommen wir zu dem Schluss, dass wir entweder die Beschreibungen für jede Kategorie in der Eingabeaufforderung anpassen oder dem Modell durch Few-Shot-Training weitere Beispiele zur Verfügung stellen müssen. Darüber hinaus lohnt es sich, darüber nachzudenken, ob GPT die am besten geeignete Wahl für die Klassifizierung ist, insbesondere im Kontext des Prompting-Paradigmas.
Semantische Suche mit ELSER
Wir wollten auch ELSER, den Elastic Learned Sparse EncodeR für die semantische Suche, ausprobieren. Die semantische Suche konzentriert sich auf die kontextuelle Bedeutung und nicht auf streng exakte Schlüsselworteingaben, und ELSER ist ein von Elastic trainiertes Retrieval-Modell, das es Ihnen ermöglicht, eine semantische Suche durchzuführen und relevantere Ergebnisse abzurufen.
Wir haben einige Beispiele für semantische Suchfragen in den Sitzungszusammenfassungen ausprobiert. Die Sitzungszusammenfassungen wurden in einem Elasticsearch-Index gespeichert, und es war einfach, das ELSER-Modell nach einem offiziellen Tutorial herunterzuladen. Die von ELSER generierten Token werden im Index gespeichert, wie in der folgenden Abbildung gezeigt:
Danach war die semantische Suche nach dem Index insgesamt in der Lage, die relevantesten Ereignisse abzurufen. Semantische Suchanfragen zu den Ereignissen umfassten:
- Kennwortbezogen – ergibt 1Kennwortbezogene Protokolle
- Java – Ausgabe von Protokollen, die Java verwendet haben
- Python – liefert Protokolle, die Python verwendet haben
- Nicht interaktive Sitzung
- Interaktive Sitzung
Ein Beispiel für die semantische Suche ist in der Dev Tools-Konsole durch eine text_expansion Abfrage zu sehen.
Einige Takeaways sind:
- Bei der semantischen Suche kann die Eingabeaufforderungsvorlage dazu führen, dass die Zusammenfassung zu viele nicht zusammenhängende Schlüsselwörter enthält. Zum Beispiel wollten wir, dass jede Zusammenfassung eine Bewertung enthält, ob die Sitzung als "bösartig" eingestuft werden sollte oder nicht, wobei dieses spezifische Wort immer in der resultierenden Zusammenfassung enthalten war. Daher enthielten die Zusammenfassungen von gutartigen und bösartigen Sitzungen gleichermaßen das Wort "bösartig" in Sätzen wie "Diese Sitzung ist bösartig" oder "Diese Sitzung ist nicht bösartig". Dies hätte die Genauigkeit beeinträchtigen können.
- Die semantische Suche schien nicht in der Lage zu sein, effektiv zwischen bestimmten verwandten Konzepten zu unterscheiden, wie z. B. interaktiv und nicht-interaktiv. Eine kleine Anzahl spezifischer Begriffe wurde möglicherweise nicht als wichtig genug für die Kernbedeutung der Sitzungszusammenfassung für die semantische Suche erachtet.
- Die semantische Suche funktioniert besser als BM25 , wenn der Benutzer die genauen Schlüsselwörter nicht angibt. Zum Beispiel ist die Suche nach "Python"- oder "Java"-bezogenen Protokollen und Zusammenfassungen sowohl mit ELSER als auch mit BM25 gleichermaßen effektiv. ELSER könnte jedoch relevantere Daten abrufen, wenn nach Protokollen im Zusammenhang mit "objektorientierter Sprache" gesucht wird. Im Gegensatz dazu liefert die Verwendung einer Stichwortsuche nach "objektorientierter Sprache" keine relevanten Ergebnisse, wie in der Abbildung unten gezeigt.
Was kommt als Nächstes?
Wir prüfen derzeit die weitere Verbesserung der Zusammenfassung durch Retrieval Augmented Generation (RAG) unter Verwendung von Tools in der Elastic Search and Relevance Engine (ESRE). In der Zwischenzeit würden wir uns freuen, von Ihren Experimenten mit LLMs, ESRE usw. zu hören. Wenn Sie uns mitteilen möchten, was Sie tun, oder während des Prozesses auf Probleme stoßen, wenden Sie sich bitte über unseren Community-Slack-Kanal und unsere Diskussionsforen an uns.