mcpField
B
binary-triage

binary-triage

github.com/cyberkaida安全885228 次安装1 天前更新
代码仓库

关于 binary-triage

binary-triage 是用于在深入分析前快速检查二进制文件的技能。它帮助分析者识别程序结构与显著行为、标记值得关注的区域,并生成按优先级排列且可执行的后续任务。

主要功能

  1. 01内存区段检查
  2. 02字符串与导入项检查
  3. 03函数与交叉引用审查
  4. 04选择性初步反编译
  5. 05按优先级整理后续任务

适用场景

  1. 01开展恶意软件二进制文件的初步评估
  2. 02查找待调查的可疑 API 或字符串
  3. 03规划对加壳或剥离符号二进制文件的深入分析

MCP 相关

该技能使用 ReVa 的 MCP 工具检查程序文件、内存、字符串、符号、函数、引用关系和反编译结果。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/cyberkaida/reverse-engineering-assistant --skill binary-triage

安装后在 Claude Code 中输入/binary-triage确认已加载。

详细介绍

二进制初步分析

说明

我们正在对一个二进制文件进行初步分析,以快速了解其功能。这是初步调查,而非深入分析。我们的目标是:

  1. 识别关键组件和行为
  2. 标记可疑或值得关注的部分
  3. 创建后续深入调查的任务清单

使用 ReVa 进行二进制初步分析

按照以下系统化工作流程使用 ReVa 的 MCP 工具:

1. 识别程序
  • 使用 get-current-program 查看当前活动程序
  • 或使用 list-project-files 查看项目中可用的程序
  • 记下 programPath(例如,"/Hatchery.exe"),供后续工具使用
2. 调查内存布局
  • 使用 get-memory-blocks 了解二进制文件的结构
  • 检查关键区段:
    • .text - 可执行代码
    • .data - 已初始化数据
    • .rodata - 只读数据(字符串、常量)
    • .bss - 未初始化数据
  • 标记异常特征:
    • 区段异常大
    • 加壳或加密的区段
    • 可执行数据区段
    • 可写代码区段
3. 调查字符串
  • 使用 get-strings-count 查看字符串总数
  • 使用 get-strings 分页查看(每次 100–200 个字符串)
  • 查找表明功能或恶意行为的迹象:
    • 网络:URL、IP 地址、域名、API 端点
    • 文件系统:文件路径、注册表项、配置文件
    • API:函数名、库引用
    • 消息:错误消息、调试字符串、日志消息
    • 可疑关键词:admin、password、credential、token、crypto、encrypt、decrypt、download、execute、inject、shellcode、payload
4. 调查符号和导入项
  • 使用 get-symbols-count 并设置 includeExternal=true 统计导入项
  • 使用 get-symbols 并设置 includeExternal=true 和 filterDefaultNames=true
  • 重点关注外部符号(从库导入的符号)
  • 按类别标记有趣或可疑的导入项:
    • 网络 API:connect、send、recv、WSAStartup、getaddrinfo、curl_*、socket
    • 文件 I/O:CreateFile、WriteFile、ReadFile、fopen、fwrite、fread
    • 进程操作:CreateProcess、exec、fork、system、WinExec、ShellExecute
    • 内存操作:VirtualAlloc、VirtualProtect、mmap、mprotect
    • 加密:CryptEncrypt、CryptDecrypt、EVP_、AES_、bcrypt、RC4
    • 反分析:IsDebuggerPresent、CheckRemoteDebuggerPresent、ptrace
    • 注册表:RegOpenKey、RegSetValue、RegQueryValue
  • 记录导入项与符号总数的比例(大量使用导入项可能表明程序依赖库)
5. 调查函数
  • 使用 get-function-count 并设置 filterDefaultNames=true 统计命名函数
  • 使用 get-function-count 并设置 filterDefaultNames=false 统计所有函数
  • 计算命名函数与未命名函数的比例(未命名函数占比高 = 二进制已剥离符号)
  • 使用 get-functions 并设置 filterDefaultNames=true 列出命名函数
  • 识别关键函数:
    • 入口点:entry、start、_start
    • 主函数:main、WinMain、DllMain、_main
    • 可疑名称:如果符号未被剥离,查找揭示性函数名
6. 对关键发现进行交叉引用分析
  • 对第 3 步中发现的有趣字符串:
    • 使用 find-cross-references 并设置 direction="to" 和 includeContext=true
    • 确定哪些函数引用了可疑字符串
  • 对第 4 步中发现的可疑导入项:
    • 使用 find-cross-references 并设置 direction="to" 和 includeContext=true
    • 确定哪些函数调用了可疑 API
  • 这有助于确定哪些函数需要优先进行详细检查
7. 有选择地进行初步反编译
  • 对入口点或主函数使用 get-decompilation
    • 将 limit=30 设置为初始获取约 30 行
    • 将 includeIncomingReferences=true 设置为查看调用者
    • 将 includeReferenceContext=true 设置为获取上下文片段
  • 对第 6 步中发现的 1–2 个可疑函数使用 get-decompilation
    • 将 limit=20-30 设置为快速了解概况
  • 留意高层模式:
    • 循环(加密/解密例程)
    • 网络操作
    • 文件操作
    • 进程创建
    • 可疑的控制流(混淆迹象)
  • 暂时不要进行深入分析——这一步只是为了了解总体行为
8. 记录发现并创建任务列表
  • 使用 TodoWrite 工具创建可执行的任务列表,可包含以下条目:
    • “调查字符串 'http://malicious-c2.com'(在 0x00401234 处被引用)”
    • “反编译函数 sub_401000(调用 VirtualAlloc、memcpy 和 CreateThread)”
    • “分析函数 encrypt_payload 中的加密用法(使用 CryptEncrypt)”
    • “追踪反调试检查(0x00402000 处调用 IsDebuggerPresent)”
    • “检查已打包的节 .UPX0,寻找解包例程”
  • 每项待办都应:
    • 具体(包含地址、函数名和字符串)
    • 可执行(明确需要调查什么)
    • 按优先级排序(最可疑的排在前面)

输出格式

请按以下结构向用户呈现初步分析结果:

程序概览
  • 名称:[programPath 中的程序名称]
  • 类型:[可执行文件类型——PE、ELF、Mach-O 等]
  • 平台:[Windows、Linux、macOS 等]
内存布局
  • 总大小:[大小,以字节/KB/MB 为单位]
  • 关键节:[列出主要节及其大小和权限]
  • 异常特征:[任何已打包/加密/可疑的节]
字符串分析
  • 字符串总数:[get-strings-count 的计数]
  • 值得注意的发现:[有上下文的有趣字符串项目列表]
  • 可疑迹象:[发现的 URL、IP、可疑关键词]
导入分析
  • 符号总数:[get-symbols-count 的计数]
  • 外部导入:[外部符号数量]
  • 关键库:[导入的主要库]
  • 可疑 API:[按类别列出的可疑导入]
函数分析
  • 函数总数:[filterDefaultNames=false 时的计数]
  • 具名函数:[filterDefaultNames=true 时的计数]
  • 符号剥离状态:[是/否,根据比例判断]
  • 入口点:[地址和名称]
  • 主函数:[地址和名称]
  • 关键函数:[已识别的重要函数列表]
可疑迹象

[按严重程度排序的红旗项目列表]

建议的后续步骤

[呈现第 8 步创建的任务列表]

  • 每项都应具体且可执行
  • 按严重程度/重要性排序
  • 包含地址、函数名和上下文

重要说明

  • 速度优先于深度:这是初步分析,不是完整分析。请快速完成各步骤。
  • 使用分页:不要一次请求数千条字符串/函数。每次使用 100–200 条的分块。
  • 关注异常:标记不寻常、可疑或值得关注的内容。
  • 上下文至关重要:使用交叉引用时,启用 includeContext=true 以获取代码片段。
  • 创建可执行的待办事项:每个后续步骤都应具体到其他 Agent 可以执行。
  • 系统化开展:按顺序完成全部 8 个步骤,以确保全面覆盖。

评论

支持 Markdown