TheDudesRepo/MCP-Threat-Intelligence
GitHub: TheDudesRepo/MCP-Threat-Intelligence
MCP威胁情报:自动化威胁情报收集与分析平台。
Stars: 1 | Forks: 0
# MCP威胁情报
MCP威胁情报是一个无状态的Cloudflare Workers模型上下文协议服务器,为调查员的AI代理提供可重用的工具,用于丰富和关联VirusTotal、urlscan.io和Censys上的指标。其目的不是单次查询;而是让代理收集证据,从域名转向IP和基础设施指纹,并返回一个包含结论、置信度和证据链的标准化调查摘要。
## 为什么选择MCP服务器而不是直接查询这些API
MCP服务器让AI代理能够自主地编排多源关联,而不是强迫每个调查员或提示了解三个供应商API。它可以跨调查员和代理重用,并集中处理身份验证、速率限制处理、可选缓存和审计日志,以便源API密钥和配额策略保持在受控的Worker中。
## 架构
此Worker使用Cloudflare的当前无状态`createMcpHandler`方法,来自`agents/mcp` SDK。每个请求创建一个新的`McpServer`,这与当前Cloudflare对无状态可流式HTTP MCP服务器的指导方针相匹配。
在`/mcp`暴露的工具:
- `virustotal_lookup(indicator)`: 自动检测域名、IP、URL或文件哈希;返回声誉、供应商检测、类别和域名解析。
- `urlscan_lookup(url_or_domain)`: 搜索现有扫描;返回结论、标题、最终URL、截图链接、联系IP和联系域名。
- `cloudflare_urlscan_lookup(url_or_domain, submit_scan?)`: 搜索Cloudflare Radar URL扫描报告,并可选择提交新的未列出扫描;返回结论、最终URL、主要IP/ASN、联系IP/域名、类别、哈希和报告链接。
- `censys_lookup(ip_or_domain)`: 使用当前的Censys平台API返回主机端口/服务、TLS证书详情、JARM、ASN和地理位置。免费Censys账户可以使用直接IP主机查找;域名搜索需要付费/组织API访问。
- `investigate_indicator(indicator)`: 协调来源,将VirusTotal和Cloudflare Radar IP证据转换为Censys直接IP主机丰富,当启用时运行付费/组织Censys sibling转换,检查urlscan/Radar中的托管内容,并返回一个标准化的关联摘要。
每个来源结果都标准化为:
```
{
"indicator": "example.com",
"indicator_type": "domain",
"source": "virustotal",
"verdict": "unknown",
"score": null,
"key_findings": [],
"raw_ref": {}
}
```
Worker接受常见的去毒指标,如`evil[.]com`、`hxxps://evil[.]com`和`1[.]2[.]3[.]4`。如果缺少源API密钥,则该来源返回一个结构化的`skipped`结果,而不是使整个工具调用失败。
## 设置
```
npm install
```
对于本地开发,复制示例env文件,并仅填写您要测试的密钥:
```
Copy-Item .dev.vars.example .dev.vars
```
不要提交`.dev.vars`;它被忽略。
## 密钥
使用Wrangler在Cloudflare中设置密钥:
```
npx wrangler secret put VT_API_KEY
npx wrangler secret put URLSCAN_API_KEY
npx wrangler secret put CLOUDFLARE_ACCOUNT_ID
npx wrangler secret put CLOUDFLARE_URL_SCANNER_TOKEN
npx wrangler secret put CENSYS_API_TOKEN
npx wrangler secret put MCP_SHARED_SECRET
```
CLOUDFLARE_URL_SCANNER_TOKEN应该是具有“帐户”>“URL扫描器”权限的Cloudflare API令牌。帐户ID不是密码,但请将其保留在Cloudflare密钥中,而不是`wrangler.jsonc`中,以免公开仓库中的帐户元数据。
Cloudflare Radar URL扫描器默认使用此Worker中的“未列出”可见性提交新扫描。除非您有意想让提交的URL出现在最近的扫描和搜索结果中,否则不要将其设置为“公共”。要覆盖它:
```
npx wrangler secret put CLOUDFLARE_URL_SCAN_VISIBILITY
```
使用`Unlisted`或`Public`作为值。
Censys目前将平台API记录在`https://api.platform.censys.io/v3/`下,使用携带令牌身份验证。如果您的帐户仍然有旧的API ID/密钥凭证,请创建当前的Censys平台个人访问令牌,并将其用作`CENSYS_API_TOKEN`。
对于免费Censys账户,不要设置`CENSYS_ORG_ID`;Worker默认省略`organization_id`。在此模式下,Censys适用于直接IP主机查找,以及VirusTotal提供解析IP以转向Censys的调查。Censys域名搜索和sibling-infrastructure转向使用平台搜索API,并需要付费/组织API访问。
如果您有一个需要组织ID的付费/企业Censys帐户,请设置以下两个:
```
npx wrangler secret put CENSYS_ORG_ID
npx wrangler secret put CENSYS_USE_ORG_ID
```
将`true`作为值用于`CENSYS_USE_ORG_ID`。
如果您之前为免费帐户设置了`CENSYS_ORG_ID`,请将其删除以保持Cloudflare密钥列表清洁:
```
npx wrangler secret delete CENSYS_ORG_ID
```
可选缓存:
1. 创建一个Workers KV命名空间。
2. 在`wrangler.jsonc`中取消注释`kv_namespaces`绑定。
3. 设置`ENABLE_CACHE=true`和可选的`CACHE_TTL_SECONDS`。
## 本地开发
```
npx wrangler dev
```
MCP端点将是:
```
http://localhost:8787/mcp
```
客户端必须发送:
```
Authorization: Bearer
```
## 部署
```
npx wrangler deploy
```
部署后,端点是:
```
https://mcp-threat-intel..workers.dev/mcp
```
## 连接
### MCP检查器
```
npx @modelcontextprotocol/inspector
```
使用远程可流式HTTP URL:
```
https://mcp-threat-intel..workers.dev/mcp
```
添加带有您的`MCP_SHARED_SECRET`值的`Authorization`头。
### Cloudflare AI游乐场
打开Cloudflare AI游乐场,添加远程MCP服务器,并使用:
```
https://mcp-threat-intel..workers.dev/mcp
```
使用带有您的`MCP_SHARED_SECRET`值的携带令牌头。
### Cloudflare Radar MCP服务器
Cloudflare还运行一个官方的Radar MCP服务器:
```
https://radar.mcp.cloudflare.com/mcp
```
当您想在客户端中查看一般Radar趋势、见解和URL扫描实用程序时直接使用它。此Worker直接集成底层URL扫描器API,因此其结果可以与VirusTotal、urlscan.io和Censys在`investigate_indicator`中进行标准化和关联。
### Cloudflare API MCP服务器
Cloudflare还提供了一个广泛的MCP服务器,用于完整的Cloudflare API:
```
https://mcp.cloudflare.com/mcp
```
此服务器使用高效的代码模式模式,使用两个工具`search`和`execute`,而不是公开成千上万的本地工具。当您想让代理检查或管理Cloudflare帐户资源(如Workers、DNS、日志、R2、D1、访问或URL扫描器API)时,将其作为单独的MCP服务器连接。
尽可能使用OAuth:
```
{
"mcpServers": {
"cloudflare-api": {
"url": "https://mcp.cloudflare.com/mcp"
}
}
}
```
对于自动化,使用范围紧密的Cloudflare API令牌作为携带令牌。除非您有意想限制该MCP服务器仅限于URL扫描器权限,否则不要重复使用`CLOUDFLARE_URL_SCANNER_TOKEN`。
此威胁情报Worker不代理广泛的Cloudflare API MCP服务器。将其分开可以避免给调查工具提供一般的Cloudflare帐户控制。
### Claude桌面通过mcp-remote
编辑您操作系统的Claude桌面配置文件:
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`
在每个OS上使用相同的JSON:
```
{
"mcpServers": {
"threat-intel": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp-threat-intel..workers.dev/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer "
}
}
}
}
```
将`Authorization:${AUTH_HEADER}`保留如所示。将您的真实共享密钥放入`AUTH_HEADER`中,并带有`Bearer `前缀。编辑配置后重新启动Claude桌面。
### Claude代码
Claude代码可以直接连接到远程HTTP MCP服务器:
```
claude mcp add --transport http --scope user threat-intel \
https://mcp-threat-intel..workers.dev/mcp \
--header "Authorization: Bearer "
```
验证它:
```
claude mcp list
```
在Claude代码内部运行:
```
/mcp
```
如果您更喜欢项目范围内的配置而不是用户范围内的服务器,在您处于该项目中时,从添加命令中省略`--scope user`。
### Codex CLI
Codex从`~/.codex/config.toml`读取MCP服务器配置,用于用户范围的设置,或`.codex/config.toml`用于受信任的项目范围设置。使用`bearer_token_env_var`;Codex为您添加`Authorization: Bearer ...`头。
将以下内容添加到`~/.codex/config.toml`:
```
[mcp_servers.threat-intel]
url = "https://mcp-threat-intel..workers.dev/mcp"
bearer_token_env_var = "MCP_SHARED_SECRET"
```
然后设置环境变量,在启动Codex之前。
macOS/Linux:
```
export MCP_SHARED_SECRET=""
codex
```
Windows PowerShell:
```
$env:MCP_SHARED_SECRET = ""
codex
```
在Codex内部验证它:
```
/mcp
```
对于Codex,环境变量只是原始共享密钥。使用`bearer_token_env_var`时不要包含`Bearer `。
## 示例调查记录
调查员:
```
Investigate hxxps://login-example[.]com and look for related infrastructure.
```
代理调用:
```
investigate_indicator({"indicator":"hxxps://login-example[.]com"})
```
代表性响应:
```
login-example.com assessed as suspicious with medium confidence using virustotal, urlscan, censys.
Evidence chain:
1. Input refanged to https://login-example.com/ and classified as url.
2. VirusTotal found suspicious vendor detections and recent resolutions to 203.0.113.44.
3. urlscan found a login-themed page title, final URL, screenshot, and contacted domains.
4. Cloudflare Radar confirmed the final URL, primary IP, contacted domains, categories, and malicious verdict metadata.
5. Censys enriched 203.0.113.44 with ports 80 and 443, a TLS certificate, JARM fingerprint, ASN, and geolocation.
6. Censys JARM and certificate pivots surfaced sibling IPs 203.0.113.45 and 203.0.113.46.
Next pivot:
Run censys_lookup on each sibling IP, then compare certificates, JARM, page title, and ASN for campaign clustering.
```
## 示例调查输出
下面的截图显示了从`investigate_indicator({"indicator":"207.90.244.12"})`渲染的MCP客户端报告,包括标准化的来源证据、基础设施上下文、分析师笔记和狩猎操作。
标签:AMSI绕过, API集成, Ask搜索, MCP协议, urlscan.io, VirusTotal, 云函数, 人工智能, 可观测性, 威胁情报, 威胁检测, 安全运营, 开发者工具, 扫描框架, 数据关联, 数据可视化, 用户模式Hook绕过, 程序员工具, 缓存机制, 自动化攻击, 自动化调查, 证据链, 黄金证书