santhreal/truestack
GitHub: santhreal/truestack
一个注重安全的 Rust Web 技术指纹识别库,通过标头分析、行为探测和 backport 感知检测目标真实技术栈与安全状况。
Stars: 0 | Forks: 1
# truestack
[](https://github.com/santhreal/truestack/actions/workflows/ci.yml) [](https://opensource.org/licenses/MIT) [](https://crates.io/crates/truestack) [](https://santh.dev)
## 功能简介
`truestack` 是一个注重安全的 Web 服务器技术指纹识别库。与仅报告版本字符串声明的传统指纹识别工具不同,`truestack` 旨在确定目标的**真实**安全状况——包括对向后移植补丁的检测、行为差异探测以及 CVE 关联分析。
核心功能:
- **基于 TOML 的规则引擎** - 通过 HTTP 标头、响应正文和 cookie 进行基于信号的检测。规则易于扩展。
- **安全标头审计** - 检查 HSTS、CSP、X-Frame-Options 等。包含深度的 CSP 绕过分析(涵盖 15 个已知的绕过域名)。
- **Favicon 哈希计算** - 兼容 Shodan 的 MurmurHash3,用于跨服务跳转 (`http.favicon.hash:{value}`)。
- **版本提取** - 解析 `Server`、`X-Powered-By` 及其他标头,提取 semver 风格的版本字符串。
- **Backport 情报分析** - 检测 Debian/Ubuntu/RHEL 发行版上下文,并使用可靠性评级标注版本字符串,从而确保 CVE 关联的准确性。
- **零配置核心** - 指纹识别直接处理原始的 `&[(K, V)]` 和 `&str` 运行,无需特定的 HTTP 客户端。
## 快速开始
添加到 `Cargo.toml`:
```
[dependencies]
truestack = "0.2"
```
检测技术并审计标头:
```
use truestack::fingerprints;
use truestack::security_headers;
fn main() {
let headers = vec![
("Server".to_string(), "nginx/1.21.0".to_string()),
("X-Powered-By".to_string(), "Express".to_string()),
];
let body = "__NEXT_DATA__";
let techs = fingerprints::detect(&headers, body);
for tech in &techs {
println!("Found: {} (version: {:?})", tech.name, tech.version);
}
let findings = security_headers::audit(&headers);
for f in &findings {
println!("[{}] {}", f.severity().as_str(), f.title());
}
}
```
安装 CLI:
```
cargo install --path .
truestack https://example.com --favicon --format json
truestack https://example.com --rules-dir ./my-rules/
```
可选的 `fetch` feature 通过 `reqwest` 启用了 `truestack::favicon::fetch_hash`。
## 适用场景 / 不适用场景
**在以下场景使用 truestack:**
- 在安全评估或红蓝对抗中,需要对处于运行状态的 Web 目标进行指纹识别。
- 希望在一次扫描中,同时获得技术检测与安全标头(HSTS、CSP 绕过、点击劫持)的检测结果。
- 需要兼容 Shodan 的 favicon 哈希进行跳转查询。
- 运行在 Debian/Ubuntu/RHEL 目标上,需要具备向后移植感知能力的 CVE 关联,而不是简单的版本匹配。
**在以下场景不要使用 truestack:**
- 需要进行被动的流量分析 - truestack 是面向请求/响应的。
- 需要完全兼容 Wappalyzer 并使用浏览器 DOM - truestack 处理的是原始 HTTP,而不是渲染后的页面。
- 针对 非 HTTP 服务的场景。
## 与同类工具的对比
| 工具 | 后端 | 支持 Backport 感知 | 安全标头 | Favicon 哈希 | 可嵌入式库 |
|---|---|---|---|---|---|
| **truestack** | 原始 HTTP (Rust) | 是 | 是 (15 个绕过域名) | 是 (Shodan MurmurHash3) | 是 |
| Wappalyzer | Browser / Node.js | 否 | 否 | 否 | 仅限 Node.js |
| WhatWeb | Ruby CLI | 否 | 部分 | 否 | 否 |
| Nmap scripts | Nmap NSE | 否 | 否 | 否 | 否 |
truestack 是唯一一个库优先的方案,提供了卓越的向后移植检测和 CSP 绕过分析功能。
## 在 Santh 中的作用
在 Santh 安全研究平台中,`truestack` 作为技术指纹识别层运行:
- **输入**:由 Santh 的爬虫收集或通过扫描 pipeline 传入的原始 HTTP 响应数据(标头 + 正文)。
- **输出**:供 CVE 关联和风险评分模块使用的 `Vec`;以及流入统一发现存储的 `Vec`(来自 `secfinding`)。
- `waf` 模块连接到 `wafrift-detect`,从而在一次扫描中与框架检测结果一起展示 WAF 的存在状态。
- 在发现结果送达报告渲染器之前,`version_intel::assess_headers` 会对置信度进行标注。
## 贡献指南
1. Fork 仓库并创建功能分支。
2. 为任何新规则或行为添加测试 - 预期所有类别(`tests/unit.rs`、`tests/adversarial.rs`、`tests/property.rs`、`tests/gap.rs`、`tests/integration.rs`)的测试都必须保持通过(绿色)。
3. 新的指纹识别规则需放入 `src/rules.toml` 中,并遵循现有的 TOML schema。
4. 在提交 PR 之前运行 `cargo +nightly test -p truestack` 和 `cargo clippy`。
5. 描述你用于检测该技术的信号,并引用相关的公开参考资料。
## 许可证
MIT - 见 [LICENSE-MIT](LICENSE-MIT)。同时基于 Apache 2.0 双重许可 - 见 [LICENSE-APACHE](LICENSE-APACHE)。
标签:AES-256, Favicon哈希, Python安全, Rust库, 可视化界面, 安全标头检测, 实时处理, 漏洞评估, 通知系统