LogonTracer v2 是一款通过可视化和分析 Windows Active Directory 事件日志来调查恶意登录的工具。该工具将登录相关事件中出现的主机名(或 IP 地址)与账户名关联起来,并以图形方式显示。这样一来,就可以查看哪些账户发生了登录尝试,以及使用了哪些主机。
该工具可以可视化以下与 Windows 登录相关的事件 ID。
| 事件 ID | 描述 |
|---|---|
| 4624 | 成功登录 |
| 4625 | 登录失败 |
| 4662 | 对对象执行了操作 |
| 4672 | 分配特殊权限 |
| 4719 | 系统审核策略已更改 |
| 4720 | 创建了用户账户 |
| 4726 | 删除了用户账户 |
| 4728 / 4732 / 4756 | 将成员添加到启用了安全性的组中 |
| 4729 / 4733 / 4757 | 从启用了安全性的组中移除成员 |
| 4768 | Kerberos 身份验证(TGT 请求) |
| 4769 | Kerberos 服务票据(ST 请求) |
| 4776 | NTLM 身份验证 |
| 5137 | 创建了目录服务对象 |
| 5141 | 删除了目录服务对象 |
更多详情请参考以下文档:

LogonTracer v2.0 集成了使用 OpenAI GPT 模型的 AI 分析引擎,提供超越传统基于规则的方法的智能威胁检测。
LogonTracer 使用 PageRank、隐马尔可夫模型 和 ChangeFinder 从事件日志中检测恶意主机和账户。

使用 LogonTracer,还可以按时间顺序显示事件日志。

Python 3.9 或更高版本(推荐 3.12)
Neo4j 5.x(社区版或企业版)
OpenAI API 密钥(可选 — 仅 AI 分析功能需要)
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
下载并启动 Neo4j。设置初始密码,并记下 Bolt 端口(默认:7687)。
vi config/config.yml
关键设置:
settings:
logontracer:
WEB_PORT: "8080"
default_user: "neo4j" # 默认 LogonTracer 账户的 Neo4j 用户名
default_password: "password" # 首次运行前请更改此密码
neo4j:
NEO4J_USER: "neo4j"
NEO4J_PASSWORD: "password" # 您的 Neo4j 密码
NEO4J_SERVER: "localhost"
WS_PORT: "7687"
python3 logontracer.py --run
在浏览器中打开 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>
添加 --sigma 标志以在导入期间运行 Sigma 规则检测:
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
启动 Web 应用程序后,点击左侧边栏中的 Upload Event Log。您可以:

在使用 Sigma 扫描上传后,或通过 API 触发重新扫描后,点击侧边栏中的 Sigma Scan Results 查看结果。








使用 Neo4j 企业版,LogonTracer 支持多个独立的调查案例——每个案例存储在单独的 Neo4j 数据库中。
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
以下 YouTube 视频 展示了如何使用 LogonTracer。
更多详情,请查看 LogonTracer wiki。
| 选项 | 描述 |
|---|
-r, --run | 启动 Web 应用程序 |
-o PORT | Web 应用程序端口(默认:8080) |
--host HOST | 绑定地址(默认:0.0.0.0) |
-e EVTX [...] | 导入 EVTX 文件 |
-x XML [...] | 导入 XML 事件日志文件 |
-s SERVER | Neo4j 服务器地址(默认:localhost) |
-u USER | Neo4j 用户名(默认:neo4j) |
-p PASSWORD | Neo4j 密码 |
--wsport PORT | Neo4j Bolt 端口(默认:7687) |
-z UTC | 时区偏移量(例如 9 表示 JST) |
-f DATE | 从此日期时间开始解析日志(例如 2024-01-01T00:00:00) |
-t DATE | 解析日志到此日期时间 |
--add | 追加数据而不清除数据库 |
--delete | 在导入前清除数据库 |
--sigma | 在导入期间运行 Sigma 规则扫描 |
--sigma-only | 仅运行 Sigma 扫描(不进行 Neo4j 处理) |
--sigma-rules PATH | Sigma 规则文件夹路径(默认:sigma) |
--es | 从 Elasticsearch 导入数据 |
--postes | 将分析结果发布到 Elasticsearch |
--es-server HOST:PORT | Elasticsearch 服务器 |
--es-index INDEX | Elasticsearch 索引(默认:winlogbeat-*) |
--es-prefix PREFIX | Elasticsearch 事件前缀(默认:winlog) |
--case NAME | Neo4j 企业版多数据库模式的案例名称 |
-c FILE | 配置文件路径(默认:config/config.yml) |
--create_user USER | 创建新的 Neo4j 用户 |
--create_password PASS | 新 Neo4j 用户的密码 |
--role ROLE | 新用户的角色(admin、architect、reader) |
--delete_user USER | 删除 Neo4j 用户 |
-l, --learn | 运行机器学习分析(隐马尔可夫模型) |