andresark/agentic-threat-intel

GitHub: andresark/agentic-threat-intel

这是一个专为OpenClaw智能体设计的技能,通过面向工作流的命令封装了TrendAI Vision One的威胁情报API,实现自动化的IOC查询、报告检索及威胁狩猎。

Stars: 0 | Forks: 0

# TrendAI Vision One 威胁情报 — OpenClaw 技能 一种为 AI 智能体提供对 [TrendAI Vision One](https://www.trendmicro.com/en_us/business/products/one-platform.html) 威胁情报直接访问权限的 [OpenClaw](https://openclaw.ai) 智能体技能。专为 **智能体工作流** 设计 — 而非原始 API 封装。 该技能不再 1:1 暴露所有 API 端点,而是提供 **6 个面向工作流的命令**,这些命令对应真实的威胁搜寻任务。AI 智能体只需说明它想知道什么,技能会自动处理分页、STIX 解析、IOC 类型检测和输出格式化。 **零依赖** — 仅在 Python 3.7+ 标准库上运行。 ## 快速开始 ### 1. 获取 Vision One API 密钥 在您的 TrendAI Vision One 控制台中: **Administration > API Keys > Add API Key** 所需权限: | Use Case | Permission | |----------|------------| | 只读(feed、lookup、report、hunt) | Threat Intelligence — **View** | | 完全访问(包括 `suspicious add`) | Threat Intelligence — **View + Configure** | ### 2. 设置环境变量 ``` export VISION_ONE_API_KEY="your-api-key-here" export VISION_ONE_REGION="us" # Optional — us (default), eu, jp, sg, au, in, mea ``` ### 3. 安装技能 将此目录复制到您的 OpenClaw 技能位置: ``` cp -r . ~/.openclaw/workspace/skills/vision-one-threat-intel/ ``` 或将其添加到您的 `openclaw.json`: ``` { "skills": { "entries": { "vision-one-threat-intel": { "enabled": true } } } } ``` 启动一个新的 OpenClaw 会话 — 技能将自动加载。 ## 命令一览 | Command | What It Does | |---------|-------------| | `lookup ` | 跨 feed 情报和您组织的拦截列表查找任何 IOC | | `feed` | 列出最新的威胁指标,支持可选过滤 | | `report` | 浏览或搜索 TrendAI 情报报告 | | `suspicious list` | 查看您组织的可疑对象(拦截列表) | | `suspicious add` | 将一个 IOC 添加到拦截列表(写操作 — 需要确认) | | `hunt` | 按活动、行为者、行业、国家或 CVE 搜索威胁指标 | 所有命令都会自动检测 IOC 类型(IP、域名、URL、SHA-1、SHA-256、email)— 智能体只需提供原始值。 ## 使用示例及实际输出 ### 查询域名 ``` python3 scripts/v1ti.py lookup mac-fster[.]com --days 30 ``` ``` === Feed Intelligence: 1 matches === Type: DOMAIN Value: mac-fster[.]com Pattern: [domain-name:value = 'mac-fster[.]com'] Created: 2026-03-12T02:43:11.360Z Valid From: 2026-03-12T02:43:11.360Z Valid Until: 2026-09-15T21:02:02.470Z ID: indicator--7367d804-56a5-465b-89f1-c91033baf9d1 === Suspicious Object Status: Not on list === === ``` 该技能在 TrendAI 威胁 feed 中找到了该域名(带有有效期窗口的 STIX 指标),并确认它当前**不**在您组织的拦截列表中。 ### 获取最新的威胁指标 ``` python3 scripts/v1ti.py feed --days 30 --limit 10 ``` ``` === Feed Indicators (last 30 days): 10 results === 1. [FILE] 2ec37a7cc8daf20b1XXXXXXXXXXXX1ca5 | 2026-03-12 2. [DOMAIN] mymachb[.]com | 2026-03-12 3. [DOMAIN] mac-spce[.]com | 2026-03-12 4. [DOMAIN] mymcsft[.]com | 2026-03-12 5. [DOMAIN] mac-fster[.]com | 2026-03-12 6. [DOMAIN] macfxnow[.]com | 2026-03-12 7. [DOMAIN] getmclab[.]com | 2026-03-12 8. [DOMAIN] mac-fst[.]com | 2026-03-12 9. [DOMAIN] insta-mcer[.]com | 2026-03-12 10. [DOMAIN] instmc[.]com | 2026-03-12 Total: 10 indicators === ``` 按类型过滤以缩小结果范围: ``` python3 scripts/v1ti.py feed --days 30 --type domain --limit 5 ``` ### 搜索情报报告 ``` python3 scripts/v1ti.py report --search "Backdoor" --limit 5 ``` ``` === Intelligence Reports (search: 'Backdoor'): 2 results === 1. Cybercriminals Distribute Backdoor With VPN Installer | 2020-09-25 | 5 IOCs ID: report--0ea4ba42-7904-4f32-b487-c44f5ed41e8c 2. New MacOS Backdoor Connected to OceanLotus Surfaces | 2020-11-26 | 8 IOCs ID: report--b706757d-8794-4863-8281-5bde4b1ce02b Total: 2 reports === ``` 通过 ID 获取特定报告的详细信息: ``` python3 scripts/v1ti.py report --id "report--0ea4ba42-7904-4f32-b487-c44f5ed41e8c" ``` ``` === Intelligence Report === Report: Cybercriminals Distribute Backdoor With VPN Installer ID: report--0ea4ba42-7904-4f32-b487-c44f5ed41e8c Published: 2020-09-25T03:14:02.89Z Created: 2020-09-25T03:14:02.890Z Modified: 2020-09-25T03:14:02.890Z Types: threat-report Associated IOCs: 5 === ``` ### 检查您组织的拦截列表 ``` python3 scripts/v1ti.py suspicious list --limit 5 ``` ``` === Suspicious Objects: 5 results === 1. [fileSha256] C5DE4B9E5C83XXXX...XXX376F7B0A8 | log | HIGH | expires 2026-05-10 2. [fileSha1] 61211A7251XXXX...XXX090A9B9A6876 | log | HIGH | expires 2026-05-10 3. [fileSha1] D74E41D0EEXXXX...XXX1388738B3E67C | log | HIGH | expires 2026-05-10 4. [fileSha256] F7D9F689B2XXXX...XXX54E8AC7D273F | log | HIGH | expires 2026-05-10 5. [fileSha1] 61EECC4674XXXX...XXX916F854F8B810F6D | log | HIGH | expires 2026-05-09 Total: 5 objects === ``` ### 从拦截列表查询哈希 ``` python3 scripts/v1ti.py lookup 61211A7251XXXXXXXXXXXX090A9B9A6876 ``` ``` === Feed Intelligence: No matches === === Suspicious Object Status: FOUND === Type: fileSha1 Value: 61211A7251XXXXXXXXXXXX090A9B9A6876 Scan Action: log Risk Level: HIGH Expires: 2026-05-10T00:00:00Z Last Modified: 2026-04-09T17:57:24Z In Exception List: No === ``` 虽然在公共威胁 feed 中未找到该哈希,但它**确实**在您组织的可疑对象列表中 — 确认它是通过 `log` 操作以 `HIGH` 风险级别手动添加的。 ### 将 IOC 添加到拦截列表 ``` python3 scripts/v1ti.py suspicious add evil-domain.example.com \ --action block --risk high \ --description "C2 server from phishing campaign" \ --expiry-days 30 ``` ``` === Suspicious Object Added === Type: domain Value: evil-domain.example.com Action: block Risk: HIGH Description: C2 server from phishing campaign Expires: 2026-05-10T19:00:00Z === ``` ### 按条件进行威胁搜寻 ``` python3 scripts/v1ti.py hunt --industry Finance --days 90 --limit 10 ``` 搜寻条件可以组合使用: ``` python3 scripts/v1ti.py hunt --actor APT29 --country "United States" --days 60 python3 scripts/v1ti.py hunt --cve CVE-2024-3400 --limit 20 python3 scripts/v1ti.py hunt --campaign "ransomware" --industry Healthcare ``` ## 工作原理 ### IOC 自动检测 您无需指定指标类型 — 技能会自动检测: | Input | Detected Type | |-------|--------------| | `198.51.100.23` | IPv4 | | `2001:db8::1` | IPv6 | | `evil.example.com` | Domain | | `https://evil.example.com/payload` | URL | | `a1b2c3d4e5f6...` (40 个十六进制字符) | SHA-1 | | `a1b2c3d4e5f6...` (64 个十六进制字符) | SHA-256 | | `attacker@phishing.com` | Email | ### 输出格式 所有输出均为**结构化纯文本** — 而非原始 JSON。这是有意为之: - JSON 转储会浪费 tokens,且难以让智能体进行推理 - Markdown 表格在不同智能体运行时中的渲染效果不一致 - 带有分节标题的键值对提供最佳的信号噪声比 ### 分页 内部处理。`--limit` 标志控制您获得的结果数量。技能自动遵循 Vision One 的 `nextLink` 分页机制 — 智能体无需处理 skip tokens。 ### 错误消息 错误遵循三部分模板,有助于智能体自我修正: ``` ERROR: Region 'xx' is not valid EXPECTED: One of: au, eu, in, jp, mea, sg, us EXAMPLE: export VISION_ONE_REGION='us' ``` ## 架构 ``` SKILL.md OpenClaw skill manifest (loaded at session start) scripts/ v1ti.py CLI entry point — 6 subcommands lib/ client.py HTTP client (auth, retry, rate-limit, region routing) ioc_detect.py Auto-detect IOC type from raw input formatters.py Structured text formatters for AI consumption pagination.py Auto-pagination (STIX bundles + standard items) cache.py File-based session cache (5min TTL) references/ api-reference.md Vision One API endpoint documentation response-schemas.md STIX 2.1 + JSON response field definitions filter-examples.md OData filter syntax and examples ``` ### 设计原则 该技能遵循领先威胁情报平台和智能体 AI 安全框架研究中的最佳实践: - **面向工作流,而非面向 API** — 6 个命令对应威胁搜寻任务,而非 REST 端点 - **5-15 个工具的最佳平衡点** — 避免导致智能体性能下降的“工具大杂烩” - **零依赖** — 仅使用标准库 `urllib.request` + `json`;只需 PATH 中有 `python3` - **自动检测,无需询问** — IOC 类型分类是确定性的;智能体提供值即可 - **默认安全** — 写操作需要显式标志;读操作始终安全 - **简洁输出** — 针对效率和智能体推理优化的结构化文本 ## 要求 - Python 3.7+ - 无需外部包(仅限标准库) - 具有威胁情报权限的 TrendAI Vision One API 密钥 ## 许可证 MIT
标签:API 集成, CSV导出, Feed 监控, IOC 检索, IP 地址批量处理, OpenClaw, Python, STIX, TrendAI Vision One, 可疑对象, 威胁情报, 安全运营, 工作流, 开发者工具, 情报报告, 扫描框架, 无后门, 自动化响应, 逆向工具, 零依赖