
Threat-Hunting-Tool über Sysmon und Graphen

Grafiki ist ein Django-Projekt über Sysmon und Graphen, vorerst.
Meiner Meinung nach sind EventViewer, Elastic und sogar Kibana nicht graphisch genug. Die aktuellen Bedrohungen sind komplex, und wenn Angreifer in Graphen denken, müssen Verteidiger das auch tun.
Dies ist ein Proof of Concept, der Code wurde noch nicht debuggt, aber vielleicht könnte er für jemanden nützlich sein; ich werde ihn verbessern.
Dieses Projekt begann als EVTX-Parser für eine SQL-Datenbank, und das ist vielleicht der Kern des Projekts.
Das Projekt ist noch nicht ausgereift, obwohl es funktioniert; der Testplan ist noch nicht definiert.
Jede Meinung, gefundener Fehler, Verbesserungsvorschlag ... sind willkommen.
git clone https://github.com/lucky-luk3/Grafiki.git
cd Grafiki
sudo -- sh -c -e "echo '127.0.0.1 grafiki.local' >> /etc/hosts"
docker compose up --build &
docker exec -it -d grafiki-app-1 /init_django.sh
Gehen Sie in Ihrem Browser zu http://127.0.0.1:8000/ oder http://grafiki.local:8000/
Jagen, lernen und genießen!
Diese Anwendung kann zwei Arten von Dateien verarbeiten.

Auf dieser Seite können Sie EVTX-Dateien oder Elastic-Ereignisdateien hochladen und verarbeiten.

Diese Seite ist nützlich, um eine Bibliothek von Online-Beispieldateien zu erstellen.
Wenn Sie ein Beispiel erstellen, geben Sie die URL zur Datei an, und wenn Sie es verarbeiten, lädt die Anwendung die Ereignisdatei herunter und verarbeitet sie.

Auf dieser Seite können Sie Suchanfragen an Ihre Elastic-Instanz erstellen und einen Graphen des Ergebnisses erzeugen. Sie können Filter erstellen bezüglich:

Die Graph-Seite ist der Kern dieser Anwendung und ihre Recherche-Schnittstelle.
Auf den anderen Seiten wählen Sie Ihre Daten aus, und diese Seiten leiten Sie zur Graph-Seite weiter. Wenn Sie direkt zur Graph-Seite gehen, wird dort nichts oder die zuletzt für Sie gesuchten Daten angezeigt.
Auf dieser Seite gibt es zwei Tabs, einen für Sysmon und einen für PowerShell-Ereignisse.
Es gibt zwei Arten von Elementen: Knoten und Kanten. Knoten repräsentieren Entitäten wie Prozesse, Dateien oder Registrierungsschlüssel, und Kanten repräsentieren Aktionen wie Erstellen, Löschen oder Verbinden.

Wir sind im Kern.
Dieser Teil verwendet die Informationen in der Datenbank, um Graphen über die analysierten Ereignisse zu erstellen.
Sie können im Graphen navigieren und sich Prozesserstellung, Named Pipes-Verbindungen usw. ansehen ... aber normalerweise gibt es zu viele Informationen, um bequem zu arbeiten.
Innerhalb des Tabs befindet sich ein versteckter Bereich zu Graphen-Filtern.
In diesem Bereich können Sie mit der Graphen-Filterung von Daten arbeiten.
Sie können Knoten nach diesen Entitäten filtern:
Sie können Prozessknoten auch filtern nach:
Außerdem können Sie Kanten nach diesen Aktionen filtern:
Eine tolle Funktion ist das Erstellen von Animationen über die Daten im Graphen. Dies ist sehr nützlich, zum Beispiel bei Parent-PID-Spoofing oder
wenn ein Benutzer auf einem Computer Befehle remote ausführt.

Wenn der Graph zu viele Informationen enthält, ist es möglich, einen Knoten, eine Kante, eine Gruppe von Knoten oder eine Gruppe von Knoten rekursiv zu löschen.
Löschen einer Knotengruppe funktioniert, indem Sie einen Knoten auswählen, und die Anwendung löscht alle Knoten, deren Eltern der ausgewählte Knoten ist.
Rekursives Löschen einer Gruppe funktioniert ebenfalls durch Auswahl eines Knotens, aber die Anwendung durchläuft Knoten und löscht, bis dieser Ast vollständig entfernt ist. Wenn der Ast viele Informationen enthält, wird dies lange dauern.
Am unteren Bildschirmrand ist es möglich, die Physik des Graphen zu ändern.
Wenn der Graph viele Informationen enthält, kann es nützlich sein, die Physik zu deaktivieren, um den Graphen zu stabilisieren.
Sie können mit der Physik spielen, es macht Spaß.
Im PowerShell-Tab ist es möglich, PowerShell-Befehle zu analysieren.
Die Befehle werden in einem Akkordeon angezeigt, und innerhalb jeder Zeile wird, wenn ein Befehl einen Base64-Befehl enthält, dieser dekodiert und geparst.
Sie können in allen Ereignissen nach dem kodierten oder dekodierten Teil des Befehls suchen.





