取证工具MCP服务器
  
用于取证分析的全面MCP服务器,使AI代理能够通过模型上下文协议分析文件、Chromium浏览器工件和Firefox浏览器工件。与VirusTotal API、Detect It Easy(DIE)、Binwalk、深层Chromium解析、Firefox工件解析和本地分析工具集成。
特性
- VirusTotal集成:完全支持API v3,支持文件、URL、域和IP分析
- 局部分析:哈希计算、字符串提取、EXIF元数据、DIE分析
- Firefox人工制品:历史记录、书签、下载候选、Cookie、会话、会话存储、收藏夹、扩展、首选项、web数据、登录元数据、本地存储、IndexedDB、缓存和登录解密
- 铬制品:历史记录、下载、会话、收藏夹、书签、保存的登录名、Cookie、Web数据、扩展、首选项、本地存储、会话存储、IndexedDB和HTTP缓存解析
- 固件分析:用于嵌入式文件提取的Binwalk集成
- 智能高速缓存:内存缓存限制为200MB,可实现最佳性能
- 速率限制:VirusTotal API的自动队列管理(4 req/min)
- 多格式支持:EXE、ELF、固件映像、磁盘映像等
- 安全第一:通过环境变量实现API密钥保护
需求
- Python 3.10+
- VirusTotal API密钥(可选,用于VT功能)
- 外部工具:DIE、ExifTool、Binwalk(可选,用于本地分析)
- MCP兼容客户端(克劳德桌面、VSCode、Cline等)
安装
1.克隆存储库
git clone https://github.com/jus1-c/forensics-utils-mcp-server.git
cd forensics-utils-mcp-server2.创建虚拟环境
# Linux/Mac
python -m venv venv
source venv/bin/activate
# Windows
python -m venv venv
venv\Scripts\activate3.安装软件包
pip install -e ".[dev]"这将安装 ccl_chromium_reader, lz4,以及 firefox_decrypt 默认情况下,Chromium和Firefox浏览器工件工具无需额外设置即可使用。
配置
环境变量
创建一个 .env 项目根目录中的文件:
# Required for VirusTotal features
VIRUSTOTAL_API_KEY=your_api_key_here
# Optional
CACHE_MAX_SIZE_MB=200从以下位置获取您的VirusTotal API密钥:https://www.virustotal.com/gui/my-apikey
克劳德桌面版
编辑 claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"forensics-utils": {
"command": "python",
"args": ["-m", "forensics_utils_mcp_server"],
"cwd": "/path/to/forensics-utils-mcp-server",
"disabled": false,
"autoApprove": []
}
}
}注: 改变 cwd 到实际的项目目录路径。
VSCode(带Cline扩展)
添加到您的设置中:
{
"mcpServers": {
"forensics-utils": {
"command": "python",
"args": ["-m", "forensics_utils_mcp_server"],
"cwd": "/path/to/forensics-utils-mcp-server",
"disabled": false,
"autoApprove": []
}
}
}注: 改变 cwd 到实际的项目目录路径。
开源代码
添加 ~/.opencode/opencode.json:
{
"mcp": {
"forensics-utils": {
"type": "local",
"command": ["python", "-m", "forensics_utils_mcp_server"],
"cwd": "/path/to/forensics-utils-mcp-server",
"enabled": true,
"timeout": 60000
}
}
}注: 改变 cwd 到实际的项目目录路径。
外部依赖
轻松检测(DIE)
需要 die_analyze_file 工具。
- 下载:https://github.com/horsicq/Detect-It-Easy/releases
- 添加
diec前往PATH
ExifTool
需要 extract_exif 工具。
- 窗户:https://exiftool.org/install.html
- Linux:
sudo apt-get install libimage-exiftool-perl - macOS:
brew install exiftool
Binwalk
需要 binwalk_scan 和 binwalk_extract 工具。
pip install binwalk可用工具
Firefox人工制品
firefox_profile_summary_tool
总结配置文件中存在的基本Firefox工件。
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)sample_limit:每个工件的最大样本标识符数(默认值:10)
firefox_parse_history_tool
解析Firefox浏览历史记录。
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)url:可选的精确URL筛选器title:可选的精确页面标题过滤器limit:要返回的最大记录数(默认值:100)
firefox_parse_bookmarks_tool
解析Firefox书签条目。
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)url:可选的精确书签URL过滤器title:可选的精确书签标题过滤器limit:要返回的最大记录数(默认值:100)
firefox_parse_downloads_tool
解析从中重建的Firefox下载候选项 places.sqlite.
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)download_url:可选的精确下载文件URL过滤器source_url:可选的精确引用/源URL过滤器limit:要返回的最大记录数(默认值:100)
firefox_parse_cookies_tool
从以下位置解析Firefox Cookie cookies.sqlite.
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)host:可选的精确cookie主机过滤器name:可选的精确cookie名称过滤器limit:要返回的最大记录数(默认值:100)
firefox_parse_sessions_tool
解析Firefox会话还原条目 sessionstore.jsonlz4 和 sessionstore-backups/*.jsonlz4.
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)file_name:可选的精确会话文件名筛选器url:可选的精确URL筛选器title:可选的精确页面标题过滤器limit:要返回的最大记录数(默认值:100)
firefox_parse_session_storage_tool
当sessionstore包含Firefox会话存储记录时,解析这些记录。
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)host:可选的精确会话存储主机/源过滤器key:可选的精确会话存储密钥过滤器limit:要返回的最大记录数(默认值:100)
firefox_parse_favicons_tool
解析Firefox的图标映射和可选的图标图像预览。
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)page_url:可选的精确页面URL筛选器icon_url:可选的精确favicon URL过滤器limit:要返回的最大记录数(默认值:100)include_image:将favicon图像预览包含为base64(默认值:false)max_image_bytes:每个图标预览的最大字节数(默认值:4096)
firefox_parse_extensions_tool
解析Firefox安装的扩展元数据 extensions.json.
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)extension_id:可选的精确扩展ID过滤器name:可选的精确扩展名过滤器limit:要返回的最大记录数(默认值:100)
firefox_parse_preferences_tool
从以下位置解析Firefox首选项 prefs.js.
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)key_path:可选的精确偏好键过滤器limit:要返回的最大记录数(默认值:100)
firefox_parse_logins_tool
解析Firefox保存的登录元数据 logins.json 无需解密密码。
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)hostname:可选的精确主机名筛选器limit:要返回的最大记录数(默认值:100)
firefox_parse_web_data_tool
解析Firefox web数据,如表单历史、权限、内容首选项和搜索引擎等工件。
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)category:可选的精确类别过滤器(form_history,permissions,content_prefs,search_engines)limit:要返回的最大记录数(默认值:100)
firefox_parse_local_storage_tool
解析Firefox本地存储记录 webappsstore.sqlite 和 storage/default/*/ls/data.sqlite.
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)origin_key:可选的精确来源/存储密钥过滤器key:可选的精确本地存储密钥过滤器limit:要返回的最大记录数(默认值:100)
firefox_parse_indexeddb_tool
解析Firefox IndexedDB记录 storage/default/*/idb.
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)host_id:可选的精确存储/默认源目录筛选器database_name:可选的精确IndexedDB数据库名称筛选器object_store_name:可选的精确对象存储筛选器limit:要返回的最大记录数(默认值:100)
firefox_parse_cache_tool
解析Firefox缓存记录 storage/default/*/cache.
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)url:可选的精确请求URL筛选器limit:要返回的最大记录数(默认值:100)include_body:当停尸房文件存在时,包括缓存的正文预览(默认值:false)max_body_bytes:每个正文预览的最大字节数(默认值:16384)
firefox_decrypt_cookies_tool
将Firefox Cookie作为已解密的明文值返回。
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)host:可选的精确cookie主机过滤器name:可选的精确cookie名称过滤器limit:要返回的最大记录数(默认值:100)
firefox_decrypt_logins_tool
尝试通过以下方式解密Firefox保存的密码 firefox_decrypt.
参数:
profile_path:Firefox配置文件目录的绝对路径(必需)primary_password:可选主密码。如果未配置,请留空或未设置hostname:可选的精确主机名筛选器limit:要返回的最大记录数(默认值:100)nss_lib_path:NSS库目录的可选路径firefox_decrypt
笔记:
- 解密取决于活动环境中NSS的可用性
- 如果配置文件受主密码保护,则必须明确提供
铬深伪影
铬轮廓汇总工具
总结配置文件中存在的深层铬伪影。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)sample_limit:每个工件的最大样本标识符数(默认值:10)
chromiumparse_local_storage_tool
解析Chromium本地存储记录。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)storage_key:可选的精确来源/存储密钥过滤器script_key:可选的精确本地存储密钥过滤器limit:要返回的最大记录数(默认值:100)include_deletions:包括可用的恢复删除记录(默认值:false)
chromiumparse_session_storage_tool
解析Chromium会话存储记录。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)host:可选的精确主机筛选器key:可选的精确会话存储密钥过滤器limit:要返回的最大记录数(默认值:100)include_deletions:包括可用的恢复删除记录(默认值:false)
chromiumparse_indexeddb_tool
解析Chromium IndexedDB记录。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)host_id:可选的精确IndexedDB主机/源文件夹筛选器database_name:可选的精确数据库名称筛选器object_store_name:可选的精确对象存储筛选器limit:要返回的最大记录数(默认值:100)include_deletions:包括已删除/非实时记录(默认值:false)
chromiumparse_cache_tool
解析Chromium HTTP缓存元数据和可选的缓存正文预览。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)url:可选的精确URL筛选器limit:要返回的最大记录数(默认值:100)include_body:包括缓存的响应正文预览(默认值:false)max_body_bytes:每个缓存正文预览的最大字节数(默认值:16384)decompress:尽可能解压缩gzip/brotli/deflate响应(默认值:true)
chromium解析器历史工具
解析Chromium浏览历史记录。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)url:可选的精确URL筛选器title:可选的精确页面标题过滤器limit:要返回的最大记录数(默认值:100)
chromium.parse_downloads_tool
解析Chromium下载记录 History 和 shared_proto_db 当存在时。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)download_url:可选的精确下载URL过滤器tab_url:可选的精确原始选项卡URL过滤器limit:要返回的最大记录数(默认值:100)
chromiumparse_sessions_tool
解析Chromium会话还原导航条目 Sessions/, Current Session, Last Session, Current Tabs,以及 Last Tabs 当存在时。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)file_name:可选的精确会话文件名筛选器url:可选的精确URL筛选器title:可选的精确页面标题过滤器limit:要返回的最大记录数(默认值:100)
chromiumparse_favicons_tool
从中解析Chromium图标映射和位图元数据 Favicons 数据库。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)page_url:可选的精确页面URL筛选器icon_url:可选的精确favicon URL过滤器limit:要返回的最大记录数(默认值:100)include_image:将favicon图像预览包含为base64(默认值:false)max_image_bytes:每个图标预览的最大字节数(默认值:4096)
chromiumparse_web_data_tool
解析普通Chromium Web Data 自动填充、关键字和配置文件等表格。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)category:可选的精确类别过滤器(autofill,keywords,profiles)limit:要返回的最大记录数(默认值:100)
chromium解析器扩展工具
解析Chromium安装的扩展元数据 Extensions/ 并从“首选项”中合并可用状态。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)extension_id:可选的精确扩展ID过滤器name:可选的精确扩展名过滤器limit:要返回的最大记录数(默认值:100)
chromium.parse_参考工具
解析所选Chromium Preferences 和 Secure Preferences 价值观。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)key_path:可选的点分隔首选项路径过滤器limit:要返回的最大记录数(默认值:100)
chromium_parse_bookmarks_tool
解析Chromium书签URL条目 Bookmarks JSON文件。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)url:可选的精确书签URL过滤器title:可选的精确书签标题过滤器limit:要返回的最大记录数(默认值:100)
chromiumparseloginstool
解析Chromium保存的登录元数据 Login Data SQLite数据库,无需解密密码。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)origin_url:可选的精确源URL过滤器username_value:可选的精确用户名过滤器limit:要返回的最大记录数(默认值:100)
chromium_decrypt_logins_tool
尝试解密Chromium保存的密码。
支持两种模式:
- Windows当前用户上下文使用
Local State+DPAPI - 通过以下方式提供解密的Chromium主密钥时的脱机/手动模式
master_key_b64
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)local_state_path:Chromium的可选路径Local State文件master_key_b64:可选的base64形式的解密Chromium主密钥origin_url:可选的精确源URL过滤器username_value:可选的精确用户名过滤器limit:要返回的最大记录数(默认值:100)
笔记:
v10/v11密码blob需要Chromium主密钥- 较旧的仅支持DPAPI的blob在当前用户上下文中需要Windows DPAPI
- 应用绑定
v20当前不支持加密
chromiumparse_cookies_tool
从任一遗留版本解析Chromium Cookie Cookies 或现代 Network/Cookies SQLite数据库。
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)host_key:可选的精确cookie域筛选器name:可选的精确cookie名称过滤器limit:要返回的最大记录数(默认值:100)
chromium解密cookie工具
尝试解密Chromium Cookie。
支持两种模式:
- Windows当前用户上下文使用
Local State+DPAPI - 通过以下方式提供解密的Chromium主密钥时的脱机/手动模式
master_key_b64
参数:
profile_path:Chromium配置文件目录的绝对路径(必需)local_state_path:Chromium的可选路径Local State文件master_key_b64:可选的base64形式的解密Chromium主密钥host_key:可选的精确cookie域筛选器name:可选的精确cookie名称过滤器limit:要返回的最大记录数(默认值:100)
笔记:
- 当不存在加密blob时,直接返回明文cookie值
v10/v11cookie blob需要Chromium主密钥- 较旧的仅支持DPAPI的blob在当前用户上下文中需要Windows DPAPI
- 应用绑定
v20当前不支持加密
VirusTotal文件分析
1.vt_scan_file
将文件上传到VirusTotal进行扫描或哈希检查。
参数:
file_path:文件的绝对路径(必需)
例子:
{
"file_path": "/home/user/samples/suspicious.exe"
}2.vt_get_file_report
通过哈希值获取文件的VirusTotal分析报告。
参数:
file_hash:MD5、SHA1或SHA256哈希值(必需)
例子:
{
"file_hash": "d41d8cd98f00b204e9800998ecf8427e"
}3.vt_get_file_behavior
获取文件的沙盒行为分析。
参数:
file_hash:SHA256哈希(必需)
例子:
{
"file_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
}VirusTotal URL分析
4.vt_scan_url
将URL提交到VirusTotal进行扫描。
参数:
url:要扫描的URL(必需)
例子:
{
"url": "http://example.com"
}5.vt_get_url_report
获取URL的VirusTotal分析报告。
参数:
url:要分析的URL(必需)
例子:
{
"url": "http://example.com"
}VirusTotal域/IP智能
6.vt_get-domain_report
获取域的VirusTotal情报报告。
参数:
domain:域名(必填)
例子:
{
"domain": "example.com"
}7.vt_get_ip_report
获取IP地址的VirusTotal情报报告。
参数:
ip:IP地址(必填)
例子:
{
"ip": "8.8.8.8"
}病毒总搜索
8.vt_search_files
使用VirusTotal Intelligence搜索文件。
参数:
query:搜索查询字符串(必填)limit:最大结果(默认值:10)
例子:
{
"query": "tag:peexe positives:5+",
"limit": 10
}9.vt_get_comments
获取VirusTotal对象的社区评论。
参数:
object_id:对象ID(哈希/URL ID)(必填)object_type:类型:“文件”、“url”、“域”、“ip_addresses”(默认值:“文件“)
例子:
{
"object_id": "d41d8cd98f00b204e9800998ecf8427e",
"object_type": "files"
}本地文件分析
10.计算费用
计算文件的多个哈希值(MD5、SHA1、SHA256、SHA512、SSDEEP)。
参数:
file_path:文件路径(必需)
例子:
{
"file_path": "/home/user/samples/malware.exe"
}11.提取字符串
从二进制文件中提取可读字符串。
参数:
file_path:文件路径(必需)min_length:最小字符串长度(默认值:4)
例子:
{
"file_path": "/home/user/samples/malware.exe",
"min_length": 4
}12.提取物
使用ExifTool从文件中提取EXIF和元数据。
参数:
file_path:文件路径(必需)
例子:
{
"file_path": "/home/user/evidence/image.jpg"
}13.日分析文件
使用Detect It Easy(DIE)分析文件-检测打包器、编译器等。
参数:
file_path:文件路径(必需)
例子:
{
"file_path": "/home/user/samples/packed.exe"
}固件分析
14.便携式扫描
扫描文件以查找嵌入式签名(固件、压缩数据等)。
参数:
file_path:文件路径(必需)
例子:
{
"file_path": "/home/user/firmware/router.bin"
}15.binwalk_extract
从固件/二进制文件中提取嵌入式文件。
参数:
file_path:文件路径(必需)output_dir:输出目录(可选)
例子:
{
"file_path": "/home/user/firmware/router.bin",
"output_dir": "/home/user/extracted"
}缓存管理
16.get_cache_stats
获取缓存统计信息。
例子:
{}17.清晰_疼痛
清除所有缓存条目。
例子:
{}使用示例
恶意软件分析工作流程
Analyze this suspicious executable and provide a detailed report.
File: /home/user/samples/suspicious.exe
Steps:
1. Calculate hashes
2. Check VirusTotal reputation
3. Analyze with DIE
4. Extract strings
5. Scan for embedded files with binwalkURL调查
Investigate this suspicious URL and provide threat intelligence.
URL: http://suspicious-domain.com
Steps:
1. Get URL report from VirusTotal
2. Get domain report
3. Check IP reputation固件分析
Analyze this firmware image and extract embedded files.
File: /home/user/firmware/router.bin
Steps:
1. Scan with binwalk
2. Extract all embedded files
3. Calculate hashes of extracted files
4. Check hashes on VirusTotal元数据抽取
Extract all metadata from this image file.
File: /home/user/evidence/photo.jpg
Steps:
1. Extract EXIF data
2. Extract strings
3. Calculate hashes建筑
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MCP Client │────▶│ MCP Server │────▶│ VirusTotal │
│ (Claude/VSCode) │ │ (Python/MCP) │ │ API │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│ │
▼ │
┌─────────────────┐ │
│ Memory Cache │ │
│ (200MB limit) │ │
└─────────────────┘ │
│ ▼
▼ ┌─────────────────┐
┌──────────────┐ │ Local Tools │
│ Local Tools │ │ (DIE, ExifTool,│
│ (Hash, │ │ Binwalk) │
│ Strings, │ └─────────────────┘
│ EXIF) │
└──────────────┘
│
▼
┌──────────────┐
│ Target File │
└──────────────┘缓存系统
服务器实现了智能内存缓存系统:
- 缓存密钥格式:
{tool_type}:{file_path}或vt:{endpoint}:{identifier} - 大小限制:200MB,LRU驱逐
- 范围:每个实例(重新启动时清除)
- 好处:
- 避免重新计算哈希值 - 减少病毒API调用总数 - 更快的重复分析
项目结构
forensics-utils-mcp-server/
├── forensics_utils_mcp_server/
│ ├── __init__.py
│ ├── server.py # MCP server entry point
│ ├── cache.py # In-memory cache implementation
│ ├── config.py # Configuration settings
│ ├── exceptions.py # Custom exceptions
│ ├── queue.py # Rate-limited request queue
│ ├── vt_client.py # VirusTotal API client
│ └── tools/
│ ├── __init__.py
│ ├── file_tools.py # VT file analysis
│ ├── url_tools.py # VT URL analysis
│ ├── domain_tools.py # VT domain/IP analysis
│ ├── search_tools.py # VT search
│ ├── hash_tools.py # Hash calculation
│ ├── string_tools.py # String extraction
│ ├── exif_tools.py # EXIF extraction
│ ├── die_tools.py # DIE analysis
│ └── binwalk_tools.py # Binwalk integration
├── tests/
│ └── test_server.py
├── .env.example
├── .gitignore
├── pyproject.toml
├── README.md
└── requirements.txt发展
设置开发环境
pip install -e ".[dev]"代码质量
black forensics_utils_mcp_server
mypy forensics_utils_mcp_server测试
pytest tests/安全特性
- API密钥保护:存储在
.env从未承诺使用git - 路径验证:只允许绝对路径
- 大小限制:VirusTotal的文件上传限制为32MB
- 速率限制:VT API每分钟4次请求
- 超时保护:请求超时配置(默认值:60秒)
故障排除
未找到VirusTotal API密钥
# Create .env file
echo "VIRUSTOTAL_API_KEY=your_key_here" > .env未找到死亡
# Download DIE from releases
# https://github.com/horsicq/Detect-It-Easy/releases
# Extract and add diec to PATH未找到Binwalk
pip install binwalk未找到ExifTool
# Windows: Download from https://exiftool.org/install.html
# Linux: sudo apt-get install libimage-exiftool-perl
# macOS: brew install exiftool速率限制
- VirusTotal免费层:4个请求/分钟
- VirusTotal付费层:高达10000+个请求/天
调整 forensics_utils_mcp_server/config.py:
QUEUE_RATE_LIMIT = 4 # requests per minute
QUEUE_TIMEOUT_SECONDS = 60更新日志
v1.0.0-初始版本
- 病毒API v3集成总量(9个工具)
- 本地分析工具(6个工具)
- 内存缓存系统
- 速率限制和队列管理
- 支持DIE、ExifTool、Binwalk
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
致谢
支持
有关问题和功能请求,请使用 .
