philipzangara/splunk-otx-cti-dashboard
GitHub: philipzangara/splunk-otx-cti-dashboard
一个 Splunk 经典仪表板,将 AlienVault OTX 威胁情报与 Windows Sysmon 端点遥测进行关联,帮助 SOC 分析师识别环境中正在遭受的外部威胁攻击。
Stars: 0 | Forks: 0
# Splunk OTX CTI 仪表板
一个 Splunk Classic 仪表板,用于可视化来自 AlienVault Open Threat Exchange (OTX) 的网络威胁情报 (CTI) 数据。作为 ECA Cyber Range Splunk 安全仪表板挑战赛的一部分构建,用于演示实时威胁情报摄取、环境关联和使用 Splunk 进行可视化。
## 概述
这个仪表板回答了 SOC 分析师每个班次都会问的一个核心问题:**外部世界的威胁情报现在是否正在主动攻击我的环境?**
它通过将来自 Windows 端点的实时 Sysmon 遥测数据与来自 AlienVault OTX 的恶意指标和对手 TTPs 进行关联来实现这一点——不仅展示全球存在哪些威胁,还展示您的机器实际正在通信的对象。
## 功能
- **15 个仪表板面板**,跨越 8 行,覆盖完整的 CTI 生命周期
- **实时威胁数据**,由 AlienVault OTX 通过 TA-otx Splunk 附加组件提供支持
- **动态过滤器** — 时间范围选择器、IOC 类型下拉菜单和威胁参与者下拉菜单,同时影响所有面板
- **IOC 类型过滤器** — 选择 IPv4、域名或哈希类型会同时过滤所有相关的 IOC 面板;不相关的面板将不返回结果
- **MITRE ATT&CK TTP 跟踪** — 对手技术在所有 14 个战术中的频率和趋势分析
- **IOC 可见性** — 恶意 IP、域名和文件哈希 (SHA256) 与实时 Sysmon 遥测数据关联
- **地理情报** — 恶意 IP 命中气泡地图,包含国家和 IP 级别钻取表格
- **环境关联** — 每个 IOC 面板都将 OTX 指标与 Sysmon 事件进行关联,因此结果反映的是您环境中的实际活动,而不仅仅是全局馈送
- **馈送健康监控** — 跟踪 OTX 摄取状态和数据新鲜度
## 仪表板面板
| # | 面板 | 类型 | 行 | 数据源 |
|---|-------|------|-----|-------------|
| 1 | 最近 24 小时有 IOC 命中的唯一主机 | 单值 KPI | 1 | Sysmon + OTX |
| 2 | 最近 24 小时 IOC 命中总数 | 单值 KPI | 1 | Sysmon + OTX |
| 3 | 环境中的关键 TTPs | 单值 KPI | 1 | Sysmon + OTX |
| 4 | 最近 24 小时检测到的恶意 IP | 单值 KPI | 1 | Sysmon + OTX |
| 5 | 最近 24 小时唯一来源国家 | 单值 KPI | 1 | Sysmon + OTX |
| 6 | OTX 威胁情报命中 - 环境中活跃的 TTPs | 表格 | 2 | Sysmon + OTX |
| 7 | 按位置划分的恶意 IP 命中 | 气泡地图 | 3 | Sysmon + OTX |
| 8 | 按命中计数排名的热门国家 | 表格 | 4 | Sysmon + OTX |
| 9 | 热门恶意 IP | 表格 | 4 | Sysmon + OTX |
| 10 | OTX 恶意域名命中 - 您的环境(最近 7 天)| 表格 | 5 | Sysmon + OTX |
| 11 | OTX 恶意文件命中 - 您的环境 | 表格 | 5 | Sysmon + OTX |
| 12 | 热门 MITRE ATT&CK 技术 (TTPs) | 柱状图 | 6 | OTX |
| 13 | 本周观察到的新 TTPs | 表格 | 6 | OTX |
| 14 | MITRE ATT&CK 框架 - 活跃的 TTPs(最近 7 天)| 表格 | 7 | OTX |
| 15 | OTX 馈送健康 - 最后摄取时间 | 表格 | 8 | OTX |
## 回答的安全问题
| 面板 | 安全问题 |
|-------|------------------|
| 最近 24 小时有 IOC 命中的唯一主机 | 在过去 24 小时内,我有多少台机器确认了恶意指标接触? |
| IOC 命中总数 | 今天在我的环境中看到了多少个不同的恶意指标? |
| 环境中的关键 TTPs | 在 OTX 脉冲中看到的对手技术中,有多少在我的 Sysmon 日志中高音量触发? |
| 检测到的恶意 IP | 在过去 24 小时内,我的环境连接了多少个 OTX 标记的 IP? |
| 唯一来源国家 | 恶意连接来自多少个国家? |
| 环境中活跃的 TTPs | 哪些特定的 MITRE 技术既在 OTX 情报中又在我的 Sysmon 数据中实际观察到? |
| 按位置划分的恶意 IP 命中 | 攻击我环境的恶意 IP 在地理上位于哪里? |
| 按命中计数排名的热门国家 | 哪些国家负责最多的恶意连接尝试? |
| 热门恶意 IP | 哪些特定 IP 最频繁地攻击我的环境,它们属于谁? |
| 恶意域名命中 | 我的机器正在通过 DNS 解析哪些 OTX 标记的域名? |
| 恶意文件命中 | 哪些 OTX 标记的文件哈希在我的端点上已被执行、加载或创建? |
| 热门 MITRE ATT&CK 技术 | 哪些对手技术在整个 OTX 脉冲中出现频率最高? |
| 本周新 TTPs | 本周在 OTX 情报中出现了哪些新的对手技术? |
| MITRE ATT&CK 框架 | 当前在 OTX 中有活跃技术的 14 个 ATT&CK 战术类别是哪些? |
| 馈送健康 | OTX 数据是否正在流入 Splunk,其新鲜度如何? |
## 需求
- Splunk Enterprise 9.1 或更高版本
- [TA-otx — Open Threat Exchange 附加组件](https://splunkbase.splunk.com/app/4336),作者:Luke Monahan
- AlienVault OTX 账户和 API 密钥 — 在 [otx.alienvault.com](https://otx.alienvault.com) 免费注册
- 在 Splunk 中创建名为 `otx` 的索引
- 配备 Sysmon 的 Windows 主机将数据转发到 Splunk(索引:`sysmon`)
## 安装
### 1. 在 Splunk 中创建 OTX 索引
```
Settings → Indexes → New Index
Index Name: otx
Index Type: Events
```
### 2. 安装 TA-otx 附加组件
- 从 [Splunkbase](https://splunkbase.splunk.com/app/4336) 下载
- 通过 Apps → Manage Apps → Install from file 安装
### 3. 配置 OTX 输入
- 转到 Apps → TA-OTX → Configuration
- 在 Account 选项卡下输入您的 OTX API 密钥
- 保存代理设置(即使已禁用)以避免凭据错误
- 转到 Settings → Data Inputs → OTX → Enable OTX_Feed
- 将索引设置为 `otx`,间隔设置为 `3600`(1 小时)
### 4. 导入仪表板
- 转到 Settings → User Interface → Views → Create New View
- 选择 Dashboard (Classic) 并粘贴 `splunk-otx-cti-dashboard.xml` 的内容
- 或导航到任何现有仪表板 → Edit → Source 并用 XML 替换
### 5. 验证数据正在流动
启用输入并等待几分钟后运行此搜索:
```
index=otx | stats count by sourcetype
```
您应该看到 `otx:indicator` 和 `otx:pulse` 具有非零计数。
## 动态过滤器
| 过滤器 | 描述 |
|--------|-------------|
| 时间范围 | 控制所有面板的时间窗口 |
| IOC 类型 | 按类型(IPv4、域名、URL、哈希)过滤所有 IOC 面板 — 选择类型会隐藏不相关的 IOC 面板 |
| 威胁参与者 | 按归因对手过滤脉冲和 TTP 面板 |
## 使用的 Sysmon 事件代码
| 事件代码 | 描述 | 匹配的 IOC 类型 |
|------------|-------------|------------------|
| 1 | 进程创建 | SHA256 文件哈希 + TTP (T1059) |
| 3 | 网络连接 | 目标 IP + TTP (T1071) |
| 7 | 镜像加载 | SHA256 文件哈希 |
| 8 | CreateRemoteThread | TTP (T1055) |
| 11 | 文件创建 | SHA256 文件哈希 + TTP (T1027) |
| 13 | 注册表值设置 | TTP (T1112) |
| 22 | DNS 查询 | 域名 + TTP (T1071) |
## 已知问题
- 带有 `{}` 表示法的字段(例如 `attack_ids{}`)可能显示黄色警告图标或 `[subsearch Field does not exist` 错误 — 这是外观问题,不影响结果。Splunk 的架构验证器不识别 TA-otx 使用的 `{}` 多值字段表示法,即使这些字段在搜索时正确填充
- 威胁参与者下拉菜单只有在摄取到具有归因对手的 OTX 脉冲后才会填充
- 域名命中面板使用固定的 7 天窗口,馈送健康面板使用固定的 24 小时窗口,无论时间范围选择器设置如何
- IOC 类型过滤器不影响 TTP 面板 — TTP 关联基于 Sysmon 事件代码和 OTX 脉冲数据,而非 OTX 指标类型
- 地图需要到 `basemaps.cartocdn.com` 的出站 HTTPS 以获取深色图块层。如果您的环境是气隙网络,请删除 `mapping.tileLayer.url` 和 `mapping.tileLayer.attribution` 选项以回退到 Splunk 的默认图块
- `iplocation` 使用 Splunk 捆绑的 MaxMind GeoLite2 数据库 — 私有/RFC1918 地址和一些托管提供商范围可能无法解析,并将从地图和地理表格中排除
- 此仪表板仅限 Windows。所有环境关联面板都围绕 Sysmon 事件代码和字段名称(EventCode、Hashes、QueryName、DestinationIp、Image)构建,这些是 Sysmon 架构特有的。转发 /var/log 到 Splunk 的 Linux 主机不会出现在任何面板中。Linux 支持需要针对 auditd/syslog 字段构建专用面板,或将所有端点数据规范化到 Splunk 的通用信息模型 (CIM)
## 技术说明
- OTX 数据存储在两个 sourcetypes 中:`otx:pulse`(脉冲元数据)和 `otx:indicator`(单个 IOC)
- 来自 OTX API 的多值字段使用 `{}` 后缀表示法存储(例如 `attack_ids{}`)
- TA-otx 附加组件需要 OpenSSL 1.0 — 在 Ubuntu 24.04 上通过以下方式安装:
```
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.0.0_1.0.2n-1ubuntu5_amd64.deb
sudo dpkg -i libssl1.0.0_1.0.2n-1ubuntu5_amd64.deb
```
- 如果在 VM 上运行 Splunk,请确保 CPU 类型支持 AVX2(在 Proxmox 中使用 `x86-64-v3` 或更高版本)
## 生产注意事项
此项目使用社区构建的 **TA-otx** 附加组件,该附加组件按计划间隔轮询 OTX API。虽然适用于实验室或作品集环境,但生产 CTI 部署将在几个重要方面有所不同。
### 实时指标摄取
TA-otx 附加组件使用基于检查点的轮询机制 — 它跟踪上次轮询时间戳并请求自该时间以来修改的脉冲。根据配置的间隔,新指标可能需要长达一小时才能出现,并且检查点可能在重启或时钟漂移后变得陈旧。
在生产环境中,这将被替换为:
- **Splunk Enterprise Security (ES)** — 包含原生威胁情报框架,具有专用 REST API,可实时接收指标,无需轮询
- **TAXII 2.1** — 威胁情报共享的行业标准协议。OTX 支持 TAXII,Splunk ES 具有内置 TAXII 客户端,可在指标发布时立即接收推送
- **STIX 2.1** — 与 TAXII 一起使用的结构化数据格式,提供更丰富的上下文,包括指标、威胁参与者和活动之间的关系
### 在生产环境中这将是什么样子
```
OTX publishes new pulse
↓
TAXII 2.1 push (seconds)
↓
Splunk ES Threat Intelligence framework
↓
Automatic correlation against all indexes
↓
Real-time alerts and dashboard updates
```
### 其他生产改进
- 自动化指标过期和生命周期管理
- 多馈送去重和置信度评分
- 与 SOAR 平台集成(Splunk SOAR、Palo Alto XSOAR)以实现自动化响应
- 敏感威胁情报的基于角色的访问控制
### MITRE ATT&CK 战术映射
MITRE ATT&CK 框架面板使用硬编码的 `case` 语句将技术 ID 映射到所有 14 个战术类别中对应的战术。这是正确行为 — 映射由 MITRE ATT&CK 框架本身定义,不特定于环境。但是,当 MITRE 发布新框架版本时需要手动更新。
在生产部署中,这将被替换为维护的查找表:
```
| lookup mitre_attack_lookup technique_id OUTPUT tactic
```
Splunk Enterprise Security 随附 `mitre_attack_lookup`,该查找表在每个 ES 版本发布时自动更新。社区附加组件 [MITRE ATT&CK App for Splunk](https://splunkbase.splunk.com/app/4617) 也为非 ES 部署提供此查找表。
## 测试数据
Sysmon 环境关联面板使用 [Atomic Red Team](
标签:AI合规, AMSI绕过, APT, Cloudflare, IOC, MITRE ATT&CK, SHA256, Splunk Add-on, Splunk Dashboard, Sysmon, TA-otx, TTP分析, 仪表板, 地理情报, 威胁情报, 威胁检测, 威胁追踪, 安全运营, 开发者工具, 恶意IP, 恶意域名, 恶意指标, 扫描框架, 端点安全, 端点遥测, 网络威胁情报, 网络安全, 补丁管理, 隐私保护