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指纹识别, 企业资产发现, 域名情报, 安全工具库, 实时处理, 无主动扫描, 租户识别, 网络安全, 被动侦察, 证书透明度日志, 逆向工具, 邮件安全评分, 隐私保护, 零凭据