uxpgn0t/surfacecartographer
GitHub: uxpgn0t/surfacecartographer
一款轻量级的 OSINT 资产编排工具,帮助防御性安全团队在授权范围内完成外部攻击面映射与公网资产盘点。
Stars: 0 | Forks: 0
# SurfaceCartographer
SurfaceCartographer 是一个轻量级的 OSINT 编排工具,用于授权的外部攻击面映射。
它可以帮助安全团队盘点面向公众的域名、FQDN、IP 地址、HTTP 服务、云/CDN/SaaS 端点,以及高优先级的诊断候选对象,例如 VPN 门户、管理后台、API、SSO 接口、预发布环境、CI/CD 系统和监控控制台。
该工具专为 Kali Linux 工作流设计,但其 Python 核心特意保持简单且具有可移植性。
## 安全模型
SurfaceCartographer 专为授权的资产发现和范围界定而构建。它不执行漏洞利用、身份验证尝试、密码猜测、目录暴力破解或广泛的高速端口扫描。
仅对您拥有、运营或获得明确书面授权评估的资产使用此工具。操作员有责任遵守适用的法律、客户的交战规则、第三方平台条款以及云/SaaS 提供商的政策。
默认行为倾向于:
| 原则 | 含义 |
|---|---|
| 被动优先 | 首先使用被动源,例如 `subfinder`、`amass -passive` 和证书透明度日志。 |
| 低影响 | 启用时使用速率受限的 HTTP 探测。 |
| 基于证据 | 为发现的资产保留来源标签和时间戳。 |
| 范围感知 | 以不同于自有基础设施的方式对待 CDN、云、SaaS 和共享基础设施。 |
## 它的功能
| 阶段 | 工具 |
|---|---|
| 子域名发现 | `subfinder`、`amass -passive`、`crt.sh` |
| DNS 解析 | Python 解析器,可选的 `dnsx` 记录捕获 |
| HTTP/HTTPS 探测 | 可选的带速率限制的 `httpx` |
| 风险分诊 | 基于关键字和状态的分类 |
| 报告 | CSV 资产清单、CSV 候选列表、CSV 摘要、HTML 报告 |
## 要求
- Python 3.10+
- 推荐 Kali Linux
- 可选的外部工具:
- `subfinder`
- `amass`
- `dnsx`
- `httpx`
如果未安装可选工具,SurfaceCartographer 将跳过该阶段并继续执行。
## 快速开始
单个域名:
```
python3 surfacecartographer.py -d example.com -o runs/example
```
多个域名:
```
python3 surfacecartographer.py -f domains.sample.txt -o runs/example
```
仅被动收集:
```
python3 surfacecartographer.py -f domains.sample.txt -o runs/example-passive --passive-only
```
降低 HTTP 请求速率:
```
python3 surfacecartographer.py -d example.com -o runs/example --rate-limit 10
```
## 输出布局
```
runs/example/
input/
root_domains.txt
raw/
*.stdout.txt
*.stderr.txt
crtsh_*.json
httpx_web.jsonl
work/
fqdn_candidates.txt
output/
asset_inventory.csv
diagnosis_candidates.csv
summary.csv
report.html
```
## 关键报告
| 文件 | 用途 |
|---|---|
| `asset_inventory.csv` | 完整的外部资产清单候选表。 |
| `diagnosis_candidates.csv` | 优先进行验证或安全测试范围审查的资产。 |
| `summary.csv` | 统计发现的 FQDN、已解析的 FQDN、IP、Web 服务和风险等级的数量。 |
| `report.html` | 适合浏览器查看的、专注于高优先级资产的报告。 |
## 风险分诊
| 风险 | 典型指标 |
|---|---|
| 高 | 可通过 HTTP 访问的 VPN、管理后台、SSO/auth、API、非生产环境、CI/CD 或监控指标。 |
| 中 | 已解析 DNS 的敏感指标,或受限/不稳定的 HTTP 状态,例如 `401`、`403` 或 `5xx`。 |
| 低 | 具有正常 `2xx` 或 `3xx` 响应的、可访问的公共 Web 服务。 |
| 信息 | 仅被动或未解析的记录。在确认可访问性之前,被动敏感指标会被标记为 `Maybe`(可能)候选对象。 |
## 重要说明
- CDN 和 SaaS 的 IP 通常不属于目标组织。
- 发现的 FQDN 不自动包含在测试范围内。
- 第三方平台可能需要单独的书面授权。
- 被动数据可能已过期;请使用 `last_seen`、来源标签以及实时的 DNS/HTTP 检查来区分历史数据和当前暴露情况。
- 未经授权,请勿使用本项目针对第三方系统。
- 请勿使用本项目收集个人信息、执行凭证攻击、绕过访问控制或投放 payload。
## 负责任的使用
本项目旨在用于防御性安全、资产盘点、审计准备和授权的攻击面管理。如果您认为本项目被滥用,或者您对其内容有任何疑虑,请参阅 `SECURITY.md`。
## 示例
```
python3 surfacecartographer.py \
-d example.com \
--company "Example Corp" \
--rate-limit 25 \
-o runs/example-corp
```
然后打开:
```
runs/example-corp/output/report.html
```
标签:ESC4, GitHub, OSINT, Python, 主机安全, 动态插桩, 子域名枚举, 安全合规, 实时处理, 密码管理, 无后门, 系统安全, 网络代理, 资产测绘, 运行时操纵, 逆向工具