2016年ios公开可利用漏洞总结
文章出处: 点击这里
0x00 序
iOS的安全性远比大家的想象中脆弱,除了没有公开的漏洞以外,还有很多已经公开并且可被利用的漏洞,本报告总结了2016年比较严重的iOS漏洞(可用于远程代码执行或越狱),希望能够对大家移动安全方面的工作和研究带来一些帮助。
0x01 IOS 10.1.1 公开的可利用漏洞
1. mach_portal攻击链:该攻击链是由Google Project Zero的Ian Beer公布的。整个攻击链由三个漏洞组成:损坏的内核port的uref可导致任意进程的port被越权替换(CVE-2016-7637),powerd任意port替换可导致DoS(CVE-2016-7661),因为set_dp_control_port没有上锁导致的XNU内核UaF(CVE-2016-7644)。
攻击者先使用CVE-2016-7637将launchd与”com.apple.iohideventsystem”系统服务具有发送权限的port替换成自己控制的进程的port,并攻击者还具有该port的接收权限。然后,攻击者利用CVE-2016-7661对powerd这个进程进行DoS,使其重启。在启动过程中,因为powerd的启动需要用到”com.apple.iohideventsystem”系统服务,于是将task port发送给了这个系统服务。但因为攻击者利用之前的CVE-2016-7637漏洞获取了”com.apple.iohideventsystem”系统服务port的接收权限,因此攻击者获得了powerd的task port,从而控制了具有root权限并且在沙盒外的powerd进程。攻击者随后利用powerd进程的task port获取到了host_priv port,然后利用host_priv port触发因set_dp_control_port没有上锁而导致的XNU内核UaF(CVE-2016-7644)漏洞,从而控制了kernel task port。攻击者在获取了kernel task以后,就可以利用系统提供的mach_vm_read()和mach_vm_write()去进行任意内核读写了。
2016年12月22日,qwertyoruiop在Ian Beer公布的mach_portal攻击链的基础上,加入了KPP的绕过、内核patch和cydia的安装,并在自己的twitter上发布了iOS 10.1.*的越狱。
0x02 IOS 9.3.4 公开的可利用漏洞
0x03 IOS 9.3.3 公开的可利用漏洞
0x04 IOS 9.3.2 公开的可利用漏洞
0x05 IOS 9.3.1 公开的可利用漏洞
0x06 IOS 9.1 公开的可利用漏洞
0x07 IOS 9.0 公开的可利用漏洞
0x08 总结
最后,对本文提到的漏洞感兴趣的同学可以在我们的github上学习相关的资料:https://github.com/zhengmin1989/GreatiOSJailbreakMaterial
转载自:http://jaq.alibaba.com/community/art/show?articleid=687 原文作者:蒸米,耀刺,黑雪 @ Team OverSky
利用漏洞解锁锤子T1/2手机的Bootloader
关于Bootloader锁
Smartisan是手机中为数不多倾心于工业设计和用户体验的。老罗跨界过猛,也难免导致其最初的想法和现实存在差距。bootloader到底锁还是不锁,甚至曾被一个T1用户弄上法庭来质问。
分析Bootloader
在搞清楚control_flag这个全局标记到底何去何从之前,不如先探探这仅存四条命令的究竟。reboot,reboot-bootloader命令正像他们的名字一样无趣,flash看起来就很有故事了。
执行flash命令时,如果control_flag为0,那就只能写一个名为security的分区。而control_flag为1时,所有其他分区就都可以写了,如图3所示:
分析到这里基本可以肯定,T2提供了解锁功能,关键是写入security分区的内容是否能够经得住考验。
解锁Bootloader
图5.根据security[128]指定的函数来初始化RSA密钥
接下来,如图7,完成了RSA的初始化以后,会接着从factory分区读取数据:
为了减少padding,encoding等一系列开发可能造成的不确定性,在生成解锁码时,同样采用openssl的代码实现,示例如下:
#include <stdio.h>
#include <string.h>
#include <openssl/md5.h>
#include <openssl/crypto.h>
#include <openssl/rsa.h>
unsigned char m3_n[128] = {\
0xA4,0x0C, 0x69, 0x70, 0x25, 0x4F, 0x36, 0x49, 0x8E,\
0x83,0x4B, 0x74, 0x9A, 0x75, 0xC9, 0xF4, 0x7F, 0xE5,\
0x62,0xA8, 0xDE, 0x11, 0x13, 0x03, 0x57, 0x89, 0x31,\
0xCB,0x58, 0x84, 0xC8, 0x26, 0xBA, 0x2B, 0x60, 0xB5,\
0xB8, 0xA5, 0xD9, 0xBD, 0x27, 0x48, 0x3D,0x33, 0x38,\
0xA1,0x72, 0x62, 0x64, 0x87, 0x5E, 0x71, 0xF4, 0x1F,\
0xCB,0x68, 0x83, 0x92, 0xEA, 0x4B, 0xFF, 0x06, 0x38,\
0xAF,0xD5, 0x65, 0x55, 0x94, 0x04, 0x91, 0x88, 0xF7,\
0xA4,0x57, 0x72, 0x29, 0xFE, 0xEA, 0xB1, 0x27, 0x25,\
0xC1,0x12, 0x7D, 0x16, 0x6F, 0x13, 0xAF, 0xE2, 0x00,\
0x8D,0x5E, 0xA4, 0x0A, 0xB6, 0xF3, 0x71, 0x97, 0xC0,\
0xB0,0x60, 0xF5, 0x7C, 0x7F, 0xAA, 0xC4, 0x64, 0x20,\
0x3F,0x52, 0x0A, 0xA3, 0xC3, 0xEF, 0x18, 0xB6, 0x45,\
0x7D,0x72, 0x1E, 0xE2, 0x61, 0x0C, 0xD0, 0xD9, 0x1D,\
0xD0,0x5B\
};
unsigned char m3_e[1] = {3};
unsigned char m3_d[128] = {\
0x6d,0x5d,0x9b,0xa0,0x18,0xdf,0x79,0x86,0x5f,0x02,0x32,0x4d,0xbc,0x4e,0x86,0xa2,\
0xff,0xee,0x41,0xc5,0xe9,0x60,0xb7,0x57,0x8f,0xb0,0xcb,0xdc,0xe5,0xad,0xda,0xc4,\
0x7c,0x1c,0xeb,0x23,0xd0,0x6e,0x91,0x28,0xc4,0xda,0xd3,0x77,0x7b,0x16,0x4c,0x41,\
0x98,0x5a,0x3e,0xf6,0xa2,0xbf,0xdc,0xf0,0x57,0xb7,0x46,0xdd,0x54,0xae,0xd0,0x74,\
0x27,0xaa,0xad,0xf9,0xb9,0x33,0x8f,0x29,0x3b,0xf2,0xee,0x97,0x03,0x0b,0x5c,0xfc,\
0x92,0x95,0x6f,0x05,0xcd,0xbf,0x1c,0x77,0x16,0xce,0xd9,0x13,0xfb,0xf2,0x8f,0x74,\
0x09,0xca,0x78,0xf0,0xc7,0x4a,0xc2,0xc5,0xed,0x58,0xc1,0xfa,0xa1,0x6f,0x64,0x26,\
0x73,0x75,0x73,0x97,0x21,0xb4,0x01,0x13,0xad,0xd7,0xd5,0xbc,0x22,0x75,0x00,0xcb,\
};
int main(int argc, char*argv[]) {
MD5_CTX md5ctx;
unsigned chardigest[MD5_DIGEST_LENGTH];
unsigned charsigret[128];
unsigned int siglen;
unsigned chartestdata;
MD5_Init(&md5ctx);
MD5_Update(&md5ctx, &testdata, 0);
MD5_Final(digest, &md5ctx);
RSA *rsa =RSA_new();
rsa->n =BN_bin2bn(m3_n, 128, rsa->n);
rsa->e =BN_bin2bn(m3_e, 1, rsa->e);
rsa->d =BN_bin2bn(m3_d, 128, rsa->d);
RSA_sign(4,digest, 16, sigret, &siglen, rsa);
FILE *fp =fopen(“security.img”,”wb”);
fwrite(sigret, siglen, 1, fp);
fwrite(“\x40\x00”, 2, 1, fp);
fclose(fp);
return 0;
}
刷入security.img后,手机就可以解锁了。虽然上述分析是基于T2的ROM,T1也完全适用。如图8所示,T1刷入security.img同样可以解锁。
And Then Some
对于T1和T2,2.6.7是最后一个可以解锁的ROM版本号,2.6.8开始,fastboot command列表被改写为图10所示内容,大部分指令被阉:
图10. 2.6.8后的版本中fastboot已经没有什么实质功能了
一般的Android手机,只要有签名认证的老版本bootloader里有漏洞,在系统没有开启限制(比如SW_ID)时,总可以通过降级,解锁,然后升级回新系统,刷入supersu的方式root。
使用AT调制解调器命令解锁LG Android屏幕
现代智能手机不仅仅是用于语音呼叫的设备。现在,他们包含了大量的个人数据 – 联系人列表,通信历史,照片,视频,地理坐标等。大多数智能手机也可以作为一个调制解调器。
几乎每个调制解调器都是Hayes兼容的,这意味着它支持Hayes在1977年开发的AT语言的命令。每个型号都支持一些由制造商定义的基本命令集。有时这个命令集可以扩展,并可以包含非常有趣的命令。
让我们研究LG智能手机的行为。当您通过USB将其连接到计算机时,您可以自动访问调制解调器(图1)。LG特有的是,即使手机的屏幕被锁定,调制解调器也可用。
因此,即使手机受密码保护,我们也可以使用AT命令了解有关手机的一些有用信息。(图2)。
很明显,命令AT%KEYLOCK = 0允许您删除屏幕锁定,而无需任何额外的操作。
因此,它是很容易解锁手机的。所有你需要只是拥有一个LG Android智能手机,然后通过USB连接到一台电脑。这个后门显然是LG的服务软件,但也可以用于取证目的。但要记住,罪犯也可以使用这种方法。
2016年ios公开可利用漏洞总结相关推荐
- 1500万公开服务易受 CISA 已知已遭利用漏洞攻击
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 Rezilion 公司发布报告称,超过1500万家公开服务至少易受CISA 已知已利用漏洞 (KEV) 分类清单(共896个)中一种漏洞的影响. ...
- iOS URL Schemes与漏洞的碰撞组合
iOS URL Schemes与漏洞的碰撞组合 前言 iOS URL Schemes,这个单词对于大多数人来说可能有些陌生,但是类似下面这张图的提示大部分人应该都经常看见: 今天要探究的就是:了解iO ...
- iOS 之如何利用 RunLoop 原理去监控卡顿?
[CSDN 编者按]简单来说APP卡顿,就是FPS达不到60帧率,丢帧现象,就会卡顿,但是很多时候,我们只知道丢帧了,具体为什么丢帧,却不是很清楚,那么我们要怎么监控呢? 作者 | 枫叶无处漂泊 ...
- iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件)
layout: post #iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件) title: iOS开发- 文件共享(利用iTunes导入文件, 并且显示已有文件) #时间配置 d ...
- CISA必修列表未收录数十个已遭利用漏洞
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 漏洞情报公司VulnCheck 分析发现,很可能已遭在野利用的数十个漏洞在由CISA维护的"已知遭利用漏洞"分类列表中消失了 ...
- 我是如何利用漏洞窃取麦当劳用户的账号和密码的
这是一篇关于如何利用漏洞来窃取麦当劳网站注册用户密码的文章,昨天只是出了这么一个漏洞,但是麦当劳相关负责人还是没有修补,所以作者就写了这么一篇攻略. 最好的防御方式就是攻击,只有知道黑客是如何攻击的, ...
- 易想团购 注入 user.php,易想团购系统通杀SQL注入漏洞分析及利用漏洞预警 -电脑资料...
刚打开红黑看到J8基友写的一个{易想团购系统 最新版 通杀}的文章,看他贴的代码里面有个get_client_ip()函数,哈哈,我猜没过滤,果断下了一套程序, 找到get_client_ip()函数 ...
- 95 后大学生利用漏洞免费吃肯德基获刑
程序猿的圈子里总有个各种各样的大神,有着天马行空的创造力和想象力,奉献着各种让人眼前一亮的新技术. 但是总有一些人,不好好使用自己的才华,往往将自己的一些小聪明用在不该用的地方.像小编之前给大家介绍过 ...
- 利用计算机漏洞犯罪,利用漏洞非法谋利2000元怎么处罚
利用漏洞非法谋利2000元怎么处罚 依据我国相关法律的规定,利用计算机漏洞非法谋利2000元的,如果是实施了盗窃的行为,就会构成盗窃罪,可以追究刑事责任. <中华人民共和国刑法> 第二百八 ...
最新文章
- 我国将于今年春季发射空间站核心舱 空间站进入全面实施阶段
- SQL Server DATEDIFF() 函数计算时间差
- iOS开发月报#10|201904
- 递归方式-全排列生成算法
- numpy基础(part6)--协方差与相关系数
- python默认参数只被解释一次_深入讲解Python函数中参数的使用及默认参数的陷阱...
- 三、Numpy数组操作
- 【算法】剑指 Offer 59 - II. 队列的最大值
- Android 自定义RecyclerView 实现真正的Gallery效果
- sqlserver 获取当前操作的数据库名称
- 安卓12解除进程限制方法汇总
- visio安装问题总结
- Swagger API文档Responses中Object类型无法显示,求指引
- python 安装ltp
- 模板文件, ruby erb 与 python format
- 《长安十二时辰》,作为程序员,看完我震惊了!涉及通信、云计算、大数据等!...
- 产品经理知识框架+求职面经——快手,字节跳动,
- xsy3320 string
- 计算机网络-因特网概述
- 百度谷歌等各大搜索引擎网站收录提交入口