blisspixel/recon
GitHub: blisspixel/recon
基于Python的被动域名情报工具,无需凭证即可探测M365与Google Workspace租户、识别SaaS指纹并评估邮件安全态势,同时支持作为MCP服务器集成AI代理。
Stars: 1 | Forks: 0
# 侦察
来自公开源的被动域名情报。查询 DNS 记录、Microsoft/Google 身份端点和证书透明度日志,以构建组织技术栈的全貌 —— 无需凭证、无需 API 密钥、无需主动扫描。
```
recon contoso.com
```
```
╭──────────────────────────── Contoso Ltd ─────────────────────────────╮
│ │
│ Company: Contoso Ltd │
│ Domain: contoso.onmicrosoft.com │
│ Provider: Microsoft 365 + Google Workspace │
│ Tenant ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890 │
│ Region: NA │
│ Auth: Managed │
│ GWS Auth: Managed │
│ Confidence: ●●● High (4 sources) │
│ Services: AWS CloudFront, AWS Elastic Load Balancer, │
│ DKIM (Exchange Online), Google (site verified), │
│ Google Workspace, Imperva (Incapsula), Microsoft 365, │
│ Okta, Salesforce Marketing Cloud │
│ │
│ Insights: Cloud-managed identity indicators (Entra ID native) │
│ Google Workspace: Managed identity (Google-native) │
│ Email security 2/5 moderate (DMARC reject, DKIM) │
│ Dual provider: Google + Microsoft coexistence │
│ Security stack: Okta (identity), Imperva (WAF) │
│ Enterprise Security Stack: okta, imperva │
│ Multi-Cloud: aws-cloudfront, aws-elb │
│ Dual Email Provider: microsoft365, google-workspace │
│ Google-Native Identity: google-workspace, google-site, │
│ google-managed │
│ │
│ Certs: 280 total, 10 in last 90d, 3 issuers (DigiCert, │
│ Entrust, Sectigo) │
│ │
│ Related: api.contoso.com, cdn.contoso.com, dev.contoso.com, │
│ shop.contoso.com, staging.contoso.com │
│ │
╰──────────────────────────────────────────────────────────────────────╯
```
提供一个域名。recon 查询公共 DNS、身份端点和证书透明度日志(即组织为支持电子邮件、SaaS 和云基础设施运行而发出的信号),并将其关联为结构化输出。
```
recon northwindtraders.com --explain # see why each signal fired
```
适用于 Microsoft 365、Google Workspace 或任何提供商。也可作为 [MCP 服务器](docs/mcp.md) 为 AI 代理运行。
## 功能
recon 收集公开信号(DNS TXT/MX/CNAME/NS/SRV/CAA 记录、Microsoft 和 Google 身份端点、证书透明度日志),并将它们与一组 YAML 定义的指纹和信号规则进行匹配。单独来看,每个信号都不起眼 —— 一条 TXT 记录、一个 CNAME 委派、一种证书模式。其精髓在于关联。匹配是基于规则的,而非机器学习,但将分散的记录组合成关于组织实际运行情况的连贯视图,正是其价值所在。
这是一个由个人开发者维护的早期项目。指纹数据库涵盖 206 个 SaaS 服务,信号引擎在 4 个层级中包含 41 条规则。覆盖范围和准确性因域名而异 —— 拥有丰富公共 DNS 的组织可获得详细结果;记录最少或大量使用代理的组织产生的输出会较为稀疏。结果应被视为指标,而非事实依据。
## 对比
recon 占据了一个特定领域:它将 DNS、身份端点和 CT 日志融合为关联输出。大多数现有工具只能在其中某一方面表现出色,而不能涵盖所有方面。
| | recon | dig / nslookup | dnsrecon | 付费工具 |
|---|---|---|---|---|
| 零凭证 | ✓ | ✓ | ✓ | 视情况而定 |
| M365 / GWS 租户检测 | ✓ | ✗ | ✗ | 视情况而定 |
| 电子邮件安全评分 | ✓ | ✗ | ✗ | 视情况而定 |
| SaaS 指纹识别 | 206 个服务 | ✗ | ✗ | 通常更多 |
| 信号关联规则 | 41 条规则 | ✗ | ✗ | 视情况而定 |
| 证书情报 | ✓ | ✗ | ✗ | 视情况而定 |
| 面向 AI 代理的 MCP 服务器 | ✓ | ✗ | ✗ | 罕见 |
| 自定义 YAML 扩展性 | ✓ | ✗ | ✗ | 视情况而定 |
付费工具(如 BuiltWith、SecurityTrails 等)通常拥有更广泛的覆盖范围、更多的数据来源和经过实战检验的准确性。recon 的优势在于它是免费的、无需账户且在本地运行。
## 安装
需要 Python 3.10+。
```
pip install recon-tool # from PyPI
pip install -e . # or from source
recon doctor # verify connectivity
```
## 使用
```
recon northwindtraders.com # default panel output
recon northwindtraders.com --json # structured JSON
recon northwindtraders.com --md # markdown report
recon northwindtraders.com --full # everything (services + domains + posture)
recon northwindtraders.com --services # M365 vs GWS vs tech stack split
recon northwindtraders.com --posture # neutral posture observations
recon northwindtraders.com --compare prev.json # delta: what changed since last run
recon northwindtraders.com --chain --depth 2 # recursive domain discovery
recon northwindtraders.com --no-cache # bypass disk cache
recon northwindtraders.com --exposure # security posture assessment
recon northwindtraders.com --gaps # hardening gap analysis
recon northwindtraders.com --explain # show why each signal fired
recon batch domains.txt --json # batch mode (default 5 concurrent)
recon batch domains.txt --csv # batch CSV for spreadsheets
recon batch domains.txt --json -c 10 # batch with 10 concurrent
recon doctor # connectivity check
recon doctor --fix # scaffold custom config templates
recon mcp # start MCP server (stdio)
```
输入会自动规范化 —— URL、协议 scheme、`www.` 前缀、路径和空格都会被去除。
## 输出内容
| 信号 | 来源 |
|--------|--------|
| 公司名称、租户 ID、身份验证类型 | Microsoft OIDC + GetUserRealm |
| Google Workspace 身份验证类型、模块 | Google 登录流程 + CNAME 探测 + BIMI VMC |
| 电子邮件提供商 | MX 记录 |
| 电子邮件安全评分 (0–5) | DMARC + DKIM + SPF + MTA-STS + BIMI |
| 206 个 SaaS 服务 | TXT、SPF、MX、CNAME、NS、CAA、SRV、DKIM 选择器 |
| 信号情报 (41 条规则) | 基于 YAML 的关联规则及交叉引用条件 |
| 证书情报 | crt.sh + CertSpotter:颁发速度、颁发机构多样性 |
| 态势观察 | 针对电子邮件、身份和基础设施的中立事实分析 |
| 相关域名 | CNAME 痕迹 + 证书透明度 |
| 差异/变更检测 | 对比当前与之前的 JSON 导出 |
| 安全态势评估 | 暴露评分、加固差距、对比分析 |
所有数据均来自公开源。零身份验证。结果因域名而异 —— 稀疏的 DNS 意味着稀疏的输出。
## MCP 服务器
recon 可作为 MCP 服务器运行,适用于 Claude、Cursor、VS Code、ChatGPT 或任何 MCP 客户端:
```
{
"mcpServers": {
"recon": {
"command": "recon",
"args": ["mcp"],
"autoApprove": ["lookup_tenant", "analyze_posture"]
}
}
}
```
然后向您的 AI 提问:“对 northwindtraders.com 运行 recon 查询并分析态势。”
如需更深入的分析,可尝试:“使用 explain=true 查询 contoso.com,然后 assess_exposure 并 find_hardening_gaps。模拟启用 DMARC reject 和 MTA-STS enforce 的加固方案,并告诉我新的态势评分。”
提供 12 个 MCP 工具:`lookup_tenant`、`analyze_posture`、`assess_exposure`、`find_hardening_gaps`、`compare_postures`、`chain_lookup`、`reload_data`、`get_fingerprints`、`get_signals`、`explain_signal`、`test_hypothesis`、`simulate_hardening`。
所有工具均为只读且幂等。代理类工具(`test_hypothesis`、`simulate_hardening`、`explain_signal`)基于缓存数据运行,无需额外的网络调用。
有关设置详情、可用工具以及各客户端的配置文件位置,请参阅 [docs/mcp.md](docs/mcp.md)。
## 文档
| 文档 | 内容 |
|-----|----------|
| [指纹](docs/fingerprints.md) | 检测类型、自定义指纹、电子邮件安全评分 |
| [信号](docs/signals.md) | 信号规则、层级、元数据条件、自定义信号 |
| [MCP 服务器](docs/mcp.md) | AI 代理集成设置、工具、配置位置 |
| [路线图](docs/roadmap.md) | 计划内容、未计划内容及其原因 |
| [法律声明](docs/legal.md) | 免责声明、准确性、虚构示例 |
| [贡献](CONTRIBUTING.md) | 如何添加指纹、信号和代码 |
| [更新日志](CHANGELOG.md) | 版本历史 |
## 局限性
- **覆盖范围取决于公共 DNS。** 使用 Cloudflare、DNS 记录极少或不发布 SaaS 验证令牌的组织将返回接近空白的结果。这是仅被动采集方法的根本限制 —— 无法绕过。
- **指纹会过时。** SaaS 提供商会进行品牌重塑、更改 DNS 模式或被收购。由个人开发者维护的 206 个指纹难免会滞后。社区贡献是实现规模扩展的唯一途径。
- **信号规则属于启发式。** 41 条 YAML 规则产生有用的指标,而非确定的评估。误报会发生。漏报也会发生。不要仅依据此输出做出业务决策。
- **尚无准确性基准。** 目前没有发布精确度/召回率数据。该工具可能会生成看起来自信但实际错误的结果。请将其作为调查的起点,而非事实来源。
- **早期项目。** 这是一个个人开发者的努力成果。它能运行,但尚未经过社区的实战检验。请预期存在粗糙边缘和破坏性变更。
## 开发
```
pip install -e ".[dev]"
pytest tests/ # 958 tests
ruff check recon_tool/ # lint
pyright recon_tool/ # type check
```
## 许可证
MIT —— 详见 [LICENSE](LICENSE)。
本工具仅查询公共 DNS 记录和未经身份验证的端点。完整免责声明请参阅 [docs/legal.md](docs/legal.md)。
标签:AI代理, DKIM, DMARC, DNS记录查询, ESC4, GitHub, Google Workspace, MCP服务器, Microsoft 365, OSINT, SaaS指纹识别, 企业资产发现, 域名情报, 安全工具库, 实时处理, 无主动扫描, 租户识别, 网络安全, 被动侦察, 证书透明度日志, 逆向工具, 邮件安全评分, 隐私保护, 零凭据