某apk算法逆向分析过程

smali动态调试与Brida

Posted by zeroisone on December 12, 2017

某apk算法逆向分析过程

对某app抓包时发现所有请求都进行了加密,便对加密算法简单分析了下。

0x00 选择入口

在之前的app算法分析中都喜欢从登录处开始入手,但这次因为安装在模拟器的app点登录后直接崩溃,so,换了个入口点。很多app最终调用的算法函数名称存在encrypt、decrypt关键字,用jadx反编译apk,全局搜索关键字”decrypt”。 打开SecurityCryptor类,看到调用了动态链接库(libsgmain.so)进行加密,关键加密算法应该就在这里了。 看起来似乎很顺利,记录下在这之前的曲折过程。

0x01 寻找decrypt

一开始莫名的搜索了“decode”关键字。 看到了DES关键词,打开查看挺像是加解密函数。 搜索哪处调用了util.y函数 进一步追踪 加密函数y.a(str,str2)具有不同的参数,利用xposed hook加密函数y.a(str,str2)。 在意见反馈提交信息后并没有看到hook日志,也就是说思路错了,这函数不是最终调用的加密函数。倒是在logcat中看到url after encode信息。 全局搜索logcat信息 关键函数部分jadx反编译不出来。 查看smali代码后有点吃力,使用smali动态调式分析。

0x02 smali动态调试

对app进行二次打包,修改AndroidManifest.xml中application,添加 android:debuggable=”true”,重新打包后发现apk对签名做了校验,网络通讯功能无法使用。

比较方便的方法:

• 安装xposed框架(需要root,刷第三方recovery),之后安装xinstaller模块,设置xinstaller启动专家模式,在其他设置中开启“调试应用” • 用模拟器进行调试,ro.debuggable默认为1,不需要二次打包。

Android Studio 动态调试Smali

1) 安装smalidea

下载 Android Studio 插件 smalidea-0.05.zip,
下载地址:https://bitbucket.org/JesusFreke/smali/downloads/

1.打开Android Studio,按Alt+Ctrl+S打开设置界面,点击Preferences—— Plugins——Install plugin from disk…——选择下载好的smalidea-0.05.zip。

2.重启Android Studio。

2)反编译apk

用apktool 反编译apk,将反编译好的工程导入Android Studio,导入完Android studio提示有个警告,如下图所示,点击Configure。

在终端运行,开启app调试模式 adb shell am start -D -n com.bbk.appstore/.ui.AppStore 模拟器如下图所示的话说明成功。

回到android studio处,已经自动帮我们构建好了调试环境,打开smali,找到前面的关键函数处下断点。

3)开始调试

在右下角的Watches窗口可以添加变量,查看各个寄存器的值,然后按下f8单步运行这个apk ,找到具体的加密函数,看它到底是怎么加密流量的:

后续调试发现程序调用了一个动态链接库进行加密,然后把加密结果再传递出来,又回到了开头,下面使用Brida调用libsgmain.so的加解密函数,方便测试。

0x03 使用Brida插件解密函数

Brida是一款 Burp Suite 扩展,作为一座桥梁连接着Burp Suite以及Frida,以帮助用户修改应用程序与后端服务器之间的通信数据为己任。在分析移动端应用时遇到应用使用随机密钥式对称加密,如果不知道其使用的密钥就无法篡改其通信数据,通过Burp也就无法对所有的交换数据进行更改了,于是Brida就这样出现在我们视野中。 参考:https://www.anquanke.com/post/id/86567

配置好Frida好后,启动Brida。

Brida脚本代码如下: burp中使用右键调用contextcustom2对请求参数解密

0x04 后续

使用Brida插件,省去了分析so文件加密算法的时间,我们可以直接调用应用中的方法,来对数据进行加/解密 ,而不用去逆向对应的方法。为了更深入的分析Android NDK逆向,后续会使用IDA动态调试so文件,进一步练手。

0x05 参考

利用Brida解密app传输加密算法

Android逆向之hook框架frida篇 - 简书

联合Frida和BurpSuite的强大扩展–Brida