tkMONK/Reconx
GitHub: tkMONK/Reconx
Go 编写的单二进制域名侦察工具,一次运行聚合 DNS、WHOIS、子域名、SSL/TLS、邮件安全、Web 指纹、Geo-IP 及历史 URL 等多维信息并输出结构化 JSON 报告。
Stars: 0 | Forks: 0
# ReconX v1.0
ReconX 是一个单二进制域侦察工具,它将 DNS 记录、WHOIS 数据、子域枚举、SSL/TLS 分析、电子邮件安全状况、Web 技术指纹识别、Geo-IP/ASN 查询以及 Wayback Machine 历史记录聚合成结构化的 JSON 报告 —— 只需运行一次即可完成。
## 功能
| 模块 | 类型 | 描述 |
|---|---|---|
| DNS 侦察 | 被动 | 查询 A、AAAA、NS、MX、TXT、SOA、CNAME、SRV、CAA、PTR、HINFO 记录 |
| WHOIS 查询 | 被动 | 跟随 IANA 重定向至权威注册商 WHOIS 服务器 |
| 区域传送检查 | 主动 | 尝试对每个发现的 NS 记录进行 AXFR |
| 子域枚举 | 被动 + 主动 | 并发查询 10 个来源(见下文) |
| SSL/TLS 分析 | 被动 | 证书详情、SAN、密码套件、协议版本、过期警告 |
| 电子邮件安全侦察 | 被动 | SPF、DMARC、DKIM(常见选择器)、BIMI、MX 安全备注 |
| Web 技术发现 | 主动 | HTTP 头部、安全头部审计(分数/6)、技术指纹识别、robots.txt、sitemap.xml |
| Geo-IP 和 ASN 查询 | 被动 | 通过 ip-api.com / ipapi.co 查询国家、地区、城市、ISP、组织、ASN |
| Wayback Machine URL | 被动 | 从 CDX API 检索多达 200 个历史 URL |
### 子域来源
crt.sh · SecurityTrails · HackerTarget · RapidDNS · AlienVault OTX · CertSpotter · AnubisDB · C99 · Wayback URLs · BufferOver
所有来源均通过 goroutines 并发运行,并在导出前对结果进行去重处理。
### 安全头部审计
ReconX 根据六个关键头部对目标进行评分,并返回满分 6 分的得分:
- `Strict-Transport-Security`
- `Content-Security-Policy`
- `X-Content-Type-Options`
- `X-Frame-Options`
- `Referrer-Policy`
- `Permissions-Policy`
## 安装
### 前置条件
- Go 1.21 或更高版本
### 从源码构建
```
git clone https://github.com/tkMONK/Reconx.git
cd Reconx
go mod init Reconx
go mod tidy
go build -o reconx main.go
```
## 使用方法
```
./reconx [flag]
```
### 参数标志
| 标志 | 默认值 | 描述 |
|---|---|---|
| `-h --help` | | ./reconx 的用法 |
| `-d ` | _(交互提示)_ | 目标域名,例如 `example.com` |
| `-o ` | `recon_results/_.json` | 自定义 JSON 输出路径 |
| `-passive` | `false` | 跳过主动模块(区域传送和 Web 侦察) |
| `-json-only` | `false` | 抑制所有终端输出;仅写入 JSON |
| `-version` | — | 打印版本并退出 |
### 示例
```
# Interactive (提示输入 domain)
./reconx
# Full scan
./reconx -d example.com
# Passive only (无 active probing)
./reconx -d example.com -passive
# CI/pipeline 用法 — 静默、结构化 output
./reconx -d example.com -json-only -o ./results/example.json
# 打印 version
./reconx -version
```
如果省略了 `-d`,ReconX 将以交互方式提示。URL 方案(`https://`、`http://`)和末尾的斜杠会被自动去除。域名会根据基本的正则表达式进行验证;格式异常会产生警告,但不会中止扫描。
## 输出
ReconX 将两个文件写入 `recon_results/` 目录(如不存在则会创建):
| 文件 | 内容 |
|---|---|
| `_.json` | 完整的结构化报告(所有模块) |
| `_subdomains.txt` | 唯一子域的平面列表,每行一个 |
### JSON Schema(顶层字段)
```
{
"target": "example.com",
"timestamp": "2025-08-01 12:00:00",
"dns_records": [...],
"whois": "...",
"zone_transfers": [...],
"subdomains": [...],
"all_subdomains_unique": [...],
"ssl_info": { ... },
"geoip": { ... },
"web_info": { ... },
"email_recon": { ... },
"wayback_urls": [...]
}
```
使用 `-passive` 运行时,`zone_transfers` 和 `web_info` 将被省略。
## 架构
```
main()
├── runDNSRecon() → []DNSRecord
├── runWHOIS() → string
├── runEmailRecon() → *EmailRecon
├── runSSLRecon() → *SSLInfo
├── runGeoIP() → *GeoIPInfo
├── runWayback() → []string
├── runSubdomainEnum() → []SubdomainSource (10 goroutines, concurrent)
├── runZoneTransfers() → []ZoneTransferResult [active only]
├── runWebRecon() → *WebInfo [active only]
└── exportJSON() + exportSubdomainsTxt()
```
HTTP 客户端在所有模块间共享。它使用 15 秒超时,跳过 TLS 验证(对于配置错误的目标是故意为之),将响应主体限制为 5 MB,并且不会盲目跟随超过 5 次重定向。
DNS 查询使用系统解析器(`/etc/resolv.conf`),当其不可用时回退到 Google(`8.8.8.8`)和 Cloudflare(`1.1.1.1`)的 53 端口,每次查询的超时时间为 5 秒。
## 道德与法律声明
ReconX 旨在用于**授权的安全评估、漏洞赏金计划,以及对您拥有或获得明确测试权限的基础设施的研究**。
- 区域传送尝试(AXFR)是主动探测 —— 它们会向名称服务器发送数据包。
- Web 侦察会从目标获取实时的 HTTP 响应。
- 在扫描第三方系统之前,请务必获得书面授权。
如果您需要较低影响的模式,`-passive` 标志会将 ReconX 限制为仅针对公共 API 和 DNS 解析器进行纯粹的被动、只读查询。
## 许可证
MIT —— 详见 `LICENSE`。
标签:CDX API, DKIM, DMARC, DNS解析, GitHub, Go语言, HTTP指纹识别, JSON格式输出, SPF, SSL/TLS分析, Wayback Machine, WHOIS查询, 二进制发布, 协议探测, 反汇编, 域名侦察, 子域名枚举, 开源工具, 开源项目, 日志审计, 程序破解, 系统安全, 网络安全, 邮箱安全, 隐私保护, 黑盒测试