我们在做渗透测试时对App抓包,会发现基本上请求都有加密,可见挖掘Android漏洞,逆向分析是个很重要技能,感谢zeroisone分享。
「破壳社区ID: zeroisone」
0x00 选择入口
大部分人的渗透习惯,在app算法分析中都喜欢从登录处开始入手,如果安装在模拟器的app点登录后直接崩溃,可以试试换个入口点。
很多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对签名做了校验,网络通讯功能无法使用。
比较方便的方法:
1.安装xposed框架(需要root,刷第三方recovery),之后安装xinstaller模块,设置xistaller启动专家模式,在其他设置中开启“调试应用”
2.用模拟器进行调试,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文件,进一步练手。
开壳计划
破壳漏洞社区「开壳」版块,是为了个大家提供一个知识分享、探索交流的空间,技术的探索是无止境的,攻防的对抗也是如此,甲方同学可以总结自己的防御经验,白帽子也可以站在攻击者角度去谈谈自己的见解,这正是我们一直鼓励的攻防思路的碰撞。你会发现攻防思路不停的碰撞,会让你对安全有更全面对认知,同时也打开你思路更多的可能性,我们希望把大家遇到过的各种场景收集起来,给后来者更多启发。
开壳——让姿势探索无限扩大
点击可查看社区原文
领取专属 10元无门槛券
私享最新 技术干货