harshadodderi/otx-ioc-exporter
GitHub: harshadodderi/otx-ioc-exporter
一个单文件浏览器工具,解决在本地快速提取、可视化与导出 OTX 威胁情报 IOC 的问题。
Stars: 1 | Forks: 0
# otx-ioc-exporter
一个单文件浏览器工具,用于从您订阅的 [AlienVault OTX](https://otx.alienvault.com) 威胁情报脉冲中获取、过滤并导出妥协指标(IOC)— 无后端、无安装、无依赖。
通过免费层 AI 工具构建
## 功能
直接使用您的个人 API 密钥连接到 OTX API,并从您订阅的脉冲中拉取 IOC 数据。所有处理均在浏览器中完成。结果显示在可调整大小、可过滤的表格中,并可以导出为 CSV 或 JSON,以便导入 SIEM、创建黑名单或进一步分析。
### 特性
- **按需脉冲分页** — 每页加载 50 个脉冲(OTX 每次调用的最大值);提供 1–10 页的手动按钮;仅在点击时获取并缓存当前会话
- **可调整列宽** — 拖动任意列边框即可调整宽度,Excel 风格;表格支持水平滚动,不会隐藏数据
- **每行完整 IOC 详情** — 日期、IOC 值、类型、脉冲名称、作者、TLP 分类、标签,以及指向源 OTX 脉冲的可点击链接
- **过滤控件** — 按 IOC 类型(IPv4、域名、文件哈希、URL、邮箱等)、TLP 级别(WHITE / GREEN / AMBER / RED)或针对 IOC 值和脉冲名称的全文搜索进行过滤
- **彩色标签** — IOC 类型和 TLP 级别在视觉上即时区分
- **导出 CSV** — 包含日期、IOC 值、类型、脉冲、脉冲 URL、作者、TLP、标签、完整时间戳(Created)和描述
- **导出 JSON** — 包含脉冲 URL 的完整结构化数据,适用于脚本或流水线导入
- **统计栏** — 显示总 IOC 数、脉冲数、不同的 IOC 类型数和不同作者数(跨所有已加载页)
- **无需安装** — 可直接在 Chrome 或 Firefox 中打开 `.html` 文件
## 使用方法
### 1. 处理 CORS
由于该工具作为本地文件在浏览器中运行,OTX API 默认会因浏览器 CORS 策略而阻止请求。您需要一个 CORS 解除限制的扩展程序 — 设置大约需要 60 秒。
安装以下任一扩展:
| 浏览器 | 扩展 |
|---|---|
| Chrome | [CORS Unblock](https://chrome.google.com/webstore/detail/cors-unblock/lfhmikememgdcahcdlaciloancbhjino) |
| Chrome | [Allow CORS: Access-Control-Allow-Origin](https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf) |
| Firefox | [CORS Everywhere](https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/) |
### 2. 获取您的 OTX API 密钥
1. 访问 [https://otx.alienvault.com/api](https://otx.alienvault.com/api)
2. 从 **“Your API Key”** 部分复制您的个人 API 密钥
### 3. 获取 IOC
1. 在 Chrome 或 Firefox 中打开 `otx-ioc-exporter.html`
2. 启用您的 CORS 扩展
3. 将 API 密钥粘贴到输入框中
4. 点击 **获取 IOC** — 立即加载第 1 页脉冲(最多 50 个)
### 4. 加载更多脉冲页
首次加载后,会出现 **脉冲页** 导航栏(按钮 1–10)。每个按钮代表来自 OTX 的下一批 50 个脉冲。点击任意页码即可按需获取该批次数据。已加载的页面会被高亮显示并从缓存中读取 — 不会重复调用 API。
### 5. 过滤与搜索
使用表格上方的控件缩小结果范围:
- **全部类型** 下拉菜单 — 按 IOC 类型过滤(IPv4、DOMAIN、URL、FILEHASH-MD5 等)
- **全部 TLP** 下拉菜单 — 按 TLP 分类过滤
- **搜索框** — 实时搜索 IOC 值和脉冲名称
### 6. 导出
- **导出 CSV** — 将当前过滤后的所有 IOC 下载为 `.csv` 文件,可直接用于 Excel、Splunk、Elastic 或任何 SIEM
- **导出 JSON** — 将当前过滤后的所有 IOC 下载为结构化的 `.json` 文件
## IOC 字段
| 字段 | 说明 |
|---|---|
| Date | 指标创建日期(`YYYY-MM-DD`) |
| IOC Value | 原始指标(IP、域名、哈希、URL、邮箱等) |
| Type | OTX 指标类型(例如 `IPv4`、`DOMAIN`、`FILEHASH-SHA256`) |
| Pulse | 所属 OTX 脉冲的名称 |
| Pulse URL | 指向 OTX 上该脉冲的直接链接 |
| Author | 脉冲作者的 OTX 用户名 |
| TLP | 交通灯协议级别(`WHITE`、`GREEN`、`AMBER`、`RED`) |
| Tags | 与脉冲关联的威胁标签 |
| Created | 指标的完整 ISO 8601 时间戳 |
| Description | 脉冲描述 |
## 架构
```
otx-ioc-exporter.html
│
├── UI Layer (HTML + CSS)
│ ├── CORS setup guide (collapsible)
│ ├── API key input
│ ├── Progress bar + status line
│ ├── Stats bar (IOC count, pulse count, types, authors)
│ ├── Pulse page nav (1–10, on-demand fetch)
│ ├── Filter controls (type, TLP, search)
│ └── Resizable IOC table with pagination
│
└── Logic Layer (Vanilla JS)
├── fetchPulsePage(key, pageNum) → OTX API /pulses/subscribed?page=N
├── extractIOCs(pulse) → normalises indicators into flat IOC objects
├── renderTable() → filters + paginates allIOCs into the table
├── renderPulseNav() → builds the 1–10 pulse page buttons
├── initColResize() → attaches drag-to-resize handlers on elements
├── exportCSV() → builds and downloads a CSV blob
└── exportJSON() → builds and downloads a JSON blob
```
**无框架、无 npm、无服务器。** 纯 HTML、CSS 和原生 JavaScript 编写,单文件实现。
## 文件命名
建议的仓库名称:**`otx-ioc-exporter`**
建议的文件名称:**`otx-ioc-exporter.html`**
## 使用场景
- SOC 分析员从订阅的威胁源拉取最新 IOC,用于每日分类处理
- 导出 IOC 列表以导入 Elastic Security、Splunk 或 Microsoft Sentinel 检测规则
- 构建 IP、域名、哈希等黑名单,用于 EDR 或防火墙策略
- 在事件响应期间,对带有 MITRE ATT&CK 标签的脉冲进行交叉引用
- 在调查过程中,通过 OTX 脉冲链接快速跳转到源上下文
## 限制
- 需要 CORS 浏览器扩展才能运行(本地文件的安全限制)
- 每个会话最多获取 500 个脉冲(10 页 × 每页 50 个)。对于更大的 OTX 订阅,请使用 OTX Python SDK 或 DirectConnect API
- 不保存认证 — API 密钥不会在会话之间保留
- 需要互联网连接(实时调用 OTX API)
## ⚠ 安全注意事项(CORS 扩展)
本工具需要 CORS 解除限制的浏览器扩展才能与本地文件通信。请在使用前了解以下风险:
### 扩展的作用
CORS(跨域资源共享)是浏览器安全机制,用于防止网站和本地文件在未明确许可的情况下向外部 API 发起请求。CORS 解除限制扩展通过向每个响应注入 `Access-Control-Allow-Origin: *` 来绕过此限制 — 全局作用于所有标签页。
### 启用扩展时的风险
- **您访问的任意网站均可自由发起跨域请求** — 恶意网站可静默调用 API、访问内部网络端点,或利用依赖 CORS 作为安全边界的其它服务
- **内部网络暴露** — 如果您在公司 VPN 或内网中,启用的 CORS 扩展可能允许页面探测并访问内部服务(如仪表盘、管理面板、API),这些服务通常受同源策略保护
- **会话令牌滥用** — 存储在浏览器中的认证会话(Cookie、令牌)可能被恶意脚本利用,以您的身份调用第三方服务
- **无标签页隔离** — 该扩展的绕过作用不局限于本工具;所有打开的标签页都会同时受到影响
### 安全使用建议
| 实践 | 原因 |
|---|---|
| 仅在使用本工具时启用扩展 | 缩短暴露窗口 |
| 启用前关闭所有其他标签页 | 防止其他页面利用开放的 CORS 策略 |
| 导出完成后立即禁用 | 不要在常规浏览时保持开启 |
| 不要在连接内网的工作机上使用 | 避免暴露内部端点 |
| 为该工具使用独立的浏览器配置文件 | 隔离 Cookie 和会话与主配置文件 |
## 许可证
本软件免费且不受任何限制,已发布至公共领域。
任何人可自由复制、修改、发布、使用、编译、出售或分发本软件,用于任何目的,商业或非商业,均无需署名。
详见 https://unlicense.org 获取详细信息。
标签:AlienVault, API密钥, CORS处理, IOCs, IOC导出, JSON导出, OTX, SIEM集成, TLP分类, 依赖免费, 分页加载, 列调整, 前端处理, 单文件应用, 后端开发, 块列表创建, 多模态安全, 威胁情报, 威胁情报分析, 开发者工具, 描述信息, 数据可视化, 数据导出, 无后端, 无需安装, 时间戳, 浏览器工具, 网络安全, 脉冲, 自由文本搜索, 过滤表格, 隐私保护, 颜色标记