反编译小程序,自动化寻找签名函数并加签联动BP插件

0x00 前言

在日常的渗透测试中,当我们尝试重放或篡改数据包时,常常会遇到一些使用数据加密或数字签名技术以增强安全性的站点。这要求我们识别并破解加密或签名算法,这个过程可能颇具挑战性。

通常而言,不同平台上数据解密或破解数字签名的难度存在差异,其中以移动应用程序最为复杂,其次是Web应用和微信小程序。由于API接口通常保持一致,针对微信小程序的测试可能相对简单。本文将以一个微信小程序的安全测试为例进行讨论。

0x01 微信小程序包的获取

目前,微信小程序的PC端已经实施了加密措施,但我们仍可以从Android设备上获取小程序的包文件。这需要一个已经获得root权限的Android设备或模拟器。首先,清除/data/data/com.tencent.mm/MicroMsg/[16进制字符串]/appbrand/pkg目录下的所有小程序包,然后打开目标小程序,确保加载并运行所有相关包,包括任何子包。

图片[1]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛
图片[2]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛

0x02 反编译获取源码

使用wxappUnpacker工具,我们可以反编译小程序包以获取源代码。反编译完成后,使用微信官方开发者工具打开项目,不校验合法域名,以便于测试。

图片[3]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛
图片[4]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛
图片[5]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛

0x03 寻找签名加密函数

通过抓包和手动测试,我们发现站点使用数字签名确保提交数据的完整性。通过在项目代码中全局搜索关键字如“key”、“encrypt”、“sign”等,我们可以快速定位到关键的加密函数。进一步分析这些函数的调用关系和参数,我们可以确定用于签名的具体方法。

图片[6]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛
图片[7]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛

0x04 编写加签函数

根据分析结果,我们可以在本地编写一个JavaScript脚本,模拟小程序的加签过程,以测试其有效性。若遇到错误,通过仔细检查代码逻辑和依赖函数,确保脚本可以正确执行。

图片[8]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛
图片[9]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛
图片[10]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛

0x05 联动Burp插件提高效率

为了提高渗透测试的效率,我们可以结合使用Burp Suite的插件,如jsencrypter,自动化执行加签算法。这样,在篡改数据时,插件可以自动计算并附加正确的签名,从而简化测试过程。

图片[11]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛
图片[12]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛
图片[13]-反编译小程序,自动化寻找签名函数并加签联动BP插件-山海云端论坛
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容