ClementG91/winsight
GitHub: ClementG91/winsight
WinSight 是一套开源的 Windows 本地安全监控工具,帮助用户发现持久化项、摄像头/麦克风调用、网络连接和 DNS 查询等系统活动。
Stars: 1 | Forks: 0
# WinSight
[](https://github.com/ClementG91/winsight/actions/workflows/ci.yml)
[](LICENSE)


**目标:** 让普通的 Windows 用户*看到并控制*他们的机器上实际发生的事情——什么保留了,什么在监视摄像头/麦克风,什么在回传数据——这一切都通过一个屋檐下的、小巧的、单一用途的、可审计的工具来实现。没有遥测,没有账户,没有付费墙。
## 为什么存在这个项目(已验证现有方案,2026年7月)
Objective-See 的 macOS 套件在 Windows 上**没有统一的开源替代品。**
构建基础是存在的,但很分散,而且其中最好的还是闭源的:
| Objective-See (macOS) | 功能 | Windows:目前存在什么 | 差距 |
|---|---|---|---|
| KnockKnock | 枚举持久化 | **Autoruns** (Sysinternals) — *闭源* | OSS 差距 |
| BlockBlock | 实时持久化警报/拦截 | — | **无 OSS** |
| LuLu | 出站防火墙 | simplewall, Portmaster (OSS, 独立) | 集成差距 |
| OverSight | 摄像头/麦克风使用警报 | — (少量闭源免费软件) | **无 OSS** |
| RansomWhere? | 勒索软件行为阻止 | — (仅限研究) | **无 OSS** |
| TaskExplorer | 进程检查器 | Process Hacker / System Informer (OSS) | 已覆盖 |
| Netiquette | 实时连接 | TCPView (Sysinternals) — *闭源* | OSS 差距 |
| DNSMonitor | DNS 查询 | — | **无 OSS** |
| What's Your Sign | 签名检查 | Sigcheck (Sysinternals) — *闭源* | OSS 差距 |
**结论:** 不要重新克隆 Sysinternals 或 Process Hacker。真正的价值在于**四个“无 OSS”缺口**(摄像头/麦克风、勒索软件行为、实时持久化、DNS 可见性)**+ 一个单一、友好、透明的套件 UX**。
## 范围决策(资深视角,反对过度设计)
- **用户模式优先。** MVP 中的所有内容都是用户模式的,建立在 **ETW** (Event Tracing for Windows)、**WFP** (Windows Filtering Platform)、IPHelper、Authenticode 和注册表之上。它发布时不需要内核驱动程序。
- **内核驱动程序是第二阶段,且成本高昂。** 实时*拦截*(BlockBlock,RansomWhere 级别的文件拦截)需要一个 minifilter / WFP callout driver,在现代 Windows 上这需要 **EV 代码签名证书 + Microsoft 证明签名**(真实的资金 + 流程,Secure Boot / driver-signing 强制执行)。我们不让它成为 MVP 的前置条件。通过 ETW 在用户模式下完全可以进行监控/警报;拦截级别的强制执行有意推迟到后续阶段。
- **小型、独立的工具**共享一个核心 + 一个仪表板——而不是一个庞然大物。
- **没有供应商锁定,没有 SaaS。** 仅限本地。可选的 VirusTotal 查找由用户自行选择并通过用户密钥进行。
## MVP(第一阶段——用户模式,无驱动程序,快速发布)
1. **持久化扫描器**(KnockKnock 级别)——枚举每个自启动向量(Run keys、Scheduled Tasks、Services、WMI 事件订阅、启动文件夹、驱动程序、winlogon/AppInit 等),验证 Authenticode 签名,标记未签名/异常项。
2. **摄像头与麦克风监视器**(OverSight 级别)——当网络摄像头/麦克风变为活动状态时发出托盘警报,并带有每个进程的归属(ETW + `CapabilityAccessManager` 注册表)。
3. **连接与 DNS 监视器**(Netiquette + DNSMonitor 级别)——实时出站连接(IPHelper)和 DNS 查询(ETW `Microsoft-Windows-DNS-Client`)。
4. **统一仪表板** + 一个所有工具共享的 **签名/信誉** 助手(What's Your Sign 级别)。
## 路线图(后续阶段)
- **第二阶段——防火墙**(LuLu 级别),基于 **WFP**,针对应用程序的出站控制。
- **第三阶段——实时持久化**(BlockBlock 级别):将扫描器升级为实时监视器;用于拦截的可选 minifilter(需要证书)。
- **第四阶段——勒索软件金丝雀**(RansomWhere 级别):金丝雀文件 + 熵/重命名启发式算法;用于真正拦截的 minifilter(需要证书)。
## 技术栈(已锁定——参见 `docs/ARCHITECTURE.md`)
- **应用程序 + 用户模式工具:** C# / **.NET 8**,`CsWin32` 用于 P/Invoke,`TraceEvent` 用于 ETW,WinUI 3(或 WPF)托盘/仪表板。覆盖 Win32 最广的最快路径。
- **性能关键核心 / 未来代理:** 如有需要,使用 Rust 或 C++。
- **内核驱动程序(第三/四阶段):** C/C++ KMDF minifilter(或 Rust `windows-drivers`)。
## 构建约束(当前)
此仓库是在 **Linux** 开发机上搭建的。文档、架构、模块布局和 CI 配置是可移植的,但 .NET/Windows 代码必须在 **Windows**(Windows CI 运行器或虚拟机)上构建和测试。目前尚未在此处编译任何 Windows 原生内容——此次提交是基础 + 计划。
## 命名
`WinSight` 是一个暂定名称(Objective-See → “查看”正在发生的事情;Windows 的类似物)。Objective-See 的工具使用重叠词(KnockKnock、BlockBlock);此处的每个工具名称可以遵循该规则,也可以保持描述性。在编写代码之前可自由重命名。
## 状态
第一阶段正在进行中——CI 在 `windows-latest` 上通过。位于一个已签名的 `winsight` 二进制文件(子命令 `persistence | av | net | dns | all`,`--flagged`,`--json`,`--version`,`--help`)背后的模块化工具库:
- **持久化**(KnockKnock 级别)——8 个自启动面:Run/RunOnce/RunServices/ Policies\Explorer\Run(HKLM+HKCU × 64/32 位),Services 和驱动程序,Winlogon Shell/Userinit,Scheduled Tasks(Tasks XML),AppInit_DLLs,IFEO 调试器,Active Setup,BootExecute——每个都进行了签名检查,具备针对每个面的弹性扫描。
- **摄像头/麦克风**(OverSight 级别)——哪些应用程序使用了网络摄像头/麦克风以及现在什么是活动的(CapabilityAccessManager ConsentStore),并在设备开启/关闭的瞬间加上实时 `av --watch` 警报。
- **连接**(Netiquette 级别)——通过原生 IP Helper 表(GetExtendedTcpTable/Udp)获取活动的 TCP/UDP(IPv4 + IPv6),归属于拥有它的进程及其签名;标记外部的、已建立的、未签名的所有者。
- **DNS**(DNSMonitor 级别)——来自解析器缓存(MSFT_DNSClientCache)的最近解析的域名 + 答案。
**签名**通过验证目录感知(`ISignatureVerifier` / `AuthenticodeVerifier`)进行验证:批处理的 `Get-AuthenticodeSignature` 正确识别目录签名的 Windows 二进制文件并标记篡改(HashMismatch),并带有永不抛出异常的托管后备。所有工具都发出共享的报告结构(`WinSight.Reporting`),作为人类可读文本或稳定的 `--json` 合约,供未来的 GUI/自动化使用。在 Linux 上创作;在 `windows-latest` 上的 CI 是记录的编译器。
Central Package Management + `.editorconfig`。
请参阅 [CHANGELOG.md](CHANGELOG.md) 了解逐步进展。
下一步:ETW DNS 监视,WFP 防火墙(LuLu 级别),基于 `--json` 合约的 GUI/托盘 shell,以及更多持久化向量(WMI 订阅,启动文件夹)。
原生的 `WTGetSignatureInfo` 验证器是 `ISignatureVerifier` 背后最终的签名性能替代方案。基于驱动的工具(BlockBlock/RansomWhere)是后续阶段(需要 EV 证书)。
## 许可证
**GPL-3.0-or-later**——Objective-See 的工具是开源的;Copyleft 保持安全工具的可审计性和可分叉性。(完整的 GPLv3 文本将在首次发布前引入到 `LICENSE` 中。)
标签:Mr. Robot, 持久化检测, 终端安全