KingDavidIII/SOC-Monitoring-Tool
GitHub: KingDavidIII/SOC-Monitoring-Tool
一款基于 Python 和 Tkinter 构建的 Windows 端点监控与威胁检测仪表板,通过实时采集进程、网络和文件系统遥测数据并进行上下文风险评分,帮助用户在本地实现轻量级安全事件监控与分析。
Stars: 0 | Forks: 0
# SOC 监控 v2.0.4
[](https://github.com/KingDavidIII/SOC-Monitoring-Tool-/actions/workflows/ci.yml)
这是对原始 Windows SOC 监控原型的面向生产环境的重构版本。它收集主机遥测数据,规范化观测结果,应用确定性的风险评分,抑制重复的干扰信息,将结构化事件存储在 SQLite 中,写入 JSONL 安全事件,并呈现一个增量更新的 Tkinter 仪表板。
## 仪表板预览

仪表板提供了对进程、网络和文件系统活动的实时可见性,具备上下文风险评分、严重性过滤、持久化事件历史记录、CSV 导出以及采集器健康监控功能。
## 更新内容
- 支持停止和监督的采集器线程,具备健康和错误报告功能
- 结构化的不可变观测结果和安全事件
- 确定性的进程、网络和文件系统风险评分
- 回环地址和允许列表中的目标不再触发警告警报
- 在 Windows 允许的情况下,网络事件会与归属进程信息进行关联
- 进程事件包含可执行文件路径、父进程、命令行、用户和创建时间
- 文件系统扫描使用元数据基线,并仅对大小限制内发生更改的文件进行哈希计算
- 可配置的路径排除、可疑端口、允许列表、阻止列表和检测令牌
- 抑制重复事件以减少警报疲劳
- SQLite 事件持久化,支持数据保留和 CSV 导出
- 轮转的操作日志以及结构化的 JSONL 事件输出
- 仪表板以增量方式读取新数据库行,而不是每秒重新读取完整日志
- 自动化测试和 lint 配置
## 环境要求
- Windows 10 或 Windows 11
- Python 3.11 或更高版本
- 建议使用管理员权限以获得完整的进程和网络可见性
标准的 Windows Python 安装中已包含 Tkinter。
## 安装说明
双击 `setup_windows.bat`,然后运行 `run_soc_monitor.bat`。
手动安装:
```
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python main.py
```
无头模式:
```
python main.py --headless
```
导出所有已存储的事件:
```
python main.py --export-csv exports\soc_events.csv
```
运行测试:
```
python -m pip install -r requirements-dev.txt
python -m pytest
python -m ruff check .
```
## 数据文件
- `data/soc_events.db`:结构化的 SQLite 事件数据库
- `logs/soc_monitor.log`:轮转的操作日志
- `logs/security_events.jsonl`:每行一个结构化的安全事件
## 检测模型
该工具不会将每个新进程或连接标记为恶意。观测结果会根据上下文进行评分,例如目标端口、阻止列表、归属进程、可执行文件位置、命令行模式、父子进程关系、文件类型以及敏感的文件系统位置。
### 进程命令行安全性
命令行指标会根据 token 边界和可执行文件范围进行匹配。PowerShell 特定的指标仅针对 `powershell.exe` 和 `pwsh.exe` 进行评估;因此,`iex` 会在真正的 PowerShell 命令中被检测到,但不会在诸如 `msiexec.exe` 的文件名中被匹配。现有的自定义 token 仍然受支持,并仅限于配置的具备脚本执行能力的/LOLBIN 进程名。
### Windows Installer 上下文
`msiexec.exe` 会单独进行评估,依据包括可执行文件路径、父进程、启动模式、程序包来源以及无人值守安装标志。作为 `msiexec.exe` 子进程的 `System32` 或 `SysWOW64` 路径下的 `msiexec.exe -Embedding ...` 将被保留为信息遥测数据,而不会被提升为中级警报。意外路径、远程 MSI 程序包、用户可写的程序包位置以及可疑的父进程都会增加风险评分。路径上下文不能替代数字签名验证。
本项目是一个端点监控和学习工具,不能替代 Microsoft Defender for Endpoint、Sysmon 或托管式 SIEM。默认情况下有意禁用了外部声誉查询,以避免泄露遥测数据或需要付费的 API 密钥。
## 启动故障排除
`run_soc_monitor.bat` 现在会在启动仪表板之前执行运行时检查。当启动失败时,命令窗口将保持打开状态,并将完整的堆栈跟踪写入:
- `logs/launcher.log`
- `logs/soc_monitor.log`
要进行交互式诊断,请运行 `diagnose_windows.bat`。要保持所有运行时输出可见,请运行 `run_soc_monitor_debug.bat`。
Tkinter 检查失败意味着安装的 Python 发行版不包含可用的 Tcl/Tk 运行时。请安装支持 Tcl/Tk 的标准 64 位 Python 3.11+ 发行版,删除 `.venv`,然后重新运行 `setup_windows.bat`。
当仅仪表板运行时不可用时,`run_soc_monitor_headless.bat` 可以在不使用 Tkinter 的情况下启动所有采集器。在其命令窗口中按 `Ctrl+C` 可以干净地停止监控。
标签:Mr. Robot, PB级数据处理, Python, SOC监控, SQLite, Tkinter, 安全运维, 无后门, 时序数据库, 终端检测与响应, 网络安全审计, 逆向工具