本篇文章主要来介绍一下最近写的一个分析微信小程序的Skill,平时在对小程序测试的过程中难免会遇到数据包加密的情况,尤其是金融行业这些小程序,此时我们就需要强开debug断点调试或者反编译小程序去进行分析,虽然现在有了AI可以辅助我们进行分析但是相对来说还是比较繁琐的,需要先反编译,然后打开ide或者cc…一顿操作之后才能开始分析,为了解决这个问题,这个Skill就诞生了,不过这个Skill不只是可以做加解密的分析,还能做接口提取、敏感信息提取、漏洞分析、加解密分析,这四个主要功能,基本覆盖了日常的测试需求。
先来介绍一下这个Skill的设计思路,刚开始是打算采用纯LLM的方式驱动,因为小程序的分析跟Java或者其他语言的代码审计不太一样,小程序的代码量相对来说是比较少的,但是改了几个版本之后去跑测试发现效果不太好,主要是如果全使用LLM驱动会非常考验模型的能力,如果使用弱模型跑Skill就会有很大的偏差,导致生成的报告效果非常不好。所以最终决定使用脚本+LLM驱动,先让脚本去提取接口、提取敏感信息,然后生成相对应的文件让AI去进行分析,这样既保证了效率又可以让AI通过上下文分析保证准确性。不过漏洞分析和加解密分析依旧全部使用的是LLM驱动,这两个可以让AI尽情发挥,测试效果发现还不错。这个Skill本身没有什么太大的含金量,不过至少可以让我们在测试过程中节省大量的时间去挖洞。
再来说一下怎么使用效果更好,通过一个案例来介绍一下。
我是比较建议结合burp或者yakit这些抓包工具的mcp来使用的,因为有部分小程序是动态密钥,可能会先向服务端发起请求拿到生成的密钥再去进行加密,这个时候如果是纯静态分析代码或者是直接把单个数据包给AI效果会差一点。
/wxmini-security-audit 分析这个小程序”要分析的小程序目录”,结合burp mcp的数据包重点分析/api/co****/V**/***Info这个接口的请求包和返回包加密方式,尝试解密请求包,严格按照skill流程执行
如果是没有反编译的包会进行反编译,相反如果给的是已经反编译之后的则直接进行分析跳过这一步(这里要说的是在GitHub项目上没有打包unveilr文件,使用之前需要手动把unveilr放到tools目录下即可)
然后会启动4个agent,各司其职做自己该做的事情
如果用户有自定义需求,那么就会进入到这一步,也就是我们刚开始指定要分析的那个接口,这里是调用burp mcp,结合其他数据包成功分析出来了加密算法包括key和iv值
我们先来手动验证一下跑出来的key和iv是否能成功解密数据包
这里要特殊说明的是这个小程序采用的就是向服务端请求获取key和iv值,但是这个key和iv值也是经过加密的,需要本地做解密然后再用这个值去对数据包进行加密,这里AI都分析出来了
接下来实现自动化加解密就很简单了,不熟悉的师傅可以翻之前的文章
或者如果感觉手动解密还是麻烦,还可以一句话让AI搞定
效果也是嘎嘎的,这个小程序也是之前测试过的,甚至还发现了之前没有发现的接口
这里使用的环境是Claude code + 智谱的glm5,也使用过其他模型效果非常一般(建议使用能力强点的模型)
上面的这个流程跑完大概只需要二三十分钟,相比之前的操作,节省了不少时间
假如说逆了加解密后做了测试,又跑了接口等等,还是没有发现有价值的漏洞,就可以尝试使用下面这款小程序去测一测
这个是前几天花了两个小时搓出来的一个小程序,简单介绍一下这个小程序是做什么的:这是一个通过AppID跳转指定页面的小程序,可以直接复制app.json文件内容自动解析或者直接上传app.json文件自动解析,并批量生成跳转按钮,可以更方便的测试未授权等
https://github.com/sssmmmwww/wxmini-security-audit
如果感觉有用的师傅可以给个star,您的支持就是最大的动力!
关于Skill或者小程序有什么问题或者建议都可以在后台留言!
暂无评论内容