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, 可疑对象, 威胁情报, 安全运营, 工作流, 开发者工具, 情报报告, 扫描框架, 无后门, 自动化响应, 逆向工具, 零依赖