基于mcp实现ida自动化分析
工具
1.mcp server+ida
配置详见https://github.com/mrexodia/ida-pro-mcp/
命令
1 |
|
可能遇到的问题:
如果以前有使用angr的,angr所需protobuf版本与当前github项目下mcp所需protobuf版本不一致,安装以前的版本即可,angr可在conda虚拟环境下配置
python版本推荐在3.11以上,ida推荐9.0版本
2.vscode+插件Cline
插件可以是其他的,只要能连上或者探测到本地mcp server即可
相关大模型分析可以导入本地的,或者在Cline插件里导入api key即可
配置完之后记得ida和vscode都重启下,确保vscode插件识别到mcp server
此配置开启,方便ai自动分析,无流程中断与人机交互
但此处的允许操作也存在安全隐患,甚至可以实现mcp server注入,下文会提及
使用
ida打开目标程序,在插件里打开mcp
一个简单的异或flag
打开vscode,在插件里输入要求
下面为部分ai分析过程
原理
github上的项目将ida各功能封装成一个个函数,在本地调用server插件连接本地13337端口
然后借助cline插件通过mcp协议与ida交互,外接ai通过中间人cline实现ida自动化分析
存在的问题
基于大模型分析,当遇到复杂程序或遇到代码量超过模型分析限制时往往逆向效果不是很理想
而且第三方可以通过mcp协议以及如上图所示的权限开放进行注入攻击
参考文章:奇安信攻防社区-MCP Server 攻击面初探与思考 ,膜拜大佬
首先介绍基础知识
什么是 MCP
MCP 全称 Model Context Protocol,译为模型上下文协议,其为 LLMs 提供了更多的上下文(也就是模型可以连接到更多的数据源和工具),用传统开发的视角来看,MCP 可以看作 API,只不过 API 是给代码提供服务,MCP 是为 LLMs 提供服务
MCP 目前是使用 C/S 架构的,这里的 Client 可以理解为需要进行外部调用的大模型,Server 就是为大模型开发的外部工具和资源,二者通过 MCP 协议进行通信,一般来说,Server 提供以下三种核心对象:
- Resources:API响应或者是文件内容
- Tools:LLM可调用工具函数
- Prompts:预编写提示词模版
一个 Client 可以同时连接多个 Server 进行任务处理,体现在任务处理上就是 LLMs 对一个复杂任务可以进行拆解(使用 LLM 原生的思考能力),在执行拆解出的子任务时可以去调用外部工具对目标进行完成(使用 MCP Server)
1 |
|
案例实现
首先开发一个 MCP Sever 用来实现加法操作,同时在其中放入恶意的 Prompt,要求 LLM 读取用户当前的工作路径
1 |
|
并将其引入 Cursor 的 MCP Server 进行测试
可以看到,LLM 在对用户没有明显提示的情况下,成功读取了我们当前的工作目录和目录下的文件
这里我们可以进一步改造,让其将信息传递出来,MCP Server 就具有了变成 C2 服务器的可能性
并且如果用户开启了 Auto-run Mode(早期叫 YOLO Mode),工具执行甚至不需要用户进行授权