S8C88/ReconProbe
GitHub: S8C88/ReconProbe
一款将子域名发现、端口扫描和服务枚举整合在一起的命令行自动化侦查工具包,适用于渗透测试和漏洞赏金场景下的目标信息收集。
Stars: 0 | Forks: 0
# ReconProbe
自动化侦查工具包 —— 将子域名发现、端口扫描和服务枚举集于一体的 CLI 工具。专为 HTB/VulnHub 靶机枚举、Bug Bounty 范围映射和内部网络评估而编写。
结合了被动(crt.sh 证书透明度日志)和主动(DNS 爆破、TCP 端口扫描)技术,并利用多线程实现并行化。没有数据库,没有 daemon,没有废话 —— 只有 Python 和 shell。
## 功能
- **被动侦查** — 从 crt.sh 证书透明度日志中提取子域名
- **DNS 爆破** — 内置常见子域名字典或使用自定义字典
- **端口扫描** — 带有 banner grabbing 的多线程 TCP 扫描器
- **服务检测** — 尝试识别开放端口上运行的服务
- **批量模式** — 从文件中处理多个域名
- **导出** — 支持 JSON、CSV 和终端输出
## 快速开始
```
pip install requests
python3 reconprobe.py -d example.com
```
```
# 快速扫描(无 passive,无 brute,仅 ports)
python3 reconprobe.py -d scanme.org --quick
# 完整 aggressive 扫描
python3 reconprobe.py -d target.com --aggressive -o ~/recon_results/
# 从文件批量扫描
python3 reconprobe.py -l domains.txt -o ./batch_output/
# 自定义 ports
python3 reconprobe.py -d example.com --ports 22,80,443,8443,3306,8080
```
## 输出结构
```
recon_output/
example_com/
subdomains.csv — hostname, ip
ports.csv — ip, port, state, banner
summary.json — everything in one file
```
## Todo / 已知问题
- 暂不支持 UDP 扫描。在单线程 Python 脚本上实现这个祝你好运。
- 如果你频繁请求,crt.sh 会触发 rate limit。如果扫描大量域名,请添加延迟。
- banner grabbing 是尽力而为的策略。某些服务在建立连接时并不使用 HTTP 通信。
- 解析器可能会受到限流。对于大型字典,建议通过本地 resolver 运行。
## 系统设计
```
graph TB
A[CLI Argument Parser] --> B{Domain Input}
B -->|Single| C[Phase 1: Passive Recon]
B -->|Batch File| C
C --> D[crt.sh API]
D --> E[Subdomain Set]
E --> F[Phase 2: DNS Brute-force]
F --> G[Subdomain Wordlist]
G --> E
E --> H[Phase 3: Port Scan]
H --> I[Thread Pool Executor]
I --> J[connect_ex + Banner Grab]
J --> K{Results}
K --> L[Terminal Output]
K --> M[CSV Export]
K --> N[JSON Export]
```
## 架构
```
sequenceDiagram
participant User
participant CLI as reconprobe.py
participant CRT as crt.sh
participant DNS as DNS Resolver
participant Target as Target Host
User->>CLI: -d example.com
CLI->>CRT: GET ?q=%.example.com
CRT-->>CLI: JSON subdomains
CLI->>DNS: resolve subdomains
DNS-->>CLI: IP addresses
CLI->>Target: TCP connect scan
Target-->>CLI: open/closed/filtered
CLI->>Target: banner grab
Target-->>CLI: service banner
CLI-->>User: formatted results + files
```
## 技术栈
| 组件 | 选择 | 原因 |
|-----------|--------|-----|
| 语言 | Python 3 | 原型开发速度快,后续易于与 scapy/nmap 互操作 |
| 网络 | socket stdlib | 核心扫描无需额外依赖 |
| HTTP | requests | 用于 crt.sh 和 banner 探测 |
| 并行化 | concurrent.futures | 简单的线程池,对于 IO 密集型任务足够好用 |
| 输出 | CSV + JSON | 易于机器解析,对 grep 友好 |
## 许可证
MIT — 随你折腾,惹上麻烦别找我。
标签:Python, 主机安全, 数据统计, 无后门, 端口扫描, 资产测绘