文章目录
- 1. 写在前面
- 2. 测试机越狱
- 2.1. 爱思助手
- 2.2. checkra1n
- 3. 代理抓包
- 3.1. 安装CA证书
- 4. 客户端证书绑定绕过
- 4.1. SSLKillSwitch
- 4.2. Objection
- 5. 双向证书绑定绕过
- 5.1. 绕过服务端
- 6. 越狱检测绕过
- 6.1. Liberty Lite绕过检测
- 6.2. Hestia绕过检测
- 6.3. HideJB绕过检测
- 6.4. Frida编写脚本绕过检测
- 7. 绕过Frida检测
【作者主页】:吴秋霖
【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作!
【作者推荐】:对JS逆向感兴趣的朋友可以关注《爬虫JS逆向实战》,对分布式爬虫平台感兴趣的朋友可以关注《分布式爬虫平台搭建与开发实战》
还有未来会持续更新的验证码突防、APP逆向、Python领域等一系列文章
1. 写在前面
之前写了一篇关于安卓APP抓包防护的绕过文章:【APP爬虫-抓包篇】巧妙使用工具与技巧绕过安卓APP抓包防护
APP爬虫所面临的第一个问题就是抓包,如果包都抓不到,那基本就没法进一步入手了。现在市面上的APP,稍微有点安全意识都会防抓包!
当然还有自动化方案,这只是迫不得已的一种选择。现在一些大厂出品的APP都有严格的风控检测
风控等级低的出滑块,高的直接封设备,账号限制,功能限制
风控对抗,对抗的是什么?背后的AI模型。结合上报的各项数据快速对用户生成画像!所以风控的对抗,就是不断的“骗”,花时间测试,花时间分析,再不断对“骗”的策略进行调整的这么一个过程
2. 测试机越狱
2.1. 爱思助手
1、利用爱思助手的一件越狱功能:
2、等待电脑端跑完:
3、然后手机上多了unc0ver,打开它然后点击Re-Jailbreak,一键越狱,期间会弹出信息提示,直接点击OK就可以了:
4、到出现界面(进度为 20/30)时,选择“OK”,此时设备会自动重启,重启后再点 jailbreak,直到出现越狱完成,再次点击 OK 即可:
最后设备重新启动后返回桌面,如Cydia可打开正常运行,则表示越狱成功:
2.2. checkra1n
1、首先我们打开checkra1n:
2、使用数据线,连接手机,并点击Start:
3、根据提示操作,然后点击Start:
4、最后设备重新启动后返回桌面,如Cydia可打开正常运行,则表示越狱成功:
3. 代理抓包
3.1. 安装CA证书
1、从网站下载证书的方式,将CA证书放到设备上。在这里,需要配置移动设备和Web代理,以便能够拦截网络流量。具体来说,如果使用Burp Suite,我们只需访问burp随后点击“CA Certificate”即可!接下来,系统将提示“安装”证书,如下图所示:
2、点击“安装”,会弹出提示将要把证书添加到受信任证书列表中的警告:
最后进入到“设置”-“常规”-“配置文件”来验证证书是否已经被成功安装!
4. 客户端证书绑定绕过
4.1. SSLKillSwitch
1、使用cydia下载SSLKillSwitch:
2、在设置使用改插件:
3、在工具的主页上,已经详细写出了安装说明。但是,要使用这种方法,首先需要先对iOS设备进行越狱
4.2. Objection
1、使用frida查看应用包名:
2、启动objection,并使用命令进行注入应用:
5. 双向证书绑定绕过
5.1. 绕过服务端
1、通过常规抓包的方式,发现只要开启代理,该app提示未能读取数据,因为它的格式不正确。并且在Charles中发现400 No required SSL certificate was sent:
2、上边提示和安卓端提示相同,也就更能确定它使用的是双向证书。双向证书主要是在通讯过程中,服务端校验了客户端证书是否正确,同样客户端也校验了服务端证书是否正确
该app主要是在客户端封装了证书,相比于单向证书,多了在服务端校验客户端证书的过程,在Charles抓包过程中,使用的是Charles本身的证书,导致服务端校验失败,才会出现400 No required SSL certificate was sent这样的提示,那也就是我们只需要拿到封装在客户端的证书以及证书密码,即可完成与服务端的通讯
突破分析,确定该app为双向证书,那该app的静态资源里面一定有该app的证书文件,通过解压该app的ipa包,在Payload/***_New原身里面发现该app的证书文件
3、将该p12证书文件安装到Mac系统下,发现其需要密码
4、将该app的二进制文件使用ida pro打开,并在string窗口搜索该证书名后进入该类里面,最后进行f5看其伪代码:
通过ida分析,可以清楚的看到该app的证书密码
5、按图中进行导入,最后输入密码即可。最后抓包即可,并且不再提示证书异常
6. 越狱检测绕过
6.1. Liberty Lite绕过检测
1、首先在Cydia中添加源https://ryleyangus.com/repo/2.然后进入添加的源中选择Liberty Lite(Beta)下载安装,安装完之后需要重启SpringBoard
2、打开iphone设备,在设置内找到Liberty-lite,然后启动,选择Block Jailbreak Detection,通过User Applications选择需要绕过越狱检测的iOS应用
6.2. Hestia绕过检测
1、首先在Cydia中添加源https://apt.wxhbts.com.然后进入添加的源中选择Hestia下载安装,安装完之后需要重启SpringBoard
2、在设置选择生效的应用:
6.3. HideJB绕过检测
1、首先在Cydia搜索HideJB下载安装,安装完之后需要重启SpringBoard:
2、在设置选择生效的应用:
6.4. Frida编写脚本绕过检测
1、运行应用发现存在越狱检测:
2、使用IDA分析应用,找到越狱检测点:
3、编写脚本进行绕过:
var method = 0bjC.classes.BCEInformation["+ isRoot"];
var origImp = method.implementation;
methad.implementation =0bjC.implement(method,function (self,selector) {
var number = 0;
return number;
});
4、是用frida进行hook,成功绕过:
使用frida查看应用包名:
启动objection,并且使用命令进行注入应用:
7. 绕过Frida检测
1、针对部分加固厂家对Frida的检测,可以使用以下办法绕过。
比如梆梆的加固对frida的端口27042进行检测,如果存在就退出
2、这个时候就可以通过修改frida的监听端口来绕过检测
3、首先ssh连上iPhone设备后kill Frida-server的进程
4、然后运行修改监听端口命令:
/usr/sbin/frida-server -l 0.0.0.0:6666
5、端口转发,首先安装brew install usbmuxd:
iproxy 6666 6666
6、最后电脑进行Frida注入:
frida -H 127.0.0.1:6666 package_name -l xxxx.js