Frida简介
Frida是一款基于python+javascript 的hook框架,适用于android\ios\linux\win\osx等各平台,由于是基于脚本的交互,因此相比xposed和substrace cydia更加便捷。本文重点介绍在window下对Android apk进行安全测试时的使用。
逆向算法时hook算法
在对apk进行安全测试的时候,经常会遇到请求参数被加密或者签名的情况,在请求数据被修改后提示异常,导致无法有效地进行漏洞挖掘。

遇到这种情况,最初的思路是直接逆向其算法,然后再重写算法,在本机实现加密、解密、签名的动作。


现在从代码中可以看出,apk使用的是AES算法,但是目前还无法得知AES算法加密的key、偏移值、待加密的字符串。通过frida hook相关方法,可以很方便得到这些内容。



验证获取到的key、偏移量是否正确

然后可以重写算法实现对数据的加密、解密。


在实际逆向算法的过程中,经常会遇到apk反编译后的源码混淆比较严重,或者将算法写入到so中的情况,这无疑给逆向算法的工作带来的更多挑战,需要投入更多的精力。而我们的重点不是逆向出算法,而是通过逆向算法解决数据加密、签名,以便能够直接进行漏洞挖掘,是不是有更方便的方法呢?
在hook时批量操作
在测试越权、撞库时,只需替换请求中的某些参数的值。通过fridahook相关方法,批量修改相关参数的值,然后循环将修改后的内容传入原方法即可。

在如上代码对应的请求中,以撞库为例,通过frida hook该方法,循环替换username的值,然后在控制台打印修改参数后请求的结果,可以快速测试是否存在撞库漏洞,从而绕过了逆向加密算法。

在某些场景中,只能批量生成加密或签名后的请求数据,而无法或者不方便在hook时批量发起http请求,那也只需要在burpsuite中重放加密后的数据即可。


与外部应用的配合
在需要与外部应用结合使用时,通过flask新建一个web服务器接收请求,然后通过frida调用apk中的算法生成签名数据,将签名数据重新组装并通过request重新发起请求,或者直接调用apk中的相关方法发起请求。


在浏览器端进行测试:

使用burpsuite进行测试:
配合sqlmap进行测试:

想了解更多安全信息请点击www.utuobang.club
乌托邦安全技术社区
给您一片安全净土
长按识别二维码关注
安全乌托邦旨在为安全从业人员提供理想的安全学习交流平台,安全新手通过平台可以入门学习;安全深耕者通过平台可以传道授业解惑,分享所得,获取自我成就感。







