
APT-Hunter V4.0
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.
APT-Hunter
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.
Inhaltsverzeichnis
- Funktionen
- Installation
- Schnellstart
- Kommandozeilenoptionen
- Beispiele
- Web-Dashboard
- Lokale LLM-Analyse
- Agentische Triage
- Ausgabebeispiele
- Autor
- Danksagungen
Funktionen
- Regelbasierte Erkennung über Security, System, Sysmon, PowerShell, Defender, WinRM, Scheduled Tasks, Terminal Services und mehr; der Protokolltyp wird automatisch erkannt.
- Multiprocessing-Engine für die schnelle Analyse großer Protokollmengen.
- Hunting nach String, Regex oder Regex-Datei, plus Sigma-Regelunterstützung.
- Office 365 Audit-Log-Hunting.
- Timeline-Ausgabe als Excel, CSV (Timesketch-fähig) und dedizierte Berichte zu Anmeldungen, Prozessausführungen und Objektzugriffen.
- Web-Dashboard mit Filterung, Diagrammen, einer Incident-Timeline und IR-Berichtsexport (Markdown / .docx).
- Lokale LLM-Analyse über jeden OpenAI-kompatiblen Server (Ollama, LM Studio, llama.cpp). Nichts verlässt Ihren Rechner.
- Agentische Triage, die Tausende von Alarmen in eine kurze, überprüfbare Liste von Befunden gruppiert.
Installation
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
Schnellstart
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.





Kommandozeilenoptionen
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 |
Beispiele
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
Web-Dashboard
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.

Haupt-Dashboard: Gesamtzahl der Ereignisse und Schweregradzählungen, Aufschlüsselung nach Schweregrad, am häufigsten ausgelöste Erkennungsregeln und tägliches Ereignisvolumen. Die Seitenleiste listet jedes Ereignisprotokoll und jede Übersichtstabelle im Bericht auf.

Incident-Timeline: angeheftete Befunde, nach Zeit aufgetragen und nach Schweregrad farbcodiert. Zoomen und Verschieben in stark frequentierte Abschnitte, eine KI-Zusammenfassung für die Geschäftsleitung erstellen und den IR-Bericht oder CSV exportieren.

Chronologische Timeline: Eine Angriffskette wird in ihre Sub-Events aufgeklappt, und das Detailfenster zeigt die Erzählung, MITRE-Techniken und den Score.
Das Diagramm der Incident-Timeline ist zoombar, sodass Ereignisschübe, die Minuten oder Sekunden auseinanderliegen, lesbar bleiben: Ziehen Sie über das Diagramm, um in einen Abschnitt zu zoomen, Shift+Ziehen zum Verschieben, Strg/Cmd+Mausrad zum Zoomen um den Cursor, oder verwenden Sie den Übersichtsstreifen darunter. Beschriftungen überlappen nie; solche, die nicht passen, werden ausgeblendet, und beim Überfahren eines Punkts werden alle darauf gestapelten Ereignisse aufgelistet.
Lokale LLM-Analyse
Bewerten Sie erkannte Ereignisse auf Bösartigkeit mithilfe eines lokalen Modells über die Kommandozeile:
python3 APT-Hunter.py -p <logs> -o <Output> -llm -llm-provider ollama -llm-model llama3 -llm-severity High
Oder pro Ereignis über das Dashboard (prüfen, erklären, korrelieren). Konfigurieren Sie Anbieter (Ollama / LM Studio / llama.cpp), Modell, URL und Timeout auf der Settings-Seite des Dashboards. Jeder OpenAI-kompatible lokale Server funktioniert; es werden keine Daten an einen Cloud-Dienst gesendet.
Agentische Triage
Agentic Triage in der Seitenleiste des Dashboards verwandelt Tausende von Alarmen in eine kurze Liste von Befunden:
- Clustern. Alarme im gewählten Umfang (Mindestschweregrad, Computer, Zeitfenster) werden nach Regel, Host, Event ID und Nachrichtenform gruppiert. Ein Bericht mit ~13,5k Alarmen schrumpft typischerweise auf ein paar Dutzend Cluster.
- Erstbewertung. Das LLM beurteilt jeden Cluster genau einmal. Dieser Durchlauf ist kostengünstig und erschöpfend, was garantiert, dass nichts übersprungen wird.
- Untersuchung. Ein Agent bearbeitet die verbleibenden Spuren mit Werkzeugen: Er durchsucht Alarme, liest das rohe Ereignisprotokoll hinter einem Alarm, durchläuft die Timeline um einen Zeitpunkt herum und verknüpft seine Funde zu Angriffsketten. Er kann nur Befunde vorschlagen; er schreibt niemals selbst in die Timeline.
- Überprüfung. Befunde erscheinen in einer Warteschlange mit Score, Urteil, MITRE-Technik, Belegen und dem Untersuchungsverlauf des Agenten. Accept fügt einen Befund zur Incident-Timeline hinzu (und zum IR-Bericht / .docx-Export); Reject verwirft ihn. Legen Sie in den Settings (oder pro Lauf) einen Schwellenwert für das automatische Hinzufügen fest, um Befunde mit hohem Score automatisch zu akzeptieren.
Die Untersuchungsphase benötigt ein LLM, das Tool-Aufrufe unterstützt. Wenn Ihr Modell dies nicht tut, fällt APT-Hunter auf eine feste Pivot-/Korrelations-Pipeline zurück. Die Abdeckung ist in beiden Fällen identisch, da der Agent nur zusätzliche Tiefe auf den ersten Durchlauf aufsetzt. Tool-Runden und ein Wall-Clock-Limit sind in den Settings begrenzt.

Agentische Triage: Der Ausführungsverlauf zeigt Umfang, Alarm- und Clusteranzahl, Befunde und LLM-Aufrufe pro Lauf. Hier wurden 91 kritische Alarme auf einem Host zu 32 Clustern und einer einzigen Angriffskette mit hohem Score zusammengefasst.

Befunddetail: die Erzählung, MITRE-Techniken, Belege und der vollständige Untersuchungsverlauf (jedes gelesene Ereignis, jedes Timeline-Fenster und jede vom Agenten durchgeführte Alarm-Suche), sodass jede Schlussfolgerung nachvollzogen werden kann.
Hinweis: LLM-Ausgaben sind eine Triage-Hilfe, kein Urteil. Überprüfen Sie Befunde, bevor Sie sich auf sie verlassen. Reasoning-Modelle benötigen möglicherweise einen deutlich über dem Standardwert von 200 s erhöhten Request-Timeout.
Ausgabebeispiele
| Beispiel | Beschreibung |
|---|---|
| Sample_TimeSketch.csv | Timeline, die Sie in Timesketch hochladen können, um das Gesamtbild eines Angriffs zu sehen |
| Sample_Report.xlsx | Jedes erkannte Ereignis über alle bereitgestellten Windows-Protokolle hinweg |
| Sample_Logon_Events.csv | Alle Anmeldeereignisse mit geparsten Feldern (Datum, Benutzer, Quell-IP, Anmeldeprozess, Arbeitsstation, Anmeldetyp, Gerät, Originalprotokoll) |
| Sample_Process_Execution_Events.csv | Alle aus den Ereignisprotokollen erfassten Prozessausführungen |
| Sample_Object_Access_Events.csv | Objektzugriffe, die aus Event 4663 erfasst wurden |
| Sample_Collected-SIDS.csv | Benutzer und ihre SIDs, um Untersuchungen zu unterstützen |
| EventID_Frequency_Analysis.xls | Häufigkeitsanalyse der Event IDs |
Autor
Twitter: @ahmed_khlief · LinkedIn: Ahmed Khlief
Lizenz
Verteilt unter der GNU GPL v3. Siehe LICENSE.
Danksagungen
Dank an Joe Maccry für seinen großartigen Beitrag zu Sysmon-Anwendungsfällen (mehr als 100 Anwendungsfälle von Joe hinzugefügt)