CyberTriage MCP服务器
MCP(模型上下文协议)服务器,为AI代理提供对CyberTriage事件数据库取证分析功能的访问。
特性
此MCP服务器公开 50+法医分析工具 按类别组织:
- 文件系统分析 (10个工具)-文件修改、大小、扩展名、可疑位置
- 过程分析 (12个工具)-进程执行、权限、命令行、DLL、进程树
- 用户活动和帐户 (11个工具)-用户帐户、文件访问、登录会话、帐户属性
- Windows事件日志 (8个工具)-事件分析、身份验证、特定日志、关键字搜索
- 网络活动 (3个工具)-IP地址、DNS映射、出站连接
- 设备连接 (2个工具)-USB设备,连接模式
- 安全分析 (3个工具)-未签名文件、高优先级工件、哈希集命中率
- 工件分析 (3个工具)-工件类型、属性、常见类型
- Web活动 (3个工具)-书签、历史记录、下载
- 文件完整性和哈希 (3个工具)-哈希查找(MD5/SHA256),重复
- 时间线分析 (1个工具)-按时间顺序重建事件
- 统计 (2个工具)-总体指标、文件类型分布
先决条件
- Node.js 18+
- TypeScript 5+
- CyberTriage事件数据库文件(
incident_data.ind)
安装
# Install dependencies
npm install
# Build the project
npm run build配置
使用环境变量或位置设置数据库路径 incident_data.ind 在项目根目录中:
export CYBERTRIAGE_DB_PATH=/path/to/incident_data.ind用法
运行服务器
# Production
npm start
# Development (with watch mode)
npm run dev服务器使用MCP协议通过stdio进行通信。
连接AI代理
配置您的AI代理(Claude Desktop、ChatGPT等)以使用此MCP服务器:
Claude桌面配置 (claude_desktop_config.json):
{
"mcpServers": {
"cybertriage": {
"command": "node",
"args": ["/path/to/cyberTriageMCP/dist/index.js"],
"env": {
"CYBERTRIAGE_DB_PATH": "/path/to/incident_data.ind"
}
}
}
}工具调用示例
一旦连接,AI代理可以调用以下工具:
get_files_by_time_range-在一段时间内修改文件get_elevated_processes-查找具有管理员权限的进程get_authentication_failure_events-查找失败的登录尝试get_usb_devices-列出已连接的USB设备get_unsigned_files-查找未签名的可执行文件get_timeline-建立一个按时间顺序排列的时间表
可用工具
此MCP服务器提供 50+法医分析工具 分为以下几类:
______________________________________________________________________
📁 文件系统分析工具(10个工具)
get_files_by_time_range
获取在特定时间段内创建、修改或访问的文件。可用于事件窗口期间的时间线分析和活动识别。
参数:
startTime(number,必填):开始时间戳(毫秒)(Unix纪元)endTime(number,必填):结束时间戳(毫秒)(Unix纪元)limit(数字,可选):最大结果数(默认值:100)
退货: 文件详细信息,包括路径、创建/修改/访问时间、大小、MD5和SHA256哈希值。
______________________________________________________________________
get_largest_files
识别系统上最大的文件。帮助识别数据泄露、大下载或可疑的大文件。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 按大小排序的文件,包括路径、大小、修改时间和哈希值。
______________________________________________________________________
get_files_by_extension
查找具有特定扩展名的文件(例如。, .exe, .dll, .bat, .ps1, .vbs).可用于查找可执行文件、脚本或特定文件类型。
参数:
extensions(字符串数组,必填):文件扩展名数组(例如。,[".exe", ".dll"])limit(数字,可选):最大结果数(默认值:100)
退货: 与指定扩展名匹配的文件,包括路径、大小、修改时间和哈希值。
______________________________________________________________________
get_files_in_suspicious_locations
识别可疑位置的文件,如Temp文件夹、AppData、Downloads或Recent文件夹。这些位置通常被恶意软件使用。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 带有时间戳和哈希值的可疑路径中的文件。
______________________________________________________________________
get_deleted_files
查找已删除但仍可从文件系统中恢复的文件。对于寻找攻击者试图隐藏的证据非常重要。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 已删除的文件,包括路径、大小和修改时间。
______________________________________________________________________
get_files_with_extension_mismatch
检测具有异常或不匹配扩展名的文件(例如,具有 .exe 扩展名,但PDF MIME类型)。这可能表示文件混淆或恶意文件。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 扩展名和MIME类型不匹配的文件。
______________________________________________________________________
get_recently_modified_files
获取收集前24小时内修改过的文件。帮助确定最近的活动和潜在的妥协指标。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 最近修改的文件,包括路径、大小、时间戳和哈希值。
______________________________________________________________________
get_unknown_files
查找没有已知哈希匹配的文件(未知文件)。这些可能是自定义恶意软件、新变体或合法的未知软件。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 具有路径、大小、时间戳和哈希的未知文件。
______________________________________________________________________
get_recycle_bin_files
列出Windows回收站中的文件。可用于查找用户认为已删除的已删除文件。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 回收站中的文件,包括路径和修改时间。
______________________________________________________________________
get_accessed_not_modified_files
查找已访问但从未修改过的文件。可以指示已读取但未更改的文件,可能用于数据泄露。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 具有访问时间但访问后没有修改的文件。
______________________________________________________________________
🔄 过程分析工具(12个工具)
get_all_processes
获取系统上运行的所有进程,包括MD5和SHA256哈希。提供流程执行的完整视图。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 进程详细信息,包括名称、路径、参数、开始/结束时间、PID、PPID、用户、权限和文件哈希。
______________________________________________________________________
get_elevated_processes
查找以提升的/管理员权限执行的进程。对于识别特权升级或未经授权的管理活动至关重要。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 使用执行细节和文件哈希值提升进程。
______________________________________________________________________
get_processes_from_suspicious_locations
识别从可疑位置(Temp、Downloads、AppData)执行的进程。恶意软件经常从这些位置执行。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 来自可疑路径的进程,包含执行细节和哈希值。
______________________________________________________________________
get_process_dlls
获取特定进程加载的DLL。有助于理解进程依赖关系和检测DLL劫持或可疑的DLL加载。
参数:
processName(字符串,必填):进程名称(例如“cmd.exe”)limit(数字,可选):最大结果数(默认值:100)
退货: 由指定进程加载的DLL,带有路径和MD5哈希值。
______________________________________________________________________
get_processes_with_suspicious_arguments
查找具有异常或可疑命令行参数的进程。检测混淆的命令、编码的有效载荷或恶意命令模式。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 带有可疑参数(powershell、base64、下载命令等)和文件哈希的进程。
______________________________________________________________________
get_processes_by_user
获取特定用户执行的所有进程。帮助将活动归因于特定的用户帐户。
参数:
username(字符串,必填):用户名/登录名limit(数字,可选):最大结果数(默认值:100)
退货: 用户执行的进程,带有执行细节和哈希值。
______________________________________________________________________
get_unique_processes_by_user_with_hashes
使用执行计数、时间范围和文件哈希值获取特定用户执行的唯一进程。按进程名称和路径分组以显示执行模式。
参数:
username(字符串,必填):用户名/登录名limit(数字,可选):最大结果数(默认值:100)
退货: 具有执行计数、第一次/最后一次执行时间和哈希值的独特进程。
______________________________________________________________________
get_process_tree
获取进程之间的父子关系。对于理解过程产卵链和攻击进展至关重要。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 进程树关系,显示具有PID和开始时间的父进程和子进程。
______________________________________________________________________
get_processes_by_time_range
获取在特定时间窗口内执行的进程。可用于将流程活动与事件时间线相关联。
参数:
startTime(数字,必填):开始时间戳(毫秒)endTime(数字,必填):结束时间戳(毫秒)limit(数字,可选):最大结果数(默认值:100)
退货: 在时间范围内执行的进程及其执行细节。
______________________________________________________________________
get_longest_running_processes
识别执行时间最长的流程。可以指示持久性机制或长时间运行的恶意进程。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 按持续时间、开始/结束时间和计算持续时间排序的流程。
______________________________________________________________________
get_processes_by_observation_type
按观察类型筛选进程(LiveSnapshot与LocalTrace)。有助于区分实时系统分析和历史痕迹。
参数:
observationType(字符串,必填):“LocalTrace”或“LiveSnapshot”limit(数字,可选):最大结果数(默认值:100)
退货: 与观察类型匹配的进程。
______________________________________________________________________
get_latest_process_run
通过名称和/或路径获取流程的最新执行情况,包括尽力而为的用户归因和文件哈希。可用于查找特定流程的最新实例。
参数:
processName(字符串,可选):进程名称(例如,“padang triage.exe”)processPath(字符串,可选):完整进程路径(例如,“/Users/foo/Downloads/a.exe”)
退货: 最新流程执行,包括用户归因、执行细节和文件哈希。
______________________________________________________________________
👤 用户活动和帐户工具(10个工具)
get_all_user_accounts
获取系统上存在的所有用户帐户。提供完整的用户帐户列表以供分析。
参数: 无
退货: 具有登录名、全名、SID、类型、创建日期和状态的用户帐户。
______________________________________________________________________
get_files_accessed_by_user
获取特定用户访问的文件。帮助了解用户活动和数据访问模式。
参数:
username(字符串,必填):用户名/登录名limit(数字,可选):最大结果数(默认值:100)
退货: 用户访问的具有访问日期和路径的文件。
______________________________________________________________________
get_user_files_last_login
获取用户在最近一次成功登录前N天内访问的文件。可用于识别登录事件周围的可疑活动。
参数:
username(字符串,必填):用户名/登录名days(数字,可选):上次成功登录前的天数(默认值:30)limit(number,可选):最大结果数(默认值:1000)
退货: 上次登录前访问的文件,包含访问日期。
______________________________________________________________________
get_recently_accessed_files
获取任何用户最近访问的文件。帮助识别所有用户最近的活动。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 最近访问的包含用户信息和访问日期的文件。
______________________________________________________________________
get_recently_created_accounts
获取最近创建的用户帐户。对于检测未经授权的帐户创建非常重要。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 最近创建的用户帐户,包含创建日期和详细信息。
______________________________________________________________________
get_logon_sessions_by_user
获取特定用户的登录会话。提供身份验证历史记录和会话信息。
参数:
username(字符串,必填):用户名/登录名limit(数字,可选):最大结果数(默认值:100)
退货: 登录会话,包括开始/结束时间、登录类型、方向、状态、IP地址和主机名。
______________________________________________________________________
get_successful_logons
获取所有成功的登录会话。帮助建立基线身份验证模式并识别合法访问。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 成功的登录会话及其详细信息。
______________________________________________________________________
get_failed_logons
获取所有失败的登录尝试。对于检测暴力攻击、帐户枚举或未经授权的访问尝试至关重要。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 登录尝试失败,包括失败原因、时间戳和源信息。
______________________________________________________________________
get_logon_statistics
获取传入和传出登录会话的统计信息。提供身份验证模式的概述。
参数: 无
退货: 按方向、登录类型和状态分组的统计信息。
______________________________________________________________________
get_files_owned_by_user
获取特定用户帐户拥有的文件。帮助识别用户数据和文件所有权模式。
参数:
username(字符串,必填):用户名/登录名limit(数字,可选):最大结果数(默认值:100)
退货: 用户拥有的文件,包括路径、大小和修改时间。
______________________________________________________________________
get_user_account_attributes
获取特定用户的帐户属性。提供详细的帐户信息,包括安全设置和元数据。
参数:
username(字符串,必填):用户名/登录名
退货: 用户帐户属性,包括类型、值和时间戳。
______________________________________________________________________
📋 Windows事件日志工具(8个工具)
get_events_by_time_range
获取特定时间段内发生的Windows事件。对于时间线分析和将事件与事件相关联至关重要。
参数:
startTime(数字,必填):开始时间戳(毫秒)endTime(数字,必填):结束时间戳(毫秒)limit(数字,可选):最大结果数(默认值:100)
退货: 带有日志名称、事件ID、时间戳、用户信息和有效载荷的Windows事件。
______________________________________________________________________
get_most_common_event_ids
获取最常见的Windows事件ID。帮助识别正常与异常事件模式。
参数:
limit(数字,可选):最大结果数(默认值:50)
退货: 最常见的事件ID,包括计数和日志名称。
______________________________________________________________________
get_authentication_failure_events
获取与身份验证失败相关的Windows事件。对于检测基于凭据的攻击至关重要。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 带有详细信息的身份验证失败事件(事件ID 4625、4648、4771、4776)。
______________________________________________________________________
get_events_by_user
获取涉及特定用户的Windows事件。通过事件日志帮助跟踪用户活动。
参数:
username(字符串,必填):用户名或SIDlimit(数字,可选):最大结果数(默认值:100)
退货: 与用户关联的事件,带有时间戳和有效载荷。
______________________________________________________________________
get_events_by_log_name
从特定事件日志(安全、系统、应用程序)中获取事件。允许对特定日志源进行重点分析。
参数:
logName(字符串,必填):事件日志名称(例如“安全”、“系统”)limit(数字,可选):最大结果数(默认值:100)
退货: 指定日志的事件统计信息,包括计数和时间范围。
______________________________________________________________________
get_events_by_keyword
获取负载中包含特定关键字的Windows事件。可用于搜索特定活动或指标。
参数:
keyword(字符串,必填):要搜索的关键字limit(数字,可选):最大结果数(默认值:100)
退货: 有效负载中包含关键字的事件。
______________________________________________________________________
get_winrm_events
获取WinRM(Windows远程管理)事件。对于检测远程管理活动和潜在的横向移动非常重要。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 带有时间戳和有效载荷的WinRM相关事件。
______________________________________________________________________
get_events_around_incident
获取特定事件发生前后发生的事件。帮助围绕事件时间线构建上下文。
参数:
incidentTime(数字,必填):事件时间戳(毫秒)hoursBefore(数字,可选):事件发生前的小时数(默认值:1)hoursAfter(数字,可选):事件发生后的小时数(默认值:1)limit(数字,可选):最大结果数(默认值:100)
退货: 事件发生后指定时间窗口内的事件。
______________________________________________________________________
🌐 网络活动工具(3个工具)
get_network_addresses
获取与主机关联的网络地址(IP和主机名)。提供网络拓扑信息。
参数: 无
退货: 带有类型、主机名和活动时间的网络地址。
______________________________________________________________________
get_dns_ip_mappings
获取映射到IP地址的DNS名称。有助于理解DNS解析和识别可疑域。
参数: 无
退货: 带有时间戳的DNS到IP映射。
______________________________________________________________________
get_outbound_network_connections
获取具有出站网络连接的应用程序,包括目标IP地址和端口。对于检测数据泄露和C2通信至关重要。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 来自web下载和历史记录的出站连接,包括主机名、IP、端口和时间戳。
______________________________________________________________________
🔌 设备连接工具(2个工具)
get_usb_devices
获取已连接到系统的USB设备。对于检测未经授权的存储设备或通过USB的数据泄露非常重要。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 带有供应商、产品、序列号、连接时间和事件类型的USB设备。
______________________________________________________________________
get_devices_by_time_range
在特定时间段内连接设备。帮助将设备连接与事件时间线相关联。
参数:
startTime(数字,必填):开始时间戳(毫秒)endTime(数字,必填):结束时间戳(毫秒)limit(数字,可选):最大结果数(默认值:100)
退货: 在时间范围内连接的设备,并提供连接详细信息。
______________________________________________________________________
🔒 安全分析工具(3个工具)
get_unsigned_files
获取未签名或验证失败的文件。未签名的可执行文件可能表示恶意软件或未经授权的软件。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 具有路径、哈希和验证状态的未签名或不受信任的文件。
______________________________________________________________________
get_high_priority_artifacts
获取具有高重要性或优先级分数的工件。CyberTriage将这些标记为潜在的重要发现。
参数:
minSignificance(数字,可选):最低显著性得分(默认值:50)minPriority(数字,可选):最低优先级分数(默认值:50)limit(数字,可选):最大结果数(默认值:100)
退货: 具有重要性/优先级评分、结论和理由的高优先级工件。
______________________________________________________________________
get_hashset_hits
获取哈希集命中率(已知的恶意文件)。识别与已知恶意软件哈希匹配的文件。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 已知的恶意文件,包括路径、哈希值、修改时间和分析结论。
______________________________________________________________________
🎯 工件分析工具(3个工具)
get_artifacts_by_type
获取特定类型的所有工件。允许按工件类别进行筛选,以便进行重点分析。
参数:
artifactType(字符串,必填):工件类型名称(例如,“TSK_WEB_DOWNLOAD”)limit(数字,可选):最大结果数(默认值:100)
退货: 具有ID和时间戳的指定类型的工件。
______________________________________________________________________
get_artifact_attributes
获取与特定工件关联的属性。提供有关特定工件的详细信息。
参数:
artifactId(数字,必填):工件ID
退货: 工件的所有属性,包括类型、值、源和上下文。
______________________________________________________________________
get_most_common_artifact_types
获取找到的最常见工件类型。有助于了解调查中存在哪些类型的工件。
参数:
limit(数字,可选):最大结果数(默认值:50)
退货: 最常见的带有计数的工件类型。
______________________________________________________________________
🌍 网络活动工具(3个工具)
get_web_bookmarks
获取已找到的网络书签。可以揭示用户兴趣、访问过的网站或潜在指标。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 带有URL和书签名称的网络书签。
______________________________________________________________________
get_web_history
获取网络历史记录条目。对于了解浏览活动和识别可疑网站至关重要。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 包含URL、访问时间和上下文的Web历史条目。
______________________________________________________________________
get_web_downloads
获取已发生的网络下载。对于识别下载的文件,尤其是潜在的恶意软件非常重要。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 带有URL、文件路径和下载时间的Web下载。
______________________________________________________________________
🔐 文件完整性和哈希工具(3个工具)
get_files_by_md5
获取具有特定MD5哈希值的文件。可用于查找与已知哈希匹配的文件或验证文件完整性。
参数:
hashes(字符串数组,必填):MD5哈希数组
退货: 将MD5哈希与路径、大小和时间戳匹配的文件。
______________________________________________________________________
get_files_by_sha256
获取具有特定SHA256哈希值的文件。基于哈希的文件识别比MD5更安全。
参数:
hashes(字符串数组,必填):SHA256哈希数组
退货: 与SHA256哈希值匹配的文件,包括路径、大小和时间戳。
______________________________________________________________________
get_duplicate_files
获取具有重复哈希值的文件(潜在的重复或副本)。可以指示文件复制、备份或可疑文件复制。
参数:
limit(数字,可选):最大结果数(默认值:100)
退货: 使用哈希、文件计数和文件路径复制文件组。
______________________________________________________________________
⏱️ 时间线分析工具(1个工具)
get_timeline
获取按时间顺序排列的时间线,结合流程、文件修改和事件。对于理解事件发生过程中的事件顺序至关重要。
参数:
startTime(数字,必填):开始时间戳(毫秒)endTime(数字,必填):结束时间戳(毫秒)limit(number,可选):最大结果数(默认值:5000)
退货: 按时间顺序排列的流程、文件修改和Windows事件的统一时间线。
______________________________________________________________________
📊 统计工具(2个工具)
get_investigation_statistics
获取调查的总体统计数据。提供有关事件数据的高级指标。
参数: 无
退货: 统计数据包括总文件、进程、事件、工件、用户、设备和高优先级工件。
______________________________________________________________________
get_file_type_distribution
获取文件类型的分布。有助于了解调查中存在哪些类型的文件。
参数:
limit(数字,可选):最大结果数(默认值:50)
退货: 文件类型分布,包括每个扩展名的计数和总大小。
响应格式
所有工具都以一致的格式返回结果:
{
"columns": ["column1", "column2", ...],
"rows": [
["value1", "value2", ...],
...
],
"rowCount": 10,
"data": [...]
}发展
项目结构
src/
├── index.ts # Main MCP server
├── database.ts # Database connection and utilities
├── tools/
│ ├── registry.ts # Tool registry
│ ├── fileSystem.ts # File system tools
│ ├── processes.ts # Process analysis tools
│ ├── users.ts # User activity tools
│ ├── events.ts # Event log tools
│ └── other.ts # Other tools (network, devices, etc.)添加新工具
- 将工具定义添加到中的相应类别文件
src/tools/ - 在同一文件中实现executor函数
- 在以下位置注册类别
src/tools/registry.ts
例子:
// In src/tools/fileSystem.ts
export function createFileSystemTools(db: CyberTriageDatabase): Tool[] {
return [
{
name: 'my_new_tool',
description: 'Description of what the tool does',
inputSchema: {
type: 'object',
properties: {
param1: { type: 'string', description: 'Parameter description' }
},
required: ['param1']
}
}
];
}
export async function executeFileSystemTool(
name: string,
args: any,
db: CyberTriageDatabase
): Promise {
switch (name) {
case 'my_new_tool': {
const { param1 } = args;
const sql = `SELECT * FROM table WHERE column = ?`;
return db.query(sql, [param1]);
}
// ... other cases
}
}许可证
麻省理工学院
支持
有关问题或疑问,请参阅CyberTriage文档或在存储库中创建问题。
