今天主要是针对三款有不同越狱检测的iOS应用,方式分为手动绕过越狱检测和自动绕过越狱检测。
测试工具
- Frida
- Needle
- IDA Pro7.0
- Hopper Disassembler V4
- Cydia(添加Darwin CC Tools依赖)……
案例1
首先对该APP进行一键dump(砸壳)
frida-ios-dump,该工具基于frida提供的强大功能通过注入js实现内存dump 然后通过python自动拷贝到电脑生成ipa文件,通过配置完成之后真的就是一条命令砸壳。
砸壳完成后,我们将可执行文件导入IDA由于MAC IDA7.0在Strings窗口无法显示中文字符串,直接在__cfstring段搜索越狱关键词,找到调用函数
-[AppDelegate application:didFinishLaunchingWithOptions:]
查看stat函数,发现该函数通过文件名filename获取文件信息,并保存在buf所指的结构体stat中,执行成功则返回0,失败返回-1。接下来我们使用Needle这款工具内的dynamic/detection/script_jailbreak-detection-bypass模块来尝试绕过越狱检测:发现并不能绕过越狱检测,找到script_jailbreak-detection-bypass.py该文件,发现虽然有HOOK到stat这个函数,但是返回值作者写的有问题,借鉴了其他工具的写法,我们修改needle,script_jailbreak-detection-bypass的代码如下:成功绕过:最后把Needle的script_jailbreak-detection-bypass代码拿出来做参考,自己动手写一个js
var paths=[ "/Applications/blackra1n.app", "/Applications/Cydia.app", "/Applications/FakeCarrier.app", "/Applications/Icy.app", "/Applications/IntelliScreen.app", "/Applications/MxTube.app", "/Applications/RockApp.app", "/Applications/SBSetttings.app", "/Applications/WinterBoard.app", "/bin/bash", "/bin/sh", "/bin/su", "/etc/apt", "/etc/ssh/sshd_config", "/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist", "/Library/MobileSubstrate/DynamicLibraries/Veency.plist", "/Library/MobileSubstrate/MobileSubstrate.dylib", "/pguntether", "/private/var/lib/cydia", "/private/var/mobile/Library/SBSettings/Themes", "/private/var/stash", "/private/var/tmp/cydia.log", "/System/Library/LaunchDaemons/com.ikey.bbot.plist", "/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist", "/usr/bin/cycript", "/usr/bin/ssh", "/usr/bin/sshd", "/usr/libexec/sftp-server", "/usr/libexec/ssh-keysign", "/usr/sbin/frida-server", "/usr/sbin/sshd", "/var/cache/apt", "/var/lib/cydia", "/var/log/syslog", "/var/mobile/Media/.evasi0n7_installed", "/var/tmp/cydia.log"]; var f = Module.findExportByName("libSystem.B.dylib","stat64"); Interceptor.attach(f, { onEnter: function ( args) { this.is_common_path = false; var arg = Memory.readUtf8String(args[0]); for (var path in paths) { if (arg.indexOf(paths[path]) > -1) { console.log("Hooking native function stat64: " + arg); this.is_common_path = true; //return -1; } } }, onLeave: function (retval) { if (this.is_common_path){ console.log("stat64 Bypass!!!"); retval.replace(-1); } } }); var f = Module.findExportByName("libSystem.B.dylib","stat"); Interceptor.attach(f, { onEnter: function ( args) { this.is_common_path = false; var arg = Memory.readUtf8String(args[0]); for (var path in paths) { if (arg.indexOf(paths[path]) > -1) { console.log("Hooking native function stat: " + arg); this.is_common_path = true; //return -1; } } }, onLeave: function (retval) { if (this.is_common_path){ console.log("stat Bypass!!!"); retval.replace(-1); } } });
使用Frida spawn并注入
案例2
首先使用该模块测试能否绕过越狱检测
[needle] > use dynamic/detection/script_jailbreak-detection-bypass
发现send无法输出,改用console.log打印,砸壳后放入IDA,查看该类:-[UIDevice isJailbroken]使用Hopper查看该类:-[UIDevice isJailbroken]发现该APP,直接通过方法的返回值判断是否越狱,所以可以直接修改返回值进行绕过。使用Frida spawn并注入,成功绕过:案例3
砸壳后放入IDA,在__cfstring段搜索“越狱”并查看该类:找到并打开-[AppDelegate showJailBreakDialog]发现判断返回的bool值,尝试Hook-[BMKSecurityManager jailBreak]spawn并注入经测试,该APP采用了5个方法检测越狱,具体是在framework实现了此方法,因为IDA突然崩了在此就不演示了,感兴趣的自己研究一下吧。
补充说明
Needle框架的两个设置选项,官方没有提供修改的方式,只能本地重新编译仓库源码。 一、设置选择进程的时候隐藏iOS自己的APP, 二、默认设置APP启动方式是spawn(否则每次都要重新设置), grep命令: grep -rn "HIDE_SYSTEM_APPS" needle grep -rn "spawn" needle
自动绕过越狱检测的工具
1. xCon
介绍:
xCon可以从Cydia中安装,是目前为止最强大的越狱检测工具。由n00neimp0rtant与Lunatik共同开发,它据说patch了目前所知的所有越狱检测方法(也有不能patch的应用)。估计是由于影响太大,目前已不开放源码了。
安装方法:
1.首先在Cydia中添加源http://xcon.crazy.net 2.然后进入添加的源中选择xCon下载安装,安装完之后需要重启SpringBoard。
适用范围:
xCon会绕过以下越狱检测方法(1)根据是否存在特定的越狱文件,及特定文件的权限是否发生变化来判断设备是否越狱(2)根据沙箱完整性检测设备是否越狱(3)根据文件系统的分区是否发生变化来检测设备是否越狱(4)根据是否安装ssh来判断设备是否越狱
2. Liberty Lite(Beta)
介绍:
Liberty Lite(Beta)是适用于iOS 11固件的通用越狱检测工具。它由着名的补丁开发者Ryley Angus开发。可以让用户有选择性的对iOS应用进行绕过越狱检测。
安装方法:
1.首先在Cydia中添加源https://ryleyangus.com/repo/2.然后进入添加的源中选择Liberty Lite(Beta)下载安装,安装完之后需要重启SpringBoard。
使用方法:
打开iphone设备,在通用-设置内找到Liberty-lite,然后启动,选择Block Jailbreak Detection,通过User Applications选择需要绕过越狱检测的iOS应用。
适用范围:
上述三个APP案例都可以用这个插件进行绕过,简单粗暴相当的牛皮。
Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,目前聚集了十多位专业的安全攻防技术研究人员,专注于网络攻防、Web安全、移动终端、安全开发、IoT/物联网/工控安全等方向。
想了解更多Tide安全团队,请关注团队官网: http://www.TideSec.net 或关注公众号:
来源:freebuf.com 2019-04-16 13:01:29 by: tales
请登录后发表评论
注册