AlexanderMycroft/WhoisOSINT
GitHub: AlexanderMycroft/WhoisOSINT
这是一个集成多源数据的域名 OSINT 工具,通过自动化收集和聚类分析支持安全调查与关联发现。
Stars: 21 | Forks: 5
# WhoisOSINT
用于通过 WHOIS、DNS、HTTP、TLS、追踪器和 GeoIP 数据丰富域名信息的命令行工具,外加一个基于共享指标对域名进行聚类的报告工具。
## 功能特性
- 通过 `python-whois` 进行 WHOIS 信息丰富并捕获原始文本
- DNS 记录收集(A, AAAA, CNAME, MX, NS, TXT, SOA)
- 对解析后的 IP 进行反向 DNS 查询
- HTTP 探测,包含重定向历史、头部信息、服务器类型、内容类型和页面标题
- TLS 证书摘要(主体、颁发者、SAN、有效期)
- 检测 HTML 和链接的 JS 中的追踪器(YM, GA, GA4, GTM, Google Ads, Facebook Pixel)
- 使用 `ip-api.com` 获取每个 IP 的 GeoIP 元数据(国家、城市、ASN、ISP)
- 生成 Markdown 报告,突出域名之间的潜在关联
## 数据源
- WHOIS: `python-whois`
- DNS: 通过 `dnspython` 使用系统解析器
- HTTP/TLS: `requests` + `ssl` 套接字
- GeoIP: `http://ip-api.com/json/`
## 环境要求
- Python 3.x
- 依赖项在 `requirements.txt` 中列出
安装:
```
pip3 install -r requirements.txt
```
## 快速开始
从 TXT 文件丰富域名信息并输出 XLSX:
```
python3 whois_enricher.py domains.txt -o whois_results.xlsx
```
从 XLSX 生成关联报告:
```
python3 generate_domain_affiliation_report.py --input whois_results.xlsx --output domain_affiliation_report.md
```
## 使用说明
### whois_enricher增强工具.py
```
python3 whois_enricher.py INPUT.txt [options]
```
选项:
```
-o, --output Output XLSX file (default: whois_results.xlsx)
-w, --workers Number of worker threads (default: 5)
-d, --delay Global delay between WHOIS queries in seconds (default: 1.0)
-t, --timeout WHOIS timeout in seconds (default: 25.0)
--dns-timeout DNS timeout in seconds (default: 8.0)
--http-timeout HTTP timeout in seconds (default: 12.0)
--geo-timeout GeoIP timeout in seconds (default: 6.0)
--geo-delay Delay between GeoIP lookups in seconds (default: 1.0)
--user-agent User-Agent for HTTP probing
--trackers-max-js Max JS files to scan for trackers (default: 12)
--trackers-max-bytes Max bytes to read per JS file (default: 262144)
-v, --verbose Verbose logging
```
输入格式(TXT):
```
google.com
facebook.com
amazon.com
```
输出列(XLSX):
- `domain_input`, `domain`, `ok`, `error`, `query_time`, `elapsed_seconds`
- 来自 `python-whois` 的 `whois_*` 字段
- `whois_raw`(原始 WHOIS 文本,如果可用)
- `dns_*` 记录和 `dns_*_error` 字段
- `ip_list`, `reverse_dns`, `geoip`
- `http_*` 字段(状态、头部、最终 URL、标题等)
- `tls_*` 字段(主体、颁发者、SAN、日期、版本)
- `trackers_*` 字段包含检测到的追踪器 ID
日志记录:
- 在工作目录下写入 `whois_enricher.log` 文件。
### generate_domain_affiliation报告生成工具.py
构建一个 Markdown 报告,使用共享的 WHOIS/DNS/HTTP/TLS/追踪器信号对域名进行聚类。报告避免显示原始 WHOIS 文本和直接 PII。
```
python3 generate_domain_affiliation_report.py --input INPUT.xlsx --output OUTPUT.md
```
默认值:
- 输入:`whois_sites_full.xlsx`
- 输出:`domain_affiliation_report.md`
## 性能与调优
- 使用 `--delay` 和降低 `--workers` 来避免 WHOIS 速率限制。
- 为较慢的解析器或端点增加超时时间。
- 追踪器提取受 `--trackers-max-js` 和 `--trackers-max-bytes` 限制。
## 注意事项与局限性
- WHOIS 数据因顶级域名和注册商而异。某些记录被编辑或缺失。
- CDN/DDoS 防护通常会掩盖原始 IP。共享的 IP/ASN 可能表示一个共同的提供商,而非所有权关系。
- 追踪器 ID 可能在不相关的站点之间共享(代理机构、网络等)。
- GeoIP 数据是尽力而为的,可能不准确或粒度较粗。
- 请负责任地使用,并尊重上游服务(包括 WHOIS 服务器和 `ip-api.com`)的使用条款。
## 项目结构
- `whois_enricher.py` - 域名丰富(WHOIS/DNS/HTTP/TLS/GeoIP/追踪器)
- `generate_domain_affiliation_report.py` - Markdown 报告生成器
- `domains.txt` - 示例输入列表
- `requirements.txt` - Python 依赖项
## 贡献
欢迎提交问题报告和拉取请求。报告错误或提出更改时,请附上示例输入和输出。
## 许可证
MIT。详见 `LICENSE`。
标签:逆向工具