miltech0/VigilScope

GitHub: miltech0/VigilScope

一款隐私优先的本地 Windows 端点可见性、被动检测与事件调查桌面工作台。

Stars: 0 | Forks: 0

# VigilScope 这是一款基于 Python 构建的、隐私优先的本地 Windows endpoint 可见性、检测和事件调查工作台。 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/miltech0/VigilScope/actions/workflows/ci.yml) [![CodeQL](https://github.com/miltech0/VigilScope/actions/workflows/codeql.yml/badge.svg)](https://github.com/miltech0/VigilScope/actions/workflows/codeql.yml) [![Latest release](https://img.shields.io/github/v/release/miltech0/VigilScope?display_name=tag)](https://github.com/miltech0/VigilScope/releases/latest) VigilScope 是一款受 EDR 启发的被动桌面应用程序,用于了解一台本地 Windows 计算机上正在发生的事情。它结合了系统指标、进程可见性、网络观测、可解释的检测规则、警报以及面向案例的调查,但并不自诩为商业 EDR。 ## 下载 Windows x64 构建版本发布在 [GitHub Releases 页面](https://github.com/miltech0/VigilScope/releases)。每个 版本包含: - `VigilScope.exe`; - `VigilScope.exe.sha256`; - 一个包含可执行文件、校验和、README 和安全策略的 ZIP 归档文件。 在运行可执行文件之前,请先进行验证: ``` .\scripts\verify_release.ps1 ` -ExePath .\VigilScope.exe ` -ChecksumPath .\VigilScope.exe.sha256 ``` 发布二进制文件是由 GitHub 托管的 Windows runner 上标记的源代码构建的。它们目前是**未签名**的,因此 Windows SmartScreen 或杀毒软件可能会显示信誉警告。请查阅源代码、验证校验和,并仅从本仓库的 Releases 页面下载。 ## 概述 VigilScope 通过 `psutil` 收集操作系统信息,将历史记录存储在本地 SQLite 数据库中,并在深色的 Tkinter 界面中呈现数据。该应用程序专为教育、个人和防御性安全用途而设计。 在运行时可以使用英文和土耳其语。应用程序头部的标志按钮可切换所有重新构建的主视图,而无需重启应用程序。所选语言将被保存以供下次启动时使用。 ## 主要功能 - 用于 CPU、内存、磁盘和活动连接的概览卡片。 - 带有进程查找功能的、可排序的活动 TCP 和 UDP 连接表。 - 详细的进程列表、过滤器、进程树和只读进程详细信息。 - 被动监听端口和远程 endpoint 基线。 - 带有预期基线说明的可解释网络发现。 - 系统、连接、进程和网络事件历史记录。 - 纯数据内置和用户自定义检测规则。 - 警报证据、分析师注释、抑制、MITRE ATT&CK 映射和案例。 - UTF-8 CSV 和规范 JSON 导出,并带有敏感命令行掩码。 - 运行时土耳其语/英语语言切换,带有本地化的日期和枚举。 ## 截图 尚未捆绑真实的项目截图。请参阅 [`docs/screenshots/README.md`](docs/screenshots/README.md) 了解捕获 清单和命名指南。未使用任何模拟或伪造的产品截图。 ## 语言支持 支持的语言代码有: - `tr` — Türkçe - `en` — English 翻译文件位于 `locales/tr.json`、`locales/en.json` 以及 `locales/rules/` 下匹配的规则翻译文件中。两个 locale 目录使用相同的键和参数名称。缺失的翻译会回退到英语;缺失的英语键会产生可见的开发警告,而不会导致 UI 崩溃。 首次启动时,土耳其语 Windows 显示语言将选择土耳其语。其他显示语言将选择英语。随后的启动将使用 `settings.json` 中保存的首选项。 ## 架构 该应用程序将收集、持久化、分析、呈现和本地化分离开来: - `system_info/product.py` 包含规范的产品元数据和文件名。 - `system_info/settings.py` 加载并原子保存用户首选项。 - `system_info/i18n.py` 提供线程安全的、基于键的翻译、枚举 呈现、回调以及日期/数字格式化。 - `system_info/data_migration.py` 执行一次性的旧版数据库备份。 - `system_info/database.py` 拥有可重复的 SQLite schema 升级。 - `system_info/app.py` 协调 Tkinter 生命周期和后台任务。 - `system_info/process_*` 模块收集、过滤、比较并呈现进程 数据。 - `system_info/network_*` 模块构建一个共享的被动网络快照, 维护基线,并创建可解释的发现。 - `system_info/detection_*`、`rule_*` 和 `correlation_engine.py` 实现纯数据 检测和调查工作流。 - `system_info/exporting.py` 和 `detection_exporting.py` 创建掩码导出。 后台 worker 绝不直接更新 Tkinter widget。结果通过队列返回,并在 UI 线程上应用。重复的进程和网络扫描将被抑制,而不是无限排队。 ## 检测引擎 内置规则是 [`rules/builtin_rules.json`](rules/builtin_rules.json) 中的规范英语 JSON 记录。匹配使用稳定的事件、严重性、状态和地址范围代码,而不是翻译后的标签。 土耳其语内置规则标题、描述和类别通过 locale 目录中的规则 ID 进行解析。 规则比较规范化的字段,并支持有界序列、计数和去重计数关联。它们不执行 Python、PowerShell、shell 命令或嵌入在 JSON 中的代码。用户规则保留用户编写时使用的语言,绝不进行机器翻译。 警报是调查信号,不是恶意软件的证据。预期的基线可以降低发现或警报的有效严重性,但 VigilScope 绝不会自动将 endpoint 标记为可信。 ## 网络分析 网络分析将一个本地 `psutil.net_connections` 快照重用于活动连接、监听器、endpoint 基线、网络事件和发现。 监听端口是等待流量的本地 socket。地址范围很重要: - **Loopback**(`127.0.0.1`、`::1`)只能从同一台计算机访问。 - **Private network** 地址用于本地网络范围。 - **All interfaces**(`0.0.0.0`、`::`)将监听器绑定到每个匹配的 本地接口,值得进一步审查。 - **Public** 标识全局可路由的远程地址。 第一个网络快照是基线,不会产生大量“已启动”或“新 endpoint”事件。随后的更改会创建规范的网络事件。远程 endpoint 由协议、IP 和端口标识;进程使用情况被单独跟踪。 可选的反向 DNS 仅使用操作系统解析器,在有界后台工作中运行,并缓存结果。VigilScope 不使用 WHOIS、地理定位、ASN、信誉或威胁情报 API。 ## 进程监控 “进程”选项卡默认每两秒刷新一次,并支持: - 文本、状态、最低 CPU、最低 RAM 和网络活动过滤器; - 稳定的数字和文本排序; - 具有孤儿和循环保护的父子进程树; - 只读进程详细信息、命令行、路径、工作目录(如果可用)的打开文件 计数、相关连接、子进程和父进程链。 仅凭 PID 并不是持久的身份标识,因为 Windows 可以重用它。VigilScope 尽可能使用 PID 加上进程创建时间。第一个进程快照被视为正常基线;启动和停止事件从随后的更改开始。 `Access Denied`、`Terminated` 和 `Unknown` 是安全的显示状态。一个无法访问或消失的进程不会中止整个快照。 收集命令行时不会阻塞每个进程的 CPU 调用。 VigilScope 故意没有进程终止、挂起、删除或其他干预控制。 ## 历史记录和 SQLite 存储 活动数据库为: ``` %LOCALAPPDATA%\VigilScope\vigilscope.db ``` 在非 Windows 开发系统上,使用等效的 XDG 数据目录。 SQLite 使用 WAL 模式、外键、忙碌超时、短期连接和可重复的 schema 迁移。规范时间戳保留在数据库中;显示格式化仅在 UI 中应用。 默认保留期限: - 系统测量:7 天; - 连接事件:14 天; - 进程事件:14 天; - 监听端口和网络事件:30 天; - endpoint 每小时观测:8 天; - DNS 缓存:7 天; - 远程 endpoint 基线:不自动删除; - 发现、警报、案例、注释和检测检查点:不通过 例行保留清理移除。 保留值集中在 `system_info/config.py` 中。 ### 旧版数据迁移 如果新数据库不存在,且存在此旧版数据库: ``` %LOCALAPPDATA%\SistemBilgisi\system_history.db ``` VigilScope 将使用 SQLite 的备份 API 创建新数据库,验证其 完整性,写入迁移标记,并保持原始文件夹不变。 它从不覆盖现有的 `vigilscope.db`,也绝不将活动的 WAL 数据库作为不受控制的原始文件操作进行复制。 Schema 版本 5 将旧版的土耳其语或英语枚举标签规范化为稳定 代码,同时保留警报、证据、案例、注释、基线、自由格式的 规则文本和用户编写的注释。 ## 警报和案例 警报保留其证据、首次和最后一次观测、重复计数、 状态历史记录和分析师注释。案例将选定的警报关联到 调查时间线中,而不会删除源记录。“案例”表示一个 调查文件;“事件”表示原始的系统或网络观测。 警报状态代码为 `new`、`investigating`、`confirmed`、 `false_positive`、`ignored` 和 `closed`。本地化的标签仅用于 呈现。 ## MITRE ATT&CK 映射 内置规则可能包含官方的 MITRE ATT&CK 战术和技巧 ID 以及 英文技巧名称。覆盖视图总结了已启用 规则和观察到的警报的映射。这是一种行为分类,而不是对 完整企业 ATT&CK 覆盖范围的声明。 ## 隐私 VigilScope 是本地优先的。它不上传遥测数据,也不发送 IP 地址、进程名、用户名、路径、命令行、事件、发现、 警报或案例到外部服务。常见的密码、token、API-key 和 Bearer 模式在命令行呈现和导出之前会被掩码处理。 本地数据库和导出文件仍可能包含敏感的 endpoint 元数据, 包括用户名、进程路径、IP 地址、端口、时间戳和 分析师注释。请保护 `%LOCALAPPDATA%\VigilScope`,将导出文件视为 敏感文件,并在将截图或报告附加到 公共 issue 之前移除私有数据。该数据库未进行应用层加密;它依赖于 操作系统用户配置文件权限。可选的反向 DNS 使用 计算机配置的 DNS 解析器,并且默认禁用。 ## 安全模型 该应用程序是被动的和只读的。 - 它不主动扫描端口或远程计算机。 - 它不发送或注入数据包。 - 它不终止或挂起进程。 - 它不阻止或终止网络连接。 - 它不修改 Windows 防火墙。 - 它不在远程系统上执行命令。 - 它不自动阻止 IP 地址。 - 它不上传遥测数据。 - 它不联系外部威胁情报服务。 ## 要求 - Windows 10 或更高版本是主要目标。 - Python 3.11 或更高版本。 - Tkinter,包含在标准的 Windows Python 发行版中。 - 运行时依赖项固定在 `requirements.txt` 中(`psutil==7.2.2` 和 `regex==2026.7.10`)。 某些进程和 socket 字段需要提升的 Windows 权限。该 应用程序在没有提权的情况下仍然可用,并安全地报告无法访问的字段。 ## 从源代码安装 PowerShell: ``` python -m venv .venv .\.venv\Scripts\Activate.ps1 python -m pip install -r requirements-dev.txt ``` 不需要庞大的绘图库或网络服务 SDK。 ## 运行应用程序 ``` .\.venv\Scripts\python.exe main.py ``` 运行非 GUI 健康检查: ``` .\.venv\Scripts\python.exe main.py --check ``` ## 运行测试 ``` .\.venv\Scripts\python.exe -m pytest -q .\.venv\Scripts\python.exe -m compileall -q main.py system_info tests tools .\.venv\Scripts\python.exe -m ruff check . .\.venv\Scripts\python.exe -m bandit -r system_info main.py -q .\.venv\Scripts\python.exe -m pip_audit -r requirements.txt --strict .\.venv\Scripts\python.exe -m pip check ``` ## 构建 Windows 可执行文件 在 Windows 上,安装构建依赖项并运行: ``` .\scripts\build_windows.ps1 ``` 构建使用 `VigilScope.spec`,捆绑 locale 目录、内置规则、 标志和应用程序图标,然后运行打包后的 `--check` 健康测试并 创建 SHA-256 校验和。PyInstaller 为其运行的 操作系统进行构建;因此官方的 Windows 可执行文件是在 Windows runner 上生成的。 推送版本标签将启动发布工作流: ``` git tag v0.1.0 git push origin v0.1.0 ``` 手动运行工作流会构建工件,但不会创建 GitHub Release。 ## 数据存储 应用程序目录为: ``` %LOCALAPPDATA%\VigilScope ``` 它包含: - 活动状态下的 `vigilscope.db` 和由 SQLite 管理的 WAL/SHM 文件; - `settings.json`,以 UTF-8 原子写入; - 旧版迁移成功后的 `.legacy-data-migrated.json`。 源文件夹不用于运行时数据库或瞬态用户数据。 ## 内置规则 内置规则是版本化的、规范的英语、纯数据记录。它们的 ID、 匹配字段、MITRE ID、协议值、路径和其他技术值 从不被翻译。支持禁用内置规则;故意限制在 UI 中删除或编辑其规范定义。 ## 创建用户规则 规则编辑器接受 JSON 条件和有界关联设置。 在保存之前,针对本地历史记录验证并预览规则。用户标题、 描述、类别、误报说明和调查步骤 完全保留编写时的原样。 ## 导出数据 历史记录、、发现、警报和案例在适用的地方支持 UTF-8 CSV 或 JSON 导出。 - CSV 标题遵循活动的显示语言。 - JSON 字段名保持规范英语,以实现机器兼容性。 - JSON 捆绑包包含 `product`、`display_language` 和 ISO `exported_at` 元数据。 - 默认文件名使用安全的英文名称,例如 `vigilscope_history_2026-07-19.json`。 - 常见的命令行密钥保持掩码状态。 ## 安全验证 该仓库在 Windows 和 Linux 上运行测试,使用 Ruff、Bandit、依赖项 审计、已提交密钥检测和 CodeQL。发布工作流在打包前重新运行 源验证。请参阅 [`SECURITY_AUDIT.md`](SECURITY_AUDIT.md) 了解已审查的攻击面、已修复的发现、验证证据和 残余风险。自动化工具可降低风险,但不能证明该 软件没有漏洞。 安全漏洞应通过 [GitHub Security Advisories](https://github.com/miltech0/VigilScope/security/advisories/new) 私下报告, 而不是通过公开的 issue。 ## 已知限制 - `psutil` 暴露的是操作系统 socket 表,而不是数据包 payload。 - 短暂的连接和进程可能在 快照之间出现和消失。 - 访问权限可能会隐藏进程所有者、路径、命令行或 socket PID。 - 反向 DNS 可能会超时或不返回 hostname。 - 基线和可解释的规则可能会产生误报,特别是对于 浏览器、开发工具、安装程序和更新程序。 - 运行时语言切换会重建主界面并关闭打开的详情 窗口;重新打开详细记录以新语言查看。 - 本地遥测数据库未由应用程序加密。 - 官方二进制文件未进行代码签名,可能会触发信誉警告。 - 静态分析和自动化测试无法保证没有漏洞。 - 本项目不能替代商业 endpoint 保护。 ## 项目结构 ``` assets/flags/ Bundled TR and GB flag PNGs docs/screenshots/ Screenshot contribution guidance packaging/ Windows executable metadata scripts/ Build and checksum verification scripts .github/workflows/ CI, CodeQL, and Windows release automation locales/ English and Turkish UI/rule catalogs rules/ Canonical built-in JSON detection rules system_info/ Application, services, repositories, and UI modules tests/ Isolated automated tests tools/ Reproducible asset and rule maintenance scripts main.py Application entry point requirements.txt Runtime dependency pin requirements-dev.txt Test and security-tool dependency pins requirements-build.txt PyInstaller build dependency pin VigilScope.spec Reproducible executable bundle configuration SECURITY_AUDIT.md Security review scope, fixes, and residual risks ``` ## 路线图 潜在的未来工作包括更完整的键盘导航、更丰富的 本地化分析师指导、针对超大案例历史记录的分页、签名 发布打包,以及额外的可解释被动规则。路线图项目 不是承诺,也不表示为实现的功能。 ## 免责声明 VigilScope 是一个教育和个人防御性安全项目。警报 和发现是调查信号,不是恶意软件的证据。它不是 功能齐全的商业 EDR,也不能替代商业 endpoint 保护、组织监控、事件响应程序或 专业安全建议。
标签:AMSI绕过, DFIR, IPv6支持, Mr. Robot, Python, Tkinter, Windows 调试器, 威胁检测, 安全调查, 无后门, 无线安全, 终端可见性, 终端安全, 逆向工具