
APT-Hunter V4.0
APT-Hunter è uno strumento di Threat Hunting per i log degli eventi di Windows, realizzato con una mentalità da purple team, per rilevare i movimenti APT nascosti nel mare dei log degli eventi di Windows, riducendo il tempo necessario per scoprire attività sospette.
APT-Hunter
Threat hunting per i log eventi di Windows, sviluppato con una mentalità purple-team.
APT-Hunter è uno strumento di threat hunting per i log eventi di Windows. Utilizza regole di rilevamento predefinite e statistiche sui log per far emergere attività APT nascoste in grandi volumi di eventi, riducendo il tempo necessario per individuare comportamenti sospetti. È particolarmente efficace per le valutazioni di compromissione.
I risultati vengono scritti come una timeline che può essere analizzata direttamente in Excel, Timeline Explorer, Timesketch e strumenti simili, oppure esplorata nella dashboard web integrata con triage opzionale tramite LLM locale.
Indice
- Funzionalità
- Installazione
- Avvio rapido
- Opzioni della riga di comando
- Esempi
- Dashboard web
- Analisi con LLM locale
- Triage agentico
- Esempi di output
- Autore
- Crediti
Funzionalità
- Rilevamento basato su regole su Security, System, Sysmon, PowerShell, Defender, WinRM, Scheduled Tasks, Terminal Services e altro ancora; il tipo di log viene rilevato automaticamente.
- Motore multiprocessing per un'analisi rapida di grandi insiemi di log.
- Hunting tramite stringa, regex o file di regex, con supporto alle regole Sigma.
- Hunting sui log di audit di Office 365.
- Output timeline in Excel, CSV (pronto per Timesketch) e report dedicati per logon, esecuzione di processi e accesso agli oggetti.
- Dashboard web con filtri, grafici, timeline degli incidenti ed esportazione del report IR (Markdown / .docx).
- Analisi con LLM locale tramite qualsiasi server compatibile con OpenAI (Ollama, LM Studio, llama.cpp). Nulla lascia la tua macchina.
- Triage agentico che raggruppa migliaia di alert in un breve elenco di riscontri verificabili.
Installazione
Scarica i binari compilati dalla pagina Releases, oppure esegui dal sorgente (Python 3.8+):
git clone https://github.com/ahmedkhlief/APT-Hunter.git
cd APT-Hunter
python3 -m pip install -r requirements.txt
Avvio rapido
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport
-p accetta una directory o un singolo file. Aggiungi -web per aprire la dashboard al termine dell'analisi.





Opzioni della riga di comando
Esegui python3 APT-Hunter.py -h per l'elenco completo. Opzioni principali:
| Opzione | Descrizione |
|---|---|
-p, --path | File o cartella di log da analizzare |
-o, --out | Nome / directory di output |
-start, -end | Limita la timeline (formato ISO) |
-tz | Fuso orario (local o ad es. Asia/Dubai) |
-cores | Core CPU da utilizzare (predefinito: metà di quelli disponibili) |
-hunt, -huntfile, -eid | Hunting tramite stringa/regex, file di regex o Event ID |
-sigma, -rules | Hunting con regole Sigma convertite in JSON |
-o365hunt, -o365rules, -o365raw | Hunting sui log di audit di Office 365 |
-procexec, -logon, -objaccess, -allreport | Report aggiuntivi |
-web, -webview, -webhost, -webport | Avvia la dashboard web |
-llm, -llm-provider, -llm-url, -llm-model, -llm-key, -llm-severity, -llm-batch, -llm-context | Analisi con LLM locale |
Esempi
Analizza una cartella di file EVTX (i tipi di log vengono rilevati automaticamente):
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport
Concentrati su un intervallo temporale:
python3 APT-Hunter.py -p /opt/wineventlogs/ -o Project1 -allreport -start 2022-04-03 -end 2022-04-05T20:56
Hunting con una stringa, una regex o un file di 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 con regole Sigma:
python3 APT-Hunter.py -sigma -rules rules.json -p /opt/wineventlogs/ -o Project2
Scarica le ultime regole Sigma convertite per APT-Hunter (scrive rules.json):
./Get_Latest_Sigma_Rules.sh
Dashboard web
Sfoglia un report generato nel browser: filtri, grafici, timeline degli incidenti ed esportazione del report 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
Accettare un riscontro di triage lo fissa alla timeline degli incidenti insieme alle sue evidenze, allegate come sub-eventi comprimibili: si trovano sotto il riscontro nella tabella anziché intervallati con tutto il resto, e sono esclusi dai grafici della timeline in modo che i grafici rimangano leggibili. Rimuovere un riscontro rimuove anche i suoi sub-eventi.
Il server si associa a 0.0.0.0:5000 per impostazione predefinita. Usa --host / --port (o -webhost / -webport) per modificarlo, ad esempio --host 127.0.0.1 per mantenerlo locale. I riscontri revisionati e la timeline vengono conservati quando la cache del report viene ricostruita.

Dashboard principale: totale eventi e conteggi per severità, ripartizione per severità, regole di rilevamento più attivate e volume giornaliero degli eventi. La barra laterale elenca ogni log eventi e tabella di riepilogo nel report.

Timeline degli incidenti: riscontri fissati tracciati nel tempo e codificati a colori per severità. Esegui zoom e pan nei periodi più intensi, genera un riepilogo esecutivo con AI ed esporta il report IR o il CSV.

Timeline cronologica: una catena di attacco si espande nei suoi sub-eventi e il pannello dei dettagli mostra la narrazione, le tecniche MITRE e il punteggio.
Il grafico della timeline degli incidenti è zoomabile, così le raffiche di eventi a minuti o secondi di distanza rimangono leggibili: trascina sul grafico per zoomare su un intervallo, Shift+trascina per fare pan, Ctrl/Cmd+rotella per zoomare attorno al cursore, oppure usa la striscia di panoramica sottostante. Le etichette non si sovrappongono mai; quelle che non entrano vengono nascoste e passando il mouse su un punto vengono elencati tutti gli eventi sovrapposti.
Analisi con LLM locale
Assegna un punteggio di maliciousness agli eventi rilevati usando un modello locale, dalla riga di comando:
python3 APT-Hunter.py -p <logs> -o <Output> -llm -llm-provider ollama -llm-model llama3 -llm-severity High
Oppure per singolo evento dalla dashboard (verifica, spiega, correla). Configura provider (Ollama / LM Studio / llama.cpp), modello, URL e timeout nella pagina Settings della dashboard. Qualsiasi server locale compatibile con OpenAI funziona; nessun dato viene inviato a un servizio cloud.
Triage agentico
Il Triage agentico nella barra laterale della dashboard trasforma migliaia di alert in un breve elenco di riscontri:
- Cluster. Gli alert nell'ambito scelto (severità minima, computer, finestra temporale) vengono raggruppati per regola, host, event ID e forma del messaggio. Un report con ~13,5k alert in genere si riduce a qualche decina di cluster.
- Verdetto di primo passaggio. L'LLM giudica ogni cluster esattamente una volta. Questo passaggio è economico ed esaustivo, il che garantisce che nulla venga saltato.
- Indagine. Un agente lavora sulle piste sopravvissute con strumenti: cerca negli alert, legge il log eventi grezzo dietro un alert, percorre la timeline attorno a un momento e collega ciò che trova in catene di attacco. Può solo proporre riscontri; non scrive mai direttamente nella timeline.
- Revisione. I riscontri appaiono in una coda con punteggio, verdetto, tecnica MITRE, evidenze e traccia dell'indagine dell'agente. Accept aggiunge un riscontro alla Timeline degli incidenti (e al report IR / esportazione .docx); Reject lo scarta. Imposta una soglia di aggiunta automatica in Settings (o per singola esecuzione) per accettare automaticamente i riscontri con punteggio elevato.
La fase di indagine richiede un LLM che supporti il tool calling. Se il tuo non lo fa, APT-Hunter ripiega su una pipeline fissa di pivot/correlazione. La copertura è identica in entrambi i casi, poiché l'agente aggiunge solo profondità sopra il primo passaggio. I round degli strumenti e un limite di tempo reale sono limitati in Settings.

Triage agentico: la cronologia delle esecuzioni mostra ambito, conteggi di alert e cluster, riscontri e chiamate LLM per esecuzione. Qui 91 alert critici su un host si sono ridotti a 32 cluster e a una singola catena di attacco con punteggio elevato.

Dettaglio del riscontro: la narrazione, le tecniche MITRE, le evidenze e la traccia completa dell'indagine (ogni evento letto, finestra della timeline e ricerca negli alert effettuata dall'agente), così ogni conclusione può essere verificata.
Nota: l'output dell'LLM è un ausilio al triage, non un verdetto. Rivedi i riscontri prima di basarti su di essi. I modelli di reasoning potrebbero richiedere di alzare il timeout della richiesta ben oltre il valore predefinito di 200 s.
Esempi di output
| Esempio | Descrizione |
|---|---|
| Sample_TimeSketch.csv | Timeline che puoi caricare su Timesketch per vedere il quadro completo di un attacco |
| Sample_Report.xlsx | Ogni evento rilevato in tutti i log di Windows forniti |
| Sample_Logon_Events.csv | Tutti gli eventi di logon con campi analizzati (data, utente, IP di origine, processo di logon, workstation, tipo di logon, dispositivo, log originale) |
| Sample_Process_Execution_Events.csv | Tutte le esecuzioni di processi catturate dai log eventi |
| Sample_Object_Access_Events.csv | Accesso agli oggetti catturato dall'Event 4663 |
| Sample_Collected-SIDS.csv | Utenti e i loro SID, per aiutare le indagini |
| EventID_Frequency_Analysis.xls | Analisi della frequenza degli Event ID |
Autore
Twitter: @ahmed_khlief · LinkedIn: Ahmed Khlief
Licenza
Distribuito sotto GNU GPL v3. Vedi LICENSE.
Crediti
Grazie a Joe Maccry per il suo straordinario contributo ai casi d'uso di Sysmon (più di 100 casi d'uso aggiunti da Joe)