越狱检测的攻与防(1)

在应用开发过程中,我们希望知道设备是否越狱,正以什么权限运行程序,好对应采取一些防御和安全提示措施。

iOS7相比之前版本的系统而言,升级了沙盒机制,封锁了几乎全部应用沙盒可以共享数据的入口。即使在越狱情况下,限制也非常多,大大增加了应用层攻击难度。比如,在iOS7之前,我们可以尝试往沙盒外写文件判断是否越狱,但iOS7越狱后也无该权限,还使用老方法检测会导致误判。

那么,到底应该如何检测越狱呢?攻击者又会如果攻破检测呢?本文就着重讨论一下越狱检测的攻与防。


首先,你可以尝试使用NSFileManager判断设备是否安装了如下越狱常用工具:

/Applications/Cydia.app

/Library/MobileSubstrate/MobileSubstrate.dylib

/bin/bash

/usr/sbin/sshd

/etc/apt


但是不要写成BOOL开关方法,给攻击者直接锁定目标hook绕过的机会

+(BOOL)isJailbroken{

if([[NSFileManagerdefaultManager]fileExistsAtPath:@"/Applications/Cydia.app"]){

returnYES;

}}

攻击者可能会改变这些工具的安装路径,躲过你的判断。

那么,你可以尝试打开cydia应用注册的URL scheme:

if([[UIApplicationsharedApplication]canOpenURL:[NSURLURLWithString:@"cydia://package/com.example.package"]]){

NSLog(@"Device is jailbroken");

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在应用开发过程中,我们希望知道设备是否越狱,正以什么权限运行程序,好对应采取一些防御和安全提示措施。iOS7相比之...
    SuperRoot阅读 997评论 1 0
  • 注:原文---念茜的博客 在应用开发过程中,我们希望知道设备是否越狱,正以什么权限运行程序,好对应采取一些防御和安...
    richar_阅读 316评论 0 0
  • 在应用开发过程中,我们希望知道设备是否越狱,正以什么权限运行程序,好对应采取一些防御和安全提示措施。 那么,到底应...
    无沣阅读 1,271评论 0 3
  • 如果你看完书中的所有例子,你很可能已经做完你的实验和在已经越狱的iPhone上的研究。因为和许多人一样,几乎所有的...
    fishmai0阅读 16,694评论 2 42
  • 我们已经发现,以往的许多哲学家在探讨存在问题时,不自觉的设定了多个不同的自明性的前提,同时又没有去说明这些前提的自...
    博鸿阅读 806评论 4 6