wxin10/HostLogInsight
GitHub: wxin10/HostLogInsight
一款本地运行的支持 Windows/Linux 主机日志分析、应急响应取证分流的跨平台安全工具。
Stars: 0 | Forks: 0
# HostLogInsight
HostLogInsight 是一款本地 Windows/Linux 主机日志分析工具,可用于应急响应、主机审计、取证分流、Web 日志审查以及可疑行为发现。它在本地运行,不会上传日志,也不需要云服务。
当前的 UI 主要侧重于:
- 事件数量
- 分析项数量
- 异常项数量
- 结构化模块表格
- 证据回溯
风险评分和置信度不再是主要工作流程。GUI 和 CLI 现在倾向于生成易读的摘要、分类的 Windows 事件视图以及作为证据的原始日志。
## 功能
- 跨平台的 CLI 和 PySide6 GUI。
- 从 `resources/default_paths.yaml` 发现默认路径。
- 支持用户添加文件、目录和 glob 路径。
- 时间范围过滤:最近 `1h`、`6h`、`24h`、`7d`、`30d` 或自定义起止时间。
- 通过 PowerShell `Get-WinEvent` 收集 Windows 事件日志并输出 XML。
- 对 Windows 安全日志进行预检,以确保 4624 的可读性。
- 按 EventID 对安全通道进行批量处理,包括 `4624`、`4625`、`4648`、`4672`、`4778` 和 `4779`。
- 通过 `journalctl` 收集 Linux journal。
- 采用 `utf-8`、`gbk` 和 `latin-1` 回退机制进行流式文本日志收集。
- 支持解析 Windows 事件、Linux syslog/auth 日志、Nginx、Apache、IIS、Tomcat、MSSQL、MySQL、PostgreSQL 以及普通文本。
- 针对会话保存提供聚合摘要和告警。*(译者注:原文 SQLite 及后续数据库内容似乎在部分段落中缺失,按照源文本字面意思翻译:)* 针对会话提供聚合摘要和告警。
- 在 Windows 上通过 `Get-WinEvent -Path` 离线导入 `.evtx`。
## Windows 分析
Windows 分析按事件类型进行组织,而不是采用普通的活动行:
- Windows 登录分析:`4624`、`4625`、`4648`、`4672`
- RDP 分析:`4624/4625 LogonType=10`、`1149`、`4778`、`4779`、`21`、`22`、`24`、`25`
- PowerShell 分析:原始行为摘要和可疑行为
- 服务分析:`7045`、`7036`、`7040`
- 计划任务分析:`4698`、`4702`、`106`、`140`
- 进程创建:`4688`
- 日志清除:`1102`、`104`
Windows 事件解析优先使用 XML `EventData`,如果不可用则回退到消息文本。提取的字段包括用户、域、源 IP、工作站/客户端、登录类型、进程、命令行、通道、EventID 和原始证据。
### 管理员权限
在 Windows 上,分析安全日志时请以管理员身份运行 HostLogInsight。如果没有管理员权限,`4624`、`4625`、`4648` 和 `4672` 可能会为空或不完整。
在分析开始时,HostLogInsight 会检查:
```
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 1
```
GUI 状态区域会显示安全日志是否可读。如果不可读,状态栏和 CLI 输出会解释可能的原因是权限被拒绝、日志不可用,还是没有匹配的事件。
## 安装说明
```
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
```
在 Linux 上:
```
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
## 常用命令
启动 GUI:
```
python main.py --gui
```
运行 24 小时范围的 CLI 分析:
```
python main.py --cli --last 24h
```
列出发现的来源:
```
python main.py --cli --last 24h --list-sources
```
仅分析系统来源。这包括 Windows 事件日志和 Linux journal 来源,不包括普通文本文件:
```
python main.py --cli --last 24h --source system
```
增加 Windows 事件日志查询深度:
```
python main.py --cli --last 24h --max-events 20000
```
分析自定义时间范围:
```
python main.py --cli --start "2026-01-01 00:00:00" --end "2026-01-02 00:00:00"
```
添加额外路径:
```
python main.py --cli --add-path C:\inetpub\logs\LogFiles --last 24h
python main.py --cli --add-path "/var/log/nginx/*.log" --source web
python main.py --cli --add-path "./Security.evtx" --last 30d
```
## 故障排除
检查 PySide6:
```
python -c "from PySide6.QtWidgets import QApplication; print('QtWidgets OK')"
```
手动检查 Windows 安全日志的可读性:
```
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 1
```
运行 CLI 并显示更详细的来源信息:
```
python main.py --cli --last 24h --debug
```
如果在 Windows 上登录分析结果为空:
- 以管理员身份运行终端
- 验证安全日志是否可读
- 检查所选时间范围内是否包含 4624/4625 事件
- 确认已启用相关的 Windows 审核策略
- 如果安全日志非常繁忙,请增加 `--max-events`
如果出现 PowerShell 噪音:
- HostLogInsight 会使用 `HostLogInsightCollector` 标记其自身的 Get-WinEvent 收集命令
- `Get-WinEvent`、`Get-CimInstance`、`ConvertTo-Json` 以及收集器命令行会从可疑的 PowerShell 结果中过滤掉
- 正常的 PowerShell 引擎生命周期事件(如 `400`、`403` 和 `600`)本身不会被视为可疑行为
## EVTX 离线导入
`.evtx` 文件会被识别为 Windows 事件来源。在 Windows 上,HostLogInsight 会调用:
```
Get-WinEvent -Path
```
并应用选定的时间范围。在 Linux 或其他平台上,EVTX 来源会被标记为 `unsupported`,分析过程会继续执行。
## Web 日志分析
支持的 Web 格式包括 IIS W3C、Nginx/Apache 组合访问日志以及 Tomcat 访问日志。解析的字段包括时间戳、源 IP、方法、URL、状态码、User-Agent、Referer、响应大小、HTTP 版本、请求时间(如果存在)、源路径和原始证据。
Web 分析会汇总排名靠前的 IP、排名靠前的 URL、状态码分布、可疑路径、SQL 注入、XSS、命令注入、路径遍历、扫描器 User-Agent、404 突增以及 5xx 激增情况。
## 数据库日志分析
MSSQL、MySQL/MariaDB 和 PostgreSQL 分析会汇总身份验证失败、特权账户行为、权限变更、导出/备份活动、高风险命令以及可疑的管理操作。
## 项目布局
```
core/ shared models, time ranges, discovery, rules, storage, engine
collectors/ Windows Event Log, Linux journal, and file collectors
parsers/ parsers that normalize logs to LogEvent
analyzers/ focused abnormal behavior modules
gui/ PySide6 desktop interface
rules/ YAML rules
resources/ default path configuration
tests/ pytest coverage
```
## 安全性
HostLogInsight 能够捕获缺失路径、权限错误、解析失败和收集器故障。来源状态会被保留,以便操作员可以查看哪些来源可用、被跳过、被拒绝或仅被部分解析。
标签:AI合规, PE 加载器, PySide6, Python, XXE攻击, 安全规则引擎, 库, 应急响应, 数字取证, 无后门, 自动化脚本, 逆向工具