UnsleptArch/SilentBobWatches

GitHub: UnsleptArch/SilentBobWatches

Rust 编写的 Intel AMT/ISM 管理接口被动发现与只读漏洞确认工具,帮助安全团队在已授权网络中安全地评估 AMT 暴露面和已知漏洞状态。

Stars: 0 | Forks: 0

# silentbobwatches 一款防御性安全评估工具,用于在您已获授权评估的网络中发现、进行指纹识别以及对 Intel AMT / ISM 管理接口进行取证评分。默认情况下,发现过程是被动的;漏洞确认是可选的、只读的,并需经过授权同意。 专为速度(异步、并发、单一静态二进制文件)而构建,并诚实地对待仅凭网络无法得知的信息。 ## 此工具的功能 **被动发现(默认,未经身份验证):** - 通过 HTTP (16992)、HTTPS (16993)、重定向通道(16994/16995,SOL/IDE-R — 仅连接以确认存在,绝不解析 HTTP)以及 ASF/RMCP 存在性 ping(UDP 623/664)查找 AMT/ISM 接口。 - 收集协议证据:HTTP 状态/标头/Digest realm/页面标题,完整的 TLS 证书细节(主题、颁发者、有效期、SAN、密码套件、自签名启发式检测),以及 ASF/RMCP OEM IANA 企业数据。 - 报告存在性、未经身份验证的暴露情况、TLS 卫生状况,以及一份诚实的“适用建议 — 请进行身份验证以确认”参考。如果没有经过身份验证的固件版本,受版本限制的建议将保持为 `Insufficient`;该工具绝不会从页面文本中抓取版本进行猜测。 **主动确认(可选,只读):** - `--active` 运行 CVE-2017-5689 身份验证绕过检查:带有空响应哈希的 Digest 请求。对受保护的 GET 请求返回 `200` 即确认存在绕过(`Confirmed`);返回 `401` 则表明已修补(`NotPresent`)。只读 — 不会写入任何内容。 - 使用 `--amt-user`/`--amt-pass`(或一个可用的绕过会话),它会通过 WS-Management(`CIM_SoftwareIdentity`)读取固件版本,并针对*真实*版本运行建议表。这能确定性地解决内存损坏建议(INTEL-SA-00295、CVE-2020-8758、INTEL-SA-00391)— 得出 `Confirmed` 或 `NotPresent` — **而无需发送任何格式错误的数据包。** 证据状态:**Confirmed**(观察到绕过,或经过身份验证的版本处于受影响范围内),**NotPresent**(已修补 / 不在范围内),**Insufficient**(检测到存在,但没有可用的经过身份验证的版本)。 ## 此工具特意不做的事情 - **不进行内存损坏利用。** OOB-read / buffer 建议是通过经过身份验证的版本比较来确认的,绝不是通过触发它们来确认 — 没有安全的方法去触发这些漏洞而不冒固件/主机崩溃的风险,所以该工具不这样做。 - **不进行凭据猜测**,不进行默认密码喷射。 - **不更改状态。** 每次主动检查都是一次读取(一个 GET 请求,一次 WS-Man 枚举)。它永远不会对设备进行上电、重启、重新配置或预配置。主动检查会对设备进行身份验证,因此它们仅在显式的 `--active`/凭据标志 **以及** 一次性的同意提示之后运行。 ## 构建 需要稳定的 Rust 工具链(edition 2021)。 ``` cargo build --release ./target/release/silentbobwatches --help ``` 或者使用内置的安装程序,它会构建一个 release 二进制文件并将其安装到 `/usr/local/bin`(或退而求其次安装在 `~/.local/bin`): ``` ./install.sh ``` ## 用法 ``` silentbobwatches [OPTIONS] ``` `` 接受单个 IP/主机名、CIDR(`10.0.0.0/24`)、逗号分隔的列表、最后一部分八位字节范围(`10.0.0.10-20`)或文件(`@targets.txt`,每行一个)。 常用标志: | 标志 | 含义 | |---|---| | `--ports` | 逗号分隔的端口(默认为 `16992,16993,16994,16995,623,664`) | | `--concurrency` | 最大并发探测数(默认为 200) | | `--connect-timeout` / `--read-timeout` / `--host-timeout` | 超时时间(以秒为单位,默认为 3 / 5 / 12) | | `--active` | 启用只读的 CVE-2017-5689 绕过检查(需经过同意) | | `--amt-user` / `--amt-pass` | 用于 WS-Man 版本读取的 AMT 凭据(或 `AMT_USER` / `AMT_PASS` 环境变量) | | `--yes` | 跳过交互式同意提示(适用于已获授权、脚本化运行) | | `-v` / `-vv` / `-vvv` | 实时详细程度(最终报告始终包含完整细节) | | `--quiet` | 抑制实时输出信息;依然会打印完整的最终报告 | | `--log-dir` / `--json ` | 证据文件夹 / 额外的 JSON 副本 | | `--no-color` | 禁用 ANSI 颜色 | ### 示例 ``` # 针对 /24 上的标准端口进行 AMT 的 Passive sweep silentbobwatches 10.20.0.0/24 # Passive discovery 加上只读的 2017-5689 确认(提示征求同意) silentbobwatches 10.20.0.0/24 --active # 针对 memory-corruption advisories 的 Authenticated version resolution AMT_USER=admin AMT_PASS=... silentbobwatches 10.20.0.5 --active --yes ``` ## 输出 每次运行都会创建或更新 `SilentBobWatchesLogs/`,其中包含机器可读的 `scan_.json` 和人类可读的 `scan_.log`,并且始终将完整报告打印到终端。 ## CVE 数据来源 `src/cve_db.rs` 中的建议表来源于 Intel 的 Security Center 建议(在每个条目中均有链接),为了保持其小巧且可审计,而非一味求全。当 Intel 更新建议时,请同步更新它。 ## 许可证 GPLv3 或更高版本。请参阅 `LICENSE`。 ## 道德 / 授权使用 仅用于评估您拥有或明确获得授权进行测试的系统。主动检查会对设备进行身份验证 — 仅将它们指向您已被授权评估的主机。无论该工具的作用如何,未经授权进行扫描或身份验证均可能是违法的;该责任由操作者承担。
标签:Intel AMT, Rust, 主机安全, 反取证, 可视化界面, 安全评估, 底层编程, 异步并发, 插件系统, 网络安全扫描, 网络流量审计, 通知系统