Jorgy762/osint-domain-recon

GitHub: Jorgy762/osint-domain-recon

一款自动化域名侦察 CLI 工具,通过整合 RDAP、DNS、邮件认证审计与 HTTP 探测,帮助用户在单次运行中完成全面的域名信息收集与安全配置检查。

Stars: 0 | Forks: 0

# OSINT 域名侦察工具 [![测试](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/bf296b625d033923.svg)](https://github.com/Jorgy762/osint-domain-recon/actions/workflows/test.yml) 一个基于 Python 的命令行工具,用于自动化域名侦察。给定目标域名后,它将通过 RDAP 获取注册数据,枚举 DNS 记录,对 SaaS 服务验证 token 进行分类,审计电子邮件身份验证(SPF、DMARC、DKIM、BIMI),并探测 HTTP/HTTPS 可用性。所有操作一次运行完成,并支持导出纯文本报告。 本项目作为学习项目开发,旨在将 IT/系统管理员知识与实用的网络安全工具衔接起来。 ## 功能 - 通过 DNS 查询解析 IP 地址 - 通过 RDAP 获取注册数据(对于尚未运行 RDAP 服务器的 TLD,提供旧版 WHOIS 回退支持) - DNS 记录枚举(A、AAAA、MX、NS、TXT、CNAME、SOA) - 对 30 多种 SaaS 提供商(Microsoft 365、Google Workspace、Meta、Atlassian、Adobe、DocuSign、Stripe、AWS SES 等)进行服务验证 token 分类 - 电子邮件身份验证审计: - SPF 解析,针对 RFC 7208 规定的 10 次 DNS 查询限制计算递归查询次数 - SPF 无效查询跟踪,针对 RFC 7208 规定的 2 次限制 - DMARC 标签解析,并标记策略执行情况 - 探测 29 个常见 selector 的 DKIM,并明确说明其局限性 - BIMI 查询 - HTTP/HTTPS 状态探测(状态码、server header、重定向跟踪) - 域名输入验证(整洁地拒绝格式错误的输入) - RDAP bootstrap 数据在磁盘上缓存 7 天,以避免重复请求 IANA - 使用 `-o` 可选导出纯文本报告 ## 环境要求 - Python 3.10 或更高版本 - 运行时依赖(通过 `pip install -e .` 自动安装): - `whoisit` (RDAP) - `python-whois` (旧版 WHOIS 回退) - `dnspython` (DNS 解析) - `requests` (HTTP 探测) ## 安装 克隆仓库并以可编辑模式安装: ``` git clone https://github.com/Jorgy762/osint-domain-recon.git cd osint-domain-recon python -m venv .venv source .venv/Scripts/activate # Linux/macOS: source .venv/bin/activate pip install -e . ``` `-e` 标志(可编辑安装)意味着对源文件的修改将立即生效,无需重新安装。安装完成后,在激活的 venv 中,您的 PATH 下即可使用 `osint-recon` 命令。 如需同时安装开发依赖(用于运行测试套件的 pytest): ``` pip install -e .[dev] ``` ## 测试 测试套件涵盖了纯逻辑辅助工具:域名验证、SPF 解析、DMARC 解析、服务 token 分类、日期时间格式化和报告部分编写。测试不需要网络访问,可在不到一秒钟内完成。 要运行测试,请安装开发依赖并调用 pytest: ``` pip install -e .[dev] pytest ``` 预期输出: ``` ============================== 67 passed in 0.17s ============================== ``` ## 开发 本项目使用 [ruff](https://docs.astral.sh/ruff/) 进行代码检查和 import 排序。配置位于 `pyproject.toml` 中的 `[tool.ruff]` 下。 运行 linter: ``` ruff check . ``` 在可能的情况下自动修复问题: ``` ruff check --fix . ``` GitHub Actions 会在每次推送到 `main` 分支以及每次 pull request 时,针对 Python 3.10、3.11、3.12 和 3.13 运行 ruff 和 pytest。工作流定义位于 `.github/workflows/test.yml`。此 README 顶部的状态徽章反映了最近一次 CI 运行的结果。 ## 使用方法 可以通过两种方式调用该工具。两者产生相同的输出。 ### 作为控制台命令(推荐) ``` osint-recon example.com osint-recon example.com -o report.txt osint-recon example.com --no-http osint-recon example.com --no-email-security ``` ### 作为 Python 模块 ``` python -m osint_recon example.com python -m osint_recon example.com -o report.txt ``` ### 标志 | 标志 | 用途 | |------|---------| | `-o FILE`, `--output FILE` | 将报告保存为纯文本文件 | | `--no-http` | 跳过 HTTP/HTTPS 探测 | | `--no-email-security` | 跳过电子邮件身份验证审计 (SPF/DMARC/DKIM/BIMI) | ## 输出示例 ``` +==============================================+ | OSINT Domain Recon Tool | | github.com/Jorgy762 | | For authorized use only | +==============================================+ [*] Target : example.com [*] Started: 2026-05-31 22:53:29 [*] Resolving IP Address... [+] IP Address : 93.184.216.34 [*] Looking up registration data (RDAP)... [+] Source: RDAP [+] Registrar: ICANN [+] Creation Date: 1995-08-14 04:00:00 [+] Expiration Date: 2025-08-13 04:00:00 [+] Name Servers: a.iana-servers.net, b.iana-servers.net [+] DNSSEC: signedDelegation [*] Enumerating DNS Records... [+] A Records: - 93.184.216.34 [+] MX Records: - 0 . [+] NS Records: - a.iana-servers.net. - b.iana-servers.net. [+] TXT Records: - "v=spf1 -all" [*] Service Verifications (TXT-token fingerprints): [+] Microsoft 365 / Azure AD tenant (token: ms) [*] Auditing Email Security... [+] SPF: v=spf1 -all Policy on `all` : -all (HARD FAIL, recommended) DNS lookups (chain) : 0 / 10 (RFC 7208 limit) Void lookups : 0 / 2 (RFC 7208 limit) [+] DMARC: v=DMARC1; p=reject; pct=100; rua=mailto:reports@example.com Policy : p=reject [*] Probing 29 common DKIM selectors... [+] DKIM selector 'selector1' found: v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0... [-] No BIMI record at default._bimi.example.com [*] Checking HTTP/HTTPS Status... [+] HTTP Status: 200 | Server: ECS | Final URL: https://www.example.com/ [*] Scan complete: 2026-05-31 22:53:33 [*] Remember: only run this tool against domains you own or have permission to test. ``` ## 项目结构 ``` osint-domain-recon/ ├── src/ │ └── osint_recon/ │ ├── __init__.py # Package metadata, version lookup │ ├── __main__.py # Entry point for python -m osint_recon │ ├── cli.py # Argparse, dependency check, main coordinator │ ├── constants.py # Regex, lookup tables, RFC 7208 limits │ ├── utils.py # Display helpers (_format_value, _print_fields) │ ├── validation.py # Domain input validation, startup banner │ ├── registration.py # RDAP lookup with WHOIS fallback │ ├── dns_enum.py # IP resolution, DNS records, service token classifier │ ├── email_security.py # SPF, DMARC, DKIM, BIMI auditors │ ├── http_probe.py # HTTP/HTTPS availability checks │ └── reporting.py # Plaintext report writer ├── tests/ # Pytest test suite (added in v0.3.0) ├── pyproject.toml # Package definition (PEP 621) ├── CHANGELOG.md # Version history (Keep a Changelog format) ├── README.md # This file └── .gitignore ``` 查看 [CHANGELOG.md](CHANGELOG.md) 了解完整的版本历史。 ## 设计原则 - **仅限授权使用。** 该工具和所有文档都明确说明了这一点。 - **优雅的错误处理。** 每个网络调用都包含在 try/except 中,并输出有意义的提示。 - **对局限性保持坦诚。** DKIM 探测明确说明“未找到”意味着“在常见 selector 中未找到”,而不是“DKIM 不存在”。任何假装能提供其无法交付的绝对事实的工具,都比承认自身局限性的工具更糟糕。 - **CLI 优先。** 没有 GUI,没有 Web 界面。保持为一个纯粹的命令行工具。 - **注释详尽。** 代码不仅应该让经验丰富的开发者读懂,更应该让学习 Python 的人也能读懂。 - **模块化结构。** 每个扫描阶段都位于自己的 module 中,使得该工具在扩展时具有可测试性和可维护性。 ## 路线图 未来可能的新增功能: - [ ] 覆盖纯逻辑辅助工具的 Pytest 测试套件(计划在 v0.3.0 中推出) - [ ] 子域名枚举(wordlist 结合证书透明度日志查询) - [ ] SSL/TLS 证书检查(过期时间、颁发者、SAN、密码信息) - [ ] 集成 Shodan API 获取开放端口数据 - [ ] JSON 报告导出选项 - [ ] Banner 抓取 ## 免责声明 本工具仅供教育目的和授权侦察使用。仅对您拥有或获得明确书面测试许可的域名运行此工具。未经授权的使用可能会违反相关法律,包括《加拿大刑法典》(第 342.1 条)及其他司法管辖区的同等法规。 ## 作者 **Jorgy762** | [GitHub](https://github.com/Jorgy762) 认证:ISC2 Certified in Cybersecurity | Certified Zero Trust Practitioner | Certified Threat & Malware Analysis | Fortinet Certified Associate in Cybersecurity | OSINT Certificate (WithYouWithMe) | CSA Trusted AI Safety Expert | Microsoft AZ-900 Azure Fundamentals
标签:DNS解析, GitHub, Python, 域名侦察, 安全规则引擎, 实时处理, 开源项目, 无后门, 逆向工具, 邮件安全审计