JMarchiori13/osint-recon

GitHub: JMarchiori13/osint-recon

一个纯被动的 Rust OSINT 侦察框架,为授权红队演练提供子域名、DNS、技术指纹等信息收集能力,且不涉及任何主动扫描行为。

Stars: 0 | Forks: 0

# osint-recon **用于授权红队对抗演练的 Rust 被动 OSINT 侦察框架。** [![MITRE ATT&CK TA0043](https://img.shields.io/badge/MITRE%20ATT%26CK-TA0043%20Reconnaissance-red)](https://attack.mitre.org/tactics/TA0043/) [![Rust](https://img.shields.io/badge/rust-1.95%2B-orange?logo=rust)](https://www.rust-lang.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) ## 概述 `osint-recon` 自动化了 MITRE ATT&CK 侦察(TA0043)的**被动**部分:证书透明度、DNS-over-HTTPS、无需密钥的公开聚合器,以及对已公开页面的普通 GET 请求。它刻意**不包含任何主动功能** —— 没有端口扫描,没有目录或子域名暴力破解,没有凭证测试。 每个模块共享一个带有严格速率限制(默认 1 req/s)、user-agent 轮换、超时和有限次重试的单一 HTTP 客户端;每个外部调用都会平滑失败(警告并继续),结果可导出为 JSON 和 CSV。 ## 功能 - 🔎 从证书透明度 和 DNS 历史聚合器 获取**子域名枚举** —— 无需密钥,被动获取 - 🌐 通过 DNS-over-HTTPS (dns.google) 获取 **DNS 记录**(A, AAAA, MX, NS, TXT),无需触碰目标的域名服务器 - 🧬 从响应头、meta generator 标签和 CMS/框架特征中进行**技术指纹识别** - 📧 从组织自身发布的页面中**收集邮箱**,标记为仅供授权的钓鱼模拟规划使用 - 📄 从公开链接的文档中**提取 PDF 元数据**(作者、创建工具、日期) - 📤 **JSON + CSV 导出**及格式化的控制台表格输出 - 🐢 **设计上保持礼貌**:1 req/s 限速,UA 轮换,超时控制,重试机制,限制页面/PDF 数量上限 ## 安装说明 ### 从源码构建 ``` git clone https://github.com/JMarchiori13/osint-recon.git cd osint-recon cargo build --release # 二进制文件位于 ./target/release/osint-recon ``` ### 安装到 Cargo 的 bin 目录 ``` cargo install --path . osint-recon --help ``` 需要 Rust 1.95+(更早的稳定版工具链可能也能运行;仅测试过 1.95)。 ## 使用方法 ``` # 被动子域名枚举 (CT logs + DNS history) osint-recon subdomain example.com # 通过 DNS-over-HTTPS 获取 DNS records osint-recon dns example.com # Technology fingerprinting (headers + HTML signatures) osint-recon tech example.com # 目标自身页面发布的 Email addresses (仅供授权使用) osint-recon email example.com # 公开链接的 PDFs 中的 Metadata osint-recon metadata example.com # 一次性执行所有任务并导出 osint-recon full example.com --json output/full.json osint-recon dns example.com --csv output/dns.csv ``` 全局选项: | 选项 | 默认值 | 描述 | |--------|---------|-------------| | `--rate ` | `1.0` | 礼貌速率限制(requests/second) | | `--timeout ` | `15` | 单次请求超时(秒) | | `--retries ` | `2` | 首次尝试后的单次请求重试次数 | | `--json ` | — | 将结果导出为 JSON | | `--csv ` | — | 将结果导出为 CSV(单模块运行时可用) | | `-q, --quiet` | — | 隐藏授权横幅 | ## 模块与 ATT&CK 映射 | 模块 | 来源 | ATT&CK(仅限被动) | |--------|---------|------------------------| | `subdomain` | crt.sh, hackertarget hostsearch | T1590.001 — Domain Properties | | `dns` | dns.google DoH JSON API | T1590.002 — DNS | | `tech` | 主页响应头 + HTML 特征 | T1592.002 — Software | | `email` | 公开页面(有限的链接跟随) | T1589.002 — Email Addresses, T1593.002 | | `metadata` | 公开链接的 PDF (lopdf Info dict) | T1593.002 — Search Open Websites/Domains | 有关各模块的输出字段和限制,请参阅 [docs/modules.md](docs/modules.md);有关完整的方法论和 OPSEC 注意事项,请参阅 [docs/methodology.md](docs/methodology.md)。安全实践目标记录在 [docs/lab.md](docs/lab.md) 中。 ## 可视化图表

ATT&CK technique coverage — Recon (TA0043)

Passive data sources per module

Roadmap status

## 路线图 - [ ] ASN 与 netblock 枚举(被动获取,通过公开的 BGP/RIR 数据) - [ ] 证书透明度历史记录与即将过期证书监控 - [ ] GitHub dorking 模块(代码搜索聚合器,尽可能无需密钥) - [ ] Shodan API 集成(基于密钥的被动主机档案) ## 项目结构 ``` osint-recon/ ├── Cargo.toml ├── src/ │ ├── main.rs # clap CLI: subdomain/dns/tech/email/metadata/full │ ├── http.rs # shared client: UA rotation, timeout, retry, 1 req/s throttle │ ├── output.rs # JSON + CSV export, formatted console tables │ └── modules/ │ ├── mod.rs │ ├── subdomains.rs # crt.sh + hackertarget (keyless passive sources) │ ├── dns_records.rs # DNS-over-HTTPS via dns.google (A/AAAA/MX/NS/TXT) │ ├── tech_fingerprint.rs # headers + meta generator + CMS/framework signatures │ ├── emails.rs # regex harvest from the domain's public pages │ └── doc_metadata.rs # public PDF links → Info-dict metadata via lopdf ├── docs/ │ ├── methodology.md # passive recon methodology, ATT&CK mapping, OPSEC │ ├── modules.md # per-module sources, output fields, limitations │ └── lab.md # safe testing targets and lab setup ├── tests/ │ └── cli.rs # network-free CLI integration tests ├── CONTRIBUTING.md ├── LICENSE # MIT + research-use notice └── README.md ``` ## 开发说明 ``` cargo fmt --check cargo clippy --all-targets cargo test --release cargo build --release ``` 欢迎贡献 —— 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。**仅限被动范围的原则是不可商量的**:添加扫描、暴力破解或凭证测试的 PR 将被拒绝。 ## 许可证 [MIT](LICENSE) © 2026 JMarchiori13 —— 请参阅 LICENSE 文件中的研究用途声明及上述免责声明。
标签:ESC4, GitHub, OSINT, Rust, 可视化界面, 安全工具库, 实时处理, 网络安全, 网络流量审计, 被动侦察, 通知系统, 隐私保护