
APT-Hunter ist ein Threat Hunting Tool für Windows-Ereignisprotokolle, das mit einer Purple-Team-Denkweise entwickelt wurde, um APT-Bewegungen zu erkennen, die im Meer der Windows-Ereignisprotokolle verborgen sind, um die Zeit zur Aufdeckung verdächtiger Aktivitäten zu verkürzen.
Threat Hunting für Windows-Ereignisprotokolle, entwickelt mit einer Purple-Team-Denkweise.
APT-Hunter ist ein Threat-Hunting-Tool für Windows-Ereignisprotokolle. Es verwendet vordefinierte Erkennungsregeln und Protokollstatistiken, um APT-Aktivitäten aufzudecken, die in großen Mengen von Ereignissen verborgen sind, und reduziert so die Zeit, die zum Aufdecken verdächtigen Verhaltens benötigt wird. Es ist besonders effektiv für Kompromittierungsbewertungen.
Die Ergebnisse werden als Timeline ausgegeben, die direkt in Excel, Timeline Explorer, Timesketch und ähnlichen Tools analysiert oder im integrierten Web-Dashboard mit optionaler lokaler LLM-Triage erkundet werden kann.
Laden Sie kompilierte Binärdateien von der Releases-Seite herunter oder führen Sie das Tool aus dem Quellcode aus (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 akzeptiert ein Verzeichnis oder eine einzelne Datei. Fügen Sie -web hinzu, um das Dashboard zu öffnen, wenn die Analyse abgeschlossen ist.





Führen Sie python3 APT-Hunter.py -h für die vollständige Liste aus. Hauptoptionen:
| Option | Beschreibung |
|---|---|
-p, --path | Zu analysierende Protokolldatei oder Ordner |
-o, --out | Ausgabename / Ausgabeverzeichnis |
-start, -end | Timeline einschränken (ISO-Format) |
-tz | Zeitzone (local oder z. B. Asia/Dubai) |
-cores | Zu verwendende CPU-Kerne (Standard: die Hälfte der verfügbaren) |
-hunt, -huntfile, -eid | Hunting nach String/Regex, Regex-Datei oder Event ID |
-sigma, -rules | Hunting mit nach JSON konvertierten Sigma-Regeln |
-o365hunt, -o365rules, -o365raw | Office 365 Audit-Log-Hunting |
-procexec, -logon, -objaccess, -allreport | Zusätzliche Berichte |
-web, -webview, -webhost, -webport | Web-Dashboard starten |
-llm, -llm-provider, -llm-url, -llm-model, -llm-key, -llm-severity, -llm-batch, -llm-context | Lokale LLM-Analyse |
Analysieren Sie einen Ordner mit EVTX-Dateien (Protokolltypen werden automatisch erkannt):
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport
Fokus auf einen Zeitraum:
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport -start 2022-04-03 -end 2022-04-05T20:56
Hunting mit einem String, einer Regex oder einer Datei mit Regexes:
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 mit Sigma-Regeln:
python3 APT-Hunter.py -sigma -rules rules.json -p /opt/wineventlogs/ -o Project2
Laden Sie die neuesten für APT-Hunter konvertierten Sigma-Regeln herunter (schreibt rules.json):
./Get_Latest_Sigma_Rules.sh
Durchsuchen Sie einen generierten Bericht im Browser: Filterung, Diagramme, Incident-Timeline und IR-Berichtsexport.
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
Wenn Sie einen Triage-Befund akzeptieren, wird er zusammen mit seinen Belegen an die Incident-Timeline angeheftet und als einklappbare Sub-Events angehängt: Sie stehen in der Tabelle unter dem Befund, statt mit allem anderen verschachtelt zu werden, und sie werden aus den Timeline-Diagrammen herausgehalten, damit die Diagramme lesbar bleiben. Wenn Sie einen Befund entfernen, werden seine Sub-Events mit ihm entfernt.
Der Server bindet standardmäßig an 0.0.0.0:5000. Verwenden Sie --host / --port (oder -webhost / -webport), um dies zu ändern, zum Beispiel --host 127.0.0.1, um ihn lokal zu halten. Überprüfte Befunde und die Timeline bleiben erhalten, wenn der Berichtscache neu aufgebaut wird.