Large Language Models (LLMs) bieten ausgeprägte Fähigkeiten in den Bereichen Argumentation und Datenzusammenfassung, was sie zu wertvollen Proxys für verschiedene Aufgaben im Cybersicherheitsbetrieb macht. Ihre Performance kann jedoch nachlassen, wenn sie auf sehr spezifische oder unternehmensbezogene Aufgaben angewendet werden, vor allem wenn die Modelle ausschließlich öffentlich zugängliche Internetdaten verwenden.
Diese Studie untersucht Methoden, mit denen LLMs auf spezifische Sicherheitsziele hin gesteuert werden können – besonders durch die Fortsetzung unserer Untersuchung von Methoden zur Klassifizierung von PowerShell-Skripten. Durch die Ausweitung unseres DSDL-Workflows auf Few-Shot-Lernen, Retrieval Augmented Generation (RAG) und Optimierung bewerten wir die potenziellen Leistungsgewinne und Schwächen der einzelnen Techniken.
Unsere erste Methode baut auf dem Prompt unseres Baselining-Tests auf, bei dem wir verschiedene Open Weight-Modelle aufgefordert haben, eine PowerShell-Klassifizierung auf der Splunk Plattform durchzuführen. Beim Few-Shot-Lernen werden dem Modell eine Handvoll Beispiele und deren Labels zur Verfügung gestellt, um es bei einer Klassifizierungsaufgabe zu unterstützen. Wenn man dem Modell einige wenige Beispiele mit Labels (in der Regel 1 bis 5) zur Verfügung stellt, kann es dadurch ein Muster oder Attribute lernen, die die zugrunde liegenden Klassen voneinander unterscheiden. Die Anzahl der zu verwendenden Beispiele hängt von der Kontextlänge des Modells ab. Die Kontextlänge umfasst euren Prompt, etwaige Beispiel-Eingaben, Anweisungen und die Antworten des Modells. Token – in etwa vergleichbar mit Wörtern oder Wortteilen – sind die Einheiten, die diesen Raum füllen.
Wenn ein Modell beispielsweise eine Kontextlänge von 4.000 Token hat, kann man ihm einige Textabsätze, mehrere Beispiele und eine Aufgabenbeschreibung als Prompt geben, solange die Gesamtlänge unter 4.000 Token bleibt. Wird dieses Limit überschritten, ignoriert das Modell frühere Inhalte entweder oder kann nicht korrekt antworten. Bei einer größeren Kontextlänge können Benutzer Dutzende oder sogar Hunderte von Beispielen in den Prompt aufnehmen. Diese als „Many-Shot-Lernen“ bezeichnete Technik bietet neben dieser spontanen Flexibilität oft auch eine bessere Leistung.
Unser Modell für diesen Test, Llama3-8B, unterstützt eine Kontextlänge von etwa 8.000 Token. Nach Berechnung der durchschnittlichen Skriptlänge in unserem Datensatz konnten sechs Beispiele (drei pro Klasse) ohne Kürzung einbezogen werden. Genügen schon wenige Beispiele, um die Genauigkeit der PowerShell-Klassifizierung zu verbessern?
Für diesen Test haben wir das Notebook llm_rag_ollama_text_processing von DSDL manuell modifiziert, um die Beispiele direkt an den Prompt anzuhängen. Dann haben wir SPL verwendet, um den Vorgang zu initiieren und die Ergebnisse zu analysieren:
index="powershell_encoded" encoded=* | eval seed="19844" | eval hash_val = tonumber(substr(md5(seed . label . Content), 1, 8), 16) | eval rand_val = hash_val / ********** | eventstats count AS total_count BY label | sort label rand_val | streamstats count AS class_count BY label | where class_count <= 500 | table Content, label | rename Content as text | fit MLTKContainer algo=RF_llm_rag_ollama_text_processing_megaprompt model_name="llama3" prompt="You are a cybersecurity expert. Classify the intent of the PowerShell script. Choose from 'malicious' or 'benign'. Only output the category name in your answer." text into app:RF_llm_rag_ollama_text_processing as LLM
Mit nur einer Handvoll Beispiele konnten wir eine Steigerung der Präzision und Richtigkeit des Modells um +8 % bzw. +6 % bei der PowerShell-Klassifizierung feststellen. Diese Zahlen bedeuten eine höhere Rate an korrekt identifizierten tatsächlich bösartigen Skripten, ohne dass dies zu Lasten der durchschnittlichen Antwortzeit geht.
| Basiswerte | Few-Shot-Lernen |
|---|---|
![]() |
![]() |
| Methode | Präzision | Recall | Richtigkeit | F1 | Durchschn. Antwort |
|---|---|---|---|---|---|
| Basiswerte | 0,78 | 1,00 | 0,86 | 0,87 | 0,74 Sekunden |
| Few-Shot-Lernen | 0,86 | 0,99 | 0,92 | 0,92 | 0,74 Sekunden |
Hier sind einige weitere Tipps zur optimalen Nutzung von Few-Shot-Lernen:
Unsere zweite Methode, die Retrieval Augmented Generation (RAG), erhöht die technische Komplexität ein wenig, dient jedoch dem Ziel, auch die Richtigkeit auf ein Niveau zu steigern, das den Aufwand rechtfertigt. RAG nutzt eine Vektordatenbank zur Speicherung verschlüsselter Daten, die abgerufen werden, um Kontext für einen Prompt bereitzustellen, den der Benutzer an das Modell übermittelt hat. Um RAG mit DSDL zu verwenden, muss der Milvus-Container über Ollama ausgeführt werden.
Zur Unterstützung der PowerShell-Klassifizierung betten wir zunächst mithilfe von „DSDL Encoding Assistant“ eine Reihe von bösartigen und harmlosen Skripten als Vektordaten ein. Sobald die Daten (dargestellt als numerische Vektoren) in die Milvus-Datenbank eingebettet wurden, verwenden wir „LLM-RAG Assistant“ oder das Notebook llm_rag_script zum Abfragen des Modells mit der neuen Datenerfassung als Kontext. Der Parameter top_k steuert, wie viele abgerufene Beispiele (PowerShell-Skriptbeispiele) auf der Grundlage ihrer Vektorähnlichkeit zur Eingabeabfrage ausgewählt werden.

Um all dies in Zusammenhang zu setzen: Wenn das Modell mit seiner Klassifizierungsargumentation für ein neues Beispiel beginnt, betrachtet es zunächst das betreffende Skript in vektorisierter Form. Unter Verwendung der Abstandsmetriken von RAG ruft das Modell die top_k der ähnlichsten Beispiele ab, um zusätzlichen Kontext für die Klassifizierungsentscheidung zu erhalten. Wenn wir dies wieder mit unserem Zufallsbeispiel ausführen, sieht dies wie folgt aus:
index="powershell_encoded" encoded=* | eval seed="19844" | eval hash_val = tonumber(substr(md5(seed . label . Content), 1, 8), 16) | eval rand_val = hash_val / 4294967295 | eventstats count AS total_count BY label | sort label rand_val | streamstats count AS class_count BY label | where class_count <= 500 | table Content, label | rename Content as query | eval query = "You are a cybersecurity expert. Classify the intent of the PowerShell script. Choose from 'malicious' or 'benign'. Only output the category name in your answer." + query | fit MLTKContainer algo=llm_rag_script model_name=llama3 embedder_name="all-MiniLM-L6-v2" use_local=1 embedder_dimension=384 collection_name=RAG_final top_k=2 rag_type=Documents query into app:llm_rag_script
Mit RAG konnten wir unsere bislang größte Verbesserung bei Präzision (+19 %) und Richtigkeit (+7 %) gegenüber den Basiswerten feststellen, allerdings mit gewissen Einbußen bei der Recall- und Antwortzeit. Bei Aufgaben wie der PowerShell-Klassifizierung, bei denen bösartige Beispiele stark variieren können (z. B. Verschleierung, LOLBins, kodierte Zeichenfolgen), ist es ineffizient, Dutzende oder Hunderte von Beispielen beim Few-Shot-Lernen in einen statischen Prompt zu packen. Stattdessen kann RAG mithilfe der Vektorsuche gezielt nur die ähnlichsten Muster anvisieren und dabei irrelevantes Rauschen vermeiden. Das Sammeln dieses zusätzlichen Kontexts führt allerdings dazu, dass man zugunsten der höheren Richtigkeit eine längere Antwortzeit in Kauf nehmen muss. Interessanterweise trug in diesem Fall das Abrufen der vier ähnlichsten Beispiele (top_k=4) im Vergleich zur Verwendung der zwei ähnlichsten Beispiele (top_k=2) nicht zur Verbesserung der Richtigkeit bei.
| Stand-alone-Inferenz | Few-Shot-Lernen | LLM-RAG | |
|---|---|---|---|
| Basiswerte | 6 Beispiele (3 böswillig / 3 harmlos) | top_k=2 | top_k=4 |
![]() |
![]() |
![]() |
![]() |
| Methode | Präzision | Recall | Richtigkeit | F1 | Durchschn. Antwort |
|---|---|---|---|---|---|
| Basiswerte | 0,78 | 1,00 | 0,86 | 0,87 | 0,74 Sekunden |
| Few-Shot-Lernen | 0,86 | 0,99 | 0,92 | 0,92 | 0,74 Sekunden |
| LLM-RAG top_k:2 | 0,97 | 0,89 | 0,93 | 0,93 | 2,5 Sekunden |
| LLM-RAG top_k:4 | 0,96 | 0,89 | 0,93 | 0,92 | 6,3 Sekunden |
Hier sind einige weitere Tipps zur optimalen Nutzung von RAG:
Die dritte Möglichkeit, ein bestimmtes Sicherheitsproblem anzugehen, besteht darin, ein vorhandenes, vortrainiertes Modell für euren spezifischen Anwendungsbereich oder Use Case zu optimieren. Die Optimierung baut auf dem allgemeinen Sprachwissen und der Argumentation des Basismodells auf, verändert jedoch die Gewichtungen in einem Trainingsprozess mit zusätzlichen Daten geringfügig. Die Optimierungsanforderungen variieren je nach verwendeter Methode, können jedoch einen erheblichen Aufwand an Zeit, finanziellen Mitteln und Rechenressourcen erfordern.
Wir können Llama3 zwar optimieren, doch seine reine Decoder-Architektur eignet sich eher für die Textgenerierung und Argumentation als für spezielle Klassifizierungsaufgaben. Dieses Jahr veröffentlichte Foundation AI-Team von Cisco Foundation-Sec-8B, ein Open Weight-Modell, das für Cybersicherheitsanwendungen optimiert ist und auf dem LLama3-8B-Modell basiert. Das Foundation-Sec-8B-Modell ist ein großartiges Asset zur Unterstützung einer Vielzahl allgemeiner Sicherheits-Anwendungsfälle.
Für die vorliegende Powershell-Klassifizierungsaufgabe ist ein reines Encoder-Modell wie RoBERTa wesentlich besser geeignet, da es speziell dafür konzipiert ist, sinnvolle Darstellungen seiner Trainingsdaten zu kodieren. Um die Leistung dieser Methode im Vergleich zu Few-Shot-Lernen und RAG zu testen, führten wir eine vollständige Optimierung durch, um eine Variante namens neon-RoBERTa zu erstellen, bei der dem vortrainierten Modell eine kleine neuronale Netzwerkschicht hinzugefügt wurde, um die binäre PowerShell-Klassifizierungsaufgabe durchzuführen.

Unser optimiertes, reines Encoder-Modell zeigt, wie gut wir Leistung und Richtigkeit optimieren können, wenn wir uns auf eine eng gefasste Aufgabe spezialisieren – wobei allerdings die meisten Ressourcen für die Entwicklung einer Lösung investiert werden müssen. Insgesamt steigert dieses Modell die Präzision um 21 % und die Richtigkeit um 13 %, während gleichzeitig die Klassifizierungszeit um 99 % je Beispiel verbessert wird. Dieses Modell verfügt jedoch nicht über die inhärenten Fähigkeiten im Bereich der natürlichen Sprache eines Decoder-Modells wie Llama3 oder das Fachwissen im Sicherheitsbereich von Foundation-Sec-8b – es legt den Fokus ganz auf die PowerShell-Klassifizierung.
| Optimierung |
|---|
![]() |
| Methode | Präzision | Recall | Richtigkeit | F1 | Durchschn. Antwort |
|---|---|---|---|---|---|
| Basiswerte | 0,78 | 1,00 | 0,86 | 0,87 | 0,74 Sekunden |
| Few-Shot-Lernen | 0,86 | 0,99 | 0,92 | 0,92 | 0,74 Sekunden |
| LLM-RAG top_k:2 | 0,97 | 0,89 | 0,93 | 0,93 | 2,5 Sekunden |
| LLM-RAG top_k:4 | 0,96 | 0,89 | 0,93 | 0,92 | 6,3 Sekunden |
| Optimierung (RoBERTa) | 0,99 | 0,98 | 0,99 | 0,99 | 7,7 Mikrosekunden |
Hier sind einige abschließende Überlegungen zur Optimierung:
Bei der Anwendung von LLMs auf ein Sicherheitsproblem gibt es über den Basis-Prompt hinaus zahlreiche Optionen, die das Modell zu einem besseren Ergebnis führen können. Wir haben Few-Shot-Lernen und RAG mit DSDL sowie das Optimieren untersucht und bei diesen Methoden gegenüber unserem Basis-Prompt deutliche Verbesserungen bei der PowerShell-Klassifizierung gemessen.
Few-Shot-Lernen und RAG basieren darauf, hochwertige Beispiele und relevante Informationen in die Kontextlänge zu pressen, um die Ausgabe des Modells zu steuern. Je größer die Länge, desto mehr Kontext kann das Modell nutzen, um effektiv zu argumentieren. Im Zweifelsfall können dem Prompt einige Beispiele hinzugefügt werden. Sogar eine kleine Zahl von Beispielen hat die Leistung in unserem Testfall deutlich gesteigert. Bei komplexeren Herausforderungen zeigte RAG eine besonders gute Leistung, da es in der Lage ist, nur die relevantesten Beispiele in den Kontext aufzunehmen.
Beim Optimieren wird das Wissen eines Modells zur Leistungsverbesserung speziell auf einen bestimmten Bereich oder eine Aufgabe zugeschnitten. Basismodelle eignen sich am besten für allgemeine Use Cases, können durch entsprechende Steuerung aber auch für Klassifizierungsaufgaben eingesetzt werden. Für optimale Ergebnisse bei eng gefassten Aufgaben wie der Sicherheitsklassifizierung war es jedoch einfacher und schneller, ein bestehendes, reines Encoder-Modell zu optimieren.
Angesichts des rasanten Fortschritts der KI gibt es immer mehr Analyseoptionen und Möglichkeiten, diese im Bereich Cybersicherheit einzusetzen. Diese Tools und Techniken können äußerst wirkungsvoll dazu beitragen, Erkennungsmaßnahmen zu beschleunigen und zu verbessern, wie etwa bei unserem „Model-in-the-Loop“-Konzept für die Bedrohungssuche. Wir hoffen, dass diese Untersuchung euch ein klareres Bild der verfügbaren Optionen vermittelt und euch hilft, eure Sicherheitsdaten mit Splunk optimal auszuwerten!
Die führenden Unternehmen der Welt vertrauen auf Splunk, einem Unternehmen von Cisco, um ihre digitale Resilienz mit der einheitlichen Sicherheits- und Observability-Plattform, unterstützt durch branchenführende KI, kontinuierlich zu stärken.
Unsere Kunden setzen auf die preisgekrönten Sicherheits- und Observability-Lösungen von Splunk, um die Zuverlässigkeit ihrer komplexen digitalen Umgebungen zu sichern und zu optimieren – in jeder Größenordnung.