写在前面
我的朋友参加了https://archive.aicyberchallenge.com/中的aixcc
比赛,比赛内容就是造一个ai工具,自动化审计和挖掘漏洞,听说有队伍用ai工具取得了不错的效果。
另外道听途说,在defcon上有人用AI agent
在无任何交互的情况下解决了4道re和pwn题,包括写exp,而且速度还快的不行;震惊我一脸,原本以为ai for security
纯纯是cjb,现在我要重新审视一下ai agent
在安全领域方面的应用了。
这篇文章主要就讲ida-pro-mcp
的应用。
0. function calling和 MCP
简单地说,MCP 是一套“协议/生态标准”,而 function calling 是“单个模型提供商 API 里的一个能力”
function calling
其实是单个模型厂商(例如openai)中的一种模型输出格式/约定,你把函数用 JSON Schema 描述,模型决定何时以结构化参数“调用”它,再由你的应用执行该函数。更像是你应用内部的集成点。
而MCP(Model Context Protocol)
:开放协议,标准化“LLM ↔ 外部数据/工具”的连接方式;像给 AI 应用加一个统一的 USB-C 口。协议里定义了“工具(tools)/资源(resources)/提示模板(prompts)”的发现、调用与安全边界,可被不同模型和客户端复用(如 IDE、桌面应用、代理框架)。
本质上,MCP让大模型能够调用许多工具,这极大的兴盛了ai agent的热潮
1. ida-pro-mcp server
https://github.com/mrexodia/ida-pro-mcp
ida的一个插件,相当于开启了一个mcp
的服务端。根据网址的教程安装即可。
安装完成后记得重启ida
mcp服务端开放一些ida的功能供mcp客户端操作
安装完ida-pro-mcp
后,可以通过命令行运行ida-pro-mcp --config
生成配置文件,用于写入mcp客户端
2. mcp client
mcp客户端主要的功能就是使用LLM,根据mcp服务端提供的功能和用户的命令,指向特定功能。
可用的客户端有很多,接下来一一试用一下。
2.1 Cline
直接在vscode plugin market
下载即可
下载好后将第一节生成的配置文件复制到
cline
中
可以发现配置成功:
最主要的就是拿到各个大模型产商的api key,说实话,这个就各凭本事辣
2.1.1 ai解题体验
让我康康新进的ai是否能解决这些ctf的逆向/pwn题目(yysy,感觉自己快失业了)
因为LLM的性能很大程度依赖prompt
,所以这里提供了一个可用的逆向工程师prompt
供参考:
Your task is to analyze a crackme3 program in IDA Pro. You can use the MCP tools to retrieve information. In general use the following strategy:
1. Inspect the decompilation and add comments with your findings
2. Rename variables to more sensible names
3. Change the variable and argument types if necessary (especially pointer and array types)
4. Change function names to be more descriptive
5. If more details are necessary, disassemble the function and add comments with your findings
6. NEVER convert number bases yourself. Use the convert_number MCP tool if needed!
7. Do not attempt brute forcing, derive any solutions purely from the disassembly and simple python scripts
8. Create a report.md with your findings and steps taken at the end
9. When you find a solution, prompt to user for feedback with the password you found
事实证明,简单的题目是难不倒ai agent的。
3. 附录
3.1 附件的其他mcp server
ida-mcp-server提供了llm访问ida的能力,llm还可以通过集成更多的mcp来获得更多工具,提高更多的性能。
3.1.1 math-mcp
也是一个 mcp server,提供基本的数学运算。可装可不装~
https://github.com/EthanHenrickson/math-mcp
npm ls @modelcontextprotocol/sdk
npm i @modelcontextprotocol/sdk@latest #安装mcp server所需依赖
随后按照网址教程走即可~。
3.2 一些可用的api
注册了三家大模型厂商(openai,anthropic和google),可以直接用他们官网的api。
或者你想同时使用多家大模型厂商的api,可以用cursor、perplexity、cline本身提供api(他们通常会和大模型厂商有合作)
目前来看,claude对于其他地域的管控十分之严格,open和google次之(暂未看出明显差异),我推荐使用上面例如cursor、perplexity、cline
的api,也能访问相同的模型,对其他地区用户的限制也稍微低一点。
3.3 mcp带来的安全问题
mcp简而言之是让LLM能够使用本地某些api的通用协议,这非常方便,但是也导致了一些安全问题:
1. LLM调用mcp server的权限设置,如果想让LLM agent在你不关注的情况下自动执行任务,权限赋予是必不可少的;然而这种情况下,如果LLM被劫持,很有可能会开放本地端口给攻击者入侵!
2. mcp server需要保证是安全的,如果mcp server被污染,LLM执行函数时很可能会被劫持