ADMIN
2023
06
2023-05-30T12:00:00
Automatisierung
PRAXIS
060
Security-Tipp
Sicherheit
Cyberangriffe
Incident Response mit Velociraptor
Auf der Jagd
von Dr. Matthias Wübbeling
Veröffentlicht in Ausgabe 06/2023 - PRAXIS
Der Velociraptor ist ein Dinosaurier aus der Kreidezeit. Bekannt wurde er vor allem durch seine Rolle in den Jurassic-Park-Filmen. Seit einiger Zeit ist die Softwareinkarnation des Raubtiers auf der Jagd nach Hinweisen auf Cyberangriffe und sogenannten Indicators of Compromise. Der Security-Tipp des Monats zeigt Ihnen, wie Sie das Raubtier zähmen und für Ihre Zwecke nutzen.
Aus Sicht der IT-Abteilung ist es immer sinnvoll, einen Überblick über die IT-Infrastruktur eines Unternehmens zu haben oder zumindest zeitnah erstellen zu können. Insbesondere unmittelbar nach IT-Sicherheitsvorfällen benötigt die IT-Abteilung schnell Informationen darüber, auf welche Systeme ein Angreifer möglicherweise Zugriff hatte und welche Systeme noch funktionsfähig sind. Sie suchen dann gezielt nach sogenannten Indicators of Compromise (IoC), also Hinweisen darauf, dass ein System als kompromittiert angesehen werden muss.
Für diese Suche können Sie Velociraptor [1] verwenden. Dessen Entwickler zitieren zwei bekannte Werkzeuge als Grundidee für ihre eigene Software: das Incident-Response-Werkzeug GRR Rapid Response (GRR) [2] und das Monitoring-Tool osquery [3]. Mit GRR erstellen Sie sogenannte Hunts (im Sinne einer Jagd) nach IoCs und führen diese über einen bestimmten Zeitraum auf allen mit Ihrem Netzwerk verbundenen Clients aus. Das Reporting landet auf einem zentralen Server und steht Ihnen dort zur Verfügung. Mit osquery hingegen fragen Sie in einer an SQL angelehnten Abfragesprache Informationen von Ihren Clients ab. Dabei stellt das Tool Informationen in über 275 Tabellen zur Verfügung – von CPU-Daten über Netzwerkeinstellungen wie DNS oder statische Routen bis hin zu installierten Chrome-Erweiterungen finden Sie so alles über Ihre Systeme heraus.
Velociraptor verfolgt nun das Ziel, die Fähigkeiten von GRR und osquery in einem Tool zu bündeln, dabei aber schneller, kleiner, skalierbarer und einfacher installierbar zu sein. Die Software arbeitet wie GRR und osquery unabhängig vom gewählten Betriebssystem und bringt so gut wie keine Abhängigkeiten mit sich. Über die Funktionalität von GRR und osquery hinaus besteht die Möglichkeit, Abfragen durch definierte Ereignisse auslösen zu lassen und mithilfe der Velociraptor Query Language (VQL) nicht nur Abfragen im Sinne von osquery auszuführen, sondern auch Dateien zu übertragen, Systeme und Einstellungen zu modifizieren und die gesamte Client-Server-Infrastruktur zu steuern.
Aus Sicht der IT-Abteilung ist es immer sinnvoll, einen Überblick über die IT-Infrastruktur eines Unternehmens zu haben oder zumindest zeitnah erstellen zu können. Insbesondere unmittelbar nach IT-Sicherheitsvorfällen benötigt die IT-Abteilung schnell Informationen darüber, auf welche Systeme ein Angreifer möglicherweise Zugriff hatte und welche Systeme noch funktionsfähig sind. Sie suchen dann gezielt nach sogenannten Indicators of Compromise (IoC), also Hinweisen darauf, dass ein System als kompromittiert angesehen werden muss.
Für diese Suche können Sie Velociraptor [1] verwenden. Dessen Entwickler zitieren zwei bekannte Werkzeuge als Grundidee für ihre eigene Software: das Incident-Response-Werkzeug GRR Rapid Response (GRR) [2] und das Monitoring-Tool osquery [3]. Mit GRR erstellen Sie sogenannte Hunts (im Sinne einer Jagd) nach IoCs und führen diese über einen bestimmten Zeitraum auf allen mit Ihrem Netzwerk verbundenen Clients aus. Das Reporting landet auf einem zentralen Server und steht Ihnen dort zur Verfügung. Mit osquery hingegen fragen Sie in einer an SQL angelehnten Abfragesprache Informationen von Ihren Clients ab. Dabei stellt das Tool Informationen in über 275 Tabellen zur Verfügung – von CPU-Daten über Netzwerkeinstellungen wie DNS oder statische Routen bis hin zu installierten Chrome-Erweiterungen finden Sie so alles über Ihre Systeme heraus.
Velociraptor verfolgt nun das Ziel, die Fähigkeiten von GRR und osquery in einem Tool zu bündeln, dabei aber schneller, kleiner, skalierbarer und einfacher installierbar zu sein. Die Software arbeitet wie GRR und osquery unabhängig vom gewählten Betriebssystem und bringt so gut wie keine Abhängigkeiten mit sich. Über die Funktionalität von GRR und osquery hinaus besteht die Möglichkeit, Abfragen durch definierte Ereignisse auslösen zu lassen und mithilfe der Velociraptor Query Language (VQL) nicht nur Abfragen im Sinne von osquery auszuführen, sondern auch Dateien zu übertragen, Systeme und Einstellungen zu modifizieren und die gesamte Client-Server-Infrastruktur zu steuern.
Schnelle Installation
Die Architektur einer Velociraptor-Installation ist einfach: Es gibt einen zentralen Server, der eine permanente Kommando- und Kontrollverbindung zu allen Geräten Ihrer IT-Infrastruktur, den Clients, unterhält. Die Steuerung der gesamten Installation erfolgt über ein Webinterface. Dort nehmen Sie Einstellungen vor, definieren und starten Hunts und dokumentieren und bearbeiten Vorfälle.
Um Velociraptor auszuprobieren, installieren Sie zunächst den Server mit Compose in einem Docker-Container. Die dafür vorbereiteten Dateien finden Sie unter [4]. Klonen Sie das Repository und passen Sie die ENV-Datei an Ihre Umgebung an. Das Webinterface innerhalb des Docker-Containers ist über den Port 8889 erreichbar. Öffnen Sie diesen im Browser, akzeptieren Sie das von Velociraptor selbstsignierte Zertifikat und geben Sie zur Authentifizierung die in der ENV-Datei hinterlegten Anmeldedaten ein. Die Standardkombination lautet "admin / admin" – für Produktivsysteme sollten Sie diese natürlich ändern.
Zur Installation verwenden Sie einfach die für Ihr Betriebssystem passende Binärdatei aus dem Container. Dazu wird der Ordner "./velociraptor/clients" in den Container eingebunden und Binärdateien mit den entsprechenden Zertifikaten und der Konfiguration erstellt sowie beim Start abgelegt. Für Microsoft-Systeme steht beispielsweise eine MSI-Datei zur Verfügung, die Sie über das Active Directory auf Ihre Clients verteilen können.
Für einen Test auf einem Linux-System kopieren Sie die Datei "velociraptor_ client" aus dem Ordner "./velociraptor/ clients/linux" und die Datei "client.config.yaml" aus "./velociraptor/" in ein gemeinsames Verzeichnis, etwa "/tmp". Für macOS oder Windows suchen Sie analog das entsprechende Binary. Schauen Sie in die Konfigurationsdatei und überprüfen Sie die angegebene URL des Servers sowie die Einstellungen, die mit "writeback_" beginnen. Ihr lokaler Benutzer muss Schreibrechte auf das dort konfigurierte Verzeichnis haben. Passen Sie gegebenenfalls den Pfad an, unter Linux etwa auf "/tmp/etc/velociraptor.writeback.yaml", und erstellen Sie anschließend den Ordner "/tmp/etc/" mit entsprechenden Rechten.
Starten Sie nun den Client mit folgendem Kommando, übergeben Sie die Konfigurationsdatei mit "--config" und aktivieren Sie die detaillierte Ausgabe im Terminal mit "-v":
./velociraptor_client --config client.config.yaml client -v
Beobachten Sie den Start des Clients und prüfen Sie anschließend im Webbrowser, ob der Client verbunden ist. Wenn Sie den Client nicht direkt in der Anzeige sehen können, verwenden Sie die Suchfunktion oben auf der Seite. Klicken Sie einfach auf die Lupe, ohne einen Such-string einzugeben, und Sie sollten eine Liste der verbundenen Clients erhalten. Nach einem Klick auf die ID des Clients gelangen Sie in die Detailansicht mit weiteren Informationen, etwa wann und unter welcher IP-Adresse sich der Client eingeloggt hat.
Sie sehen auch das Betriebssystem, den Hostnamen und die Architektur des Systems. Klicken Sie am rechten oberen Rand auf ">_Shell", können Sie Kommandos auf dem System ausführen, sofern es zu dem Zeitpunkt verbunden ist. Probieren Sie doch einmal die Kommandos uname -a oder id und schauen Sie mit einem Klick auf das Augen-Icon in die Rückgabewerte. Klicken Sie auf den grün hinterlegten "Logs"-Verweis, gelangen Sie zu Detailinformationen der Ausführungen.
An SQL angelehnte Velociraptor Query Language
Die Velociraptor Query Language (VQL) kommt für das Controlling der gesamten Umgebung zum Einsatz. Sie können damit Informationen der Clients abfragen, das Monitoring und automatisierte Response-Techniken auf den Clients steuern und den Velociraptor-Server selbst kontrollieren. In diesem Artikel beschränken wir uns aus Platzgründen auf die Abfrage einfacher Informationen. Wie zuvor bereits durchgeführt, können Sie unter ">_ Shell" Abfragen an einen Client senden. Wählen Sie nun jedoch in der Dropdown-Liste neben dem Eingabefeld den Eintrag "VQL" und führen Sie die folgende Abfrage aus:
SELECT * FROM info()
Als Ergebnis erhalten Sie eine Tabelle mit Informationen über Ihr Clientsystem. Anstelle von "*" können Sie wie in SQL einzelne Felder oder mehrere Felder durch Komma getrennt angeben. Im Gegensatz zu SQL verwenden Sie jedoch keine Tabellen, sondern Plug-ins, die Ihnen die Informationen als Tabelle darstellen. Unsere Abfrage verwendet also das Plug-in "info". Wenn Sie in der Eingabezeile statt des Plug-ins zunächst ein "?" eingeben, erhalten Sie eine Liste der verfügbaren Plug-ins zur Auswahl. In den Klammern können Sie Argumente angeben, wenn das Plug-in weitere Informationen benötigt.
Wie in SQL können Sie einen Filterausdruck mit "WHERE" verwenden, um die Ergebnisse weiter einzuschränken. VQL unterstützt auch Aliase oder Unterabfragen sowie Konstrukte wie if-then-else oder foreach. So lassen sich selbst komplexe Abfragen einfach strukturiert darstellen.
Auf die Jagd geschickt
Unter dem Menüpunkt "Hunts" erstellen Sie in einem geführten Dialog Hunts, wie Sie es vielleicht schon von GRR kennen. Nachdem Sie eine kurze Beschreibung eingegeben und die Auswahlkriterien für die Clients festgelegt haben, wählen Sie ein oder mehrere Artefakte aus. Anschließend konfigurieren Sie Parameter für den Hunt und geben Laufzeitbeschränkungen an, wie etwa einen Anteil an der Prozessorzeit oder eine maximale Laufzeit auf einzelnen Clients. Nachdem Sie Ihre als JSON formatierte Suche noch einmal überprüft haben, starten Sie sie mit einem Klick auf "Launch".
Um nicht nur nach den vorausgewählten Artefakten zu suchen, sondern die Vorteile der oben vorgestellten VQL zu nutzen, wählen Sie als Artefakt "Generic. Client.VQL". Damit können Sie im Punkt "Configure Parameters" mit einem Klick auf das Schraubenschlüssel-Icon beliebige Abfragen eingeben. In der Hunt-Übersicht können Sie dann den Verlauf Ihrer Hunts beobachten und die Ergebnisse anzeigen.
Wenn Sie an einem aktuellen Vorfall arbeiten, möchten Sie nicht nur einzelne Abfragen durchführen, sondern diese auch systematisch dokumentieren. Hierfür bietet Velociraptor sogenannte Notebooks an. Wählen Sie im linken Menü den entsprechenden Punkt aus und erstellen Sie mit einem Klick auf "+" ein neues Notizbuch. Diese bestehen aus verschiedenen Zellen, zum Beispiel Markdown-Zellen für die Dokumentation und VQL-Zellen für die Definition von Abfragen. Die Abfragen werden direkt ausgeführt, sodass Sie in Verbindung mit den Informationen aus den Markdown-Zellen im Handumdrehen komplette Berichte für Ihre Untersuchung erstellen, immer mit aktuellen Ergebnissen. Notebooks lassen sich dabei auch für mehrere Benutzer freigeben.
Fazit
Velociraptor bietet viele nützliche Funktionen und eine mächtige Abfragesprache, um nahezu alle Aspekte Ihrer IT-Infrastruktur zu überwachen und abzufragen. Das Tool kombiniert dabei die Funktionalität von GRR Rapid Response und osquery und erweitert diese sehr sinnvoll.
(dr)