qaxwdx/windows-trust-analyzer
GitHub: qaxwdx/windows-trust-analyzer
一款本地 Windows 权限提升路径静态分析工具,通过分析服务 ACL 构建信任关系图,以置信度评分和修复建议报告提权路径,核心设计理念是严格的误报控制。
Stars: 0 | Forks: 0
# Windows Trust Analyzer (WTA)
一款本地 Windows 信任路径分析工具。WTA 模拟了低权限主体如何影响更高权限服务所使用的代码,并以包含置信度评分和可解释修复建议的形式,报告由此产生的权限提升路径。
以标准用户身份运行时,WTA 会枚举本地计算机上的服务,遍历每个服务的二进制文件、父目录和注册表键的 ACL,并报告当前运行用户可用于提升至更高权限身份(例如 `NT AUTHORITY\SYSTEM`)的任何路径。
WTA 的核心理念是:**严格的误报控制**。每项发现都会声明其验证的完整程度。当工具无法确认某个发现的前置条件时,它会降低置信度而不是报告一个猜测,或者完全抑制该发现。其目标是生成操作人员可以直接采取行动的输出结果,而无需手动逐一抽查每项发现。
## 快速开始
从最新版本下载 `wta.exe`,并在 PowerShell 或命令提示符中运行:
```
wta scan
```
就是这么简单。WTA 不需要安装程序、不需要配置、也不需要命令行参数。输出将以结构化的易读格式发送到 stdout。
要获取机器可读的输出:
```
wta scan --format=json
wta scan --format=compact
```
JSON 输出符合 RFC-8259 标准,且可直接通过管道处理(适合通过管道传递给 `ConvertFrom-Json`、`jq` 或 SIEM 摄取系统)。紧凑格式为每项发现输出一行(适合使用 `grep` 或日志聚合器处理)。
## 系统要求
- Windows 10 / Windows 11 (x64)
- .NET Framework 4.8(所有当前 Windows 版本均已预装)
- 无需管理员权限
WTA 是只读的。它不会修改任何文件、注册表键、服务或 ACL。它也不会利用所发现的漏洞——仅作报告。
## 子命令
```
wta scan Run the full pipeline: collect services, build the trust
graph, find escalation paths, render report.
wta self-check Show the current principal's identity, integrity level,
privileges, and group memberships, plus any first-pass
findings (UAC latent admin, SeImpersonate surface, etc.).
wta version Print the tool version.
wta help Print top-level help. `wta help ` shows
detailed help for a specific subcommand.
```
所有子命令均接受 `--format=human|json|compact` 参数。默认值为 `human`。
## 工作原理
WTA 运行一个包含六个步骤的流水线:
1. **自检。** 识别当前主体的 SID、完整性级别、令牌权限和组成员身份。计算权限分数并生成初步发现。
2. **服务收集。** 从 `HKLM\SYSTEM\CurrentControlSet\Services` 枚举所有服务。对于每个服务,解析其二进制文件路径(处理未加引号的路径、svchost 托管的服务、环境变量),并读取二进制文件、父目录和服务注册表键的 DACL 和 SACL。
3. **图构建。** 在内存中构建一个图,其中节点是主体(用户、组、服务账户),边表示“主体 X 可以写入主体 Y 消耗的资源”。每条边都带有证明其合理性的 ACE 证据。
4. **路径查找。** 从当前主体开始执行广度优先搜索(BFS),最多查找四跳,以寻找能够到达更高权限主体的路径。路径通过最终跳签名进行去重,并按 `置信度区间 → 跳数 → 终端分数` 进行排序。
5. **报告组装。** 将自检发现、图、路径和盲点数据合并为一个单独的 `Report` 对象。
6. **格式化。** 通过三种格式化器(human、JSON、compact)之一渲染报告。
## 置信度级别
每项发现都包含一个置信度级别。该级别反映了工具能够验证路径前置条件的完整程度:
- **高。** DACL 授予了访问权限,且 SACL 可读,并且没有强制完整性标签阻止该访问。属于完全验证的发现。
- **中。** DACL 授予了访问权限,但存在一个较小的未确定因素(例如,无法完全解析的拒绝 ACE,或引擎无法完美处理的 ACE 形态)。通常为真实发现;在依赖它之前请进行验证。
- **低。** DACL 授予了访问权限,但 SACL 无法读取,因此无法验证是否存在强制完整性标签。大多数文件没有此类标签,但工具承认不确定性,而不是进行猜测。
以管理员身份(拥有 `SeSecurityPrivilege`)运行 WTA,可以使其读取 SACL,并在相同的访问路径上生成置信度更高的发现。
## 范围
WTA 检测**代码影响**类的权限提升:即运行用户拥有写入权限(通过二进制文件的 DACL、父目录的 DACL 或服务注册表键的 DACL 的任意组合)的场景,该权限允许替换或修改特权服务将要执行的代码。
当前的边推断在决定是否存在发现时,会综合考虑所有这三个访问路径,并使用授予权限的具体证据来报告每个发现。该工具目前在单一的 `CodeInfluence` 边类型下发出发现;未来的版本会将这些拆分为不同的边类型(direct-binary-write、parent-directory-drop、registry-image-path-rewrite),以反映它们不同的可利用性特征。
以下是当前**未检测**的内容:
- 配置文件影响(特权二进制文件读取用户可写的配置文件)
- DLL 搜索路径劫持
- 计划任务、WMI 订阅或登录脚本作为消费者
- COM 服务器注册接管
- 服务 DLL 链(会读取注册表键,但加载的 DLL 文件及其父目录尚未作为单独的边类型)
- 内核模式驱动程序路径
- 命名管道或 RPC 端点劫持
- 域级别提升(请使用 BloodHound 进行 AD 分析)
WTA 仅限本地主机。它不扫描远程计算机。
## 输出格式
### 人类可读 (Human)(默认)
80 列宽的结构化纯文本。各个部分均有清晰的分隔。每个权限提升路径都包括源主体和目标主体、使该路径成为可能的资源、ACE 证据、理由和修复命令。盲点(工具无法完全分析的资源)会从原始条目(在真实机器上通常有数千个)浓缩为大约 8 个精选类别。
### JSON
符合 RFC-8259 标准,带有模式版本控制(`"schema": "wta/v1"` 作为第一个键)。可直接通过管道处理:没有调试标头,无附带写入 stdout 的操作,错误重定向至 stderr。适合直接导入到 PowerShell (`ConvertFrom-Json`)、`jq` 或 SIEM 平台。
### 紧凑格式 (Compact)
每个权限提升路径占一行,以置信度和跳数为前缀。适合使用 `grep`、`awk` 或日志聚合工具处理。
## 从源代码构建
WTA 是一个 .NET Framework 4.8 / C# 7.3 项目。要构建:
```
git clone https://github.com/qaxwdx/windows-trust-analyzer
cd windows-trust-analyzer
dotnet build
```
运行测试套件:
```
dotnet test
```
该项目包含 7 个测试项目,涵盖访问检查引擎、图构建器、路径查找器、输出格式化器和 CLI 参数解析器。
## 设计理念
WTA 围绕严格的**误报策略**构建:当工具无法完全验证某项发现的前置条件时,它会降低置信度或完全抑制该发现。其原则在于,一个承认不确定性的诚实工具,要比一个产生大量噪音的自信工具更有用——操作人员最终会信任那些不会“狼来了”的输出结果。
访问检查引擎直接反映了这一点。Yes / No / Unknown 决策被单独跟踪,而不是被合并为简单的“易受攻击 / 不易受攻击”二元结论。每个 Yes 都记录了其证据链(匹配了哪个 ACE、SACL 是否可读、是否可见强制完整性标签、主体的 SID 是否顺利解析)。每个 No 或 Unknown 都记录了具体原因。每项发现上的置信度级别,正是这些簿记信息向操作人员可见的输出结果传播的体现。
## 许可证
MIT。详见 `LICENSE`。
## 安全
如果 WTA 报告了您的计算机上存在第三方软件的权限提升,应通过该软件供应商的负责任披露流程向其报告。
要报告 WTA 本身的安全问题,请发起一个 GitHub issue。
标签:ACL分析, Claude, Conpot, CVE检测, Linux安全, MITER ATT&CK, .NET Framework, Windows安全, 云安全监控, 信任路径分析, 协议分析, 安全合规, 服务安全, 本地提权, 权限提升, 流量嗅探, 特权账户, 系统加固, 网络代理, 访问控制列表, 静态分析