
Outil qui collecte un ensemble personnalisable de télémétrie ETW et génère des détections définies par l'utilisateur
EventHorizon est un outil conçu pour fournir aux analystes de sécurité et/ou aux chercheurs une télémétrie Event Tracing for Windows (ETW) qui, associée à des règles de type sigma, permet des capacités robustes de détection et de réponse sur les endpoints. Cela dit, EventHorizon ne remplace en aucun cas des solutions adaptées. Ce projet vise principalement à faciliter la collecte de la télémétrie ETW ainsi que la génération de règles de détection sans avoir à écrire de code. Pour accroître cette simplicité d'utilisation, le processus d'installation d'EventHorizon est conçu pour être aussi simple que possible, avec un installateur .msi fourni (voir l'onglet releases) et des instructions d'installation de base (voir le wiki).
[!WARNING]
Utilisez EventHorizon uniquement dans un environnement de test (PAS EN PRODUCTION). L'installation nécessite la désactivation de certaines fonctionnalités de sécurité Windows, et je ne garantis pas qu'EventHorizon soit un logiciel sécurisé ou professionnellement écrit.
Pour commencer, rendez-vous sur le Wiki d'EventHorizon
Bien que je ne puisse pas promettre de maintenir EventHorizon, j'aimerais à l'avenir ajouter/modifier quelques éléments :
EventHorizon se compose de plusieurs composants répartis entre les modes utilisateur et noyau. Les sections suivantes visent à fournir un aperçu détaillé des composants et une idée générale de leur fonctionnement.
En ce qui concerne le mode utilisateur, EventHorizon comprend un seul service appelé EventHorizon qui sert à orchestrer les autres composants en mode utilisateur d'EventHorizon. Les fichiers liés aux fonctionnalités en mode utilisateur se trouvent dans C:\Program Files\EventHorizon\, bien que ce chemin puisse changer lors de l'installation.
Le composant en mode noyau d'EventHorizon consiste en un seul pilote Early Launch Antimalware (ELAM) nommé EventHorizonELAM situé dans C:\Windows\System32\drivers\.

EventHorizon essaie également d'avoir un minimum de surcharge sur le système. Au repos, il n'utilise généralement qu'un peu plus de 2 Mo de RAM. Cela dit, plus la télémétrie reçue et les règles chargées sont nombreuses, plus la puissance de traitement/RAM sera utilisée. Si vous utilisez un fournisseur qui génère un volume élevé d'événements, la consommation de ressources peut rapidement augmenter.

Orchestration EventHorizon (EventHorizon.exe) : orchestre les composants en mode utilisateur liés aux fonctionnalités d'EventHorizon. Lorsque le service démarre, il lance l'exécutable de télémétrie et le moteur de détection avec les protections PPL AntiMalware et les surveille s'ils se terminent pour une raison quelconque. Gère également les demandes de désinstallation.
Télémétrie EventHorizon (EventHorizonTelemetry.exe) : lit la configuration ETW, s'abonne aux fournisseurs pertinents, filtre les événements entrants et les envoie via un tube nommé en utilisant une file d'attente au moteur de détection.
Moteur de détection EventHorizon (EventHorizonDetectionEngine.exe) : charge les règles, reçoit la télémétrie de l'exécutable de télémétrie et déclenche des détections dans l'Observateur d'événements Windows si des règles sont déclenchées.

Dans l'Observateur d'événements Windows, sous Applications and Services Logs > EventHorizon, se trouvent 3 canaux différents utilisés par EventHorizon.
Les événements liés aux noms des canaux y sont placés. Veuillez vous référer au wiki pour plus d'informations sur des événements spécifiques.

Comme mentionné précédemment, le composant en mode noyau d'EventHorizon consiste en un seul pilote Early Launch Antimalware (ELAM) nommé EventHorizonELAM situé dans C:\Windows\System32\drivers\. Ce pilote ELAM permet aux composants en mode utilisateur d'EventHorizon d'obtenir les protections PPL AntiMalware. De plus, le pilote répond aux demandes des composants en mode utilisateur via des IOCTL pour :
EventHorizon repose sur quelques bibliothèques :
Vous trouverez ci-dessous une liste des ressources que j'ai utilisées lors du développement, mais je tiens d'abord à remercier quelques personnes pour leurs contributions directes. Tout d'abord, je tiens à remercier Jacob Acuna pour ses premières contributions à la structure et aux fonctionnalités globales du projet. Je remercie également Eric Esquivel, Julian Peña et Kyle Avery pour leurs informations précieuses.