本次算是抄板凳,此篇文章主要目的是讲解如何搭建一个比较全面的APP测试模拟器,此次水文较为基础,大佬请绕过,本次介绍的工具大体如下:
- 雷电模拟器ldplayer9_ld_999_ld windows_x64
- magiskapp-debug.apk 模拟器专用面具版本
- LSPosed-v1.8.3-6552-zygisk-release.zip 并非最新版
- charles-proxy-4.2.5-win64 做socks5上游代理用
- Burpsuite 做下游代理用
- MT管理器_2.11.8.apk 可选
- Postern_3.1.2.apk/v2rayNG_1.8.19_arm64-v8a.apk 安装一个即可
- Shamiko-v1.0.1-300-release.zip 隐藏root用
- HMA-V3.2.apk 黑白名单
- frida-server-16.2.1-android-arm64 安卓测试必备
- Lsposed.apk lsposed桌面显示用
- JustTrustMe.apk 基本没啥用了
- 算法助手2.1.2.apk 后期安卓逆向必备神器
- 开发者助手.apk 后期安卓逆向必备神器
- HttpCanary_9.9.9.9.apk 用处不大了,仁者见仁吧
- Move_Certificates-v1.9.zip 解决证书无法导入到系统信任目录问题
这里面的工具,一部分在测试中是用不到的,但是如果涉及逆向的话,这些工具就都有用处了,本次讲解主要体现在应用层,比如最常见的解决一些app加固抓包问题、sslping问题以及常问的应用层加密问题
可能会有人疑惑,模拟器自身具备root,为什么还需要单独安装面具?其实安装面具的目的是为了使用一些面具才能使用的插件,使用面具也能更好的控制root权限
话说的有点多了,安卓逆向大家可以前往52pojie专栏,正己表哥的《安卓逆向这档事》可是很出名的哦
首先安装雷电模拟器,不建议安装在虚拟机里,新建一个安卓9的安卓模拟器就行,为什么是安卓9呢?因为低版本的模拟器有很多插件都用不了,而安卓9以上对data目录又有特殊的权限限制,导致很多好的xposed框架在申请data目录权限的时候常常出现问题,所以推荐大家直接使用安卓9
保存后重新启动即可,接下来安装面具,可以直接拖进去,也可以adb install,安装完毕后,直接赋予root权限,然后修复即可
重新启动后,再次打开面具,会提示检测到其他su文件,直接x掉就行
点击右上角设置按钮,需要进行一些设置
可以先修改一下面具的包名,一些app基础检测可能会检测到系统的安装包名(不修改也行,后期黑白名单对其隐藏即可)
而后会自动关闭软件,等等就好,接下来继续回到主页-设置,打开Zygisk按钮
重启后生效,接下来安装lsp框架,这个lsp框架是压缩包形式,安装到面具里面的,所以我们可以先adb push到模拟器的目录里,也可以利用雷电模拟器的共享文件功能将文件存放进去,存放进去的目录是在模拟器的picture目录
把需要安装的一口气全拽进去就行,这个文件就在模拟器的picture目录,打开面具,选择本地安装
重启后就好了,如果重启不了了,请重新再从头来一次
直接把Lsposed.apk安装,安装的目的是因为lsp框架安装后,有的模拟器会出现玄学问题,比如说找不到任务栏里的框架
不疑有他,所有apk的都可以直接安装进去,一般xposed框架的模块都是apk可以直接安装的,有些框架是有GUI的,会有单独的入口,有些xposed框架只能在lsp框架的模块才能看到,而zip压缩包的模块一般都是面具里面的,本次案例安装步骤不在一一演示,直接给大家看部署后的样子
类似核心破解模块,是用来饶过一些app的签名认证的,需要勾选系统框架
简单介绍一下安装的apk、插件的功能
MT管理器,这是一款史诗级文件管理器,安装后可以给root权限,会员仅需200+即可获取永久会员,而MT管理器项目已经平稳的运行了N年了(笔者记得笔者高中的时候就用过这个),所以也推荐大家知识付费,支持一下开发大佬们,该工具可谓是逆向神器,常规的软件双开、签名绕过、dex逆向、Activity记录等,好用到爆
Postern_3.1.2.apk/v2rayNG_1.8.19_arm64-v8a.apk ,相信大家都用过移动端的科学上网,这两款工具的原理与科学上网类似,很多加固做了HTTP代理检测,难以绕过的时候,我们就可以利用这两款工具走socks5代理进行绕过,而由于charles工具支持socks5协议的数据包监听,而charles同样可以设置下游代理,只需要将下游代理设置成burp即可完成代理抓包,所以三者结合起来往往能起到意想不到的效果(JD APP可以利用此方式进行抓包);不过需要注意的是,Postern_3.1.2已经停止维护多年了,笔者的安卓13手机不支持安装了,所以只能使用v2ary
Shamiko-v1.0.1 该工具可以部署在面具模块里,面具模块自带的隐藏Magisk功能开启后,会影响app的测试,但是这款插件完美的解决了这个问题,在设置了xxx应用的隐藏后,我们不需要真的开启隐藏功能,Shamiko-v1.0.1就会帮助我们隐藏root检测,同时并不会影响我们测试(推特app可以利用此方式绕过root检测)
HMA-V3.2 此工具堪称apk逆向必备神器,为什么这么说呢,因为此插件可以实现黑白名单功能,顾名思义,就是此工具可以针对app设置黑白名单,例如设置黑名单,将部分app,如:面具、lsp相关框架、root组件对其隐藏,那么加固了个app就无法查询到相关的包名或文件名,从而实现一个root、框架的检测(例如某银行app可以利用此方法绕过root/框架检测)
首先需要在lsp里面把模块启用,并勾选对应需要隐藏的app
而后新建一个黑名单的模版,黑名单就是选择哪个包,哪个包就不可见;选中不可见的包名为所有的面具相关插件。lsp相关插件,包括面具和lsp框架本身,全给他选中即可
而后返回到应用配置,再次选择想要应用的app,比如说我的icu.nillptr这个app对框架和root有检测我需要单独绕过,就把这个勾选,然后工作模式为黑名单,选择我们的模版,即可
在测试的时候发现,我们单独安装的lsp.apk无论如何也隐藏不起来,所以又把单独安装的lsp安装包给卸载了(卸载的不是lsp框架),但是其实还是有点问题,下图为黑白名单自带检测,是全过的
但是momo全查出来了
以下为实体手机效果
由此可见,真搞移动端测试还是得买个手机,模拟器的玄学问题太多了
frida-server-16.2.1-android-arm64 安卓测试必备,自然不必多说
推荐安装虚拟环境
pip3 install virtualenvwrapper-win -i
https://pypi.tuna.tsinghua.edu.cn/simple
workon
mkvirtualenv frida16
pip3 install frida-tools -i
https://pypi.tuna.tsinghua.edu.cn/simple
把frida安卓版的frida拷贝到模拟器,由于笔者开启了多个环境,所以需要选择adb设备
adb devices
adb -s emulator-5558 push frida-server-16.2.1-android-x86_64 /data/local/tmp
对了,忘记说了,frida版本与系统架构需要一一对应,否则就会发生下面 的场景
如果大家只有一台设备,那直接adb shell即可;将frida拷贝到安卓手机的tmp目录后,再赋予权限,即可快乐的玩耍了
其实在这里的时候,笔者遇到了另一个问题,在这里记录一下;笔者前面安装了Magisk和Shamiko模块,而这里的Magisk可能版本比较低,Shamiko模块的版本也比较低,这就导致了在进行adb shell的时候,会提示unauthorized,也就是没有权限,这是因为Shamiko模块会把ro.adb.secure变成1,也就是开启adb密钥校验,因此会出现无法连接adb的问题,那么此时可以将面具换成狐狸,或者临时关闭Shamiko模块;实际上在测试的时候,笔者的实体手机是不会出现这个问题的,在这里仅作为提醒
Lsposed lsposed.apk单独安装这个的目的其实是因为lsp框架部分模拟器没有办法创建快捷方式,所以单独安装一个孪生,但是这个孪生的app在模拟器里可能会被检测到,所以大家酌情处理吧
JustTrustMe 最早的xposed框架必备神器之一,现在属于廉颇老矣,尚能饭否?
算法助手2.1.2 着重推荐,该工具自带很多神奇功能,如:算法自吐、activity监听、堆栈监听、root/代理检测绕过等诸多功能
开发者助手 着重推荐,资源监测神器,可以监测到资源调用情况、页面图片文字识别等
核心破解 该插件主要功能其实就是移动端安装apk后,若是对原始apk改动二次封包后可能由于签名的原因无法直接安装,但是又不想卸载原始的apk,不想丢数据,就可以利用这个尝试一下
开发助手 ,与开发者助手可以互补
HttpCanary_9.9.9.9 小黄鸟,但是现在用的场景少了
Move_Certificates-v1.9.zip 解决证书无法导入到系统信任目录问题,该插件其实和本次无关,但是笔者在刷机安卓13的时候,发现system挂载问题无法解决,无法将信任证书直接导入到系统证书根目录下;而此插件完美的解决了此问题,只需要按照常规操作将证书安装到个人目录下,然后重启手机,证书就会自动转换成.0格式,并自动迁移到系统证书根目录下;除了这个插件外,有的时候也可以用MT管理器进行迁移,但是笔者的手机有玄学问题,就是迁移过去的证书,在手机重启后就消失了,所以还是推荐这个工具,比较好用
所以此处会为大家进行一个简单的演示,演示该工具如何使用,首先以burp证书为例,将burp证书导入到手机模拟器的picture目录或者其他能访问到的目录
大家都知道,安卓7以上,系统不会对用户安装的证书信任了,所以如果直接安装的话,设置代理会导致断网的,但是使用这个插件我们可以完美的解决这个问题,我们只需要直接安装就行
此时证书安装成功
此时系统没有bp的信任证书
直接重启模拟器,我们发现,证书已经被自动迁移到系统信任目录了
所有的证书都可以通过这个方式装载,接下来演示一下常规操作如何将证书迁移进去
众所周知,系统根目录信任证书格式是.0的,所以我们需要借助ssl计算证书的hash值,我们可以直接利用kali转换
使用openssl将.der转换为.pem格式,windows中没有openssl.exe工具的可以在在linux完成
openssl x509 -inform DER -in burp.der -out burp.pem
使用openssl 获取有效的系统证书文件名
openssl x509 -inform PEM -subject_hash_old -in burp.pem
使用openssl 将证书文件转换为有效的系统证书文件
# der格式:
openssl x509 -inform DER -in burp.der -out 9a5ba575.0
# cer格式:
openssl x509 -inform DER -text -in xxx.cer > 9a5ba575.0
# pem格式:
openssl x509 -inform PEM -text -in xxx.pem > 9a5ba575.0
adb push 9a5ba575.0 /system/etc/security/cacerts/ # 将证书导入到系统证书根路径
甚至大家可以直接用MT管理器把证书迁移进去,无论怎么做都可以;
上面提到了,部分app加固后没有办法利用http代理抓包,可以使用socks5代理,而socks5代理可以用charles设置或者yakit(以前不知道yakit支持socks5代理,是我输了)
模拟器安装证书按照上面的方法,可以导出pem格式证书,直接安装到模拟器然后重启就行了,也可以自己改个名字
yak真是太强了
同样的,yak也可以继续设置下游代理,比如说再把包转给bp
TQL,啥也不说了,以后终于不用用盗版的charles了
本来还想演示一下charles的,但是现在没有必要了,玩法都是一样的,就不做演示了