
Enquêter sur les connexions Windows malveillantes en visualisant et en analysant les journaux d'événements Windows
LogonTracer v2 est un outil permettant d’investiguer les connexions malveillantes en visualisant et en analysant les journaux d’événements Windows Active Directory. Cet outil associe un nom d’hôte (ou une adresse IP) et un nom de compte trouvés dans les événements liés à la connexion et les affiche sous forme de graphe. Ainsi, il est possible de voir sur quel compte une tentative de connexion se produit et quel hôte est utilisé.
Cet outil peut visualiser les identifiants d’événements suivants liés à la connexion Windows.
| ID d’événement | Description |
|---|---|
| 4624 | Connexion réussie |
| 4625 | Échec de connexion |
| 4662 | Une opération a été effectuée sur un objet |
| 4672 | Attribution de privilèges spéciaux |
| 4719 | La stratégie d’audit système a été modifiée |
| 4720 | Un compte utilisateur a été créé |
| 4726 | Un compte utilisateur a été supprimé |
| 4728 / 4732 / 4756 | Un membre a été ajouté à un groupe activé pour la sécurité |
| 4729 / 4733 / 4757 | Un membre a été retiré d’un groupe activé pour la sécurité |
| 4768 | Authentification Kerberos (demande TGT) |
| 4769 | Ticket de service Kerberos (demande ST) |
| 4776 | Authentification NTLM |
| 5137 | Un objet du service d’annuaire a été créé |
| 5141 | Un objet du service d’annuaire a été supprimé |
Plus de détails sont décrits dans les documents suivants :

LogonTracer v2.0 intègre un moteur d’analyse IA utilisant les modèles GPT d’OpenAI pour fournir une détection intelligente des menaces au‑delà des approches traditionnelles basées sur des règles.
LogonTracer utilise PageRank, le Modèle de Markov caché et ChangeFinder pour détecter les hôtes et comptes malveillants à partir des journaux d’événements.

Avec LogonTracer, il est également possible d’afficher les journaux d’événements dans l’ordre chronologique.

Python 3.9 ou ultérieur (3.12 recommandé)
Neo4j 5.x (Community ou Enterprise)
Clé API OpenAI (optionnelle — requise uniquement pour les fonctionnalités d’analyse IA)
Modules Python
numpy
evtx
lxml
scipy
changefinder
flask
hmmlearn>=0.2.8
scikit-learn
elasticsearch-dsl>=7.0.0,<8.0.0
pyyaml
flask-sqlalchemy
flask-login
flask_wtf
flask-limiter
wtforms
GitPython
pysigma>=0.11.0
pysigma-backend-sqlite
openai>=1.0.0
aiohttp
neo4j
git clone https://github.com/JPCERTCC/LogonTracer.git
cd LogonTracer
pip3 install -r requirements.txt
Téléchargez et démarrez Neo4j. Définissez le mot de passe initial et notez le port Bolt (par défaut : 7687).
vi config/config.yml
Paramètres clés :
settings:
logontracer:
WEB_PORT: "8080"
default_user: "neo4j" # Nom d'utilisateur Neo4j pour le compte LogonTracer par défaut
default_password: "password" # Modifiez ceci avant de lancer pour la première fois
neo4j:
NEO4J_USER: "neo4j"
NEO4J_PASSWORD: "password" # Votre mot de passe Neo4j
NEO4J_SERVER: "localhost"
WS_PORT: "7687"
python3 logontracer.py --run
Ouvrez votre navigateur à l’adresse http://localhost:8080.
python3 logontracer.py -e <chemin/vers/Security.evtx> -z <décalage UTC> -s <serveur Neo4j> -u <utilisateur> -p <mot de passe>
python3 logontracer.py -x <chemin/vers/event.xml> -z <décalage UTC> -s <serveur Neo4j> -u <utilisateur> -p <mot de passe>
python3 logontracer.py --es -s <serveur Neo4j> -u <utilisateur> -p <mot de passe> --es-server <hôte ES:port>
Ajoutez le drapeau --sigma pour exécuter la détection des règles Sigma pendant l’import :
python3 logontracer.py -e <chemin/vers/Security.evtx> -z 9 -s localhost -u neo4j -p password --sigma
python3 logontracer.py -e <chemin/vers/Security.evtx> -z 9 -s localhost -u neo4j -p password --add
Après avoir démarré l’application web, cliquez sur Upload Event Log dans la barre latérale gauche. Vous pouvez :

Après un import avec l’analyse Sigma activée, ou après avoir déclenché une ré‑analyse via l’API, cliquez sur Sigma Scan Results dans la barre latérale pour consulter les résultats.








Avec Neo4j Enterprise Edition, LogonTracer prend en charge plusieurs cas d’investigation indépendants – chacun stocké dans une base Neo4j distincte.
docker run \
--detach \
--publish=7474:7474 --publish=7687:7687 --publish=8080:8080 \
-e LTHOSTNAME=<Adresse IP> \
jpcertcc/docker-logontracer
cd docker-compose
docker compose build
docker compose up -d
cd docker-compose-with-nginx
docker compose build
docker compose up -d
cd docker-compose-with-elasticstack
docker compose build
docker compose up -d
La vidéo YouTube suivante montre comment utiliser LogonTracer.
Pour plus de détails, veuillez consulter le wiki LogonTracer.
| Option | Description |
|---|
-r, --run | Démarrer l’application web |
-o PORT | Port de l’application web (par défaut : 8080) |
--host HOST | Adresse de liaison (par défaut : 0.0.0.0) |
-e EVTX [...] | Importer un ou plusieurs fichiers EVTX |
-x XML [...] | Importer un ou plusieurs fichiers XML de journaux d’événements |
-s SERVER | Adresse du serveur Neo4j (par défaut : localhost) |
-u USER | Nom d’utilisateur Neo4j (par défaut : neo4j) |
-p PASSWORD | Mot de passe Neo4j |
--wsport PORT | Port Bolt Neo4j (par défaut : 7687) |
-z UTC | Décalage horaire (ex. 9 pour JST) |
-f DATE | Analyser les journaux à partir de cette date/heure (ex. 2024-01-01T00:00:00) |
-t DATE | Analyser les journaux jusqu’à cette date/heure |
--add | Ajouter des données sans vider la base |
--delete | Vider la base avant l’import |
--sigma | Exécuter l’analyse des règles Sigma pendant l’import |
--sigma-only | Exécuter uniquement l’analyse Sigma (sans traitement Neo4j) |
--sigma-rules PATH | Chemin vers le dossier des règles Sigma (par défaut : sigma) |
--es | Importer des données depuis Elasticsearch |
--postes | Envoyer les résultats d’analyse vers Elasticsearch |
--es-server HOST:PORT | Serveur Elasticsearch |
--es-index INDEX | Index Elasticsearch (par défaut : winlogbeat-*) |
--es-prefix PREFIX | Préfixe d’événement Elasticsearch (par défaut : winlog) |
--case NAME | Nom du cas pour le mode multi‑base de Neo4j Enterprise |
-c FILE | Chemin du fichier de configuration (par défaut : config/config.yml) |
--create_user USER | Créer un nouvel utilisateur Neo4j |
--create_password PASS | Mot de passe pour le nouvel utilisateur Neo4j |
--role ROLE | Rôle du nouvel utilisateur (admin, architect, reader) |
--delete_user USER | Supprimer un utilisateur Neo4j |
-l, --learn | Exécuter l’analyse par apprentissage automatique (Modèle de Markov caché) |