ShantanuRauthan/OriginIPResolver
GitHub: ShantanuRauthan/OriginIPResolver
一款综合利用 DNS 记录、证书透明度日志和子域名枚举等技术,自动发现隐藏在 CDN 背后真实源站 IP 的 OSINT 侦察工具。
Stars: 0 | Forks: 0
# Origin IP Resolver — OSINT 侦察工具
[](https://www.python.org/downloads/)
[](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, 实时处理, 无后门, 网络安全, 逆向工具, 隐私保护