SOC操作MCP服务器

一个为Splunk SOC操作设计的AI原生MCP服务器,提供自动化调查工具、标签收集和DeepTempo集成功能。

  • by DeepTempo
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 mando222/splunk-mcp-soc

使用说明

用于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中)

安装

  1. 克隆存储库:

    git clone https://github.com/mando222/splunk-mcp-soc.git
    cd splunk-mcp-soc
    
  2. 安装依赖项:

    使用pip(推荐):

    pip install -r requirements.txt
    

    或使用紫外线:

    uv sync
    

    或者诗歌:

    poetry install
    
  3. 配置环境变量:

    创建 .env 文件:

    SPLUNK_HOST=localhost
    SPLUNK_PORT=8089
    SPLUNK_USERNAME=admin
    SPLUNK_PASSWORD=your-password
    SPLUNK_SCHEME=https
    VERIFY_SSL=false
    
  4. 测试连接:

    python test_connection.py
    
  5. 运行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运行

  1. SSE模式(默认):
docker compose up -d mcp
  1. API模式:
docker compose run --rm mcp python splunk_mcp.py api
  1. 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集成支持
  • 增强的安全控制

依赖项

📄 许可证

Apache许可证2.0-请参阅 许可证 了解详情。

🐛 故障排除

连接问题

# Test Splunk connectivity
python test_connection.py

# Check logs
tail -f splunk_mcp.log

Splunk中没有数据

# Ingest test data
python ingest_test_data.py your-password

# Verify in Splunk UI
index=mcp_demo | stats count by event_type

MCP服务器无法启动

  • 验证 .env 文件存在正确的值
  • 检查Python版本(需要3.10+)
  • 确保Splunk可访问
  • 查看错误日志

📞 支持

对于问题和疑问:

  1. 检查 文档
  2. 审查 错误记录
  3. 在GitHub上打开一个问题

采用FastMCP构建,用于AI原生安全操作 🚀