许多iOS应用都包含一些越狱检测机制,有些会被攻击者绕过,有些却非常困难。之前我也在公众号上放了一篇iOS有反检测能力的越狱工具shadow的分析和检测,但没有整理检测的方法。

下面是一些比较常见的检测越狱iOS设备方法

基于文件系统的检测

越狱进程会修改文件系统,加入,移动和改变文件和目录。这些改变是可以检测到,用来决定这个设备是否被越狱。

新文件创建

在越狱过程中,一些额外文件会在设备上创建。查找这些文件是一种简单的检测越狱的方法,同时对于恶意用户来说,也是最容易检测和绕过的。一个攻击者可以在应用上搜索一个字符串,然后改变这些可疑文件名来防止检测。

下面列出了越狱检测所基于的最流行的文件:

/private/var/stash
/private/var/lib/apt
/private/var/tmp/cydia.log
/private/var/lib/cydia
/private/var/mobile/Library/SBSettings/Themes
/Library/MobileSubstrate/MobileSubstrate.dylib
/Library/MobileSubstrate/DynamicLibraries/Veency.plist
/Library/MobileSubstrate/DynamicLibraries/LiveClock.plist
/System/Library/LaunchDaemons/com.ikey.bbot.plist
/System/Library/LaunchDaemons/com.saurik.Cydia.Startup.plist
/var/cache/apt
/var/lib/apt
/var/lib/cydia
/var/log/syslog
/var/tmp/cydia.log
/bin/bash
/bin/sh
/usr/sbin/sshd
/usr/libexec/ssh-keysign
/usr/sbin/sshd
/usr/bin/sshd
/usr/libexec/sftp-server
/etc/ssh/sshd_config
/etc/apt
/Applications/Cydia.app
/Applications/RockApp.app
/Applications/Icy.app
/Applications/WinterBoard.app
/Applications/SBSettings.app
/Applications/MxTube.app
/Applications/IntelliScreen.app
/Applications/FakeCarrier.app
/Applications/blackra1n.app

目录权限

就像通过查找某些新文件来检测越狱设备一样,分区和文件夹上的某些权限也可以标明越狱设备。

在越狱过程中,会修改对根分区的访问权限。如果根分区具有读/写权限,则设备已越狱。

/etc/fstab文件的大小

/etc/fstab文件包含系统的挂载点。许多越狱工具通过向该文件添加条目、更改其文件大小来修改该文件。典型的iOS应用程序不能读取文件,但它可以检查文件的大小。

不过,请注意,文件大小可能会因为苹果版本更新而改变。

软链的存在

有些目录最初位于较小的系统分区中,然而,在越狱过程中会覆盖此分区。因此,必须将数据重新定位到更大的数据分区。由于旧文件位置必须保持有效,因此创建了符号链接。下面的列表包含可能是越狱设备上的符号链接的文件/目录。应用程序可以检查这些符号链接,如果它们存在,则检测越狱。

/Library/Ringtones
/Library/Wallpaper
/usr/arm-apple-darwin9
/usr/include
/usr/libexec
/usr/share
/Applications

写文件

在越狱设备上,应用程序安装在/Applications文件夹中,因此被授予root权限。越狱设备可以通过让应用程序检查是否可以修改沙箱之外的文件的方式检测到。这可以通过让应用程序尝试在/private目录中创建文件来实现。如果文件创建成功,则设备已越狱。