EagleEye - système IDS hôte et de surveillance réseau
Ce projet a besoin de beaucoup de travail avant d'être prêt à l'emploi car c'est mon projet de fin d'études, il n'est donc pas convivial, réservé aux utilisateurs expérimentés, version bêta, et je ne l'ai publié/réalisé qu'à des fins éducatives !
EagleEye se compose de deux parties :
Client(écrit en Golang)
Objectif : Capturer chaque paquet sur l'appareil et extraire les détails importants des protocoles connus, puis envoyer toutes les données collectées au maître s'il est en ligne !
Utilisation : Il doit être installé sur chaque appareil que vous souhaitez surveiller (ex : appareils des employés pour les entreprises).
Maître : (écrit en Python et Bootstrap)
Objectif : Recevoir chaque paquet envoyé par les clients, l'afficher de manière organisée dans le tableau de surveillance de l'interface graphique, afficher les informations des appareils connectés comme l'utilisateur système actuel/les informations système, comparer les données capturées aux modèles de menaces déjà écrits, puis enfin alerter l'utilisateur maître des menaces de sécurité possibles sur le réseau comme le ferait un système IDS typique !
Utilisation : Il doit être exécuté sur un serveur situé sur le même réseau que les clients (ex : un serveur géré par le service informatique ou l'équipe de sécurité offensive de l'entreprise peut-être).
Pour plus d'informations, vous devrez vous renseigner sur les (S)ystèmes de (D)étection d'(I)ntrusion et leurs types. Je recommande le guide du NIST.
Captures d'écran
Interface graphique principale
Tableau de surveillance
Remarquez que les boutons du tableau vous permettent d'exporter le tableau au format (CSV, Excel, PDF), de copier les données du tableau dans le presse-papiers, et d'imprimer les données du tableau si vous le souhaitez.
Recherche dans le tableau de surveillance
Recherche simple
Recherche détaillée
Comme vous pouvez le voir, la recherche ici vous permet de rechercher n'importe quel élément représenté dans le tableau.
Tableau des appareils connectés
Quand un nouveau client se connecte au maître
Informations sur chaque client
Remarquez que le tableau est actualisé automatiquement toutes les 5 secondes ou lors de l'actualisation de la page !
Tableau des menaces
Quand une menace est détectée
Détails sur toute menace possible détectée + référence au clic
Notification bureau pour les menaces
Remarquez que le tableau est actualisé automatiquement toutes les 5 secondes ou lors de l'actualisation de la page !
Instructions d'installation
Le client
Prérequis
Ne prend en charge que le système Windows actuellement (à cause des données extraites du registre, il faut changer cela).
Les instructions suivantes
Instructions d'installation
Assurez-vous d'avoir Golang installé.
Installez la bibliothèque gopacket en utilisant cette commande :
go get github.com/google/gopacket
Modifiez les variables suivantes dans le code selon vos besoins :
Ligne57 : Changez la variable url pour qu'elle corresponde à l'URL de votre maître actuel
Ligne59 : Changez la variable device pour qu'elle corresponde à l'interface réseau que vous souhaitez écouter ; pour Windows, vous aurez besoin de cet article !
Ligne66 : Changez la variable filter selon le filtre que vous souhaitez appliquer lors de la capture des paquets réseau, ou laissez-la vide comme elle l'est (si vous voulez capturer tous les paquets). La syntaxe du filtre est le bpf, le même que celui utilisé dans la recherche Wireshark ; vous pouvez l'apprendre grâce à ce guide. J'ai aussi laissé quelques exemples dans les commentaires, pour ceux qui voudraient l'utiliser.
Dans l'invite de commandes, naviguez vers le répertoire du client, bien sûr.
Vous pouvez maintenant exécuter le client comme un script avec cette commande : go run main.go
Pour le compiler/construire, vous pouvez utiliser la commande suivante : go build -o client.exe main.go, vous aurez peut-être besoin de ce guide.
Si vous avez fait tout cela, va profiter de la vie mec 😆 (Je rigole)
Le maître
Prérequis
N'importe quel système d'exploitation.
Les instructions suivantes ; c'est beaucoup plus simple que le client, ne vous inquiétez pas LOL !
Instructions d'installation
Assurez-vous d'avoir Python 3 installé (version 3.5 et supérieure) ainsi que pip.
Dans l'invite de commandes, naviguez vers le dossier master puis installez les dépendances avec cette commande : pip install -r requirements.txt ou python -m pip install -r requirements.txt
Si vous êtes sous Windows et que l'affichage coloré dans l'invite de commandes compte pour vous, exécutez cette commande : pip install -r coloring-requirements.txt ou python -m pip install -r coloring-requirements.txt
Maintenant, quelques variables à modifier selon vos besoins 😆
Ligne21 : Changez la variable host_port selon le port sur lequel vous voulez servir (Défaut : 8000)
Ligne23 : Changez la variable serve_localhost à True si vous voulez exécuter le maître uniquement sur l'hôte local (Défaut : True)
Ligne24 : Changez la variable view_browser à True si vous voulez que le maître ouvre automatiquement l'URL de service dans le navigateur (Défaut : True)
Vous pouvez maintenant exécuter le maître avec python interface.py