KingDavidIII/SOC-Monitoring-Tool

GitHub: KingDavidIII/SOC-Monitoring-Tool

一款基于 Python 和 Tkinter 构建的 Windows 端点监控与威胁检测仪表板,通过实时采集进程、网络和文件系统遥测数据并进行上下文风险评分,帮助用户在本地实现轻量级安全事件监控与分析。

Stars: 0 | Forks: 0

# SOC 监控 v2.0.4 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/KingDavidIII/SOC-Monitoring-Tool-/actions/workflows/ci.yml) 这是对原始 Windows SOC 监控原型的面向生产环境的重构版本。它收集主机遥测数据,规范化观测结果,应用确定性的风险评分,抑制重复的干扰信息,将结构化事件存储在 SQLite 中,写入 JSONL 安全事件,并呈现一个增量更新的 Tkinter 仪表板。 ## 仪表板预览 ![SOC 监控工具仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/de/de556f51cc7d6b7a16e476f4afaaa635db8bffcb0dd0b151fc7aa679ba619e34.png) 仪表板提供了对进程、网络和文件系统活动的实时可见性,具备上下文风险评分、严重性过滤、持久化事件历史记录、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, 安全运维, 无后门, 时序数据库, 终端检测与响应, 网络安全审计, 逆向工具