
Investigare gli accessi dannosi a Windows visualizzando e analizzando il registro eventi di Windows
LogonTracer v2 è uno strumento per indagare su accessi dannosi visualizzando e analizzando i log degli eventi di Windows Active Directory. Questo strumento associa un nome host (o un indirizzo IP) e un nome account presenti negli eventi di accesso e li mostra come un grafico. In questo modo è possibile vedere in quale account si verifica un tentativo di accesso e quale host viene utilizzato.
Questo strumento può visualizzare i seguenti ID evento relativi all'accesso Windows.
| ID Evento | Descrizione |
|---|---|
| 4624 | Accesso riuscito |
| 4625 | Accesso non riuscito |
| 4662 | È stata eseguita un'operazione su un oggetto |
| 4672 | Assegnazione di privilegi speciali |
| 4719 | Modifica dei criteri di controllo di sistema |
| 4720 | Creazione di un account utente |
| 4726 | Eliminazione di un account utente |
| 4728 / 4732 / 4756 | Aggiunto un membro a un gruppo abilitato per la sicurezza |
| 4729 / 4733 / 4757 | Rimosso un membro da un gruppo abilitato per la sicurezza |
| 4768 | Autenticazione Kerberos (Richiesta TGT) |
| 4769 | Ticket di servizio Kerberos (Richiesta ST) |
| 4776 | Autenticazione NTLM |
| 5137 | Creazione di un oggetto del servizio directory |
| 5141 | Eliminazione di un oggetto del servizio directory |
Maggiori dettagli sono descritti nei seguenti documenti:

LogonTracer v2.0 integra un motore di analisi AI che utilizza i modelli GPT di OpenAI per fornire un rilevamento delle minacce intelligente oltre agli approcci tradizionali basati su regole.
LogonTracer utilizza PageRank, Hidden Markov Model e ChangeFinder per rilevare host e account dannosi dai log degli eventi.

Con LogonTracer è anche possibile visualizzare i log degli eventi in ordine cronologico.

Python 3.9 o successivo (raccomandato 3.12)
Neo4j 5.x (Community o Enterprise)
Chiave API OpenAI (opzionale — richiesta solo per le funzionalità di analisi AI)
Moduli 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
Scarica e avvia Neo4j. Imposta la password iniziale e annota la porta Bolt (predefinita: 7687).
vi config/config.yml
Impostazioni chiave:
settings:
logontracer:
WEB_PORT: "8080"
default_user: "neo4j" # Nome utente Neo4j per l'account LogonTracer predefinito
default_password: "password" # Modificare prima del primo avvio
neo4j:
NEO4J_USER: "neo4j"
NEO4J_PASSWORD: "password" # La tua password Neo4j
NEO4J_SERVER: "localhost"
WS_PORT: "7687"
python3 logontracer.py --run
Apri il browser su http://localhost:8080.
python3 logontracer.py -e <path/to/Security.evtx> -z <UTC offset> -s <Neo4j server> -u <user> -p <password>
python3 logontracer.py -x <path/to/event.xml> -z <UTC offset> -s <Neo4j server> -u <user> -p <password>
python3 logontracer.py --es -s <Neo4j server> -u <user> -p <password> --es-server <ES host:port>
Aggiungi il flag --sigma per eseguire il rilevamento delle regole Sigma durante l'importazione:
python3 logontracer.py -e <path/to/Security.evtx> -z 9 -s localhost -u neo4j -p password --sigma
python3 logontracer.py -e <path/to/Security.evtx> -z 9 -s localhost -u neo4j -p password --add
Dopo aver avviato l'applicazione web, clicca su Upload Event Log nella barra laterale sinistra. Puoi:

Dopo il caricamento con scansione Sigma abilitata, o dopo aver attivato una nuova scansione tramite API, clicca su Sigma Scan Results nella barra laterale per visualizzare i risultati.








Con Neo4j Enterprise Edition, LogonTracer supporta più casi di indagine indipendenti, ciascuno archiviato in un database Neo4j separato.
docker run \
--detach \
--publish=7474:7474 --publish=7687:7687 --publish=8080:8080 \
-e LTHOSTNAME=<IP Address> \
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
Il seguente video su YouTube mostra come utilizzare LogonTracer.
Per maggiori dettagli, consulta il wiki di LogonTracer.
| Opzione | Descrizione |
|---|
-r, --run | Avvia l'applicazione web |
-o PORT | Porta dell'applicazione web (predefinita: 8080) |
--host HOST | Indirizzo di bind (predefinito: 0.0.0.0) |
-e EVTX [...] | Importa file EVTX |
-x XML [...] | Importa file XML di log eventi |
-s SERVER | Indirizzo server Neo4j (predefinito: localhost) |
-u USER | Nome utente Neo4j (predefinito: neo4j) |
-p PASSWORD | Password Neo4j |
--wsport PORT | Porta Bolt Neo4j (predefinita: 7687) |
-z UTC | Offset fuso orario (es. 9 per JST) |
-f DATE | Analizza i log a partire da questa data/ora (es. 2024-01-01T00:00:00) |
-t DATE | Analizza i log fino a questa data/ora |
--add | Aggiungi dati senza cancellare il database |
--delete | Cancella il database prima dell'importazione |
--sigma | Esegui scansione regole Sigma durante l'importazione |
--sigma-only | Esegui solo scansione Sigma (senza elaborazione Neo4j) |
--sigma-rules PATH | Percorso alla cartella delle regole Sigma (predefinito: sigma) |
--es | Importa dati da Elasticsearch |
--postes | Pubblica i risultati dell'analisi su Elasticsearch |
--es-server HOST:PORT | Server Elasticsearch |
--es-index INDEX | Indice Elasticsearch (predefinito: winlogbeat-*) |
--es-prefix PREFIX | Prefisso evento Elasticsearch (predefinito: winlog) |
--case NAME | Nome caso per la modalità multi-database di Neo4j Enterprise |
-c FILE | Percorso file di configurazione (predefinito: config/config.yml) |
--create_user USER | Crea un nuovo utente Neo4j |
--create_password PASS | Password per il nuovo utente Neo4j |
--role ROLE | Ruolo per il nuovo utente (admin, architect, reader) |
--delete_user USER | Elimina un utente Neo4j |
-l, --learn | Esegui analisi di machine learning (Hidden Markov Model) |