ADMIN

2023

03

2023-02-28T12:00:00

Hybrid Cloud

PRAXIS

050

Security-Tipp

Sicherheit

Monitoring

Monitoringdaten mit Detectree visualisieren

Stets im Bilde

von Dr. Matthias Wübbeling

Veröffentlicht in Ausgabe 03/2023 - PRAXIS

Die Visualisierung von Log- und Eventdaten unterstützt Securityanalysten beim Erkennen von Mustern und Zusammenhängen. Entsprechende Werkzeuge kommen in IT-Abteilungen präventiv und reaktiv zum Einsatz und helfen den Mitarbeitern, den Überblick bei der Beobachtung der Infrastruktur zu behalten. Der Security-Tipp in diesem Monat stellt Ihnen mit Detectree eine simple Möglichkeit zur grafischen Darstellung von Sachverhalten vor.

Detectree [1] ist eine Open-Source-Entwicklung des Unternehmens WithSecure (ehemals F-Secure) zur Angriffserkennung und -abwehr. Die Idee dahinter ist die Analyse von Log- und Eventdaten mit einem besonderen Fokus auf Zusammenhänge zwischen Aktivitäten und Infrastrukturelementen. Die Entwickler haben sich dabei bewusst für Baumstrukturen zur grafischen Darstellung entschieden. Damit sind, im Gegensatz zu einfachen Graphen, nicht nur grundsätzliche Beziehungen, sondern auch Hierarchien darstellbar. Detectree fokussiert dabei vor allem Prozessbäume, also die Abhängigkeiten beziehungsweise Hierarchien von Prozessen.
Installation über Repository
Um Detectree für Ihre Analysearbeit auszuprobieren, klonen Sie das Repository aus dem offiziellen Git [2]. Leider scheint das Repository von den Entwicklern nicht besonders gut gepflegt zu werden. Im Branch "dev" finden Sie etwas aktuellere Sourcen für die Installation. Detectree ist in TypeScript entwickelt, daher benötigen Sie eine Node.JS-Installation auf Ihrem Computer. Um die benötigten Abhängigkeiten zu installieren und Detectree im Development-Modus zu starten, rufen Sie innerhalb des detectree-Verzeichnisses die folgenden Kommandos auf:
npm install
 
npm run dev
Sie erhalten einige Debug-Ausgaben und Informationen des Svelte-Frameworks, das die Entwickler für die GUI-Berechnungen verwenden. Nach dem Start können Sie mit Ihrem Browser unter "https://localhost:3000" auf das Werkzeug zugreifen. Da noch kein Datenbackend konfiguriert ist, sehen Sie zunächst ein leeres Interface.
Detectree [1] ist eine Open-Source-Entwicklung des Unternehmens WithSecure (ehemals F-Secure) zur Angriffserkennung und -abwehr. Die Idee dahinter ist die Analyse von Log- und Eventdaten mit einem besonderen Fokus auf Zusammenhänge zwischen Aktivitäten und Infrastrukturelementen. Die Entwickler haben sich dabei bewusst für Baumstrukturen zur grafischen Darstellung entschieden. Damit sind, im Gegensatz zu einfachen Graphen, nicht nur grundsätzliche Beziehungen, sondern auch Hierarchien darstellbar. Detectree fokussiert dabei vor allem Prozessbäume, also die Abhängigkeiten beziehungsweise Hierarchien von Prozessen.
Installation über Repository
Um Detectree für Ihre Analysearbeit auszuprobieren, klonen Sie das Repository aus dem offiziellen Git [2]. Leider scheint das Repository von den Entwicklern nicht besonders gut gepflegt zu werden. Im Branch "dev" finden Sie etwas aktuellere Sourcen für die Installation. Detectree ist in TypeScript entwickelt, daher benötigen Sie eine Node.JS-Installation auf Ihrem Computer. Um die benötigten Abhängigkeiten zu installieren und Detectree im Development-Modus zu starten, rufen Sie innerhalb des detectree-Verzeichnisses die folgenden Kommandos auf:
npm install
 
npm run dev
Sie erhalten einige Debug-Ausgaben und Informationen des Svelte-Frameworks, das die Entwickler für die GUI-Berechnungen verwenden. Nach dem Start können Sie mit Ihrem Browser unter "https://localhost:3000" auf das Werkzeug zugreifen. Da noch kein Datenbackend konfiguriert ist, sehen Sie zunächst ein leeres Interface.
Detectree unterstützt in der vorliegenden Version ausschließlich Elasticsearch als Speicherort für die Logdaten. Mit etwas Erfahrung bei der Entwicklung mit Type-Script fügen Sie Adapter für weitere Back-ends hinzu. Sie können sich dafür an der Datei "elastic.ts" im Ordner "src/backend_ adapters/" orientieren. Sie müssen am Ende nur die Funktion "query" implementieren, um die Daten aus der Datenbank zu erhalten. Beachten Sie dabei aber, dass Sie das später diskutierte Mapping der Felder innerhalb des Adapters erfolgt.
Leider ist die Fehlerausgabe von Detectree nicht immer hilfreich, wenn eine Fehlkonfiguration oder Inkompatibilität des Datenbank-Backends vorliegt. In unseren Tests haben unterschiedliche Versionen der eingesetzten Elasticsearch-Instanz und der von Node installierten Elastic-search-Bibliothek verhindert, dass Daten aus der Datenbank erfolgreich abgefragt werden können. Achten Sie also darauf, dass Sie die Version der Bibliothek in der Datei "package.json" entsprechend Ihrer Elasticsearch-Version anpassen.
Für den Start ist es hilfreich, auf eine bereits existierende Elasticsearch-Instanz mit Logdaten zugreifen zu können, allerdings müssen Sie die Dokumente darin möglicherweise etwas anpassen. Um Detectree zu testen, bietet sich an, zunächst eine lokale Instanz aufzusetzen und einige vorhandene Daten in diese Instanz zu importieren. Für die Konfiguration der Datenbank nennen Sie die mitgelieferte "schema.yml.example" in "schema.yml" um. Unter "backend" hinterlegen Sie die Verbindungsparameter zu Ihrer Datenbank sowie den verwendeten Index. Wenn Sie statt eines API-Keys für die Authentifikation lieber Benutzername und Passwort verwenden möchten, können Sie die Zeile mit dem "apiKey" kommentieren und jeweils eine Zeile für "username" und "password" hinzufügen.
Damit Detectree die Daten grafisch aufbereiten kann, müssen verschiedene Felder existieren. Zunächst passen Sie die in der Datei "schemal.yml" referenzierten Felder für die "primary ID" und das "timeField" an. Dabei handelt es sich um die ID des Dokuments sowie um den Zeitstempel. Diesen benötigt Detectree, um die Suchergebnisse zeitlich einzuschränken. Im Feld "source" können Sie eine Kategorie der Dokumente in der Datenbank berücksichtigen.
Mapping konfigurieren
Detectree benötigt weitere, als notwendig und optional deklarierte Felder. Das Bild zeigt eine entsprechende Übersicht. Da vermutlich nicht alle Felder mit der korrekten Bezeichnung in Ihrer Datenbank vorliegen, nutzt Detectree ein konfigurierbares Mapping, um die Informationen in Ihrer Datenbank korrekt zu interpretieren.
Die Konfiguration des Mappings ist die wichtigste Aufgabe bei der Einrichtung von Detectree. Dafür öffnen Sie wieder die Datei "schema.yml" und schauen sich die einzelnen Mappings an. Für die unterschiedlichen Felder können Sie nun die tatsächlichen Felder Ihrer Datenbank einsetzen, auch mit unterschiedlicher Tiefe der Felder innerhalb eines Dokuments. JSON-typisch trennen Sie hier die Ebenen einfach mit einem Punkt ab. Der Datenbank-Adapter kümmert sich anschließend bei der Abfrage der Daten um die entsprechende Zuordnung der Werte.
Es ist möglich, dass sich nicht alle notwendigen Felder in Ihrer Datenbank einsortieren lassen. Leider sind innerhalb des Mappings keine Default-Werte festlegbar. So haben Sie vielleicht keine Entsprechung für "Detection Name" in Ihren Daten und gelegentlich fehlt auch ein Äquivalent zu "Severity". Um Detectree trotzdem verwenden zu können, haben Sie nun zwei Möglichkeiten. Entweder Sie erweitern alle existierenden Dokumente mit eigenen Default-Werten und passen die Felder aus Ihrem Logging für zukünftige Einträge an oder Sie bearbeiten auch in diesem Fall den bereits erwähnten Datenbank-Adapter und setzen dort einfach vor der Rückgabe entsprechende Default-Werte.
Informationen sammeln
Wenn Sie in Detectree gezielt nach Einträgen suchen möchten, können Sie das Suchfeld auf der Webseite verwenden. Ist dieses in Ihrer Ansicht noch nicht geöffnet, klicken Sie einmal auf das Baumsysmbol in der linken oberen Ecke. Wählen Sie nun ein Zeitintervall aus, das Sie betrachten möchten. Dafür geben Sie das Start- und das Enddatum neben dem Suchfeld an. Bei der Suche verwenden Sie die klassische Syntax "Feld: Wert", wie Sie diese bereits von anderen Elasticsearch-Werkzeugen kennen. Um etwa nach allen Dokumenten zu suchen, die sich auf iexplore.exe beziehen, geben Sie "Process Name":"iexplore.exe" ein.
Notwendige und optionale Felder für die Darstellung in Detectree.
Als Analyst haben Sie vor allem Interesse daran, viele Informationen übersichtlich aufbereitet zu bekommen. Die in der Oberfläche angezeigten Informationen sind aber doch erst einmal eher einfach gehalten – Detectree fokussiert ja auf Beziehungen und Hierarchien der Objekte. Wenn Sie nun aber mit der Maus über ein Objekt fahren, erhalten Sie in einem Tooltipp weitere Informationen zu diesem, vor allem auch die Werte der als optional gekennzeichneten Felder.
Detectree unterstützt unterschiedliche Typen, die Sie in der Toolleiste auf der linken Seite auswählen können. Hier bestimmen Sie, ob einzelne (nicht verbundene) Objekte, Dateien, Netzwerk- oder Registry-Objekte angezeigt werden sollen oder nicht. Je nachdem, wie viele Logdaten dargestellt werden, kann das vereinzelte Ausblenden bei der Orientierung helfen.
Fazit
Der grundlegende Ansatz, Zusammenhänge bei der Sicherheitsanalyse grafisch darzustellen, ist nicht neu. Die Vereinfachung der Analyse sowie die Darstellung von Zusammenhängen und Hierarchien in Form von Baumdiagrammen sind vorgebliches Ziel von Detectree, das Ihnen der Security-Tipp in diesem Monat vorgestellt hat. Dabei überzeugt die zunächst schlicht gehaltene Oberfläche des Tools durchaus. Weitere Informationen werden bei Bedarf über Popups eingeblendet.
Die Interaktionsmöglichkeiten, Exporte und Importe weiterer Informationen sowie die Verbindung mit anderen Analysetools benötigen für einen regelmäßigen Einsatz aber noch etwas mehr Aufmerksamkeit der Entwickler. Auch die Konfiguration der Mappings vor der ersten Verwendung ist etwas verwirrend ausgestaltet und benötigt ein weitergehendes Verständnis in der Funktionsweise des Programms.
(dr)
Link-Codes