
Outil de chasse aux menaces basé sur Sysmon et les graphes

Grafiki est un projet Django dédié à Sysmon et aux graphes, pour l'instant.
À mon avis, EventViewer, Elastic et même Kibana ne sont pas assez graphiques. Les menaces actuelles sont complexes et si les attaquants pensent en graphes, les défenseurs doivent aussi le faire.
Ceci est une preuve de concept, le code n'a pas encore été débogué mais pourrait être utile à quelqu'un, je l'améliorerai.
Ce projet a commencé comme un parseur EVTX vers base de données SQL, et c'est peut-être le cœur du projet.
Le projet n'est pas assez mature, bien qu'il fonctionne, le plan de test n'est pas encore défini.
Tout avis, bug trouvé, demande d'amélioration... sera le bienvenu.
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
Dans votre navigateur, allez à http://127.0.0.1:8000/ ou http://grafiki.local:8000/
Chassez, apprenez et amusez-vous !
Cette application peut traiter deux types de fichiers.

Sur cette page, vous pouvez télécharger des fichiers evtx ou des fichiers d'événements Elastic et les traiter.

Cette page est utile pour créer une bibliothèque d'échantillons en ligne.
Lorsque vous créez un exemple, vous mettez l'URL du fichier et lorsque vous le traitez, l'application télécharge le fichier d'événements et le traite.

Sur cette page, vous pouvez créer des recherches vers votre instance Elastic et créer un graphe du résultat. Vous pouvez créer des filtres concernant :

La page Graphe est le cœur de cette application et l'interface de recherche associée.
Sur les autres pages, vous sélectionnez vos données et ces pages vous envoient vers la page Graphe ; si vous allez directement à la page Graphe, il n'y aura rien ou les dernières données recherchées pour vous.
Sur cette page, il y a deux onglets, un pour Sysmon et un pour les événements PowerShell.
Il y a deux types d'éléments, les nœuds et les arêtes. Les nœuds représentent des entités telles que processus, fichier ou clé de registre et les arêtes représentent des actions telles que créer, supprimer ou connecter.

Nous sommes au cœur.
Cette partie utilise les informations de la base de données pour créer des graphes sur les événements analysés.
Vous pouvez naviguer dans le graphe, observer la création de processus, les connexions aux pipes nommés... mais il y a généralement trop d'informations pour travailler confortablement.
À l'intérieur de l'onglet se trouve une section cachée concernant les filtres du graphe.
Dans cette zone, vous pouvez travailler avec les données de filtrage du graphe.
Vous pouvez filtrer les nœuds par ces entités :
Vous pouvez également filtrer les nœuds de processus par :
De plus, vous pouvez filtrer les arêtes par ces actions :
Une fonctionnalité intéressante est la création d'animations sur les données du graphe, utile par exemple pour le Parent PID Spoofing ou lorsqu'un utilisateur exécute des commandes à distance sur un ordinateur.

Lorsque le graphe contient trop d'informations, il est possible de supprimer un nœud, une arête, un groupe de nœuds ou un groupe de nœuds récursivement.
Supprimer un groupe de nœuds fonctionne en sélectionnant un nœud et l'application supprimera tous les nœuds dont le parent est le nœud sélectionné.
Supprimer un groupe récursivement fonctionne aussi en sélectionnant un nœud, mais l'application parcourt les nœuds en les supprimant jusqu'à la fin de cette branche de l'arbre. Si une branche contient beaucoup d'informations, cela prendra du temps.
En bas de l'écran, il est possible de modifier la physique du graphe.
Lorsque le graphe contient beaucoup d'informations, il peut être utile de désactiver la physique pour stabiliser le graphe.
Vous pouvez jouer avec la physique, c'est amusant.
Dans l'onglet PowerShell, il est possible d'analyser les commandes PowerShell.
Les commandes sont affichées dans un accordéon et à l'intérieur de chaque ligne, si la commande contient une commande en base64, elle sera décodée et analysée.
Vous pouvez rechercher dans tous les événements la partie encodée ou décodée de la commande.





