ADMIN

2025

07

2025-06-29T12:00:00

Hybrid Cloud

SCHWERPUNKT

083

Sicherheit

Systemanalyse

Stratoshark

Systemanalyse mit Stratoshark

Auf Datenjagd im Rechner

von Benjamin Pfister

Veröffentlicht in Ausgabe 07/2025 - SCHWERPUNKT

Sichtbarkeit ist der Schlüssel zur Analyse von Fehlern und Sicherheitsvorfällen – dies gilt auch für die Betriebssystem-Ebene. Im Netzwerkbereich bringt Wireshark seit rund 30 Jahren Licht ins Dunkel, doch innerhalb von Hostsystemen herrscht oft Nullsicht. Stratoshark soll als neues Open-Source-Tool der Wireshark-Stiftung diesen blinden Fleck mit der Analyse von Systemaufrufen beseitigen.

Ein Computer nutzt verschiedene installierte Anwendungen, wie beispielsweise einen Webbrowser, ein E-Mail-Programm oder eine Tabellenkalkulation. Sie müssen jedoch in vielen Fällen auf externe Ressourcen zugreifen. Eine Anwendung für Webmeetings benötigt beispielsweise Zugang zum Netzwerk und auf Soundgeräte, wie etwa ein Headset. Eine Tabellenkalkulation greift hingegen auf Festplatten/SSDs oder Netzlaufwerke zu. Allerdings wissen diese Anwendungen selbst nicht, wie das funktioniert.
Hier kommen das Betriebssystem und Systemaufrufe ins Spiel. Das Betriebssystem kennt die Mechanismen, um beispielsweise eine WiFi- von einer Ethernet-Verbindung zu unterscheiden oder ein Bluetooth-Headset von einem kabelgebundenen Lautsprecher. Es ermöglicht folglich den Anwendungen, diese Unterschiede nicht selbst berücksichtigen zu müssen. Dazu stellt das Betriebssystem eine Reihe standardisierter Funktionen bereit, mit denen Anwendungen auf diese externen Geräte zugreifen.
Dazu gehören grundlegende Befehle wie read(), write(), socket() und sendmsg(), die als Systemaufrufe bezeichnet werden. Um also in Fehlersituationen oder Sicherheitsanalysen genauer betrachten zu können, wie sich eine Applikation verhält, spielen die zugehörigen Systemaufrufe eine wichtige Rolle – sei es beispielsweise der Zugriff auf Dateien oder die Netzwerkkommunikation. Dies war bisher immer ein blinder Fleck in der Analyse.
Ein Computer nutzt verschiedene installierte Anwendungen, wie beispielsweise einen Webbrowser, ein E-Mail-Programm oder eine Tabellenkalkulation. Sie müssen jedoch in vielen Fällen auf externe Ressourcen zugreifen. Eine Anwendung für Webmeetings benötigt beispielsweise Zugang zum Netzwerk und auf Soundgeräte, wie etwa ein Headset. Eine Tabellenkalkulation greift hingegen auf Festplatten/SSDs oder Netzlaufwerke zu. Allerdings wissen diese Anwendungen selbst nicht, wie das funktioniert.
Hier kommen das Betriebssystem und Systemaufrufe ins Spiel. Das Betriebssystem kennt die Mechanismen, um beispielsweise eine WiFi- von einer Ethernet-Verbindung zu unterscheiden oder ein Bluetooth-Headset von einem kabelgebundenen Lautsprecher. Es ermöglicht folglich den Anwendungen, diese Unterschiede nicht selbst berücksichtigen zu müssen. Dazu stellt das Betriebssystem eine Reihe standardisierter Funktionen bereit, mit denen Anwendungen auf diese externen Geräte zugreifen.
Dazu gehören grundlegende Befehle wie read(), write(), socket() und sendmsg(), die als Systemaufrufe bezeichnet werden. Um also in Fehlersituationen oder Sicherheitsanalysen genauer betrachten zu können, wie sich eine Applikation verhält, spielen die zugehörigen Systemaufrufe eine wichtige Rolle – sei es beispielsweise der Zugriff auf Dateien oder die Netzwerkkommunikation. Dies war bisher immer ein blinder Fleck in der Analyse.
Blick in die Systemaufrufe
Stratoshark [1] bietet nun die Möglichkeit, sowohl die vorgenannten Systemaufrufe als auch Lognachrichten zu analysieren – ähnlich wie Wireshark im Fall von Netzwerkpaketen. Die genannten Systemaufrufe stehen dabei im Fokus. Das Tool basiert größtenteils auf dem Quellcode von Wireshark. Entwickelt wurde es unter der Leitung von Gerald Combs, dem Erfinder von Wireshark. Dessen aktueller Arbeitgeber Sysdig stellt auch die notwendigen Erfassungstools Falco und Sysdig für Aktivitäten und Loggings bereit.
Stratoshark ergänzt bestehende Analysewerkzeuge um Funktionen auf Betriebssystem- und Applikationsebene, ersetzt jedoch nicht Wireshark. Durch detaillierte Einblicke in sämtliche Interaktionen zwischen Anwendungen und dem Betriebssystem ermöglicht es eine tiefgehende Untersuchung des Applikationsverhaltens. Dies stellt eine essenzielle Grundlage für effektives und effizientes Troubleshooting und umfassende Sicherheitsanalysen dar. Besonders hervorzuheben ist die gesteigerte Effizienz bei diesen Prozessen durch gezielte und intuitive Filterung.
Derzeit unterstützt Stratoshark die Analyse von Aktivitäten auf Linux-basierten Systemen, einschließlich containerisierter Umgebungen, was es besonders für cloudnative Anwendungen interessant macht [2]. Untersuchen lassen sich unter anderem Datei-I/O, Befehlsausführungen, Netzwerkaktivitäten und die Kommunikation zwischen Prozessen. Das Tool selbst ist für Linux, macOS und Windows verfügbar. Allerdings stehen die erforderlichen Bibliotheken zur Erfassung der Analysedaten bislang ausschließlich für Linux bereit.
Datenerfassung mittels libscap und libsinsp
Stratoshark nutzt die Bibliotheken "libscap" und "libsinsp", um Systemaufrufe zu erfassen und mit zusätzlichen Informationen anzureichern. Während libscap diese Syscalls von überwachten Systemen aufzeichnet und speichert, stellt libsinsp-Funktionen zum Parsen, Filtern und Formatieren der Ereignisse für Anwendungen wie Stratoshark bereit. Dies ermöglicht beispielsweise eine detaillierte Analyse der Interaktion eines Webservers wie Apache oder NGINX mit dem Betriebssystem. Die Bibliotheken greifen entweder über ein Kernelmodul oder einen eBPF-Probe direkt auf den Linux-Kernel zu, um Systemaufrufe in Echtzeit zu erfassen. Die aufgezeichneten Daten speichert Stratoshark im SCAP-Format, das auch von Sysdig und Falco genutzt wird.
Sysdig lässt sich dabei mit tcpdump, nur für Systemaufrufe, vergleichen. Es ermöglicht die tiefgehende Untersuchung von Betriebssystemprozessen und deren Interaktion. Falco hingegen fungiert als leistungsstarker Kernel-Überwachungs- und Erkennungsagent, der Systemaufrufe anhand benutzerdefinierter Regeln überwacht. Durch die Integration von Metadaten aus Container-Laufzeiten und Kubernetes erweitert Falco die Kontextinformationen der Ereignisse. Die gesammelten Daten können schließlich außerhalb des Hosts in SIEM- oder Data-Lake-Systemen weiter analysiert werden.
Bild 1: Stratoshark wirft einen Blick in Linux-Systme und nutzt die Bibliotheken libscap und libsinsp, um Systemaufrufe zu erfassen. (Quelle: Wireshark Foundation)
Datenauswertung im GUI
Nach Aufruf eines SCAP-Mittschnitts in Stratoshark erkennen wir im oberen Bereich des GUI anstatt der bekannten Paketliste aus Wireshark die Eventdetails. Ein Systemaufruf entspricht in Stratoshark dem "Frame"-Header in Wireshark und stellt eine zentrale Einheit der Analyse dar. Jedes Ereignis enthält eine Ankunftszeit, die als Zeitstempel erfasst wird. Unter "Ereignisinformationen" sind die wichtigsten Details zusammengefasst, die für die Analyse relevant sind.
Ein wesentlicher Bestandteil ist die Richtung des Ereignisses: Ein nach rechts weisender Pfeil ">" zeigt einen Aufruf einer Anwendung an das Betriebssystem an, während ein nach links weisender Pfeil "<" eine Antwort des Betriebssystems darstellt. Der Typ gibt den Namen der aufgerufenen Systemaufruffunktion an. Je nach Funktion können zudem Argumente angezeigt werden, die die spezifischen Anfrage- oder Antwortwerte enthalten, wie beispielsweise eine URL innerhalb eines http-GET Aufrufs beim Aufruf einer Webseite.
Zusätzlich liefert das System Informationen, die den verantwortlichen Prozess identifizieren. Dazu gehören dessen Name sowie der übergeordnete Prozess mit dessen Parent Name, der ihn gestartet hat. So könnte beispielsweise ein System mit einem Apache-Webserver als Parent Name den Prozess "kworker" führen. Ergänzend wird die eindeutige Process ID (PID) angezeigt, um beispielsweise entsprechende Prozesse mitkill  stoppen zu können.
Falls der Systemaufruf eine Datei betrifft, enthält es korrespondierende File-Descriptor-Informationen. Sie liefern Details zur betroffenen Datei. Der FD-Name kann dabei auf eine klassische Datei oder auch auf Netzwerk-Sockets verweisen, da in Linux nahezu alles als Datei behandelt wird. Zudem gibt es eine Ausgabe der rohen HEX-Dumps. Auf diese greifen Sicherheitsanalysten in vielen Fällen zu. Sie sind, wie in Wireshark im Standard, zunächst unten rechts mit dem zugehörigen ASCII-Code angeordnet. Unten links erkennen Sie die entsprechend angewandten Dissektoren in der aus Wireshark bekannten Baumstruktur mit Nutzer- und Prozessinformationen.
Stratoshark nutzt dieselbe Analyse- und Filter-Engine wie Wireshark und integriert dabei wesentliche Elemente der grafischen Benutzeroberfläche. Dank der Verwendung des gleichen Dateiformats wie Falco und Sysdig CLI ist ein nahtloser Wechsel zwischen den einzelnen Tools möglich. Stratoshark zeigt nach dem Start keine herkömmlichen Schnittstellen als Quelle an, sondern bietet stattdessen das Falco-Plug-in oder sshdig für Remote-SSH-Aufzeichnungen von Systemaufrufen.
Dabei orientiert sich das Tool an der vertrauten dreigeteilten Benutzeroberfläche, die Wireshark-Benutzern geläufig ist und sich individuell anpassen lässt, wobei auch die Anzeigefilter im oberen Bereich in gleicher Art und Weise genutzt werden können. Zudem bringt Stratoshark im oberen rechten Bereich Buttons mit. Sie liefern vorbereitete Anzeigefilter für häufig genutzte Systemaufrufe, wie beispielsweise für Kommandoausführungen, Dateizugriffe (lesend, schreibend, löschend), Netzwerkaktivitäten, das Schreiben in Systemdateien oder Logs sowie das Laden von Kernelmodulen, die direkt abrufbar sind. Ein weiterer Schalter ermöglicht es, fehlerhafte Systemaufrufe gezielt vorzufiltern.
Aufzeichnung mit Sysdig in der Praxis
Um die Funktionsweise von Stratoshark sowie den Prozess der Aufzeichnung und Analyse besser zu veranschaulichen, folgt ein Beispiel basierend auf einer Aufzeichnung mit Sysdig und der anschließenden Analyse mit Stratoshark. Zunächst installieren wir Sysdig auf einer Ubuntu-Linux-VM. Hierfür laden wir das entsprechende Deb-Paket von GitHub herunter und spielen es mithilfe vonapt install  ein. Zur Validierung der Installation erfolgt eine Versionsabfrage übersysdig --version. Parallel dazu installieren wir Stratoshark unter macOS, um die spätere Analyse durchzuführen. Die zugehörige DMG-Datei stand auf der offiziellen Webseite "stratoshark.org" zum Download bereit.
Nun starten wir die Aufzeichnung auf der Linux-VM mit dem Befehlsysdig -w ita.scap. Das Argument "-w" speichert die erfassten Daten in die angegebene Datei, sodass in diesem Fall sämtliche Nutzdaten in "ita.scap" landen. Alternativ können Sie über das Argument "-s" eine bestimmte Anzahl von Bytes für die erfassten Nutzdaten definieren. Um zu überprüfen, ob die Aufzeichnung erfolgreich war, lesen wir die Datei anschließend mitsysdig -r ita.scap proc.name=curl  aus. Dabei wenden wir direkt einen Anzeigefilter an, der nur den Prozess "curl" erfasst.
Um gezielt bestimmte Systemaufrufe zu filtern, selektieren Sie diese mit "evt.type=<Aufruf>". So zeigt beispielsweisesysdig -r ita.scap evt.type=open  nur Systemaufrufe zum Öffnen von Dateien an. Darüber hinaus stehen zahlreiche weitere Filteroptionen zur Verfügung, die Sie mit dem Befehlsysdig -l  auflisten. Jetzt folgt die Analyse mit Stratoshark. In Bild 2 ist anhand der Event-Nummer 93373 die Abfrage eines HTTP GET-Requests durch das CLI-Tool curl vom Netzwerk-Socket erkennbar. Stratoshark zeigt dabei nicht nur den Prozessnamen "curl" und die zugehörige Prozess-ID 83830, sondern auch weitere relevante Details. Da in diesem Beispiel keine Container genutzt wurden, bleibt die Spalte "Container Name" mit dem Eintrag "host" entsprechend leer.
Bild 2: Ein HTTP-GET-Request über das CLI-Tool curl an die Webseite it-administrator.de in Stratoshark.
Zusätzlich liefert Stratoshark in der Spalte "FD-Name" detaillierte Informationen zur netzwerkseitigen Kommunikationsbeziehung: Der Client mit der IP-Adresse 192.168.178.128 kommuniziert über den TCP-Quellport 34450 mit dem Server auf der IP-Adresse 88.198.228.86, der über den TCP-Zielport 80 erreichbar ist. Wie in Wireshark ermöglichen Anzeigefilter auch in Stratoshark eine präzise Auswahl der gewünschten Systemaufrufe. Beispielsweise listet der Filter "user.name == "ita"" alle Aktionen auf, die der Benutzer "ita" ausgeführt hat.
Für Sicherheitsanalysen nach einem Vorfall können auch ausgehende Verbindungen von besonderem Interesse sein. Diese lassen sich gezielt über den Event-Typ "Connect" und den Filter "evt.type == "connect"" identifizieren. Ebenso lassen sich Dateizugriffe, sowohl lesend als auch schreibend, mithilfe des Filters "evt.category == "file" && evt.is_io == True"" erfassen. Diese flexible Filtermöglichkeit macht Stratoshark zu einem leistungsstarken Werkzeug für verschiedenste Analyse- und Sicherheitszwecke.
Fazit
Mit der Veröffentlichung von Stratoshark eröffnen sich neue Möglichkeiten zur Systemanalyse, was sowohl Sicherheitsanalysten, Troubleshooter als auch Entwickler freuen dürfte. Das gilt auch für cloudnative Umgebungen. Dank des vertrauten Bedienkonzepts dürften sich insbesondere Wireshark-Nutzer schnell zurechtfinden. Allerdings bleibt abzuwarten, wann und ob Aufzeichnungsmöglichkeiten für Windows und macOS folgen – die Community wartet bereits.
Darüber hinaus zeigt Stratoshark exemplarisch, wie klassische Netzwerk- und Systemanalysen zusammenwachsen: Durch die Kombination aus System- und Anwendungsverständnis lassen sich Vorfälle nicht nur oberflächlich nachvollziehen, sondern tiefgreifend rekonstruieren – mit allen Kontextinformationen zu Prozessen, Dateien und Netzwerkschnittstellen.
(dr)
Link-Codes