
APT-Hunter est un outil de Threat Hunting pour les journaux d'événements Windows, conçu avec une mentalité de purple team pour détecter les mouvements APT cachés dans la mer des journaux d'événements Windows, afin de réduire le temps nécessaire pour découvrir une activité suspecte.
Threat hunting for Windows event logs, built with a purple-team mindset.
APT-Hunter est un outil de threat hunting pour les journaux d'événements Windows. Il utilise des règles de détection prédéfinies et des statistiques de journaux pour faire remonter l'activité APT dissimulée dans de grands volumes d'événements, réduisant le temps nécessaire pour découvrir des comportements suspects. Il est particulièrement efficace pour les évaluations de compromission.
Les résultats sont écrits sous forme de chronologie qui peut être analysée directement dans Excel, Timeline Explorer, Timesketch et outils similaires, ou explorée dans le tableau de bord web intégré avec un triage LLM local en option.
Téléchargez les binaires compilés depuis la page Releases, ou exécutez depuis les sources (Python 3.8+) :
git clone https://github.com/ahmedkhlief/APT-Hunter.git
cd APT-Hunter
python3 -m pip install -r requirements.txt
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport
-p accepte un répertoire ou un fichier unique. Ajoutez -web pour ouvrir le tableau de bord à la fin de l'analyse.





Exécutez python3 APT-Hunter.py -h pour la liste complète. Options principales :
| Option | Description |
|---|---|
-p, --path | Fichier ou dossier de journaux à analyser |
-o, --out | Nom / répertoire de sortie |
-start, -end | Restreindre la chronologie (format ISO) |
-tz | Fuseau horaire (local ou par ex. Asia/Dubai) |
-cores | Cœurs CPU à utiliser (par défaut : la moitié des disponibles) |
-hunt, -huntfile, -eid | Hunting par chaîne/regex, fichier de regex, ou Event ID |
-sigma, -rules | Hunting avec des règles Sigma converties en JSON |
-o365hunt, -o365rules, -o365raw | Hunting dans les journaux d'audit Office 365 |
-procexec, -logon, -objaccess, -allreport | Rapports supplémentaires |
-web, -webview, -webhost, -webport | Lancer le tableau de bord web |
-llm, -llm-provider, -llm-url, -llm-model, -llm-key, -llm-severity, -llm-batch, -llm-context | Analyse LLM locale |
Analyser un dossier de fichiers EVTX (les types de journaux sont détectés automatiquement) :
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport
Se concentrer sur une plage temporelle :
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport -start 2022-04-03 -end 2022-04-05T20:56
Hunting avec une chaîne, une regex, ou un fichier de regex :
python3 APT-Hunter.py -hunt "psexec" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile "(psexec|psexesvc)" -p /opt/wineventlogs/ -o Project2
python3 APT-Hunter.py -huntfile huntfile.txt -p /opt/wineventlogs/ -o Project2
Hunting avec des règles Sigma :
python3 APT-Hunter.py -sigma -rules rules.json -p /opt/wineventlogs/ -o Project2
Récupérer les dernières règles Sigma converties pour APT-Hunter (écrit rules.json) :
./Get_Latest_Sigma_Rules.sh
Parcourez un rapport généré dans le navigateur : filtrage, graphiques, chronologie d'incident et export de rapport IR.
python3 run_webapp.py <Output>/<Output>_Report.xlsx # or pass the output directory
python3 APT-Hunter.py -p <logs> -o <Output> -web # analyse, then open the dashboard
python3 APT-Hunter.py -webview <Output> # open an existing report
Accepter un constat de triage l'épingle à la chronologie d'incident avec ses preuves, attachées comme sous-événements repliables : ils se trouvent sous le constat dans le tableau plutôt qu'entremêlés avec tout le reste, et ils sont exclus des graphiques de chronologie afin que les graphiques restent lisibles. Supprimer un constat supprime ses sous-événements avec lui.