harshadodderi/multi-ioc-exporter

GitHub: harshadodderi/multi-ioc-exporter

一个单文件浏览器工具,解决多源 IOC 快速获取、过滤与导出问题。

Stars: 1 | Forks: 0

# multi-source-ioc-exporter 一个单文件浏览器工具,用于从多个威胁情报提供者获取、过滤并导出妥协指标(IOCs)— **AlienVault OTX**(实时浏览器获取)和 **abuse.ch**(通过 PowerShell 的 MalwareBazaar、URLhaus、ThreatFox)— 无后端、无安装、无依赖。 通过免费层级 AI 工具构建 ## 功能 一个 HTML 文件中包含两个工具,通过标签页访问: - **AlienVault OTX 标签页** — 使用您的个人 API 密钥直接连接 OTX API,拉取已订阅脉冲中的 IOC 数据。所有处理均在浏览器中完成。结果显示在可调整大小、可过滤的表格中,并可导出为 CSV 或 JSON。 - **abuse.ch 标签页** — 生成即拿即用的 PowerShell 单行命令,使用您的 abuse.ch 认证密钥从 MalwareBazaar、URLhaus 和 ThreatFox 获取 IOC。复制命令、粘贴到 PowerShell 后,IOC 将自动导出为 CSV 和 TXT 文件。无 CORS 问题,无浏览器限制。 ## 提供商与 IOC 数量 | 提供商 | 方法 | 每次获取 IOC 数量 | IOC 类型 | |---|---|---|---| | AlienVault OTX | 浏览器获取(CORS 扩展) | 最多 500 个脉冲(10 页 × 50) | IPv4、域名、URL、哈希、邮箱等 | | MalwareBazaar | PowerShell(POST) | 最多 1,000 个样本 | SHA256 哈希 | | URLhaus | PowerShell(GET) | 最近 3 天的所有 URL | 恶意 URL | | ThreatFox | PowerShell(POST) | 最近 7 天的所有 IOC | IP、域名、URL、哈希 | ## 功能特性 ### AlienVault OTX 标签页 - **按需脉冲分页** — 每次加载 50 个脉冲(OTX 单次请求上限)。提供 1–10 页的手动按钮;每页仅在点击时获取并缓存到会话中 - **可调整列宽** — 拖动任意列边界即可调整大小,支持 Excel 风格操作。表格支持水平滚动,确保数据永不隐藏 - **每行完整 IOC 详情** — 包含日期、IOC 值、类型、脉冲名称、作者、TLP 分类、标签以及可直接点击的源 OTX 脉冲链接 - **过滤控制** — 可按 IOC 类型(IPv4、域名、文件哈希、URL、邮箱等)、TLP 级别(WHITE / GREEN / AMBER / RED)或 IOC 值与脉冲名称进行全文搜索 - **颜色编码标签** — IOC 类型与 TLP 级别通过颜色直观区分 - **导出 CSV** — 包含日期、IOC 值、类型、脉冲、脉冲 URL、作者、TLP、标签、创建时间(完整时间戳)和描述 - **导出 JSON** — 每个 IOC 的完整结构化数据,包含脉冲 URL,适合脚本化或流水线处理 - **统计栏** — 显示总 IOC 数、脉冲数、不同 IOC 类型数和不同作者数 ### abuse.ch 标签页(PowerShell 生成器) - **一键生成命令** — 粘贴认证密钥,选择提供者,点击生成并复制命令 - **提供者选择** — 可同时获取全部三个(MalwareBazaar + URLhaus + ThreatFox)或单独选择 - **导出 CSV 与 TXT** — CSV 包含完整元数据(日期、IOC、类型、提供者、家族、标签);TXT 仅包含原始 IOC 值(每行一个,便于用于 SIEM 阻断列表) - **带时间戳的输出** — 文件保存至 `.\abuse_ch_iocs\`,命名格式为 `iocs_YYYY-MM-DD_HH-mm-ss` - **无 CORS 问题** — PowerShell 直接调用 API,绕过所有浏览器限制 - **离线运行** — HTML 页面仅作为命令生成器;认证密钥不会通过浏览器离开您的机器 ## 使用方法 ### AlienVault OTX 标签页 #### 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 中打开 `multi-source-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** — 下载当前筛选结果为 `.csv` 文件 - **导出 JSON** — 下载当前筛选结果为结构化的 `.json` 文件 ### abuse.ch 标签页(PowerShell) #### 1. 获取认证密钥 1. 访问 [https://auth.abuse.ch/](https://auth.abuse.ch/) 2. 使用 Google、GitHub、X 或 LinkedIn 登录 3. 添加第二种登录方式,点击 **保存配置** 4. 在 **“Your API Keys”** 下生成认证密钥 5. 一个密钥可用于全部三个提供者(MalwareBazaar、URLhaus、ThreatFox) #### 2. 生成命令 1. 打开 `multi-source-ioc-exporter.html` 并点击 **abuse.ch** 标签页 2. 粘贴您的认证密钥 3. 选择提供者(全部三个或单独选择) 4. 点击 **生成 PowerShell 命令** #### 3. 运行 1. 点击 **复制命令** 2. 打开 PowerShell(Win+X → Windows PowerShell) 3. 右键粘贴并按回车 4. IOC 将导出至 `.\abuse_ch_iocs\` 目录,格式为 CSV 与 TXT #### 快速单行命令(无需 HTML 工具) ``` $k="YOUR-AUTH-KEY";$h=@{"Auth-Key"=$k};$d=".\abuse_ch_iocs";md $d -Force|Out-Null;$t=Get-Date -F "yyyy-MM-dd_HH-mm-ss";Write-Host "`n=== MalwareBazaar ===" -Fore Cyan;$mb=(irm "https://mb-api.abuse.ch/api/v1/" -Method Post -Headers $h -Body "query=get_recent&selector=time&limit=1000").data;Write-Host " $($mb.Count) samples" -Fore Green;Write-Host "`n=== URLhaus ===" -Fore Cyan;$uh=(irm "https://urlhaus-api.abuse.ch/v1/urls/recent/" -Method Get -Headers $h).urls;Write-Host " $($uh.Count) URLs" -Fore Green;Write-Host "`n=== ThreatFox ===" -Fore Cyan;$tf=(irm "https://threatfox-api.abuse.ch/api/v1/" -Method Post -Headers $h -Body '{"query":"get_iocs","days":7}' -ContentType "application/json").data;Write-Host " $($tf.Count) IOCs" -Fore Green;$all=@();$mb|%{$all+=[pscustomobject]@{Date=$_.first_seen;IOC=$_.sha256_hash;Type="SHA256";Provider="MalwareBazaar";Family=$_.signature;Tags=($_.tags-join", ")}};$uh|%{$all+=[pscustomobject]@{Date=$_.date_added;IOC=$_.url;Type="URL";Provider="URLhaus";Family=$_.threat;Tags=($_.tags-join", ")}};$tf|%{$all+=[pscustomobject]@{Date=$_.first_seen;IOC=$_.ioc;Type=$_.ioc_type;Provider="ThreatFox";Family=$_.malware;Tags=($_.tags-join", ")}};$all|Export-Csv "$d\iocs_$t.csv" -NoType;$all|select -Expand IOC|Out-File "$d\iocs_$t.txt";Write-Host "`n Total: $($all.Count) IOCs exported to $d\" -Fore Cyan ``` 将 `YOUR-AUTH-KEY` 替换为您的实际密钥。 ## abuse.ch API 详情 | 提供商 | 方法 | 端点 | 认证 | 请求体 | |---|---|---|---|---| | MalwareBazaar | POST | `https://mb-api.abuse.ch/api/v1/` | Header: `Auth-Key` | `query=get_recent&selector=time&limit=1000` | | URLhaus | GET | `https://urlhaus-api.abuse.ch/v1/urls/recent/` | Header: `Auth-Key` | 无 | | ThreatFox | POST | `https://threatfox-api.abuse.ch/api/v1/` | Header: `Auth-Key` | JSON: `{"query":"get_iocs","days":7}` | ## IOC 字段 ### AlienVault OTX | 字段 | 描述 | |---|---| | Date | 指标创建日期(`YYYY-MM-DD`) | | IOC Value | 原始指标(IP、域名、哈希、URL、邮箱等) | | Type | OTX 指标类型(如 `IPv4`、`DOMAIN`、`FILEHASH-SHA256`) | | Pulse | 所属 OTX 脉冲名称 | | Pulse URL | OTX 上该脉冲的直接链接 | | Author | 脉冲作者的 OTX 用户名 | | TLP | 交通灯协议级别(`ITE`、`GREEN`、`AMBER`、`RED`) | | Tags | 与脉冲关联的威胁标签 | | Created | 指标的完整 ISO 8601 时间戳 | | Description | 脉冲描述 | ### abuse.ch(CSV 输出) | 字段 | 描述 | |---|---| | Date | 首次出现日期 | | IOC | 指标值(哈希、URL、IP、域名) | | Type | IOC 类型(`SHA256`、`URL`、`ip:port`、`domain` 等) | | Provider | 来源提供者(`MalwareBazaar`、`URLhaus`、`ThreatFox`) | | Family | 恶意软件家族或威胁名称 | | Tags | 关联标签 | ## 架构 ``` multi-source-ioc-exporter.html │ ├── Tab Bar (AlienVault OTX | abuse.ch) │ ├── Tab 1: AlienVault OTX │ ├── 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 │ └── JS: fetchPulsePage() → extractIOCs() → renderTable() → exportCSV/JSON() │ └── Tab 2: abuse.ch (PowerShell Generator) ├── Auth-Key input ├── Provider selection (All / MalwareBazaar / URLhaus / ThreatFox) ├── Generate button → builds PowerShell one-liner ├── Copy-to-clipboard output box └── Step-by-step instructions ``` **无框架、无 npm、无服务器。** 纯 HTML、CSS 与原生 JavaScript 单文件实现。 ## 文件命名 建议仓库名称:**`multi-source-ioc-exporter`** 建议文件名:**`multi-source-ioc-exporter.html`** ## 使用场景 - SOC 分析员从订阅的 AlienVault 威胁源拉取最新 IOC 以进行每日分类 - 导出 abuse.ch IOC(哈希、URL、C2 IP)用于 Elastic Security、Splunk 或 Microsoft Sentinel 的检测规则 - 构建 IP、域名、哈希等阻断列表用于 EDR 或防火墙策略 - 在事件响应期间交叉引用带 MITRE ATT&CK 标记的脉冲 - 在调查过程中快速跳转到 OTX 脉冲上下文 - 批量获取带恶意家族分类的 ThreatFox IOC 以进行威胁狩猎 ## 限制 - **AlienVault OTX 标签页** 需要 CORS 浏览器扩展才能运行(本地文件对 API 的浏览器安全限制) - **abuse.ch 标签页** 需要 PowerShell(Windows);HTML 页面仅生成命令,由 PowerShell 执行 - AlienVault 每次会话最多获取 500 个脉冲(10 页 × 50 个)。如需更大 OTX 订阅,请使用 OTX Python SDK 或 DirectConnect API - abuse.ch API 需要从 [auth.abuse.ch](https://auth.abuse.ch/) 获取免费认证密钥 - 不保存认证状态 — API 密钥不会在会话之间保留 - 需要互联网连接(两个标签页均实时调用 API) ## ⚠ 安全注意事项 ### CORS 扩展(仅 AlienVault 标签页) 该标签页需要 CORS 解除扩展以与 OTX API 通信。请注意以下风险: #### 扩展的作用 CORS(跨域资源共享)是浏览器安全机制,防止网页与本地文件在未明确许可的情况下请求外部 API。CORS 解除扩展通过向每个响应注入 `Access-Control-Allow-Origin: *` 来绕过此限制—全局作用于所有标签页。 #### 启用扩展时的风险 - **您访问的任何网站均可自由发起跨域请求** — 恶意站点可静默调用 API、访问内部网络端点或依赖 CORS 作为安全边界的其它服务 - **内网暴露** — 若您连接在企业 VPN 或内网,启用的 CORS 扩展可能允许页面探测并访问内网服务(如仪表盘、管理面板、API),这些服务通常受同源策略保护 - **会话令牌滥用** — 存储在浏览器中的认证会话(Cookie、Token)可能被恶意脚本利用,以您的身份调用第三方服务 - **无标签页隔离** — 该扩展的绕过作用不局限于本工具;所有打开的标签页会同时受到影响 #### 安全使用建议 | 实践 | 原因 | |---|---| | 仅在使用本工具时启用扩展 | 最小化暴露窗口 | | 启用前关闭所有其他标签页 | 防止其它页面利用开放的 CORS 策略 | | 导出完成后立即禁用 | 不要在常规浏览时保持开启 | | 勿在连接内网的工作机上使用 | 避免暴露内部端点 | | 使用独立的浏览器配置文件 | 将 Cookie 与会话隔离于主配置文件 | ### abuse.ch 标签页(PowerShell) - 您的认证密钥嵌入生成的 PowerShell 命令中 — 请勿与他人共享该命令 - HTML 页面在本地离线生成命令;密钥不会通过浏览器离开您的机器 - PowerShell 通过 HTTPS 直接将认证密钥发送至 abuse.ch API;无第三方代理或中间件 ## 许可证 本软件免费且不受任何限制,已发布至公共领域。 任何人都可自由复制、修改、发布、使用、编译、出售或分发本软件,用于任何目的,商业或非商业。无需署名。 详见 https://unlicense.org
标签:abuse.ch, AlienVault, CORS, Indicators of Compromise, IOC, IPv6, JSON导出, MalwareBazaar, OTX, PowerShell, SEO: IOC导出, SEO: OTX, SEO: PowerShell 一行命令, SEO: 威胁情报工具, ThreatFox, URLhaus, 分页加载, 列重设, 单文件工具, 后端开发, 多模态安全, 多源IOC, 威胁情报, 威胁情报聚合, 开发者工具, 数据可视化, 无后端, 无需安装, 浏览器取证, 浏览器工具, 缓存, 网络安全, 表格过滤, 隐私保护, 零依赖