数字取证服务器

一个统一的模型上下文协议(MCP)服务器,将Claude Desktop连接到Velociraptor实例和本地取证工具,实现远程终端调查和本地证据分析。

  • by Hackerobi
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Hackerobi/velociraptor-forensic-mcp

使用说明

🦖 Velociraptor法医MCP服务器

将Claude Desktop变成DFIR工作站。

一个统一的模型上下文协议(MCP)服务器,将Claude Desktop连接到您的Velociraptor实例和本地取证工具。在一台服务器上进行远程端点调查+本地证据分析。包括Velociraptor的Docker部署。


这有什么作用

您无需在Velociraptor GUI、终端VQL会话和取证脚本之间切换,只需与Claude交谈,它就会为您运行它们。请克劳德:

  • “查找工作站-01,告诉我最后一次看到它是什么时候” → 向Velociraptor查询客户信息
  • “从该端点收集用户列表” → 开始a Linux.Sys.Users 工件收集和检索结果
  • “哈希/证据/恶意软件样本/中的所有文件” → 递归SHA-256哈希本地目录
  • “检查syslog中是否提到该二进制文件” → 使用关键字搜索扫描系统日志
  • “将文件元数据与日志条目交叉引用” → 将时间戳、哈希值和日志点击量关联到取证报告中
  • “运行VQL查询以显示端点上所有正在运行的进程” → 直接执行自定义VQL

所有结果都会在聊天中返回。无复制粘贴。无标签切换。从终点到证据的完整法医链。


🛠️ 集成工具(12)

遥控——迅猛龙(vr_*)

工具 说明
vr_身份验证 测试与Velociraptor的gRPC连接
vr_get_agent_info 按主机名查找客户端→ client_id,操作系统,代理版本,最后出现时间
vr_run_vql 在服务器上执行任意VQL查询
vr_list_artifacts 列出所有可用的客户端工件及其描述
vr_artifact_details 获取特定工件的完整规格
vr_collect_artifact 在远程端点上启动工件收集(返回flow_id)
vr_get_collection_results 轮询并检索已完成的收集结果(具有重试逻辑)

当地法医(Local_*)

工具 说明
本地_文件_元数据 SHA-256、文件大小、时间戳(沙盒到SAFE_BASE)
local_hash_目录 递归散列目录中的每个文件
本地扫描日志 按关键字搜索Linux syslog或macOS统一日志
local_correlate 将文件元数据与日志条目进行交叉引用
local_forensic_report 结合文件+日志数据生成结构化取证报告

主要特点

  • 双模:两种工具包都可以独立工作——只使用Velociraptor部署,只使用本地工具,或者两者都使用
  • 路径沙盒:所有local_*工具验证路径是否保持在SAFE_BASE内
  • 异步流轮询:收集结果会自动重试,直到流完成
  • 多源伪影:自动处理具有多个数据源的工件
  • 工具过滤:通过DISABLED_tools环境变量禁用单个工具
  • 只读模式:使用READ_ONLY=true阻止写入操作(工件收集)

🚀 快速开始

先决条件

  • Docker&Docker编写
  • Python 3.11+
  • 克劳德桌面

1.部署Velociraptor(Docker)

cd docker/
docker compose up -d

# Wait ~30 seconds for initialization
docker logs velociraptor --tail 10
# Should see: "Starting gRPC API server" and "Frontend is ready"

默认GUI:https://localhost:9889(admin/admin--更改此设置!)

2.生成API密钥

chmod +x generate-api-key.sh
./generate-api-key.sh

这创造了 api.config.yaml 使用gRPC凭据,并自动修复主机访问的连接字符串。

3.安装MCP服务器

cd ../
python3.11 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

4.配置

cp .env.example .env
# Edit .env — set your paths:
#   VELOCIRAPTOR_API_KEY=/path/to/api.config.yaml
#   SAFE_BASE=/home/youruser/evidence

5.配置克劳德桌面

添加到 ~/.config/Claude/claude_desktop_config.json (Linux)或 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "velociraptor-forensic": {
      "command": "/path/to/velociraptor-forensic-mcp/.venv/bin/python",
      "args": ["-m", "velociraptor_forensic_mcp"],
      "cwd": "/path/to/velociraptor-forensic-mcp",
      "env": {
        "VELOCIRAPTOR_API_KEY": "/path/to/api.config.yaml",
        "VELOCIRAPTOR_SSL_VERIFY": "false",
        "SAFE_BASE": "/home/youruser/evidence",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

6.重新启动克劳德桌面

工具将自动显示。开始调查。


🔑 环境变量

变量 描述 默认值 必填
VELOCIRAPTOR_API_KEY api.config.yaml的路径 -- 用于远程工具
VELOCIRAPTOR_SSL_VERIFY 验证gRPC TLS证书 true
VELOCIRAPTOR_TIMEOUT gRPC超时(秒) 30
SAFE_BASE 本地取证工具的根目录 -- 用于本地工具
MCP_SERVER_HOST 绑定主机以进行SSE传输 127.0.0.1
MCP_SERVER_PORT 绑定SSE传输端口 8000
LOG_LEVEL DEBUG/INFO/警告/错误 INFO
DISABLED_TOOLS 逗号分隔的工具名称可禁用 --
READ_ONLY 块工件收集 false

🐳 Docker Velociraptor安装程序

这 docker/ 文件夹包含在Docker中运行Velociraptor的所有内容,并映射了端口以避免常见冲突:

主机端口 服务 用途
9000 客户端前端 Velociraptor代理签到
9001 gRPC API MCP服务器在此连接
9889 Web GUI 您的浏览器

注册测试客户端

要将运行Docker的机器注册为Velociraptor客户端:

cd docker/

# Copy client binary and config
docker cp velociraptor:/velociraptor/clients/linux/velociraptor_client_repacked ./velociraptor_client
chmod +x velociraptor_client

docker exec velociraptor cat client.config.yaml > client.config.yaml
sed -i 's|https://VelociraptorServer:8000/|https://localhost:9000/|' client.config.yaml

# Run the client (Ctrl+C to stop)
sudo ./velociraptor_client --config client.config.yaml client -v

💡 使用示例

全面终点调查

查找端点弹出窗口,收集其用户列表,并检查系统日志中是否有任何可疑条目

克劳德链: vr_get_agent_info → vr_collect_artifact → vr_get_collection_results → local_scan_syslog

文件完整性检查

“哈希/evention/case-2024/中的所有文件,并检查系统日志中是否出现任何文件”

克劳德链: local_hash_directory → local_correlate 对于每个可疑文件

自定义VQL调查

“运行VQL查询以显示客户端C.1393a876d1c48287上的所有侦听网络连接”

克劳德使用 vr_collect_artifact 随着 Linux.Network.Netstat 或通过以下方式编写自定义VQL vr_run_vql

快速分类

“扫描syslog查看“身份验证失败”并给我一个摘要”

克劳德使用 local_scan_syslog 并综合结果


📁 项目结构

velociraptor-forensic-mcp/
├── velociraptor_forensic_mcp/
│   ├── __init__.py            # Package metadata
│   ├── __main__.py            # CLI entry point
│   ├── config.py              # Dataclass configs (Velociraptor, Forensic, Server)
│   ├── exceptions.py          # Custom exception hierarchy
│   ├── vr_client.py           # Velociraptor gRPC client
│   ├── forensic_helpers.py    # Local forensic functions
│   └── server.py              # FastMCP server with all tools/prompts/resources
├── docker/
│   ├── docker-compose.yaml    # Velociraptor Docker deployment
│   └── generate-api-key.sh    # API key generation script
├── tests/
│   └── test_forensic.py       # Unit tests
├── pyproject.toml             # Python packaging
├── .env.example               # Configuration template
└── README.md

🔒 安全

  • API密钥保护: api.config.yaml 包含私钥-- chmod 600 它
  • 路径沙盒:所有本地工具仅限于SAFE_BASE目录
  • 最小特权:使用生成API密钥 --role api,investigator 不 administrator
  • 工具过滤:通过DISABLED_tools禁用不需要的工具
  • 只读模式:设置 READ_ONLY=true 防止工件收集
  • 永不承诺 api.config.yaml 或 .env 到版本控制

🧪 运行测试

source .venv/bin/activate
pytest -v

🏗️ 建筑

该服务器将两个开源项目组合成一个统一的MCP接口:

这两个工具包都根据设置的环境变量独立激活。您可以只运行Velociraptor,只运行本地,或两者同时运行。


⚠️ 法律免责声明

此工具用于 仅授权数字取证和事件响应。在从端点收集工件之前,始终确保您有适当的授权。未经授权访问计算机系统是非法的。


🤝 贡献

欢迎拉取请求。要添加新工具,请执行以下操作:

  1. 在中添加该功能 forensic_helpers.py (本地)或 vr_client.py (远程)
  2. 在中创建Pydantic输入模型 server.py
  3. 在中注册该工具 _register_forensic_tools() 或 _register_velociraptor_tools()
  4. 添加测试
  5. 提交PR

📬 联系

白帽子或不戴帽子🎩


与克劳德一起建造。在实时Velociraptor部署上进行了测试。保持合法。