vladimiracunadev-create/rootcause-windows-inspector

GitHub: vladimiracunadev-create/rootcause-windows-inspector

RootCause 是一款 Rust 编写的 Windows 性能诊断与取证工具,通过轻量级监控与 ETW/WPR 深度追踪帮助定位系统性能瓶颈的根因。

Stars: 0 | Forks: 0

``` ╔═══════════════════════════════════════════════════════════════════════════════════╗ ║ ║ ║ ██████╗ ██████╗ ██████╗ ████████╗ ██████╗ █████╗ ██╗ ██╗███████╗███████╗ ║ ║ ██╔══██╗██╔═══██╗██╔═══██╗╚══██╔══╝██╔════╝ ██╔══██╗██║ ██║██╔════╝██╔════╝ ║ ║ ██████╔╝██║ ██║██║ ██║ ██║ ██║ ███████║██║ ██║███████╗█████╗ ║ ║ ██╔══██╗██║ ██║██║ ██║ ██║ ██║ ██╔══██║██║ ██║╚════██║██╔══╝ ║ ║ ██║ ██║╚██████╔╝╚██████╔╝ ██║ ╚██████╗ ██║ ██║╚██████╔╝███████║███████╗ ║ ║ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝╚══════╝ ║ ║ ║ ║ W I N D O W S I N S P E C T O R ║ ║ Forensic diagnostics · Built in Rust · v0.13.0 ║ ╚═══════════════════════════════════════════════════════════════════════════════════╝ ``` [![CI Windows](https://github.com/vladimiracunadev-create/rootcause-windows-inspector/actions/workflows/ci.yml/badge.svg)](https://github.com/vladimiracunadev-create/rootcause-windows-inspector/actions/workflows/ci.yml) [![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) [![Rust](https://img.shields.io/badge/rust-edition%202024-orange.svg)](https://www.rust-lang.org/) [![Platform](https://img.shields.io/badge/platform-Windows%2010%2F11-lightgrey.svg)](docs/REQUIREMENTS.md) [![Version](https://img.shields.io/badge/version-0.13.0-green.svg)](docs/ROADMAP.md) 🌐 **[产品页面 →](https://vladimiracunadev-create.github.io/rootcause-windows-inspector/)** **RootCause** 是一款用 **Rust** 编写的 **Windows** 桌面软件,旨在解决一个实际问题:当出现磁盘占用 100%、`%TEMP%` 异常增长、整体运行缓慢、内存消耗过高或无法解释的网络活动等症状时,清晰地揭示**究竟是哪个进程、文件夹、服务、连接或 ETL 跟踪**导致了系统性能下降。 它不打算成为一个“神奇的清理工具”。它的目标是**解释导致问题的主要原因**,保留证据,并在轻量级观察不足以解决问题时,提供一条通向更高精度的专业路径。 ## ⚡ 快速开始 ``` # 检查环境 (Rust, WPR, Inno Setup) .\scripts\verify-environment.ps1 # 编译 cargo build --release # 运行(某些功能需要管理员权限) .\target\release\rootcause.exe ``` ## 🔍 解决的问题 Windows 在单一视图中无法很好回答的具体问题: | 问题 | RootCause 如何提供帮助 | |---|---| | 现在是哪个进程占用了磁盘? | I/O 增量最高的进程 Top 排行 + 趋势 sparkline | | 哪个临时文件夹增长了?增长了多少? | 扫描 `%TEMP%`、`SoftwareDistribution`、`DeliveryOptimization` | | 是来自 Windows Update、BITS 还是 SysMain? | 进程 + 活动服务的关联分析 | | 哪个可执行文件保持着与公网 IP 的连接? | 网络表格 + 从 UI 进行 IP 封锁 | | 如何在不增加额外负担的情况下捕获证据? | 集成 WPR/ETW,无需离开应用即可生成 ETL 摘要 | ## 🛡️ 运行机制 ### 1 · 轻量级操作模式 主要模式。低消耗,适用于频繁观察。 - 🟢🟡🔴 系统状态通用信号灯 - 📊 实时的 CPU · RAM · I/O sparkline - 🔝 具有严重程度和评分的占用最高进程 Top - 🌡️ 各区间内的 CPU / RAM / 写入 / 读取压力 - 🗂️ 扫描 `TEMP` 和 Windows Update 缓存 - 🌐 各进程的活动连接及其与公网 IP 的关联 - 📜 最近的系统事件和相关的服务 - 🗃️ 导出 JSON · 带有 A 与 B 对比功能的 SQLite 历史记录 - ⚡ 按进程过滤严重程度 (Critical / Warning / Normal) - 🔔 出现 Critical 进程时的 toast 通知 - ⌨️ 快捷键:`F5` 刷新 · `Ctrl+E` 导出 · `Ctrl+1…9` 切换 tab - 🖥️ 计算机硬件信息:OS、CPU、核心数、频率、RAM - ◫ Autostart tab:Run 注册表 (HKCU/HKLM) 和 Startup 文件夹(包含严重程度和磁盘验证)— 检测与已知基线的变化 (NUEVA/MODIFICADA/ELIMINADA) 并生成 `persistence-change` 告警 - ⚙️ Windows 服务变更检测(通过 CLI `rootcause services` + 事件中的 `service-change` 告警;它不是 GUI 的一个 tab):监控每个服务的 `StartMode` + 二进制文件路径与已知基线的对比 (NUEVA/MODIFICADA/ELIMINADA) — 捕获新服务、二进制文件劫持或启动模式更改(例如:禁用 Defender) - 💻 完整的 CLI:在控制台使用 `rootcause --help` 查看所有命令 ### 2 · ETW/WPR 精度模式 适用于轻量级观察不足的情况。 - 从 UI 启动 / 停止 / 取消 WPR 捕获 - 记录问题的人工上下文 - 无需离开应用,使用 `tracerpt` 汇总最新的 ETL - 活动的 ETW 提供程序可视化进度条 - 为后续使用 WPA 进行深入分析提供清晰路径 ## 安全、弹性和演进 RootCause 的演进不仅是为了诊断性能下降和故障,还包括检测与未授权活动相符的异常信号,并强化 Agent 自身的弹性。 这些方向已经正式确立为产品的动态文档,而不是零散的笔记: - [`REQ-SEC-001 - 异常行为检测与可能的恶意活动`](docs/requirements/REQ-SEC-001-deteccion-comportamiento-anomalo.md):定义了基于启发式算法、信号关联、技术证据和针对可疑进程、异常消耗、异常传出连接、持久性机制和可疑执行路径的缓解建议的演进方向。 - [`REQ-SEC-002 - RootCause Agent 自保护和弹性`](docs/requirements/REQ-SEC-002-autoproteccion-y-resiliencia.md):已具备初步基础,包括本地心跳、异常关闭检测、配置完整性证据、建议的退避策略以及在 GUI/CLI 中的可见暴露。 - [`需求永久记录`](docs/requirements/README.md):集中了状态、优先级和技术路线图的可追溯性。 - [`异常行为检测模块 (V1)`](docs/MODULO_DETECCION_ANOMALIAS.md):描述了已经集成到仓库中的初步实现,包括本地启发式算法、简单关联、汇总的事件、配置以及在 GUI/CLI 中可见的输出。 当前仓库的实现: - REQ-SEC-001 已经具备集成的初步 V1 版本,可检测持续的 CPU 异常、内存增长、激进的写入操作、异常的传出流量、可疑路径、基础持久性机制、快速重生、重复脚本以及信号关联。 - 当前的输出显示严重程度、评分、涉及的进程、原因假设、汇总的证据和建议的缓解措施。 - REQ-SEC-002 进入到一个初步且务实的实现:本地心跳、异常关闭后的恢复、基本的配置监控以及可见的 Agent 状态;目前不承诺无懈可击或服务级别的持久守护进程。 务实的定位: - RootCause 可演进而检测与恶意或未授权活动相符的信号,但并不旨在取代专业的防病毒或 EDR 解决方案。 - RootCause 还必须考虑其自身 Agent 的弹性,因为诊断工具在实际场景中可能会成为被篡改的目标。 ## 🗂️ 产品版本 | 模式 | 类型 | 状态 | 如何使用 | 是否包含在 `release-windows` 中? | |---|---|---|---|---| | **GUI Desktop** | 核心主版本 | 生产环境 | 安装程序 / 便携版 | 是 | | **CLI-only** | 备用核心版本 | 生产环境 | `--no-default-features` | 是 | | **PowerShell module** | 适配器 | 生产环境 | `Import-Module RootCause` | 是 | | **VS Code Extension** | 适配器 | 生产环境 | `code --install-extension` | 是 | | **Tray icon** | 运行时扩展 | 骨架 | 未来 Feature `tray` | 否 | | **Windows Service** | 运行时扩展 | 骨架 | 未来 Feature `service` | 否 | | **RootCause Demo** | 分发配置 | 可选 | 独立的演示安装包 | 默认不包含 | `PowerShell module` 和 `VS Code Extension` 复用 `rootcause.exe`;它们不是该产品的替代引擎。 ``` # CLI-only 版本(约 4 MB,无图形界面) cargo build --release --no-default-features # 完整 GUI 版本(约 18 MB,默认) cargo build --release ``` ### 主版本的官方交付物 | 文件 | 内容 | |---|---| | `RootCause-Setup.exe` | 应用程序主安装程序 | | `RootCause-Portable.zip` | 主构建版本(GUI + CLI)的便携版 | | `RootCause-CLI-Portable.zip` | CLI-only 版本的便携版 | | `RootCause.psm1` | PowerShell 模块 | | `RootCause-VSCode-Extension.vsix` | VS Code 扩展 | | `SHA256SUMS.txt` | 完整性哈希值 | 各模式快速安装指南: - `RootCause-Setup.exe`:安装后从控制台使用 GUI 或 `rootcause`。 - `RootCause-Portable.zip`:解压并运行 `rootcause.exe`(包含 GUI + CLI 的主构建版本)。 - `RootCause-CLI-Portable.zip`:解压并从控制台运行 `rootcause.exe`。 - `RootCause.psm1`:要求已安装 `rootcause.exe` 或其在 `PATH` 中可用。 - `RootCause-VSCode-Extension.vsix`:要求已安装 `rootcause.exe` 或能在 `rootcause.executablePath` 中进行配置。 目录的权威来源:[`docs/CATALOGO_PRODUCTO.md`](docs/CATALOGO_PRODUCTO.md)。 ## 📦 Windows 包管理器 ``` # Scoop scoop install rootcause # Winget winget install VladimirAcuna.RootCause # Chocolatey choco install rootcause-windows-inspector ``` Manifests 位于 `packaging/distribution/` · PowerShell 模块位于 `packaging/powershell/`。 ## 📁 仓库交付状态 ### ✅ 包含 - 完整的 Rust 源代码 - 使用 `eframe/egui` 的原生 GUI(feature 为 `gui`,默认开启) - 通过 feature flags 实现的 CLI-only 版本 (`--no-default-features`) - PowerShell 模块 (`RootCause.psm1`) — 9 个原生 cmdlets - 分发 Manifests:Scoop, Winget, Chocolatey - 带有状态栏、警报和诊断面板的 VS Code 扩展 - 有文档说明的骨架:Tray icon 和 Windows Service - 验证、构建、打包和分析 ETL 的脚本 - 关于架构、要求、操作和 CI 的详尽文档 - 集成在界面中的 WPR/ETW 精度模式 - SQLite 历史记录(最近 1000 行)+ 自动备份至 JSON - 采用 JSON 格式 (`rootcause-config.json`) 的操作配置,具有安全的默认设置 - 具有本地心跳、检测之前异常关闭以及基本配置完整性的 Agent 健康状况监控 - 汇总的异常事件记录 + SQLite 中的操作审计 - 通过 API 进行可选且解耦的 AI 适配器,默认关闭 - 兼容企业部署的静默安装程序 (`/VERYSILENT /SUPPRESSMSGBOXES`) ### ❌ 不包含 - 预编译的 `.exe` - 数字签名 - 内核驱动 - 相当于 WPA 的完整解析器 ## 🗂️ 界面部分 | Tab | 描述 | |---|---| | **Overview** | 全局信号灯 + sparkline + 计算机特性 | | **Procesos** | 带有严重程度过滤的表格 + 进程 command line | | **Conexiones** | 每个进程的活动连接 + IP 封锁 | | **Temporales** | Windows 缓存 (TEMP, SoftwareDistribution 等) | | **ETW / WPR** | WPR 捕获 + ETL 跟踪摘要 | | **Servicios** | wuauserv、BITS、DoSvc、SysMain + 最近事件 | | **Autostart** | Run/RunOnce 注册表、Startup 文件夹和计划任务 + 变更检测与基线对比 | | **Historial** | SQLite 快照 + 带有增量的 A 与 B 对比 | | **Acerca** | 版本、作者、GitHub、快捷键、硬件 | ## 🔬 已实现的功能
系统观察 - 全局 CPU · 已用 / 总内存 - 各区间的网络活动 · 各区间的总 I/O - 通用信号灯 · 趋势 sparkline (环形缓冲区 60 个样本)
高占用进程 - 名称 · PID · 可执行文件路径 · Command line - 区间内的 CPU · RAM · 读取 / 写入 - 严重程度和评分 · 类别 · 简要说明 - 按严重程度进行交互式过滤
关键的临时文件和缓存 - `%TEMP%` · `C:\Windows\Temp` - `C:\Windows\SoftwareDistribution\Download` - `C:\ProgramData\Microsoft\Windows\DeliveryOptimization\Cache`
网络和连接 - 通过 `netstat` 获取活动连接 · 与 PID 关联 - 关注公网 IP · 由防火墙控制的封锁
历史记录和证据 - SQLite 历史记录:保留最多 1000 行;Historial tab 显示并比较最近 60 次捕获 - 带有 CPU / RAM / I/O / 警报增量的 A 与 B 对比 - 持久化的汇总事件,包含可能的原因和相关的证据 - 本地操作审计(`kill`、`block-ip`、`stop-service`、`accept-persistence-baseline`、`accept-service-baseline`、WPR、可选的 IA) - 导出 JSON · ETL 跟踪文件夹和分析
受控干预 - 结束未受进程 · 封锁远程 IP - 暂时停止服务(`BITS`、`DoSvc`、`SysMain`、`wuauserv`) - 启动 / 停止 / 取消 WPR 捕获 - 汇总最新捕获的 ETL - 手动操作受本地配置控制并在 SQLite 中进行审计
配置和可选的 AI - `rootcause config show` · `rootcause config init` - `rootcause-config.json` 中的进程和临时文件的阈值 - `rootcause status --json` 和 `rootcause history --json` 用于集成 - `rootcause incidents` 用于查看持久化记录的性能下降 - `rootcause ai explain-latest` 仅在启用 IA 时丰富最近的事件 - 如果 IA 失败或未配置,RootCause 将继续正常运行
异常行为检测 (V1) - 针对持续 CPU、内存增长、激进写入和异常传出流量的本地启发式算法 - 可疑路径、可配置的可靠基线以及可疑的父子进程关系 - Run/RunOnce/Startup 中的基础持久性和相关的安全服务,与已知基线进行对比并对变更进行分类 (NUEVA/MODIFICADA/ELIMINADA),从而发出 `persistence-change` 异常 - 针对 Windows 服务(`StartMode` + 二进制路径)的监控,与已知基线进行对比,使用相同的分类 (NUEVA/MODIFICADA/ELIMINADA) 发出 `service-change` 异常 - 简单的信号关联,包含评分、严重程度、原因假设和建议的缓解措施 - 在 GUI、CLI、导出的 JSON 和持久化的历史记录中展示主要事件 - 务实的定位:作为可观察性和诊断的补充;不能替代防病毒软件或 EDR
## 🚀 自动化验证 本仓库包含在 GitHub Actions 中可见的验证: - **`ci.yml`** — 在 `windows-latest` 上进行格式化、lint、测试和发布构建 - **`release-windows.yml`** — 便携版 ZIP、Inno 安装程序和 SHA-256 哈希值 - 使用 `scripts/ci-local.ps1` 进行本地 CI 复制 - 完整指南见 [`docs/CI_GITHUB.md`](docs/CI_GITHUB.md) ## 📦 打包 ``` # 完整 release 和 artifacts 流程 .\scripts\release-product.ps1 -VerifyEnvironment # 完整流程 + push/tag/release .\scripts\release-product.ps1 -VerifyEnvironment -Publish # 静默安装(企业) RootCause-Setup.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART ``` 也可从 shell 中使用: ``` ./scripts/release-product.sh -VerifyEnvironment ./scripts/release-product.sh -VerifyEnvironment -Publish ``` 完整详情 → [`docs/PACKAGING_WINDOWS.md`](docs/PACKAGING_WINDOWS.md) ## 📐 仓库结构 ``` rootcause-windows-inspector/ ├── Cargo.toml ← versión, features (gui / cli-only), dependencias ├── README.md ├── LICENSE ← Apache 2.0 ├── SECURITY.md ├── docs/ ← 25+ documentos de arquitectura, operación y producto ├── landing/ ← Landing page (servida por GitHub Pages desde este repo) ├── packaging/ │ ├── windows/ ← Inno Setup .iss (instalador GUI) │ ├── powershell/ ← RootCause.psm1 (módulo PowerShell, 9 cmdlets) │ ├── chocolatey/ ← rootcause.nuspec + chocolateyInstall.ps1 │ └── distribution/ │ ├── scoop/ ← rootcause.json (manifest Scoop) │ └── winget/ ← rootcause.yaml (manifest Winget) ├── vscode-extension/ ← Extensión VS Code (TypeScript, status bar, alertas) │ ├── package.json │ ├── tsconfig.json │ └── src/extension.ts ├── scripts/ ← build, verify, package, wpr, etl └── src/ ├── main.rs ← entrada: despacha CLI o GUI según args + feature guards ├── cli.rs ← CLI completa (--help, status, snapshot, wpr, kill…) ├── config.rs ← configuración operativa y defaults seguros ├── meta.rs ← constantes del producto (versión, autor, links) ├── app.rs ← UI completa (tabs, sparklines, historial, filtros) ├── models.rs ← structs compartidos + incidentes + auditoría ├── bin/ │ └── rootcause-service.rs ← skeleton Windows Service └── services/ ├── ai.rs ← adaptador IA opcional por API ├── inspector.rs ← orquestador principal + get_hardware_info() ├── persistence.rs← SQLite + snapshots + incidentes + audit trail ├── rules.rs ← rule engine ligero y correlación de incidentes ├── tray.rs ← skeleton tray icon (activa con feature `tray`) ├── windows.rs ← PowerShell, WPR, toast, cmdlines ├── network.rs ← netstat + clasificación ├── temp_scan.rs ← temporales y cachés └── etl.rs ← análisis dumpfile.xml ``` ## 📚 推荐阅读路径 | 角色 | 文档 | |---|---| | 🧑‍💻 开发者 | [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) · [`docs/RUST_PARA_ROOTCAUSE.md`](docs/RUST_PARA_ROOTCAUSE.md) | | 👤 最终用户 | [`docs/MANUAL_PARA_NOVATOS.md`](docs/MANUAL_PARA_NOVATOS.md) · [`docs/OPERACION.md`](docs/OPERACION.md) | | 🏢 招聘人员 | [`docs/RECLUTADORES.md`](docs/RECLUTADORES.md) · [`docs/REPOSITORIO_ANALISIS.md`](docs/REPOSITORIO_ANALISIS.md) | | 🔬 架构 | [`docs/ARQUITECTURA_ESCALABILIDAD.md`](docs/ARQUITECTURA_ESCALABILIDAD.md) · [`docs/ARQUITECTURA_EVOLUTIVA.md`](docs/ARQUITECTURA_EVOLUTIVA.md) | | 🛡️ 演进和弹性 | [`docs/requirements/README.md`](docs/requirements/README.md) · [`docs/ROADMAP.md`](docs/ROADMAP.md) | | 📋 Release | [`docs/RELEASE_CHECKLIST.md`](docs/RELEASE_CHECKLIST.md) · [`docs/ROADMAP.md`](docs/ROADMAP.md) | | 📑 全部内容 | [`docs/INDEX.md`](docs/INDEX.md) | ## 🤖 通过 API 可选的 AI RootCause 不需要 AI 即可检测缓慢、持久化证据、进行通知或通过 CLI/GUI 运行。 最低限度的激活: ``` rootcause config init $env:ROOTCAUSE_AI_API_KEY="tu_api_key" rootcause config show rootcause ai explain-latest ``` 有效的配置存在于 `rootcause-config.json` 中。要启用 IA,您必须设置 `ai.enabled = true` 并定义 `ai.endpoint`。 如果 AI 提供商出现故障: - 捕获将继续工作 - 不会丢失警报 - 已持久化的事件将被保留 - 错误将被记录在审计中 ## 🔗 公共分发(演示) 如果您想要一个与主配置文件分开的评估公共发行版,请使用 **RootCause Demo** 作为替代的分发配置: - [`docs/DEMO_PUBLICA.md`](docs/DEMO_PUBLICA.md) - [`docs/GUIA_DE_USO_PREVIA.md`](docs/GUIA_DE_USO_PREVIA.md) - [`docs/LIMITACIONES_DEMO.md`](docs/LIMITACIONES_DEMO.md) - [`docs/POLITICA_DE_PRIVACIDAD_LOCAL.md`](docs/POLITICA_DE_PRIVACIDAD_LOCAL.md) ## ⚠️ 务实的限制说明 - 不提供预编译或已签名的二进制文件 - ETL 摘要 **无法替代 WPA** 进行精细的时间点切换或符号分析 - TEMP 扫描有目的地进行了限制;不会索引整个磁盘 - `netstat` 不等同于 IDS 或完整的网络取证 - 停止服务或进程只是权宜之计,不是通用的解决方案 ## 🗺️ 名称和品牌 **RootCause** 是本仓库当前的工作名称。建议在正式发布前评估其他替代方案。初步审查见 [`docs/NOMBRES_PRODUCTO.md`](docs/NOMBRES_PRODUCTO.md)。 ## 📄 许可证 Apache 2.0 — 见 [`LICENSE`](LICENSE) 和 [`docs/LICENCIA_Y_DECISION.md`](docs/LICENCIA_Y_DECISION.md)。 ## ✍️ 作者 Vladimir Acuña · [@vladimiracunadev-create](https://github.com/vladimiracunadev-create)
标签:AI合规, ETW, Rust, Windows 调试器, 可视化界面, 性能监控, 数字取证, 网络流量审计, 自动化脚本, 诊断工具, 通知系统