ShantanuRauthan/OriginIPResolver

GitHub: ShantanuRauthan/OriginIPResolver

一款综合利用 DNS 记录、证书透明度日志和子域名枚举等技术,自动发现隐藏在 CDN 背后真实源站 IP 的 OSINT 侦察工具。

Stars: 0 | Forks: 0

# Origin IP Resolver — OSINT 侦察工具 [![Python 3.8+](https://img.shields.io/badge/python-3.8+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) ## 目录 - [为什么需要这个工具](#why-this-tool-exists) - [工作原理 — 全方位解析](#how-it-works--the-full-breakdown) - [1. DNS 记录分析](#1-dns-record-analysis) - [2. 证书透明度日志 (crt.sh)](#2-certificate-transparency-logs-crtsh) - [3. CDN 检测与指纹识别](#3-cdn-detection--fingerprinting) - [4. 子域名枚举](#4-subdomain-enumeration) - [5. HTTP Header 分析](#5-http-header-analysis) - [6. SSL/TLS 证书分析](#6-ssltls-certificate-analysis) - [查找 Origin IP 的技术](#techniques-to-find-origin-ips) - [安装说明](#installation) - [使用说明](#usage) - [输出说明](#output-explained) - [道德与法律免责声明](#ethical--legal-disclaimer) - [参考资料](#references) ## 为什么需要这个工具 现代网站使用像 Cloudflare、Akamai 和 Fastly 这样的 **内容分发网络 (CDN)** 来保护其 origin server。CDN 充当反向代理——所有流量都会命中 CDN 的 IP,而真实的服务器 IP 则被隐藏起来。 但是,origin IP 仍然可能通过各种渠道泄露。发现它是以下操作的关键步骤: - **渗透测试** — 绕过 CDN 保护以攻击真实服务器 - **OSINT 调查** — 了解目标的网络基础设施 - **红蓝对抗** — 发现本不应公开的暴露服务 - **Bug 赏金狩猎** — 寻找配置错误并泄露 IP 的 origin 该工具可自动执行发现这些泄露的 origin IP 并收集侦察数据的过程。 ## 工作原理 — 全方位解析 ``` User Input (domain) │ ▼ ┌────────────────────────────────────────────────────────┐ │ 1. DNS Record Analysis │ │ Resolves A, AAAA, CNAME, NS, MX, TXT, PTR records │ └────────────────────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────┐ │ 2. Certificate Transparency (crt.sh) │ │ Queries public CT logs for certificates & subdomains │ └────────────────────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────┐ │ 3. CDN Detection & Fingerprinting │ │ Compares IPs against known CDN ranges & CNAMEs │ └────────────────────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────┐ │ 4. Subdomain Enumeration │ │ Probes ~100 common subdomains for non-CDN IPs │ └────────────────────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────┐ │ 5. HTTP & SSL/TLS Analysis │ │ Fetches headers, detects tech stack, parses certs │ └────────────────────────────────────────────────────────┘ │ ▼ ┌────────────────────────────────────────────────────────┐ │ Consolidated Results │ │ Origin candidates, CDN providers, subdomains, OSINT │ └────────────────────────────────────────────────────────┘ ``` ### 1. DNS 记录分析 **使用的服务:** `dnspython` 库 + 系统 resolver **查询的内容及原因:** | 记录 | 揭示的信息 | 为什么有助于查找 origin IP | |--------|----------------|------------------------------| | **A** | 域名的 IPv4 地址 | 最基础的记录;如果网站不在 CDN 后面,这就是 origin IP | | **AAAA** | IPv6 地址 | 一些管理员忘记将 IPv6 置于 CDN 之后,从而泄露了真实 IP | | **CNAME** | 规范名称 (别名目标) | 顺藤摸瓜跟踪 CNAME 链通常会揭示 CDN 提供商(例如 `.cloudflare.net`),甚至是 origin hostname | | **NS** | Nameserver | 可以揭示托管提供商;配置错误的 NS 记录有时会暴露内部基础设施 | | **MX** | 邮件交换服务器 | 邮件服务器(如 `mail.example.com`)通常不在 CDN 后面。如果它们与 Web 服务器共享一个 IP 范围,你就找到了 origin | | **TXT** | 文本记录 (SPF、DKIM 等) | 包含基础设施详细信息、第三方服务引用,有时包含内部 hostname | | **PTR** | 反向 DNS (IP → hostname) | 给定一个 IP,告诉你哪个 hostname 指向它。通常会揭示托管提供商或内部命名方案 | **为什么使用它:** DNS 是互联网的基础。每个域名都必须有 DNS 记录,而配置错误是导致 origin IP 泄露的头号原因。 ### 2. 证书透明度日志 (crt.sh) **使用的服务:** `crt.sh`(免费,无需 API 密钥) **它的作用:** 证书透明度 (CT) 是由受信任的证书颁发机构 (CA) 颁发的所有 SSL/TLS 证书的公共账本。为域名颁发的每个证书都必须记录在 CT 日志中。 **我们从中获取:** - 每个拥有 SSL 证书的子域名(甚至是内部/管理子域名!) - 嵌入在证书元数据中的 IP 地址 - 历史证书(揭示旧的基础设施) - 主体别名 (SAN) — 同一证书上的其他域名 **为什么它很强大:** 公司通常会颁发包含其所有子域名(通配符和 SAN)的证书。通过查询 CT 日志,我们可以发现公司从未打算公开的子域名——staging 服务器、dev 环境、管理面板。其中许多并不在 CDN 后面。 **示例:** 一个用于 `*.example.com` 的证书可能会将 `admin.example.com`、`staging.example.com` 和 `internal.example.com` 列为 SAN。CT 日志会返回所有这些域名,其中一些可能直接指向 origin server。 ### 3. CDN 检测与指纹识别 **使用的技术:** IP 范围比对 + CNAME 模式匹配 + HTTP header 分析 **我们检查的内容:** | 方法 | 工作原理 | 示例 | |--------|-------------|---------| | **IP 范围** | 将解析出的 IP 与已知的 CDN CIDR 范围进行比较 | `104.16.x.x` → Cloudflare | | **CNAME 模式** | 检查 CNAME 是否包含特定于 CDN 的模式 | `*.cloudfront.net` → AWS CloudFront | | **HTTP Headers** | 查找特定于 CDN 的响应头 | `cf-ray` header → Cloudflare | | **Server Header** | 解析 `Server` header 以获取 CDN 签名 | `server: cloudflare` → Cloudflare | **我们检测的 CDN 提供商:** Cloudflare、Akamai、Fastly、AWS CloudFront、StackPath、Incapsula、Sucuri、Azure CDN、Google Cloud CDN、GitHub Pages、OVH **为什么它必不可少:** 在寻找 origin IP 之前,你必须识别 CDN。你为主域名解析的所有 IP 都将是 CDN IP,而不是 origin。只有过滤掉 CDN 范围,你才能将真实的 origin IP 与代理 IP 分开。 ### 4. 子域名枚举 **使用的技术:** 使用精选词表进行 DNS 暴力破解 **我们的操作:** 我们使用大约 100 个常见的子域名前缀,并针对目标域名解析每一个前缀。如果该子域名存在且其 IP 不在 CDN 范围内,我们会将其标记为潜在的 origin。 **词表示例条目:** - `origin`、`direct`、`origin-www`、`origin-server` — origin server 的常见命名 - `mail`、`smtp`、`ftp`、`ssh`、`vpn` — 通常绕过 CDN 的服务 - `admin`、`cpanel`、`api`、`dev`、`staging`、`test`、`beta` — 开发/管理面板 - `ns1`、`dns1`、`mx1` — 基础设施子域名 **为什么它有效:** 公司将其主域名(`www.example.com`)置于 CDN 之后,但他们经常忘记对以下内容执行相同的操作: - 内部工具(`admin.example.com`、`jenkins.example.com`) - 开发服务器(`dev.example.com`、`staging.example.com`) - API endpoint(`api.example.com`) - 遗留基础设施(`www2.example.com`、`old.example.com`) 这些“被遗忘”的子域名通常直接解析为 origin IP。 **高级理论:** 即使在 CDN IP 后面找到了 origin IP,origin IP 也可能在不同的端口上做出响应。子域名枚举与端口扫描(未来的增强功能)相结合,可以揭示直接暴露在互联网上的 SSH、RDP 或数据库等服务。 ### 5. HTTP Header 分析 **使用的服务:** `requests` 库 (Python) **我们提取的内容:** | Header/字段 | 揭示的信息 | |-------------|-----------------| | `Server` | Web 服务器软件 (nginx、Apache、IIS 等) | | `X-Powered-By` | 编程语言 / 框架 | | `Set-Cookie` | Session cookie 揭示了后端技术 (PHPSESSID → PHP, JSESSIONID → Java, ASPSESSIONID → ASP.NET) | | `CF-Ray` | 确认 Cloudflare | | `X-Amz-Cf-Id` | 确认 AWS CloudFront | | `X-Served-By` | 通常揭示 Fastly 节点名称 | | `X-Cache` | 缓存状态 (HIT/MISS) 揭示 CDN 行为 | **为什么它很重要:** 技术指纹识别有助于: - 识别操作系统和 Web 服务器 - 查找具有已知漏洞的过时软件版本 - 了解托管架构(共享托管、专用服务器、云) ### 6. SSL/TLS 证书分析 **使用的服务:** `pyOpenSSL` 库 **我们提取的内容:** | 字段 | 揭示的信息 | |-------|-----------------| | **Subject CN** | Common Name — 颁发证书所针对的主域名 | | **Issuer** | 证书颁发机构 (Let's Encrypt、DigiCert 等) — 可以揭示证书管理实践 | | **Validity period** | NotBefore / NotAfter — 证书颁发和过期的时间 | | **Subject Alternative Names (SANs)** | 此证书涵盖的所有域名 — 用于发现相关域名和子域名的宝库 | | **Signature algorithm** | 加密强度 (SHA256-RSA、ECDSA 等) | | **Serial number** | 唯一标识符 — 可用于证书指纹识别 | **为什么它很重要:** 证书中的 SAN 通常会揭示基础设施域名,如 `internal.example.com`、`admin-api.example.com` 或 `origin-www.example.com`。如果你发现一个证书同时将 `www.example.com` 和 `origin.example.com` 作为 SAN,那么 origin server 很可能位于 `origin.example.com`。 ## 安装说明 ``` git clone https://github.com/yourusername/OriginIPResolver.git cd OriginIPResolver python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt ``` **要求:** Python 3.8+, `pip` **依赖项:** - `requests` — 用于 crt.sh 和 header 抓取的 HTTP 请求 - `dnspython` — DNS 记录解析 (A, AAAA, CNAME, MX, NS, TXT, PTR) - `pyOpenSSL` — SSL 证书解析和分析 ## 使用说明 ``` # 基础扫描 python main.py example.com # 使用所有技术的完整扫描(默认) python main.py example.com --verbose # 跳过子域名枚举(更快,不够详尽) python main.py example.com --no-subenum # 跳过 certificate transparency 查询 python main.py example.com --no-crtsh # 跳过 SSL certificate 分析 python main.py example.com --no-ssl # JSON 输出(用于程序化处理) python main.py example.com --json -o results.json # 保存输出到文件 python main.py example.com -o scan_results.txt ``` ## 输出说明 输出分为以下几个部分: ``` ====================================================================== ORIGIN IP RESOLVER - OSINT RECONNAISSANCE TOOL ====================================================================== Target: example.com ====================================================================== [!] CDN DETECTED: -> Cloudflare ◄── The CDN protecting this domain [+] CNAME CHAIN: ├─ www.example.com ◄── Our target └─ example.cloudflare.net ◄── CDN origin CNAME (not real origin) [+] DNS RECORDS: A: - 104.16.x.x ◄── Cloudflare proxy IPs MX: - mail.example.com ◄── Mail server (could share IP with origin) [!] POTENTIAL ORIGIN IPs (Non-CDN): IP: 203.0.113.5 (mail.example.com) Source: subdomain_enumeration:mail.example.com | Confidence: HIGH ◄── Found via subdomain enumeration! ◄── This is NOT behind Cloudflare ◄── Likely the origin IP range [!] CNAME-Only Resolutions (No Direct IP): staging.example.com -> internal-lb.example.com ◄── Reveals internal hostname [+] DISCOVERED SUBDOMAINS: api.example.com -> IPs: 104.16.x.x dev.example.com -> IPs: 198.51.100.10 ◄── dev.example.com bypasses CDN! mail.example.com -> IPs: 203.0.113.5 [+] SSL/TLS CERTIFICATE: SANs: www.example.com, api.example.com, admin.example.com ◄── Revealed by CT logs [+] TECHNOLOGY FINGERPRINT: - Server: nginx/1.24.0 ◄── Web server & version - X-Powered-By: PHP/8.2 ◄── Backend technology ``` ## 道德与法律免责声明 **此工具仅用于授权的安全测试和教育目的。** - 仅扫描你拥有或获得明确书面测试许可的域名 - 未经授权的扫描可能违反计算机欺诈法律(美国的 CFAA、英国的 CMA 等) - 公共 CT 日志仅包含公开颁发的证书数据 — 不含任何隐私信息 - DNS 解析是一项标准的互联网功能,对任何域名都是合法的 - 作者不对滥用此工具的行为负责 **负责任的披露:** 如果你发现 origin IP 泄露,请通过其负责任的披露计划或安全联系方式报告给域名所有者。 ## 参考资料 - [证书透明度 (RFC 6962)](https://datatracker.ietf.org/doc/html/rfc6962) - [crt.sh — 证书搜索](https://crt.sh/) - [Cloudflare IP 范围](https://www.cloudflare.com/ips/) - [AWS CloudFront IP 范围](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/LocationsOfEdgeServers.html) - [Fastly 公开访问的 IP 范围](https://api.fastly.com/public-ip-list) - [Akamai IP 范围](https://techdocs.akamai.com/cloud-security/docs/akamai-edge-ips) - [OWASP — 枚举子域名](https://owasp.org/www-community/attacks/Subdomain_enumeration) - [dnspython 文档](https://dnspython.readthedocs.io/) - [pyOpenSSL 文档](https://www.pyopenssl.org/) ## 许可证 MIT 许可证 — 有关详细信息,请参阅 [LICENSE](LICENSE)。
标签:ESC4, GitHub, OSINT, Python, 实时处理, 无后门, 网络安全, 逆向工具, 隐私保护