用于SOC运营的Splunk MCP
  
用于Splunk SOC操作的AI原生MCP(模型上下文协议)服务器,具有自动调查工具、标签采集和DeepTempo集成功能。
🎯 概述
该项目扩展了以下功能 livehybrid/splunk mcp 通过Claude Desktop和其他MCP客户端,为人工智能驱动的安全调查设计了SOC特定的丰富工具和安全控制。
主要特点
- 传统SOC工作流程 -IP旋转、横向运动检测、数据泄露分析
- AI原生调查 -跨平台关联、攻击时间线重建
- 标签采集 -Splunk字段标签的自动发现和映射
- 生产安全 -输入验证、审计日志记录、输出净化
- 多模式操作 -用于灵活部署的SSE、STDIO和API模式
🚀 快速开始
先决条件
- Python 3.10或更高版本
- Splunk企业或云实例
- pip(包含在Python中)
安装
- 克隆存储库:
git clone https://github.com/mando222/splunk-mcp-soc.git
cd splunk-mcp-soc- 安装依赖项:
使用pip(推荐):
pip install -r requirements.txt或使用紫外线:
uv sync或者诗歌:
poetry install- 配置环境变量:
创建 .env 文件:
SPLUNK_HOST=localhost
SPLUNK_PORT=8089
SPLUNK_USERNAME=admin
SPLUNK_PASSWORD=your-password
SPLUNK_SCHEME=https
VERIFY_SSL=false- 测试连接:
python test_connection.py- 运行MCP服务器:
# STDIO mode (for Claude Desktop)
python splunk_mcp.py stdio
# SSE mode (default)
python splunk_mcp.py
# API mode
python splunk_mcp.py api🛠️ 可用的MCP工具
核心业务
- 健康检查 -验证Splunk连接和可用应用程序
- 拼 -检查MCP服务器状态
- 当前用户 -获取经过身份验证的用户信息
- list_users -列出所有Splunk用户和角色
索引和搜索管理
- list_index -列出所有可访问的索引
- get_index_info -获取特定索引的详细信息
- 索引和来源类型 -综合索引和源类型映射
- 搜索_插件 -执行具有时间范围的Splunk搜索查询
- list_saved_search -查看已保存的搜索
KV门店运营
- list_kvstore_collections -列出所有KV商店收藏
- create_kvstore_collection -创建新收藏
- 删除库集合 -删除收藏
SOC调查工具
- pivot_by-ip -调查特定IP地址的所有活动
- 查找_侧向移动 -检测横向运动模式
- calculate_data_exfiltering -分析和量化数据泄露
- build_attack_timeline -构建按时间顺序排列的攻击时间表
- 关联_与_临时_查找 -与DeepTempo研究结果的交叉引用
威胁情报集成
- 强化三重电话 -利用来自多个来源的声誉数据丰富IP
- 查询AbuseIPDB、AlienVault OTX和内部Splunk威胁列表 - 提供声誉评分、威胁类型和置信度
- check_ioc_计算 -对任何IOC(IP、域、哈希、URL)进行快速信誉检查
- 自动检测IOC类型并提供可操作的判断
- add_to_thrait_list -将已确认的IOC添加到Splunk威胁情报中
- 支持过期和自动清理
- get_mitre_attack_context -获取详细的MITRE ATT&CK技术信息
- 将研究结果映射到战术、技术和程序 - 包括检测方法和缓解措施
自动响应操作
- block_ip_address -在防火墙/代理级别阻止恶意IP
- 临时或永久性封锁 - 具有可配置持续时间的自动解锁功能
- 隔离主机 -隔离网络中受感染的主机
- 完全、部分或仅监控隔离级别 - 与NAC和端点安全工具集成
- 创建_事故_票 -在ITSM平台上自动创建工单
- ServiceNow、Jira或本地Splunk事件跟踪 - 自动优先级和SLA计算
- send_alert_notification -将警报推送到通信渠道
- Slack、Microsoft Teams、PagerDuty、电子邮件、短信 - 基于严重性的路由
高级分析和异常检测
- 检测异常 -时间序列数据的统计异常检测
- 基于Z-score的检测,灵敏度可配置 - 识别尖峰、低谷和异常模式
- identify_rare_events -查找统计上罕见的事件
- 检测新流程、域或行为 - 适用于零日和APT检测
- 基线_正常行为 -建立行为档案
- 了解用户、主机或服务的正常模式 - 实现基于偏差的威胁检测
标签采集
- 收获标签 -从Splunk索引中发现字段标签和模式
- 可配置范围(仅限所有索引、特定索引或CIM字段) - 返回字段名、类型、示例值和元数据 - 支持按索引和时间范围过滤
- get_field_summary -获取特定字段的详细信息
- 深入了解字段值、分布和关系 - 有助于了解单个字段的使用情况
- export_labels_to_deeptempo -以DeepTempo兼容格式导出标签
- 可适应DeepTempo需求的通用JSON结构 - 集成工作流的可选文件导出
📊 演示场景
场景1:知识产权调查
Query: "Show me all activity from IP 10.1.42.42"
Results:
- 65 total events discovered
- 47 unique destinations contacted
- 10+ lateral movement attempts detected
- 1.2 GB data exfiltration identified场景2:攻击时间表
Query: "Build attack timeline for 10.1.42.42 and correlate with DeepTempo"
Results:
- 32-day attack timeline reconstructed
- Initial compromise → lateral movement → exfiltration
- 12 similar incidents identified
- Complete MITRE ATT&CK mapping场景3:威胁狩猎
Query: "Hunt for similar C2 beaconing patterns across all hosts"
Results:
- 3 additional compromised hosts found
- Common service account identified (jenkins_service)
- Botnet infrastructure mapped🧪 测试
生成和摄取测试安全数据:
# Generate test data
python generate_test_data.py
# Ingest into Splunk
python ingest_test_data.py your-password这创建了一个 mcp_demo 包含115个安全事件的索引:
- 50个C2信标事件
- 40次认证/横向移动事件
- 20个DNS隧道事件
- 5个数据泄露事件
运行测试套件:
pytest tests/🐳 Docker支持
使用Docker Compose运行
- SSE模式(默认):
docker compose up -d mcp- API模式:
docker compose run --rm mcp python splunk_mcp.py api- STDIO模式:
docker compose run -i --rm mcp python splunk_mcp.py stdio在Docker中运行测试
./run_tests.sh --docker🔧 配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
SPLUNK_HOST | Splunk服务器主机名 | 本地主机 |
SPLUNK_PORT | Splunk管理端口 | 8089 |
SPLUNK_USERNAME | 身份验证用户名 | admin |
SPLUNK_PASSWORD | 身份验证密码 | - |
SPLUNK_TOKEN | 可选:使用令牌代替user/pass | - |
SPLUNK_SCHEME | 连接方案(http/https) | https |
VERIFY_SSL | 启用SSL证书验证 | true |
FASTMCP_LOG_LEVEL | 日志记录级别 | 信息 |
SERVER_MODE | 服务器模式(sse/api/stdio) | sse |
Claude桌面集成
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"splunk-soc": {
"command": "python",
"args": [
"/path/to/splunk-mcp-soc/splunk_mcp.py",
"stdio"
],
"env": {
"SPLUNK_HOST": "localhost",
"SPLUNK_PORT": "8089",
"SPLUNK_USERNAME": "admin",
"SPLUNK_PASSWORD": "your-password"
}
}
}
}📚 文档
| 文件 | 目的 |
|---|---|
| SETUP_INSTRUCTIONS.md | 详细的设置指南 |
| DEMO_TOOLS_SPEC.md | 完整的工具规格 |
| SOC_PLAYBOOKS.md | 调查工作流程示例 |
| 贡献.md | 开发指南 |
| 演示测试指南.md | 测试程序 |
🏗️ 建筑
Claude Desktop / MCP Client
│
├── Splunk MCP Server (this project)
│ ├── SOC Investigation Tools
│ ├── Label Harvesting
│ └── Splunk SDK Integration
│
└── DeepTempo MCP Server (separate)
├── Embedding Similarity Search
├── MITRE ATT&CK Mapping
└── LogLM Analysis🔐 安全考虑
当前实施情况
- ✅ SSL/TLS支持,可配置验证
- ✅ 基于令牌和基于凭证的身份验证
- ✅ 环境变量配置
- ✅ 所有工具的输入验证
- ✅ 审计日志支持
最佳实践
- 永不承诺
.env文件 - 使用
VERIFY_SSL=true生产中 - 定期轮换凭据
- 监控审核日志
- 使用最低权限Splunk帐户
🤝 贡献
欢迎投稿!请看 贡献.md 作为指导方针。
📝 学分
这个项目是建立在 livehybrid/splunk mcp v0.3.0版本,并对其进行了扩展:
- SOC专用调查工具
- 标签采集能力
- DeepTempo集成支持
- 增强的安全控制
依赖项
- 快速MCP -MCP服务器框架
- Splunk Python SDK -斯普伦克API客户端
- python解耦 -配置管理
📄 许可证
Apache许可证2.0-请参阅 许可证 了解详情。
🐛 故障排除
连接问题
# Test Splunk connectivity
python test_connection.py
# Check logs
tail -f splunk_mcp.logSplunk中没有数据
# Ingest test data
python ingest_test_data.py your-password
# Verify in Splunk UI
index=mcp_demo | stats count by event_typeMCP服务器无法启动
- 验证
.env文件存在正确的值 - 检查Python版本(需要3.10+)
- 确保Splunk可访问
- 查看错误日志
📞 支持
对于问题和疑问:
______________________________________________________________________
采用FastMCP构建,用于AI原生安全操作 🚀
