ADMIN
2024
03
2024-02-28T12:00:00
Speichermanagement
PRAXIS
054
Security-Tipp
Sicherheit
Prozesse
Kernel-Aufrufe mit Fibratus analysieren
Des Pudels Kern
von Dr. Matthias Wübbeling
Veröffentlicht in Ausgabe 03/2024 - PRAXIS
Nach erfolgreichen Cyberangriffen auf Unternehmen lassen sich oft verdächtige Prozesse oder Aktivitäten auf den Computersystemen erkennen. Um diese systematisiert zu beobachten und automatische Regeln aus dieser Beobachtung auszuwerten, bietet das Tool Fibratus eine umfassende Funktionalität und Erweiterbarkeit für fast jeden Anwendungsfall. Der Security-Tipp in diesem Monat stellt die grundlegende Benutzung und erste Möglichkeiten des Werkzeugs vor.
Die Anzahl der erfolgreichen Cyberangriffe gegen Unternehmen hat im letzten Jahr deutlich zugenommen. Für Verantwortliche im IT-Bereich bedeutet dies vor allem, die Schutzmaßnahmen zu evaluieren und sinnvolle Konzepte umzusetzen. Dass es eine hundertprozentige Sicherheit in der IT nicht gibt, ist seit langem bekannt und daher gibt es neben all den Schutzmaßnahmen auch immer noch viele Tools, die erfolgreiche Cyberangriffe erkennen können.
Betrachten wir ein einzelnes Computersystem zunächst isoliert von der restlichen IT-Umgebung, ist die hostbasierte Anomalieerkennung eine Möglichkeit, um Angriffsversuche und erfolgreiche Attacken auszumachen. Die Anomalieerkennung auf Basis von Kernel-Aktivitäten eines Windows-Systems ist ein Konzept, das Sie mit dem Tool Fibratus [1] angehen können. Auch wenn dieses hauptsächlich Analysten in den Bereichen Schadsoftware, Forensik oder Incident Response adressiert, lässt es sich auch gut für die allgemeine Analyse von Problemen oder ein besseres Verständnis der Systemarchitekturen einsetzen.
Wie funktioniert der Kernel
Der Begriff "Kernel" ist vor allem in der Linux-Welt ein etablierter Begriff. Aber auch in Windows-Systemen gibt es einen Kernel – den Betriebssystemkern. Dieser ist verantwortlich für die Verwaltung der Hardwareressourcen und die Organisation der laufenden Prozesse. Der Kernel fungiert als Vermittler zwischen Prozessen und der Hardware des Computers. Er steuert, welche Ressourcen wie Arbeitsspeicher, Prozessor oder Speichergeräte den verschiedenen Programmen und Prozessen zur Verfügung stehen. Er sorgt dafür, dass Anwendungen effizient und sicher auf die Hardware zugreifen können. Dafür bietet er über Schnittstellen entsprechende Kernel- oder Systemfunktionen an, die durch die Anwendungssoftware genutzt werden.
Die Anzahl der erfolgreichen Cyberangriffe gegen Unternehmen hat im letzten Jahr deutlich zugenommen. Für Verantwortliche im IT-Bereich bedeutet dies vor allem, die Schutzmaßnahmen zu evaluieren und sinnvolle Konzepte umzusetzen. Dass es eine hundertprozentige Sicherheit in der IT nicht gibt, ist seit langem bekannt und daher gibt es neben all den Schutzmaßnahmen auch immer noch viele Tools, die erfolgreiche Cyberangriffe erkennen können.
Betrachten wir ein einzelnes Computersystem zunächst isoliert von der restlichen IT-Umgebung, ist die hostbasierte Anomalieerkennung eine Möglichkeit, um Angriffsversuche und erfolgreiche Attacken auszumachen. Die Anomalieerkennung auf Basis von Kernel-Aktivitäten eines Windows-Systems ist ein Konzept, das Sie mit dem Tool Fibratus [1] angehen können. Auch wenn dieses hauptsächlich Analysten in den Bereichen Schadsoftware, Forensik oder Incident Response adressiert, lässt es sich auch gut für die allgemeine Analyse von Problemen oder ein besseres Verständnis der Systemarchitekturen einsetzen.
Wie funktioniert der Kernel
Der Begriff "Kernel" ist vor allem in der Linux-Welt ein etablierter Begriff. Aber auch in Windows-Systemen gibt es einen Kernel – den Betriebssystemkern. Dieser ist verantwortlich für die Verwaltung der Hardwareressourcen und die Organisation der laufenden Prozesse. Der Kernel fungiert als Vermittler zwischen Prozessen und der Hardware des Computers. Er steuert, welche Ressourcen wie Arbeitsspeicher, Prozessor oder Speichergeräte den verschiedenen Programmen und Prozessen zur Verfügung stehen. Er sorgt dafür, dass Anwendungen effizient und sicher auf die Hardware zugreifen können. Dafür bietet er über Schnittstellen entsprechende Kernel- oder Systemfunktionen an, die durch die Anwendungssoftware genutzt werden.
Jeder einzelne Zugriff auf den Kernel über eine dieser Funktionen erzeugt ein Ereignis im Kernel. Solche Events können von außerhalb beobachtet werden und eignen sich daher auch zur Überwachung der laufenden Prozesse. Fibratus verschafft Ihnen Zugang zu diesen Events und bietet Ihnen unterschiedliche Möglichkeiten, mit diesen Events zu arbeiten. Dafür können Sie diese an verschiedenen Stellen ausgeben (Fibratus nennt dies "Sinks") oder mit zusätzlichen Tools weiterverarbeiten (sogenannte "Filaments"). Fibratus bringt dabei eine eigene Möglichkeit zur Regelerkennung mit, sodass Sie bereits auf einen großen Satz an Detektionsregeln zurückgreifen können.
Fibratus installieren
Für die Installation auf Ihrem Windows-System liefert Fibratus einen komfortablen Installer über die Releases-Webseite des GitHub-Projekts [2]. Klicken Sie sich durch den gewohnten Installationsdialog und schon ist Fibratus aufgespielt. Liegt bereits eine lauffähige Python-Umgebung auf Ihrem System vor, können Sie Fibratus auch über pip installieren. In unseren Versuchen hat das Setup mittels pip jedoch nicht in jedem Fall funktioniert; je nachdem, wie Sie pip in Ihrer Umgebung eingebunden haben, kann es sein, dass benötigte Abhängigkeiten nicht korrekt ermittelt werden. Notfalls können Sie Fibratus natürlich auch aus den GitHub-Quellen selbst kompilieren.
Nach der Installation prüfen Sie, ob Fibratus korrekt installiert ist. Öffnen Sie dafür die Kommandozeile und führen Sie den folgenden Befehl aus: fibratus -h
. Die Ausgabe sollte nun die Hilfeseite des Programms anzeigen. Eine Übersicht der unterstützten Events erhalten Sie etwa mit dem Kommando fibratus list kevents
. Schauen Sie sich in der Liste um, um eine Idee zu erhalten, was Sie mit Fibratus auf Ihrem System analysieren können. Die Liste ist dabei in unterschiedliche Kategorien sortiert, ausgehend von Dateioperationen über Speicher-, Registry- und Netzwerkzugriffe hin zu Prozess- und Thread-Operationen.
Einfaches Event-Monitoring
Um einfach mal zu schauen, welche Informationen von Events über Fibratus zugänglich sind, führen Sie fibratus run
aus. Vermutlich erhalten Sie den Hinweis, dass Sie aufgrund mangelnder Zugriffsrechte nicht auf die Kernel Events zugreifen können. Sie können nun Ihren Benutzer in die Gruppe "Performance Monitor Users" eines Active Directory hinzufügen oder auf Ihrem Testrechner einfach die Kommandozeile mit Administrationsrechten starten. Führen Sie anschließend das Kommando noch einmal aus.
Die Anzahl der Events ist so groß, dass Sie in der Ausgabe so vermutlich erst einmal nichts lesen können. Starten Sie aber beispielsweise mal den Edge-Browser und stoppen dann Fibratus mit "Strg + c". Hierbei können Sie dann nach dem OpenProcess-Event suchen. Sie erkennen, dass die "svchost.exe" einen neuen Prozess mit der ID 2360 für "msedge.exe" startet. Das darauf folgende Open-Thread-Event des Programms "MsMpEng.exe" ist der Windows Defender, der den frisch gestarteten Browser natürlich bei dessen Start überprüft.
Die Auswertung der Ausgaben auf der Konsole ist natürlich für eine normale Benutzung nicht sinnvoll. Um die Daten später strukturiert auszuwerten, können Sie diese etwa in eine Elastic-Datenbank, RabbitMQ oder schlicht das Windows-EventLog schreiben lassen. Diese Optionen legen Sie in der Konfigurationsdatei fest, die Sie unter "%Program Files%\Fibratus\Config" finden. In der Datei im YAML-Format sehen Sie unter "output" die entsprechenden Konfigurationsmöglichkeiten. Damit Sie Ihre Änderungen speichern können, achten Sie auf die korrekten Berechtigungen beziehungsweise starten Sie Ihren Editor mit Administrationsrechten.
Passen Sie die Konfiguration Ihren Gegebenheiten an, für unser Beispiel konfigurieren wir das Logging in das EventLog von Windows. Dies ist zum einen ohne weiteren Aufwand möglich, zum anderen erlaubt es bei entsprechender Konfiguration in Ihrer Domäne auch das Sammeln der Logdaten auf einem vorhandenen zentralen Server. Setzen Sie also die Option "enabled" auf den Wert "true". Beachten Sie dabei, dass Sie nur einen Output auswählen können und die Ausgabe auf der Konsole mit dem Wert "false" noch deaktivieren müssen. Speichern Sie anschließend die neue Konfiguration.
Kontinuierliches Monitoring
Möchten Sie Fibratus als Service dauerhaft im Hintergrund laufen lassen, bietet Ihnen das Programm einen einfachen Weg dazu. Führen Sie für die Installation und den direkten Start des Services die folgenden Kommandos aus:
fibratus install-service
fibratus start-service
Dass der Hintergrunddienst läuft, können Sie mit dem Kommando fibratus stats
prüfen, woraufhin Sie eine Tabelle mit unterschiedlichen Statuswerten sehen sollten. Nach kurzer Zeit landen erste Einträge im EventLog, die Sie etwa mit dem Windows EventViewer ansehen können. Dabei erhält jedes Event eine eigene ID, so können Sie die Einträge gut filtern und sortieren.
Regelsätze verwenden
Bisher haben wir in unserem Beispiel einfach alle Events mit Fibratus aus dem Kernel in unser Logmanagement übernommen. Damit haben wir natürlich noch keine Bedrohung erkennen können. Im GitHub-Repository können Sie im Verzeichnis "rules/" die mitgelieferten Regeln einsehen. Diese sind ebenfalls als YAML deklariert, sodass Sie diese auch anpassen oder als Grundlage für eigene Regeln verwenden können. Der Aufbau der Regeln ist im Grunde relativ einfach, besteht aber aus durchaus komplexen Kombinationen. Die Darstellung im Rahmen dieses Artikels ist aus Platzgründen leider nicht möglich und wir verweisen daher auf die umfassende Konfiguration von Fibratus.
Die vorhandenen Regeln können Sie in der Konfiguration unter der Option "filters.rules" aktivieren. Der kommentierte Standardwert "*.yml" lädt einfach alle Regeln in dem angegebenen "rules\"-Verzeichnis. Hier können Sie aber auch ein Array mit einzelnen Einträgen aktivieren oder mehrere Verzeichnisse mit Wildcard einbinden.
Vermutlich ist Ihnen in der Konfiguration direkt neben den Regeln die Option für Makros aufgefallen. Diese bieten zusätzlich zu den Regeln spezifische Bedingungen bei der Auswertung. So können Sie Regeln mithilfe der deutlich allgemeiner formulierten Makros definieren und müssen dann bei anstehenden Änderungen dieser Bedingungen nicht immer alle Regelsätze durchgehen, sondern ändern die vorhandenen Makros und passen damit alle darauf basierenden Regeln mit an. Auch hier liefert Fibratus bereits einen kleinen Satz praktischer Makros mit, die Sie bei Benutzung der Regeln ebenfalls einbinden sollten.
Fazit
Der Security-Tipp in diesem Monat hat Ihnen mit Fibratus ein vielseitiges und mächtiges Instrument vorgestellt, das speziell für die Analyse eines Windows-Systems entwickelt wurde. Sie erhalten damit detaillierte Einblicke in die Abläufe des Windows-Kernels. Damit ist es ein praktisches Werkzeug für verschiedene IT-Fachkräfte – von Analysten und Forensikern bis hin zu Systemadministratoren oder Softwareentwicklern gibt es denkbare Anwendungsszenarien. Die Stärke von Fibratus liegt in seiner flexiblen Anpassungsfähigkeit durch Makros und Regeln, die die Wiederverwendung von Mustern ermöglicht und somit eine effiziente und genaue Überwachung und Analyse bietet. Dies erleichtert die Anomalieerkennung, was für die Reaktion auf Sicherheitsvorfälle von Bedeutung ist.
(dr)