arkanzasfeziii/Spectre
GitHub: arkanzasfeziii/Spectre
Spectre 是一款将证书透明度、DNS、WHOIS、基础设施指纹等多源被动情报整合为结构化目标画像的 OSINT 侦察框架,解决红队演练初期侦察阶段数据分散、缺乏关联的问题。
Stars: 0 | Forks: 0
# Spectre — OSINT 与被动侦察框架
## 威胁模型
侦察失败不是技术问题,而是操作问题。组织通过被动渠道泄露的信息远超大多数防御者的认知:证书透明度日志会发布内部子域名,DNS 记录会泄露邮件基础设施和云服务提供商,WHOIS 会暴露组织结构,而 robots.txt 则公开宣扬了管理员想要隐藏的路径。
Spectre 对那些在向网络发送任何数据包之前就构建完整目标画像的攻击者进行了建模:
| 阶段 | 失败之处 | 对手行动 |
|---|---|---|
| **证书透明度** | 内部子域名(dev、staging、internal、uat)发布在 CT 日志中 | 查询 crt.sh 获取所有已颁发的证书——提取揭示内部基础设施名称的 SAN |
| **DNS 情报** | SPF/DMARC 配置错误或缺失;允许区域传送;DKIM 选择器可枚举 | 枚举所有 DNS 记录类型;识别用于欺骗的邮件身份验证漏洞;尝试 AXFR |
| **WHOIS 暴露** | 未启用域名隐私;注册人姓名、电子邮件和组织可见 | 提取注册人身份、组织名称、注册时间线以及关联的电子邮件地址 |
| **电子邮件模式泄露** | 可预测的电子邮件命名约定;邮件服务器启用了 SMTP VRFY | 从域名构建电子邮件模式;通过 SMTP 验证地址;构建钓鱼目标列表 |
| **robots.txt 泄露** | Disallow 指令中列出了敏感路径(管理面板、API endpoint、配置文件) | 解析 robots.txt 以获取组织明确标记为敏感的路径——将其视为目标目录 |
| **基础设施指纹** | HTTP 响应中暴露了 Server 标头、技术栈和 favicon 哈希 | 对 Web 服务器、框架和 CDN 进行指纹识别;计算 favicon 哈希以便与 Shodan 进行交叉引用 |
**范围:** 授权的红队演练,目的是量化组织的被动暴露面——即对手在任何主动利用开始之前所能获取的信息。
## 为什么存在
侦察是攻击性演练中最常被跳过的阶段。操作人员直接跳到扫描和利用阶段,因为侦察感觉缓慢,其输出显得零散,而且现有的工具无法将这些发现串联成可操作的目标画像。
“我有一个域名”与“我拥有一份完整的子域名、电子邮件模式、DNS 配置错误、证书暴露、技术栈和组织结构图”之间的差距,正是区分嘈杂扫描与定向行动的关键所在:
- 证书透明度日志是公开的。为域名颁发的每一份证书——包括诸如 `staging.internal.corp.example.com` 等内部子域名——都会被永久记录并可供查询
- DNS 记录不仅仅是路由数据。SPF、DMARC 和 DKIM 记录揭示了邮件基础设施和身份验证姿态。缺失 DMARC 记录意味着该域名可以毫不费力地被伪造
- 没有隐私保护的 WHOIS 会暴露注册人的身份、组织,通常还有个人电子邮件——这足以构建一个借口场景
- robots.txt 是由防御者绘制的地图。每一个 `Disallow` 条目都是组织认为足够敏感而需要向爬虫隐藏的路径——这也足以引起攻击者的调查兴趣
- HTTP 响应标头和 favicon 哈希是被动指纹。只需一次带有 favicon 哈希的 Shodan 查询,就能揭示全球运行相同应用程序的每一台服务器
Spectre 将这些被动来源串联起来。通过 crt.sh 找到的子域名会输入到 DNS 枚举中。DNS 记录可识别邮件服务器,进而输入到电子邮件验证中。WHOIS 数据丰富了组织足迹。其输出不是一份原始发现列表,而是一个结构化的侦察包。
## 功能
### 子域名枚举 (`scan`)
- **证书透明度** — 查询 crt.sh 获取为目标域名颁发的所有证书;从证书 Name Value 字段和 SAN 中提取唯一子域名
- **DNS 暴力破解** — 针对目标域名解析约 100 个常见子域名前缀(www、mail、api、vpn、dev、staging、admin、portal、sso、auth、ci、grafana、jenkins 等)
- **泛解析检测** — 解析随机的 16 字符子域名以检测泛解析 DNS;从暴力破解结果中排除泛解析 IP 以消除误报
- **IP 解析** — 通过 `socket.getaddrinfo` 将所有发现的子域名解析为其 IPv4 地址;支持可配置 worker 数量的多线程解析
- **攻击面评分** — 将暴露子域名超过 20 个的域名标记为高危(攻击面大)
### 邮件收集 (`email`)
- **MX 记录查找** — 通过解析 MX 记录验证域名是否接收邮件;识别邮件服务器主机名和提供商
- **基于角色的地址生成** — 生成 25 个常见的角色地址(info@、admin@、support@、hr@、security@、abuse@、postmaster@ 等)
- **邮件模式检测** — 构建 8 种企业电子邮件命名模式({first}.{last}@、{f}{last}@、{first}_{last}@ 等),以便与员工名单结合使用
- **SMTP VRFY 验证** — 连接到主 MX 主机的 25 端口;尝试对每个角色地址执行 SMTP VRFY;将确认地址的服务器标记为高危
- **泄露数据库 URL** — 为 HaveIBeenPwned、DeHashed、IntelX 和 Leak-Lookup 构建查询 URL,用于手动进行全域泄露检查
- **Hunter.io 集成** — 构建 Hunter.io 域名查询 URL,用于验证邮件模式
### DNS 情报 (`dns`)
- **全记录枚举** — 查询目标域名的 A、AAAA、MX、NS、TXT、SOA、CNAME、SRV、PTR 记录
- **SPF 分析** — 解析 SPF TXT 记录;提取 `include:` 机制和 `ip4:` 指令;将 `+all`(全部通过——无保护)、`~all`(软失败)和 `?all`(中立)标记为配置错误
- **DMARC 检查** — 查询 `_dmarc.{domain}` TXT 记录;提取策略;将 `p=none` 标记为高危(接受伪造邮件)
- **DKIM 暴力破解** — 针对 `{selector}._domainkey.{domain}` 枚举 20 多个常见 DKIM 选择器(default、google、selector1、selector2、k1、mandrill、sendgrid、amazonses 等)
- **DNS 提供商识别** — 将 NS 记录映射到已知提供商(Cloudflare、Route 53、Azure DNS、Google Cloud DNS、GoDaddy、Namecheap 等)
- **区域传送尝试** — 针对所有域名服务器尝试 AXFR;如果任何域名服务器允许传送,则报告完整的区域内容
### 证书透明度与 SSL (`cert`)
- **crt.sh 枚举** — 查询证书透明度日志,获取为 `%.{domain}` 颁发的所有证书;返回颁发者、有效期和 SAN 条目
- **实时证书检查** — 连接到 443 端口;从提供的证书中提取主题、颁发者、有效期、序列号和所有 SAN
- **颁发者识别** — 分类证书颁发者(Let's Encrypt、DigiCert、Comodo、Sectigo、GoDaddy、Amazon、Google Trust、Cloudflare、ZeroSSL)
- **过期监控** — 标记已过期或在 30 天内即将过期的证书
- **泛解析检测** — 识别 SAN 中的泛域名证书(`*.example.com`)
- **内部 SAN 暴露** — 将包含内部指标(internal、corp、intranet、staging、dev、test、uat)的 SAN 标记为高危信息泄露
- **TLS 版本检测** — 测试 TLS 1.0、1.1、1.2 和 1.3 支持;将过时的版本(1.0、1.1)标记为降级攻击向量
### 基础设施指纹识别 (`search`)
- **HTTP 标头指纹识别** — 从 HTTP 响应中提取 Server、X-Powered-By、X-Generator、X-AspNet-Version、X-Runtime 标头
- **技术检测** — 扫描响应正文和标头以查找 22 种技术签名:WordPress、Drupal、Joomla、Laravel、Django、React、Angular、Vue.js、Next.js、ASP.NET、Spring、Express、Nginx、Apache、Cloudflare、AWS S3、Varnish、IIS、Tomcat、GraphQL、Swagger
- **robots.txt 分析** — 解析 Disallow 指令;标记敏感路径(admin、api、config、backup、internal、.env、.git、phpmyadmin、console、dashboard)
- **sitemap.xml 解析** — 提取所有 `` URL,以揭示站点结构和内容组织方式
- **安全标头审计** — 检查 10 个安全标头(CSP、HSTS、X-Frame-Options、X-Content-Type-Options、X-XSS-Protection、Referrer-Policy、Permissions-Policy、COOP、CORP、COEP);按严重程度缩放标记缺失的标头
- **Favicon 哈希计算** — 计算 favicon.ico 的 MD5 和 MurmurHash3;输出兼容 Shodan 的 `http.favicon.hash:{hash}` 查询以便交叉引用
- **端口扫描** — 通过 TCP connect 检查 9 个常见端口(21、22、25、80、443、3306、5432、8080、8443);支持多线程扫描
### 组织足迹 (`social`)
- **WHOIS 查询** — 提取注册商、创建日期、到期日期、域名服务器、组织、注册人姓名和联系电子邮件;将未受保护的注册人数据标记为高危
- **社交媒体画像** — 根据域名构建 LinkedIn、Twitter/X、GitHub、Facebook、Instagram 和 Crunchbase 的个人资料 URL
- **GitHub 组织枚举** — 查询 GitHub API 获取组织资料、公共仓库数量、热门仓库及所使用的编程语言
- **页面元数据提取** — 从域名索引页面提取 HTML 标题、meta description、Open Graph 标签和 generator meta 标签
- **Google dork 生成** — 生成 17 个有针对性的 dork 查询:`site:`、`inurl:admin`、`inurl:login`、`filetype:pdf/xlsx/docx/conf/env/log/sql/bak/xml`、`intitle:"index of"`、`intext:"password"`
## 架构
```
Target Domain(s)
│
▼
EngagementContext
┌──────────────────────────────────────────┐
│ targets · threads · timeout · delay │
│ subdomains · emails · dns_records │
│ certificates · technologies · whois │
└──────────────────────────────────────────┘
│
├──────────────┬──────────────┐
▼ ▼ ▼
SubdomainModule EmailModule DNSIntelModule
crt.sh + brute MX + VRFY A/MX/NS/TXT/SOA
wildcard detect patterns SPF/DMARC/DKIM
│ │ zone transfer
│ │ │
├──────────────┼──────────────┤
▼ ▼ ▼
CertModule SearchModule SocialModule
CT logs + SSL HTTP headers WHOIS lookup
SAN extraction tech detect GitHub enum
TLS versions robots.txt Google dorks
issuer ID favicon hash metadata
port scan social URLs
│ │ │
└──────────────┴──────────────┘
│
▼
JSON Report
(domain · module · severity)
```
## 攻击流程
1. **目标获取** — 通过 `--domain` 指定单个域名,或通过 `--targets` 指定一个列表;Spectre 将所有输入转为小写并验证格式
2. **子域名枚举** — 检测泛解析 DNS 以避免误报;查询 crt.sh 证书透明度获取所有已颁发的证书;暴力破解约 100 个常见子域名前缀;将所有发现的子域名解析为 IP 地址
3. **邮件侦察** — 通过 MX 查找确认域名是否接收邮件;生成基于角色和基于模式的地址;尝试针对主邮件服务器进行 SMTP VRFY 验证;构建泄露数据库查询 URL
4. **DNS 情报** — 枚举所有标准记录类型;分析 SPF 配置以评估电子邮件伪造的可行性;检查 DMARC 策略执行级别;暴力破解 DKIM 选择器;识别 DNS 提供商;针对所有域名服务器尝试区域传送
5. **证书分析** — 查询透明度日志获取历史证书;检查实时 SSL 证书的 SAN、颁发者和有效期;检测通过 SAN 泄露的内部子域名名称;测试过时的 TLS 版本
6. **基础设施指纹识别** — 提取服务器和技术标头;从响应内容中检测框架和 CDN;解析 robots.txt 以获取敏感路径;计算 favicon 哈希以便与 Shodan 交叉引用;审计安全标头;扫描常见端口
7. **组织足迹** — 通过 WHOIS 查找获取注册人和注册数据;枚举 GitHub 组织的仓库和语言;提取页面元数据和 Open Graph 标签;生成有针对性的 Google dork 查询
8. **报告** — 使用 `--output recon.json` 生成包含每个模块的结构化发现、严重性评级和域名级别摘要的报告
## 用法
```
# 安装依赖
pip install -r requirements.txt
# 枚举单个域名的 subdomains
python spectre.py --domain example.com --modules scan
# 完整侦察链
python spectre.py --domain example.com --modules all --output recon.json
# DNS intelligence + certificate 分析
python spectre.py --domain example.com --modules dns cert
# Email harvesting + organization footprinting
python spectre.py --domain example.com --modules email social
# 从文件中获取多个域名
python spectre.py --targets domains.txt --modules all --output findings.json
# Stealth mode — 请求更慢,线程更少
python spectre.py --domain example.com --modules all --stealth --yes
# 带自定义线程数的 non-interactive
python spectre.py --domain example.com --modules all --yes --threads 20 --timeout 15
# 仅进行 Infrastructure fingerprinting
python spectre.py --domain example.com --modules search
```
## 输出
```
___ _
/ __| _ __ ___ __ | |_ _ _ ___
\__ \ | '_ \ / -_)/ _|| _|| '_|/ -_)
|___/ | .__/ \___|\__| \__||_| \___|
|_|
Spectre Framework v1.0.0
Author: arkanzasfeziii
OSINT & Passive Reconnaissance
09:14:01 [INFO] Targets: megacorp.com
09:14:01 [INFO] Running module: SCAN
──────────────────────────────────────────────────
09:14:01 [INFO] [Subdomain] Starting enumeration for megacorp.com
09:14:01 [WARN] [Subdomain] Wildcard DNS detected for *.megacorp.com → 104.18.22.1
09:14:03 [OK] [Subdomain] crt.sh returned 47 subdomains
09:14:05 [OK] [Subdomain] Brute-force found 23 live subdomains
09:14:06 [OK] [Subdomain] Total unique subdomains for megacorp.com: 58
09:14:06 [INFO] vpn.megacorp.com → 10.0.44.2
09:14:06 [INFO] staging.internal.megacorp.com → 10.0.12.8
09:14:06 [INFO] jenkins.megacorp.com → 34.102.55.12
09:14:06 [INFO] grafana.megacorp.com → 34.102.55.13
09:14:06 [INFO] Running module: EMAIL
──────────────────────────────────────────────────
09:14:06 [OK] [Email] MX records found: mx1.mailprovider.com, mx2.mailprovider.com
09:14:07 [INFO] [Email] Generated 25 role-based addresses
09:14:08 [CRIT] [Email] SMTP VRFY confirmed 3 addresses
09:14:08 [INFO] Running module: DNS
──────────────────────────────────────────────────
09:14:08 [OK] [DNS] A: 104.18.22.1, 104.18.23.1
09:14:08 [OK] [DNS] MX: 10 mx1.mailprovider.com., 20 mx2.mailprovider.com.
09:14:08 [OK] [DNS] NS: ns1.cloudflare.com., ns2.cloudflare.com.
09:14:09 [OK] [DNS] TXT: "v=spf1 include:mailprovider.com ~all"
09:14:09 [WARN] [DNS] SPF uses ~all (softfail) — spoofed mail may be delivered
09:14:09 [CRIT] [DNS] No DMARC record — domain has no spoofing policy
09:14:10 [OK] [DNS] DKIM selector found: google → v=DKIM1; k=rsa; p=MIIBIjAN...
09:14:10 [INFO] [DNS] DNS provider: Cloudflare
09:14:10 [INFO] [DNS] Zone transfer denied by all nameservers (expected)
09:14:10 [INFO] Running module: CERT
──────────────────────────────────────────────────
09:14:11 [OK] [Cert] crt.sh returned 84 certificates
09:14:12 [OK] [Cert] Issuer: Let's Encrypt
09:14:12 [INFO] [Cert] Expires: 2026-09-14
09:14:12 [OK] [Cert] SANs (6): megacorp.com, www.megacorp.com, api.megacorp.com,
staging.megacorp.com, internal.megacorp.com, dev.megacorp.com
09:14:12 [CRIT] [Cert] Internal subdomains in SANs: staging.megacorp.com, internal.megacorp.com, dev.megacorp.com
09:14:13 [OK] [Cert] TLS versions supported: TLSv1.2, TLSv1.3
09:14:13 [INFO] Running module: SEARCH
──────────────────────────────────────────────────
09:14:14 [OK] [Search] Server: cloudflare
09:14:14 [OK] [Search] Technology detected: Cloudflare
09:14:14 [OK] [Search] Technology detected: React
09:14:14 [OK] [Search] Technology detected: Next.js
09:14:15 [OK] [Search] robots.txt: 8 disallowed paths
09:14:15 [CRIT] [Search] Sensitive paths in robots.txt: /admin, /api/internal, /.env
09:14:15 [WARN] [Search] Missing security headers (4): Content-Security-Policy,
X-Frame-Options, Permissions-Policy, Cross-Origin-Opener-Policy
09:14:16 [OK] [Search] Favicon hash: Shodan query → http.favicon.hash:-1274016831
09:14:16 [OK] [Search] Open ports on 104.18.22.1: 22, 80, 443, 8080
09:14:16 [INFO] Running module: SOCIAL
──────────────────────────────────────────────────
09:14:17 [OK] [Social] Registrar: Namecheap, Inc.
09:14:17 [INFO] [Social] Domain created: 2019-03-14
09:14:17 [INFO] [Social] Domain expires: 2027-03-14
09:14:17 [CRIT] [Social] Registrant: John Smith (WHOIS not privacy-protected)
09:14:18 [OK] [Social] GitHub org found: megacorp — 34 public repos
09:14:18 [INFO] [Social] Languages: Python, TypeScript, Go, Rust
09:14:18 [OK] [Social] Generated 17 Google dork queries for megacorp.com
═══════════════════════════════════════════════════════
SPECTRE RECONNAISSANCE RESULTS
═══════════════════════════════════════════════════════
Targets: megacorp.com
Total: 31 | Success: 29 | Critical: 5 | High: 3
[+] [subdomain] crtsh_enum [INFO]
47 subdomains from certificate transparency
[+] [subdomain] brute_force [INFO]
23 subdomains via DNS brute-force
[+] [subdomain] large_surface [HIGH]
Large attack surface: 58 subdomains exposed
[+] [email] smtp_vrfy [HIGH]
SMTP VRFY enabled — 3 addresses verified
[+] [dns] spf_analysis [MEDIUM]
SPF: v=spf1 include:mailprovider.com ~all | Issues: softfail
[+] [dns] dmarc_check [CRITICAL]
No DMARC record — no email authentication policy
[+] [cert] internal_sans [HIGH]
Internal subdomains exposed via certificate SANs
[+] [search] robots_sensitive [HIGH]
Sensitive paths exposed in robots.txt: /admin, /api/internal, /.env
[+] [social] whois_registrant [HIGH]
WHOIS registrant not privacy-protected: John Smith
── megacorp.com Summary ──
Subdomains: 58
Email addresses: 25
Technologies: Cloudflare, React, Next.js
[+] Results saved → recon.json
```
## MITRE ATT&CK 覆盖范围
| 技术 | ID | 模块 | 描述 |
|---|---|---|---|
| 收集受害者身份信息 | T1589 | EmailModule, SocialModule | 电子邮件地址、员工姓名、组织角色 |
| 收集受害者网络信息 | T1590 | SubdomainModule, DNSIntelModule | 子域名、DNS 记录、IP 范围、邮件服务器 |
| 收集受害者组织信息 | T1591 | SocialModule | WHOIS 注册人、业务、组织结构 |
| 收集受害者主机信息 | T1592 | SearchModule, CertModule | 服务器软件、客户端配置、固件版本 |
| 搜索开放网站/域名 | T1593 | SocialModule, SearchModule | 社交媒体资料、公开代码库、元数据 |
| 搜索开放技术数据库 | T1596 | CertModule, DNSIntelModule | 证书透明度日志、DNS 数据库、WHOIS |
**战术:** TA0043 侦察
## 涉及的 CWE 覆盖范围
| CWE | 描述 | 情境 |
|---|---|---|
| CWE-200 | 将敏感信息暴露给未经授权的参与者 | 证书 SAN 泄露内部子域名;WHOIS 注册人暴露;服务器标头泄露技术栈 |
| CWE-538 | 将敏感信息插入外部可访问的文件或目录中 | robots.txt 暴露敏感路径;sitemap.xml 揭示站点结构;Disallow 列表中包含 .env 文件 |
| CWE-16 | 配置 | 缺失 SPF/DMARC/DKIM 记录导致邮件伪造;缺少安全标头;启用了过时的 TLS 版本 |
## 法律声明
Spectre 专为已获得资产所有者明确书面授权的授权渗透测试和安全评估活动而设计。未经事先授权针对域名或组织进行未经授权的侦察是非法的,可能违反多个司法管辖区的计算机欺诈法规。作者对任何滥用行为不承担责任。
标签:ESC4, GitHub, OSINT, 多语言支持, 子域名枚举, 安全工具库, 安全测试框架, 实时处理, 情报收集, 漏洞研究, 系统安全, 被动侦察, 进程管理, 逆向工具