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分类, 依赖免费, 分页加载, 列调整, 前端处理, 单文件应用, 后端开发, 块列表创建, 多模态安全, 威胁情报, 威胁情报分析, 开发者工具, 描述信息, 数据可视化, 数据导出, 无后端, 无需安装, 时间戳, 浏览器工具, 网络安全, 脉冲, 自由文本搜索, 过滤表格, 隐私保护, 颜色标记