关于 Entity Attack Surface
Entity Attack Surface 是面向安全团队、网络保险机构和并购尽调人员的域名攻击面评估 MCP 服务。它并行汇集被动侦察数据,生成结构化发现、风险评分和等级,不对目标主动扫描。
主要功能
- 01并行汇集 11 类侦察来源
- 02发现 DNS、证书和开放端口
- 03关联技术栈、CVE 与 CISA KEV
- 04检测公开代码暴露和历史变化
- 05生成多维评分与风险等级
适用场景
- 01定期评估 MSSP 客户的外部暴露面
- 02为网络保险承保提供风险信号
- 03监测 SOC 环境中的资产变化
- 04开展供应商或并购安全尽调
MCP 相关
该服务向 MCP 客户端提供 8 种安全评估工具,可对域名进行发现、漏洞映射、代码暴露检查和综合报告。工具结果包含结构化 JSON、暴露评分及风险等级。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://ryanclinton--entity-attack-surface-mcp.apify.actor/mcpclaude mcp add --transport http entity-attack-surface https://ryanclinton--entity-attack-surface-mcp.apify.actor/mcp{"mcpServers":{"entity-attack-surface":{"type":"http","url":"https://ryanclinton--entity-attack-surface-mcp.apify.actor/mcp"}}}在 Cursor 中打开{"servers":{"entity-attack-surface":{"type":"http","url":"https://ryanclinton--entity-attack-surface-mcp.apify.actor/mcp"}}}在 VS Code 中打开{"mcpServers":{"entity-attack-surface":{"type":"http","url":"https://ryanclinton--entity-attack-surface-mcp.apify.actor/mcp"}}}{"mcpServers":{"entity-attack-surface":{"serverUrl":"https://ryanclinton--entity-attack-surface-mcp.apify.actor/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
实体攻击面 MCP 服务
快速开始
添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf):
{
"mcpServers": {
"entity-attack-surface-mcp": {
"url": "https://ryanclinton--entity-attack-surface-mcp.apify.actor/mcp"
}
}
}
通过模型上下文协议为任何域名绘制实体攻击面图。此 MCP 服务会协调 11 个被动侦察数据源,全面呈现组织的数字暴露面:DNS 基础设施、SSL 证书扩散情况、Censys 索引的开放端口、技术栈漏洞、CISA 已知遭利用漏洞,以及公开代码泄露和历史变化。专为 MSSP、网络保险公司、SOC 团队和并购尽职调查分析师设计,帮助他们获取结构化、可供 AI 使用的安全情报,而无需主动扫描。
将你的 AI 助手或安全工作流连接到 8 个专用工具。它们会并行运行,从四个风险维度对发现结果进行评分,并返回包含暴露评分(0-100)和 A-F 字母等级的结构化 JSON。除了添加 MCP 端点之外,无需进行其他设置——该服务在 Apify 的基础设施上以待机模式运行。
可以提取哪些数据?
| 数据点 | 来源 | 示例 |
|---|---|---|
| 📡 DNS 记录(A、AAAA、MX、TXT、CNAME、NS) | DNS 记录查询 | mail.acmecorp.com → 192.0.2.45 |
| 🔐 SSL 证书和子域名枚举 | crt.sh 证书透明度 | api.acmecorp.com、staging.acmecorp.com |
| 🌐 域名注册和所有权 | WHOIS 查询 | 注册商、创建日期、到期日期、注册人 |
| 🖥 面向互联网的主机和开放端口 | Censys 主机搜索 | 3 台主机上的端口 443、3389、6379 |
| 📍 IP 地址地理位置和 ASN | IP 地理位置 | 美国东部(AS14618 Amazon)、德国(AS16509 Amazon) |
| 🐛 按检测到的技术查找 CVE | NVD CVE 数据库 | CVE-2024-1234,CVSS 9.8 — Apache HTTP |
| 🚨 正在遭利用的漏洞 | CISA KEV 目录 | 命中 2 项 KEV — 需紧急修复 |
| 🔧 Web 技术指纹识别 | 技术栈检测器 | WordPress 6.4、jQuery 1.12、PHP 8.1、Nginx |
| 📚 历史网站快照 | Wayback Machine | 从 2009 年至今共 847 个快照 |
| 💻 公开代码和凭据暴露 | GitHub 仓库搜索 | 3 个仓库被标记:internal-config、deploy-keys |
| 🔄 网站近期内容变更 | 网站变更监控 | 检测到 2 项变更,其中 1 项内容差异超过 50% |
| 📊 暴露评分和字母等级 | 评分引擎 | 评分:67/100 — 高暴露,等级:D |
为什么使用 Entity Attack Surface MCP Server?
手动进行安全评估需要数天时间。熟练的分析师需要手动查询 DNS、获取证书透明度日志、检查 Censys、为检测到的每项技术查找 CVE、交叉核对 CISA KEV、检查 GitHub 上是否存在泄露的仓库,并将发现结果整理成连贯的风险概况。这个流程涉及 8-12 个工具,每个域名需要 4-8 小时,且输出不一致,难以采取行动。
此 MCP 可在几分钟内自动完成整个被动侦察流程。通过任何兼容 MCP 的 AI 客户端(Claude、Cursor、Windsurf、Cline)调用单个工具,即可获得结构化 JSON 响应,其中包含各维度评分、优先级排序后的发现结果,以及可直接用于董事会报告、承保决策或 SIEM 接入的修复建议。
- 定时执行 — 每周扫描客户组合的攻击面,在攻击者发现新暴露面之前及时检测
- API 访问 — 通过 Python、JavaScript 或任何 HTTP 客户端触发评估,以集成 GRC 平台或工单系统
- 并行执行 — 最多同时运行 11 个 Actor,将评估时间从数小时缩短到数分钟
- 监控 — 扫描完成或发现严重问题时,通过 Apify Webhook 接收 Slack 或电子邮件提醒
- 集成 — 通过 Webhook 将结果连接到 Zapier、Make、Google Sheets、HubSpot 或自定义 SIEM 流程
功能
- 8 个专用 MCP 工具,涵盖资产发现、漏洞映射、KEV 检查、资产蔓延分析、漂移检测、代码暴露、供应商评级和完整攻击向量报告
- 11 个参与方并行编排——在一次调用中查询 DNS、SSL/crt.sh、WHOIS、Censys、IP 地理位置、NVD CVE、CISA KEV、技术栈、Wayback Machine、GitHub 和网站变更监控
- 暴露评分(0-100),根据四个加权维度计算:基础设施暴露(0-30)、漏洞暴露(0-30)、代码与数据暴露(0-20)和历史漂移(0-20)
- 五种暴露等级,并提供自动化建议:极低、低、中、高和严重暴露,附带具体的修复建议
- 技术栈到 CVE 再到 KEV 的管道——检测 Web 技术,并逐一与 NVD 交叉比对;随后将任何匹配 CISA KEV 的项目标记为紧急事项,并提供 BOD 22-01 合规背景
- CISA KEV 交叉比对和修复截止日期跟踪——标记超过规定修补日期的漏洞
- 危险端口检测,针对 8 个高风险端口:FTP(21)、Telnet(23)、SMB(445)、RDP(3389)、VNC(5900)、Redis(6379)、MongoDB(27017)、Elasticsearch(9200)
- 高 CVE 技术指纹识别,针对经过精选的 20 种技术,这些技术都有历史上影响重大的漏洞记录,包括 Apache、Log4j、Struts、WordPress、Confluence 和 Jenkins
- 基础设施蔓延评分,采用综合公式:子域名 × 2 + IP × 3 + 开放端口 × 4 + 国家/地区 × 5,并评为低/中/高
- 第三方网络安全评级(A-F),采用加权综合评分:电子邮件安全 20%、SSL 卫生状况 25%、网络暴露 35%、技术复杂度 20%
- 代码暴露扫描,针对三个风险级别中的 11 种敏感关键词模式(高:secret、credential、password、token、api-key;中:private、internal、config、.env;低:deploy、infra)
- 过时仓库检测——将超过 12 个月没有提交记录的公开仓库标记为未修补依赖风险
- 历史漂移分析——将 Wayback Machine 存档深度与当前技术栈交叉比对,以发现可能仍存在于缓存版本中的数据
- 仅被动侦察——不向目标发送数据包、不进行主动扫描,完全安全合法
- 按事件付费——仅在调用工具时收费,不按参与方运行次数或数据行数收费
攻击面情报的应用场景
MSSP 客户组合评估
管理 50-500 个客户的 MSSP 无法每月手动评估每位客户的外部攻击面。此 MCP 支持对完整客户名单自动执行外部暴露扫描。按周定期将每位客户的域名输入 discover_attack_surface 和 tech_stack_vulnerability_map。在下一次 QBR 之前,找出新匹配 CISA KEV 或新暴露危险端口的客户。将量化的暴露评分纳入报告,无需增加分析师人数。
网络保险承保和续保
承保人需要在签订网络保险单之前获取客观的技术风险信号。基于问卷的人工评估会遗漏实际暴露情况。在承保前调用 third_party_cyber_rating 和 attack_vector_report,生成综合 A-F 网络安全评级,并细分电子邮件安全、SSL 卫生状况、网络暴露和技术复杂度等维度。使用暴露评分对申请人分级、为定价决策提供依据,并在承保档案中记录尽职调查情况。
SOC 持续监控和威胁检测
SOC 团队需要了解组织的攻击面何时发生变化——例如出现新的子域名、证书过期、危险端口开放或出现 CISA KEV 匹配项。按日或按周安排 discover_attack_surface 和 cisa_kev_exposure_check。通过 Webhook 将结果接入 SIEM 或工单平台。在威胁行为者利用基础设施变化之前,检测可能表明影子 IT、未经授权的部署或正在发生的入侵的迹象。
并购技术尽职调查
收购一家公司意味着也要承担其安全债务。技术尽职调查很少能发现隐藏的责任:影子 IT 子域、易受攻击的技术栈、公开代码仓库中暴露的凭据,或收购基础设施中危险的开放端口。在尽职调查期间,针对收购目标的域名和 GitHub 组织运行 attack_vector_report 和 exposed_code_secrets_scan。在签约前量化安全责任,并在交易条款中协商纳入整改义务。
供应商风险管理与供应链安全
安全状况不佳的第三方供应商是主要的入侵途径。使用 third_party_cyber_rating,在供应商入驻或年度审查期间生成网络风险评级。标记缺少 SPF/DMARC、证书过期、RDP 暴露于互联网,或其技术栈中存在 CISA KEV 匹配项的供应商。维护经过评级的供应商登记表,并在续约周期自动重新评估。
开发者与 DevSecOps 安全审计
开发团队可能通过公开的 GitHub 代码仓库暴露组织风险,其中可能包含内部工具名称、配置引用或部署脚本。在安全审计或渗透测试前,针对组织的 GitHub 组织运行 exposed_code_secrets_scan。找出含有高风险关键词(secret、credential、token、api-key)的代码仓库,以及可能包含未修补依赖项的陈旧代码仓库。利用调查结果推动密钥轮换和代码仓库卫生冲刺。
如何运行攻击面评估
-
将 MCP 服务添加到 AI 客户端 — 复制端点 URL
https://entity-attack-surface-mcp.apify.actor/mcp,并将其粘贴到 Claude Desktop、Cursor 或 Cline 的 MCP 配置中。将 Apify API token 添加为 Bearer token。确切的配置语法请参阅下方的连接部分。 -
请 AI 助手运行评估 — 输入自然语言请求:“对 acmecorp.com 运行攻击面评估,并标记任何 CISA KEV 匹配项。”AI 会选择合适的工具、传入域名,并返回结构化结果。
-
查看暴露评分和调查结果 — 响应包含评分(0-100)、等级,以及按类别划分并列出具体调查结果的细分信息。CISA KEV 匹配项会显示紧急警报和 BOD 22-01 补救说明。
-
导出或转发结果 — JSON 输出可通过 Apify 集成保存到 Google Sheets,通过 webhook 推送到 SIEM,或由 AI 助手整理为 PDF 报告。
MCP 工具
| 工具 | 单次事件价格 | 调用的 Actor 数 | 适用场景 |
|---|---|---|---|
discover_attack_surface | $2.00 | 4-5 | 初始侦察、资产清单、网络保险 |
tech_stack_vulnerability_map | $2.00 | 2+ | 漏洞评估、安全审计 |
cisa_kev_exposure_check | $2.00 | 3 | 合规(BOD 22-01)、紧急修补 |
infrastructure_sprawl_analysis | $2.00 | 4 | 影子 IT 发现、并购尽职调查 |
historical_drift_detection | $2.00 | 2 | 入侵检测、变更审计 |
exposed_code_secrets_scan | $2.00 | 1 | 代码泄露检测、开发者安全 |
third_party_cyber_rating | $4.00 | 5 | 供应商风险管理、网络保险 |
attack_vector_report | $4.00 | 10-11 | 全面评估、董事会报告 |
工具输入参数
discover_attack_surface
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
domain | string | Yes | — | 目标域名,例如 "acmecorp.com" |
include_ip_geo | boolean | No | true | 是否包含已发现主机的 IP 地理位置信息 |
tech_stack_vulnerability_map
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Yes | — | 目标 URL,例如 "https://acmecorp.com" |
max_cves_per_tech | number | No | 5 | 每种检测到的技术最多返回的 CVE 数量 |
cisa_kev_exposure_check
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Yes | — | 要检查的目标 URL |
infrastructure_sprawl_analysis
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
domain | string | Yes | — | 要分析的根域名 |
historical_drift_detection
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Yes | — | 要分析的 URL |
wayback_limit | number | No | 20 | 最多检索的 Wayback Machine 快照数量 |
exposed_code_secrets_scan
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
organization | string | Yes | — | 要搜索的 GitHub 组织或公司名称 |
max_repos | number | No | 30 | 最多分析的代码仓库数量 |
third_party_cyber_rating
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
domain | string | Yes | — | 要评级的供应商域名 |
attack_vector_report
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
domain | string | Yes | — | 目标域名 |
url | string | No | https://<domain> | 用于检测技术栈的特定 URL |
github_org | string | No | — | 用于分析代码暴露情况的 GitHub 组织 |
输出示例
中型 SaaS 公司的 attack_vector_report:
{
"domain": "pinnaclesoftware.io",
"exposureScore": 67,
"exposureGrade": "HIGH EXPOSURE",
"dimensions": {
"infrastructure": {
"score": 22,
"max": 30,
"findings": [
"14 unique IP addresses — significant infrastructure sprawl",
"No SPF record — vulnerable to email spoofing",
"No DMARC record — no email authentication policy",
"Dangerous ports exposed: 3389, 6379 (RDP/Redis)"
]
},
"vulnerability": {
"score": 21,
"max": 30,
"findings": [
"4 high-CVE-history technologies detected: wordpress, jquery, php, nginx",
"3 CRITICAL CVE(s) found in detected technology stack",
"7 HIGH severity CVE(s)",
"2 CISA Known Exploited Vulnerability(ies) — ACTIVELY EXPLOITED IN THE WILD",
"1 KEV(s) past remediation deadline"
]
},
"codeData": {
"score": 11,
"max": 20,
"findings": [
"2 public repo(s) with potentially sensitive names/descriptions: internal-config, deploy-credentials",
"23 public repositories",
"8 stale/unmaintained public repos (no updates >1 year) — potential unpatched dependencies"
]
},
"historicalDrift": {
"score": 13,
"max": 20,
"findings": [
"Web presence dates back 14 years (since ~2010) — long history of potential cached data",
"312 Wayback Machine snapshots — extensive archived content",
"3 recent website change(s) detected — active modification of attack surface",
"1 large content change(s) (>50% diff) — potential compromise or major restructuring",
"Historical data available for drift analysis — compare archived vs current technology stack"
]
}
},
"recommendation": "High exposure. Immediate remediation recommended. Engage security team for attack surface reduction.",
"actorsUsed": 11,
"assetSummary": {
"dnsRecords": 18,
"sslCertificates": 34,
"censysHosts": 7,
"technologies": 22,
"cves": 41,
"cisaKevs": 2,
"waybackSnapshots": 20,
"githubRepos": 23
}
}
用于供应商评估的 third_party_cyber_rating:
{
"domain": "cloudsupplier.net",
"cyberRating": "C",
"compositeScore": 74,
"components": {
"emailSecurity": {
"score": 60,
"hasSPF": true,
"hasDMARC": false
},
"sslHygiene": {
"score": 100,
"totalCerts": 12,
"expiredCerts": 0
},
"networkExposure": {
"score": 65,
"openPorts": 8,
"dangerousPortsExposed": [3389]
},
"techComplexity": {
"score": 70,
"technologies": 20
}
},
"whois": [
{
"domain": "cloudsupplier.net",
"registrar": "Namecheap Inc.",
"createdDate": "2017-03-14",
"expiresDate": "2026-03-14"
}
]
}
cisa_kev_exposure_check — 紧急警报:
{
"url": "https://legacyapp.betaindustries.com",
"technologiesScanned": 14,
"kevCatalogSize": 1100,
"matchingKEVs": 2,
"alert": "URGENT: 2 actively exploited vulnerability(ies) found in detected tech stack. Immediate patching required per BOD 22-01.",
"kevMatches": [
{
"cveID": "CVE-2021-44228",
"vendorProject": "Apache",
"product": "Log4j",
"vulnerabilityName": "Apache Log4j2 Remote Code Execution Vulnerability",
"dateAdded": "2021-12-10",
"dueDate": "2021-12-24",
"requiredAction": "Apply updates per vendor instructions"
}
],
"detectedTechnologies": ["apache", "log4j", "tomcat", "jquery", "wordpress"]
}
输出字段
attack_vector_report
| 字段 | 类型 | 描述 |
|---|---|---|
domain | 字符串 | 评估的目标域名 |
exposureScore | 数字 | 综合暴露评分,0-100。分数越高,风险越大 |
exposureGrade | 字符串 | 以下等级之一:MINIMAL、LOW、MODERATE、HIGH、CRITICAL EXPOSURE |
recommendation | 字符串 | 根据评分区间提供优先级排序的修复指导 |
actorsUsed | 数字 | 查询的数据源数量(最多 11 个) |
dimensions.infrastructure.score | 数字 | 基础设施暴露子评分(0-30) |
dimensions.infrastructure.findings | 字符串[] | 具体的基础设施发现 |
dimensions.vulnerability.score | 数字 | 漏洞暴露子评分(0-30) |
dimensions.vulnerability.findings | 字符串[] | CVE 和 CISA KEV 发现 |
dimensions.codeData.score | 数字 | 代码与数据暴露子评分(0-20) |
dimensions.codeData.findings | 字符串[] | GitHub 暴露发现 |
dimensions.historicalDrift.score | 数字 | 历史变化子评分(0-20) |
dimensions.historicalDrift.findings | 字符串[] | Wayback 和变更监控发现 |
assetSummary.dnsRecords | 数字 | 检索到的 DNS 记录总数 |
assetSummary.sslCertificates | 数字 | 发现的 SSL 证书/子域名数量 |
assetSummary.censysHosts | 数字 | Censys 索引的互联网暴露主机数量 |
assetSummary.technologies | 数字 | 检测到的 Web 技术数量 |
assetSummary.cves | 数字 | 在技术栈中发现的 CVE 总数 |
assetSummary.cisaKevs | 数字 | 发现的 CISA KEV 匹配项数量 |
assetSummary.waybackSnapshots | 数字 | 检索到的 Wayback Machine 快照数量 |
assetSummary.githubRepos | 数字 | 分析的 GitHub 仓库数量 |
third_party_cyber_rating
| 字段 | 类型 | 描述 |
|---|---|---|
cyberRating | 字符串 | 字母等级:A、B、C、D 或 F |
compositeScore | 数字 | 加权综合评分,0-100。分数越高,安全状况越好 |
components.emailSecurity.score | 数字 | 电子邮件安全子评分(0-100)。缺少 SPF/DMARC 时会扣分 |
components.emailSecurity.hasSPF | 布尔值 | 是否存在 SPF 记录 |
components.emailSecurity.hasDMARC | 布尔值 | 是否存在 DMARC 记录 |
components.sslHygiene.score | 数字 | SSL 卫生状况子评分。证书过期或缺失时会扣分 |
components.sslHygiene.expiredCerts | 数字 | 已过期 SSL 证书数量 |
components.networkExposure.score | 数字 | 网络暴露子评分。每个危险端口都会导致扣分 |
components.networkExposure.dangerousPortsExposed | 数字[] | 发现开放的危险端口号 |
components.techComplexity.score | 数字 | 技术复杂度子评分 |
components.techComplexity.technologies | 数字 | 检测到的不同技术数量 |
运行攻击面评估需要多少费用?
此 MCP 服务采用按事件付费定价——根据触发的事件,按工具调用次数付费。平台计算费用已包含在内。没有订阅费,也没有每月最低消费。
| 场景 | 调用的工具 | 费用 |
|---|---|---|
| 快速基础设施侦察 | discover_attack_surface | $2.00 |
| CISA KEV 暴露检查 | cisa_kev_exposure_check | $2.00 |
| 技术栈漏洞图谱 | tech_stack_vulnerability_map | $2.00 |
| 基础设施蔓延分析 | infrastructure_sprawl_analysis | $2.00 |
| 历史漂移检测 | historical_drift_detection | $2.00 |
| 暴露代码机密扫描 | exposed_code_secrets_scan | $2.00 |
| 第三方网络安全评级 | third_party_cyber_rating | $4.00 |
| 完整攻击向量报告 | attack_vector_report | $4.00 |
你可以为每次运行设置最高支出限额以控制费用。达到预算后,服务会停止处理。
相比之下,SecurityScorecard 每年收费 $2,000-10,000,BitSight 类似层级的费用也相近。对于 MSSP 客户评估或定期供应商检查,此 MCP 无需订阅承诺,每次评估只需 $2-4,即可提供同等的被动侦察数据。
Apify 免费计划每月包含 $5 的平台额度,每月可免费完成 1-2 次完整评估。
如何连接此 MCP 服务
Claude Desktop
将以下内容添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"entity-attack-surface": {
"url": "https://entity-attack-surface-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor / Windsurf / Cline
在编辑器的 MCP 设置面板中添加 MCP 服务:
- 端点:
https://entity-attack-surface-mcp.apify.actor/mcp - 身份验证:Bearer 令牌(你的 Apify API 令牌,位于 console.apify.com/account/integrations)
编程方式(HTTP / cURL)
# Call the attack_vector_report tool
curl -X POST "https://entity-attack-surface-mcp.apify.actor/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "attack_vector_report",
"arguments": {
"domain": "acmecorp.com",
"github_org": "acmecorp"
}
},
"id": 1
}'
Python(通过 Apify API)
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/entity-attack-surface-mcp").call(run_input={})
# The MCP server runs in standby mode — use the endpoint directly for MCP calls.
# For one-off programmatic use, call via HTTP as shown above.
print(f"Server URL: https://entity-attack-surface-mcp.apify.actor/mcp")
print(f"Run ID: {run['id']}")
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
// For direct MCP tool calls, use the HTTP endpoint:
const response = await fetch("https://entity-attack-surface-mcp.apify.actor/mcp", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer YOUR_API_TOKEN`,
},
body: JSON.stringify({
jsonrpc: "2.0",
method: "tools/call",
params: {
name: "third_party_cyber_rating",
arguments: { domain: "vendor-example.com" },
},
id: 1,
}),
});
const result = await response.json();
const rating = JSON.parse(result.result.content[0].text);
console.log(`Cyber rating for vendor: ${rating.cyberRating} (${rating.compositeScore}/100)`);
console.log(`Dangerous ports exposed: ${rating.components.networkExposure.dangerousPortsExposed.join(", ") || "None"}`);
Entity Attack Surface MCP Server 的工作原理
阶段 1:并行收集数据
每次工具调用都会通过 runActorsParallel() 并发向多个 Apify actor 分派请求。attack_vector_report 工具会同时发送 10-11 次 actor 调用:DNS 记录查询(最多 50 条记录)、crt.sh SSL 证书搜索(最多 50 张证书)、WHOIS 注册数据查询、Censys 主机枚举(最多 20 台主机)、IP 地理位置查询、技术栈检测(最多 50 种技术)、NVD CVE 搜索、CISA KEV 目录提取(最多 100 条记录)、Wayback Machine 快照检索,以及网站变更监控数据。如果提供了 GitHub 组织,则会将 GitHub 仓库搜索作为第 11 个并行调用。每个 actor 的超时时间为 120 秒。
阶段 2:技术栈到 CVE 再到 KEV 的处理流程
漏洞评估维度采用三阶段处理流程。首先,Tech Stack Detector 会识别目标 URL 上最多 10 种技术。其次,每种技术名称都会作为单独的并行查询提交到 NVD CVE 数据库(每种技术最多返回 max_cves_per_tech 条结果)。第三步,提取 CISA KEV 目录,并通过匹配供应商和产品字段,将其与检测到的技术名称交叉比对。任何 KEV 匹配都会触发 BOD 22-01 合规警报,并附上规定的修复日期。在 CVE 数据到达之前,系统会先使用包含 20 个有较多 CVE 历史记录的名称(Apache、Log4j、Struts、WordPress、Drupal、Confluence、Jenkins 等)的精选列表进行预筛查,以生成早期风险信号。
阶段 3:暴露评分引擎
computeExposureScore() 函数通过四个独立的维度评分器处理所有收集到的数据:
- 基础设施暴露(0-30):根据 DNS IP 分散程度评分(唯一 IP 超过 10 个得 6 分,超过 5 个得 3 分)、缺少 SPF(3 分)、缺少 DMARC(2 分)、SSL 子域名数量(超过 20 个得 5 分,超过 10 个得 3 分)、证书过期(4 分)、域名较新(2 分)、Censys 的开放端口数量(超过 10 个端口得 6 分,超过 5 个得 3 分)、是否存在 8 个危险端口中的任意一个(5 分),以及基础设施分布于多个国家(2 分)。
- 漏洞暴露(0-30):根据高 CVE 技术评分(每项 2 分,最多 8 分)、CRITICAL CVE(每项 3 分,最多 12 分)、HIGH CVE(每项 2 分,最多 6 分)以及匹配 CISA KEV 的项目(每项 5 分,最多 15 分)评分。
- 代码与数据暴露(0-20):根据名称包含敏感模式的代码仓库(8 分)、公开代码仓库数量较多(超过 50 个得 5 分,超过 20 个得 3 分)以及过时的代码仓库数量(超过 5 个得 4 分)评分。
- 历史变化(0-20):根据 Wayback Machine 存档数量较多(超过 100 个快照得 4 分)、检测到网站变化(3 分)、内容变化较大(差异超过 50% 得 5 分)以及是否有技术与历史对比数据(2 分)评分。
各维度的得分均设有上限,然后相加得到总分,总分上限为 100。等级分为五档:MINIMAL(0-15)、LOW(16-35)、MODERATE(36-55)、HIGH(56-75)、CRITICAL(76-100)。
阶段 4:第三方评级加权综合评分
third_party_cyber_rating 工具采用单独的加权评分模型。四个组成部分的初始分均为 100,并按以下规则扣分:电子邮件安全方面,每缺少一条 SPF 或 DMARC 记录扣 40 分;SSL 卫生方面,证书过期扣 30 分,未找到证书扣 50 分;网络暴露方面,每个暴露的危险端口扣 15 分,开放端口总数超过 10 个扣 20 分;技术复杂度方面,每检测到一种技术扣 1.5 分,最多计 30 种技术。各部分按以下权重合并:电子邮件安全 20%、SSL 卫生 25%、网络暴露 35%、技术复杂度 20%。综合分(0-100)对应的字母等级为 A(90-100)、B(80-89)、C(70-79)、D(60-69)、F(0-59)。注意:该模型的分数越高表示安全态势越好,与暴露评分相反。
获取最佳结果的提示
-
运行完整报告前,先使用
discover_attack_surface。 表面发现工具费用为 $2,可快速呈现子域名数量、IP 分散情况和 Censys 调查结果。根据这些结果判断是否值得运行完整的attack_vector_report($4)。 -
评估科技公司时,在
attack_vector_report中提供github_org。 代码和数据暴露最多会为暴露评分贡献 20 分。跳过 GitHub 分析会导致一个重要维度未被评分。 -
将
cisa_kev_exposure_check用作快速分诊工具。 每次调用费用为 $2,可用最低成本识别最紧急的发现(正在遭受利用的漏洞)。评估新的供应商或 CISA KEV 目录更新后,先运行此工具。 -
安排每周运行
discover_attack_surface扫描,以检测变化。 基础设施变化——例如 SSL 证书透明度数据中出现新子域名、Censys 新索引的主机、开放端口发生变化——是影子 IT 或未经授权部署的最早迹象。每周运行可建立变更基线。 -
将
infrastructure_sprawl_analysis的结果与 CMDB 交叉核对。 SSL 证书透明度数据中的子域名列表通常包含未记录在内部资产清单中的系统。任何未列入 CMDB 的子域名都属于影子 IT。 -
对于并购尽职调查,先运行带有
github_org的attack_vector_report,再单独运行third_party_cyber_rating。attack_vector_report使用暴露评分模型(分数越高,风险越大);third_party_cyber_rating使用网络安全评级模型(分数越高,表现越好)。两者结合可从两个独立视角评估目标的安全状况。 -
为批量评估设置支出上限。 如果通过 API 对大量供应商进行评估,请在 Actor 调用中设置
maxTotalChargeUsd,以防费用失控。 -
如需与 SOC 集成,请将 webhook 输出发送到 SIEM。
attack_vector_report的 JSON 输出结构清晰且一致——每个字段都能轻松映射到 SIEM 告警架构。配置 Apify webhook,在运行完成且发现 CISA KEV 匹配项或暴露评分超过阈值时,将结果 POST 到 SIEM 的 HTTP 输入端点。
与其他 Apify Actor 组合使用
| Actor | 组合方式 |
|---|---|
| Website Tech Stack Detector | 调用 tech_stack_vulnerability_map 前,单独运行技术检测,以便在触发 CVE 查询前预览将检测到的技术 |
| WHOIS Domain Lookup | 通过详细的注册人历史补充 discover_attack_surface 的结果——这对并购目标的域名年龄和所有权核验很有帮助 |
| Website Change Monitor | 运行 historical_drift_detection 建立基线后,安排对关键页面进行独立的变更监控,以跟踪后续修改 |
| Company Deep Research | 将网络暴露评分与商业情报结合——财务状况、领导层、法律历史——形成完整的并购或供应商尽职调查资料 |
| Website Contact Scraper | 攻击面映射识别出子域名后,使用联系人抓取工具查找安全团队联系人,以便进行负责任的漏洞披露或联系供应商修复问题 |
| B2B Lead Qualifier | 对于使用此 MCP 识别高风险潜在客户的 MSSP,可将暴露评分为 HIGH 或 CRITICAL 的域名输入潜在客户筛选流程,以开展定向联系 |
| Trustpilot Review Analyzer | 将网络风险评级与声誉数据结合,全面开展供应商尽职调查——同时评估技术风险和客户体验信号 |
局限性
- 不会主动扫描 — 此 MCP 仅执行被动侦察。开放端口检测依赖 Censys 定期进行的全网扫描索引,而非实时端口探测。自上次 Censys 扫描以来,端口可能已经开放或关闭。
- 技术栈检测需要可访问且可抓取的 URL — 如果目标 URL 返回非 200 响应,或阻止 Tech Stack Detector 访问,暴露评分中的漏洞维度将不完整(检测到 0 项技术 = 无 CVE 或 KEV 数据)。
- CISA KEV 交叉比对基于名称 — KEV 目录会与页面检测到的技术名称进行匹配,不会按版本进行匹配。匹配到的技术可能运行的是已修补版本;采取 KEV 警报行动前,必须进行人工核实。
- GitHub 代码暴露检测仅基于元数据 —
exposed_code_secrets_scan工具会分析代码库名称、描述和元数据,不会读取文件内容,也不会扫描代码中是否存在实际密钥。HIGH 风险标记表示代码库名称暗示其中包含敏感内容,并不代表已确认存在密钥。 - Censys 索引覆盖范围不一 — 并非所有 IP 地址和组织都能得到同等程度的索引。规模较小或新部署的基础设施可能不会出现在 Censys 结果中。
- 证书透明度取决于公开的 CT 日志 — 通过 crt.sh 发现 SSL 子域名,覆盖的是由公共 CA 签发的证书。内部或私有 PKI 证书不会出现在其中。
- 历史变更分析受 Wayback Machine 覆盖范围限制 — 未被 Internet Archive 编入索引的页面(robots.txt 禁止抓取、新近上线或流量较低)只会返回极少的快照数据。
- 暴露评分是风险信号,而非渗透测试 — 此工具用于识别表层暴露迹象,不会利用漏洞、测试身份验证,也不会确认检测到的 CVE 是否能在目标系统上实际触达。
- SPF/DMARC 检测依赖对 DNS 记录内容的解析 — 采用非标准格式的记录可能无法正确检测。
集成
- Zapier — 从 Zapier 工作流触发攻击面评估,并在接入新的高风险供应商时,将发现结果发送到 Slack、Jira 或 HubSpot
- Make — 构建自动化供应商审查工作流,定期调用
third_party_cyber_rating,并将结果记录到 Google Sheets 风险登记表 - Google Sheets — 将整个供应商组合的暴露评分和网络安全评级推送到实时电子表格,以便审查和跟踪
- Apify API — 通过 HTTP 上的 JSON-RPC,从 GRC 平台、SIEM 或安全编排工具以编程方式调用此 MCP 服务
- Webhooks — 在
attack_vector_report运行完成且评分高于警报阈值时,向 SIEM 或工单系统发送 POST 通知 - LangChain / LlamaIndex — 将攻击面数据作为检索源纳入 AI 安全 Agent,用于综合多个组织层面的信号来评估网络风险
故障排除
-
暴露评分的某个维度全部为 0 — 如果某个维度的评分为 0,底层 Actor 很可能返回了空结果。最常见的原因是,对于子域名较多的域名,
discover_attack_surface步骤超时。尝试降低 Actor 结果数量上限,或单独运行工具,以确定哪个数据源出现故障。 -
技术栈检测返回 0 项技术 — Tech Stack Detector 需要一个可访问且返回 200 响应的实时 URL。请确认
https://yourdomain.com可以访问,且不受 IP 白名单限制。如果目标是 SPA 或通过 JavaScript 渲染的应用,技术栈检测器可能无法完整解析;这会影响暴露评分中的漏洞和 KEV 维度。 -
CISA KEV 检查显示 0 个匹配项,即使软件存在已知 KEV — KEV 交叉比对依据技术名称字符串进行匹配。如果技术栈检测器返回的通用框架名称与 KEV 目录中的供应商/产品字段不完全一致,就会漏掉匹配项。请在 CISA KEV 目录中搜索具体产品版本并手动核实。
-
exposed_code_secrets_scan返回 0 个仓库 — 如果 GitHub 组织名称与确切的 GitHub 组织 slug 不一致,搜索将不会返回结果。调用工具前,请确认组织的确切 GitHub 用户名(区分大小写)。 -
大型域名出现速率限制或超时错误 — 拥有数百个子域名且有许多由 Censys 索引的主机的大型企业域名,可能会触发 Actor 超时(每个 Actor 的限制为 120 秒)。对于大型域名,请分别运行
infrastructure_sprawl_analysis和tech_stack_vulnerability_map,而不要使用会并行运行所有 Actor 的attack_vector_report。
负责任地使用
- 此 MCP 服务仅使用公开可用的数据源(DNS、WHOIS、证书透明度日志、NVD、CISA KEV 目录、Wayback Machine、GitHub 公开仓库、Censys)进行被动侦察。
- 全程不会进行主动扫描、数据包注入或漏洞利用。
- 请始终确保已获得评估目标域名的授权,尤其是在评估第三方供应商时。
- CISA KEV 数据来自美国政府的公开目录,仅供参考。采取行动前,必须核实相关发现。
- 在承保、供应商合同或披露场景中使用安全情报数据时,请遵守适用的法律法规。
- 有关网页抓取和被动侦察合法性的指南,请参阅 Apify 的指南。
常见问题
通过此 MCP 进行攻击面映射与 SecurityScorecard 或 BitSight 有何不同? SecurityScorecard 和 BitSight 是订阅制平台,费用为每年 $2,000-10,000+,使用专有数据采集方式。此 MCP 以每次评估 $2-4 的费用查询相同的公开数据源,无需订阅。商业平台提供更广泛的专有基线;此 MCP 更适合按需评估、由 API 驱动的工作流以及 AI 助手集成。
攻击面发现会进行主动扫描或向目标发送数据包吗? 不会。所有数据源都是被动的。DNS 查询发送到公共解析器,SSL 证书来自 crt.sh 公共日志,主机数据来自 Censys 的预构建扫描索引,技术栈检测则读取公开可访问的 HTTP 响应。不会探测、注入或利用任何内容。此工具不会向目标域名发送异常流量。 技术栈到 CVE 的检测流程有多准确? 准确性取决于技术栈检测器能否识别目标 URL 上的技术。公开可见的技术(服务器标头、HTML 元标记、JavaScript 库特征、CMS 标识)都能可靠检测。身份验证墙后的技术、内部服务或经过高度混淆的技术栈则无法检测。CVE 匹配是根据技术名称按关键词进行的,不会针对具体版本进行匹配。
什么是 CISA KEV 目录?它为什么对攻击面评估很重要? CISA 已知遭利用漏洞目录由美国网络安全和基础设施安全局维护,列出已确认正被威胁行为者在实际攻击中利用的 CVE。根据《第 22-01 号约束性运营指令》,美国联邦机构必须在规定期限内修补 KEV 条目。在供应商或目标的技术栈中发现 KEV 匹配,是任何攻击面评估中紧急程度最高的发现——它表明存在已确认的利用能力,而不只是理论风险。
单次运行可以评估多少个域名?
每次工具调用评估一个域名或 URL。要批量评估资产组合,可在应用程序中通过 HTTP API 以循环方式编程调用这些工具。使用 Apify Scheduler 运行定期扫描,并设置 maxTotalChargeUsd 限制来控制批处理成本。
我可以安排此 MCP 进行持续监控吗?
可以。使用 Apify Scheduler 按每日、每周或每月计划触发 discover_attack_surface 或 cisa_kev_exposure_check。结合 Webhook,在出现新的高风险发现时通知团队。对于变更检测场景,将 historical_drift_detection 工具与每周计划结合使用,可建立实用的入侵检测工作流。
对第三方域名进行攻击面映射合法吗? 使用公开可用数据(DNS 记录、WHOIS、证书透明度日志、已发布的漏洞数据库)进行被动侦察,在大多数司法管辖区都合法。此工具不会利用漏洞、访问私有系统或进行未经授权的访问。在供应商评估中,被动侦察是第三方风险管理的标准做法。详情请参阅 Apify 的网页抓取合法性指南。
完整的 attack_vector_report 需要多长时间?
完整报告最多并行运行 11 个 Actor,每个 Actor 的超时时间为 120 秒。实际上,具体时长取决于每个底层 Actor 返回数据的速度,大多数评估会在 60–180 秒内完成。子域名较多且 Censys 结果丰富的域名,比信息较少的域名耗时更长。
达到什么暴露评分时应升级处理? 建议阈值:评分高于 55(中等及以上)时,应安排在下一个迭代周期内进行安全审查。评分高于 75(严重)时,应立即联系安全团队。任何返回 CISA KEV 匹配项的运行结果都应升级处理,不受总评分影响——KEV 匹配表明存在正在被利用的风险。
我可以将此 MCP 与 LangChain 或 LlamaIndex 等 AI 框架配合使用吗?
可以。MCP 端点 https://entity-attack-surface-mcp.apify.actor/mcp 兼容任何 MCP 客户端。对于 LangChain 和 LlamaIndex,可使用 Apify 集成,或直接调用 HTTP 端点,将其用作自定义工具。结构化 JSON 响应使得构建安全情报 Agent 变得简单,它们可以将攻击面数据与其他数据源综合分析。
如果底层 Actor 失败或超时,会发生什么?
编排层会捕获单个 Actor 的失败,并为相应数据源返回空数组,而不会导致整个运行失败。其他 Actor 的结果仍会返回。如果关键 Actor(例如 Tech Stack Detector)超时,相应维度的评分将显示为零项发现,导致 Exposure Score 偏低。actorsUsed 字段会显示成功返回数据的 Actor 数量。
暴露代码机密扫描如何工作? 该工具会向 GitHub 查询名称与目标组织匹配的公开仓库,然后根据 3 个风险级别中的 11 种关键词模式,检查每个仓库的名称、描述和全名:HIGH(secret、credential、password、token、api-key)、MEDIUM(private、internal、config、.env)和 LOW(deploy、infra)。超过 12 个月没有提交记录的过时仓库也会被标记。不会读取文件内容——这只是元数据分析。
帮助我们改进
如果遇到问题,可以在 Apify 账户中启用运行共享,帮助我们更快地排查:
- 前往 账户设置 > 隐私
- 启用 与公开 Actor 创建者共享运行记录
这样一来,出现问题时我们就能查看运行详情,从而更快地修复问题。你的数据仅对 Actor 开发者可见,不会公开。
支持
发现 Bug 或有功能请求?请在此 Actor 页面上的 问题选项卡中提交问题。如需定制解决方案、企业集成或 MSSP 批量定价,请通过 Apify 平台联系我们。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。