santhreal/truestack

GitHub: santhreal/truestack

一个注重安全的 Rust Web 技术指纹识别库,通过标头分析、行为探测和 backport 感知检测目标真实技术栈与安全状况。

Stars: 0 | Forks: 1

# truestack [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/39faa54be350a1dab8afd3b2fb8c1c83e4d9cff84abfef2374d19a18053687c4.svg)](https://github.com/santhreal/truestack/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Crates.io](https://img.shields.io/crates/v/truestack)](https://crates.io/crates/truestack) [![status: alpha](https://img.shields.io/badge/status-alpha-orange.svg)](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库, 可视化界面, 安全标头检测, 实时处理, 漏洞评估, 通知系统