2、我们创建了firehorse,这是一个基于Firehose的程序员公开的研究框架,能够调试/跟踪程序员(以及其他引导加载程序链,包括某些设备上的Boot ROM本身)。(第3部分和第4部分)
3、我们使用Firehose程序员和我们的研究框架获得并逆向设计了各种Qualcomm芯片组的PBL(MSM8994/MSM8917/MSM8937/MSM8953/MSM8974)。(第3部分)
4、我们获得了Nexus 6P(MSM8994)的RPM和调制解调器PBL。(第3部分)
5、我们设法使用基于存储的攻击解锁并根据各种Android Bootloader(例如小米Note 5A)进行解锁。(第2部分)
6、我们成功地对运行Snapdragon 425(MSM8937)的诺基亚6设备发起了端到端的攻击。我们认为这种攻击也适用于诺基亚5,并可能甚至可以扩展到其他设备,虽然未经验证。(第5部分)
在PBL从ROM-在装置之后是启动的。它很快将数字签名加载SBL到内部存储器(imem),并验证其真实性。我们所有提取的PBL都是32位(运行aarch32),其中SBLs是aarch32或者aarch64,其中PBL负责转换。某些设备具有XBL(可扩展引导加载程序)而不是SBL。所述SBL初始化DDR和负载数字签名的图像,例如ABOOT(它实现fastboot接口)的TrustZone,并再次验证其真实性。签名证书具有锚定在硬件中的根证书。
ABOOT然后验证的真实性boot或recovery图像,加载Linux内核和initramfs从boot或recovery图像。initramfs是一个cpio(gzipped)归档rootfs文件,/在Linux内核初始化期间被加载到(安装在RAM文件系统中)。它包含init二进制文件,第一个用户空间进程。在设备树Blob()中ABOOT准备initramfsLinux内核的内核命令行和参数DTB,然后将执行转移到Android(Linux)内核。
基于MSM的设备包含一种特殊的操作模式 - 紧急下载模式(EDL)。在这种模式下,设备Qualcomm HS-USB 9008通过USB标识自己。EDL由PBL实施。由于PBL是ROM常驻,所以EDL不能被软件破坏。EDL模式本身实现了Qualcomm撒哈拉协议,该协议通过USB接受OEM数字签名的编程器(ELF最新设备中的二进制文件,MBN旧版设备中的二进制文件),充当SBL。现代这样的程序员实施该Firehose协议,接下来分析。
有几种方法将该设备强制转换为EDL。
许多设备在其电路板上公开所谓的测试点,如果在启动过程中缩短,会导致PBL将其执行转向EDL模式。(使用我们的研究框架,我们设法找出了负责评估这些测试点的PBL的确切位置,但接下来的内容更多。)
例如,以下是我们的小米Note 5A主板上的测试点:
重新启动到EDL也可能发生在平台操作系统本身(如果已实施)以及允许adb访问(通过运行)adb reboot edl。我们向一些供应商报告了这种风险,包括OnePlus(CVE-2017-5947)和Google(Nexus 6 / 6P设备) -CVE-2017-13174。Google已在2017年12月的安全子弹入侵中修补CVE-2017-13174。(Nexus 6P需要root访问上下文,请参阅我们的漏洞报告以获取更多详细信息)。使用相同的机制,一些设备(主要是小米的设备)也允许/允许通过发行或通过专有命令重启EDL(即没有sysfsfastbootfastboot oem edlfastboot edloem)。有趣的是,在锁定的Android Bootloader中阻止这些命令有一个积极的趋势。
毋庸置疑,能够使用软件重新启动进入EDL的方式或仅使用此类USB电缆(描述缩短引脚的充电器)可启用危险的攻击媒介,如恶意USB端口(例如充电器)。
为了验证我们的基于经验的知识,我们使用了我们的调试器(第4部分)和IDA,以确定我们提取的PBL中的确切例程(第3部分),它决定了引导模式(正常或EDL)。在此之前,我们对MSM8937/MSM8917PBL做了一些初步分析,以便从高层角度了解其布局。我们相信其他PBLs没有那么不同。
0x100094PBL的重置处理程序(地址)大致如下所示(为便于阅读,省略了一些伪代码)
该init功能负责以下内容:
它设置VBAR为0x100000
它将堆栈重置为0x205400。
它在我们命名的函数中重置MMU和一些其他系统寄存器reset_MMU_and_other_stuff,位于0x110004。
它认为pbl_struct,这节省了PBL上下文数据,并且在PBL的整个循环周期内都存在。它的一部分接着传递给SBL。
如上所述,现代EDL程序员实施Qualcomm Firehose协议。分析几个程序员的二进制文件很快就会发现命令通过XML(通过USB)传递。例如,以下XML使程序员刷新一个新的辅助引导加载程序(SBL)映像(也通过USB传输)。
可以看到,指示程序员刷新新图像的相关标签是program。
挖掘程序员的代码(uggliteaarch32本例中的小米Note 5A程序员)表明它实际上是某种扩展的SBL。其主要程序如下:
pbl2sbl_data是在pbl_jmp_to_sbl函数的最后从PBL传递给SBL的数据。sbl维护SBL上下文数据,其第一个字段指向副本pbl2sbl_data。
ImageLoad是负责加载下一个引导程序的功能,包括ABOOT:
因此,他们仅在firehose_main回调方面有所不同!
深入研究兔子洞,分析firehose_main及其后代揭示了所有Firehose接受的XML标签。
1、基于存储的攻击(利用program/update&read)。这些在第2部分中介绍。
2、基于内存的攻击(利用peek和poke)。这些被覆盖在第3部分,第4部分与第5部分。
PS:[其中一些加括号()的内容为使文章流畅而补充的连接语及注释]
1:12~实在胃疼的厉害,所以只编辑完一点,算了,明天下午再继续了!
2:16~还好有“胃安宁”!不能断,已经一半了,坚持就是胜利!
2:43~写完了,药劲儿才发挥出来。睡觉!
今天先在此祝大家元宵节快乐!
不足之处,还请多多指出!
国外最新安全推文整理(第19期)最后一篇
Exploiting Qualcomm EDL Programmers
利用高通EDL的程序员
原文链接:https://alephsecurity.com/2018/01/22/qualcomm-edl-1/
原作By:罗伊·海伊 (@roeehay) 和哈达
目前网上存在许多指南,可能分为7部分,(这里我也不太清楚,欢迎大佬指点)在互联网中关于'unbricking'基于高通公司的移动设备。所有这些指南都使用紧急下载模式(EDL),这是Qualcomm Boot ROM(主引导加载程序)的备用引导模式。要使用这种模式,其操作人员只能是掌握了OEM签名的相关程序员,这些程序员似乎可以公开获得各种这样的设备。虽然他们的公开可用性的原因是未知的,但我们最好的猜测可是这些程序员可能是经常从OEM设备维修实验室泄密一些东西。除此之外,其他如一些OEM(如小米)也在官方论坛上发布。
在下面列出了我们设法获得的一些公开可利用程序员(社工)的部分列表:(表格一个一个输入实在费劲,只好以图片形式表示)
在这篇由5部分组成的博客文章中,我们将讨论泄密的程序员所引发的安全影响。第一部分介绍了PBL,EDL,Qualcomm Sahara和程序员的一些内部组成部分,重点介绍了Firehose。在第2部分中,我们将讨论利用EDL程序员功能的基于存储的攻击 - 我们将看到一些具体的例子,例如解锁小米Note 5A(代号ugglite)引导加载程序,以便安装和加载恶意启动映像,的信任。第3部分,第4部分和第5部分致力于我们研究的主要焦点 - 基于内存的攻击。在第3部分中,我们利用Firehose程序员的隐藏功能来执行具有最高特权的代码(EL3),例如,允许我们转储各种SoC的Boot ROM(PBL)。然后,我们介绍我们的exploit框架,firehorse,它为流水线程序员实现了一个运行时调试器(第4部分)。我们以诺基亚6的完整安全启动旁路攻击结束,该攻击MSM8937使用我们的漏洞利用框架。我们在PBL(或更准确地说,在PBL克隆中)实现代码执行,使我们能够击败信任链,在引导加载链的每个部分获得代码执行,包括TrustZone和高级操作系统(Android)本身。
我们的(具体)研究成果如下:
1、我们描述了Qualcomm EDL(Firehose)和撒哈拉协议。(第1部分)
高通安全启动
高通MSM设备启动过程的摘要概述如下:
[Primary Bootloader (PBL)]
|
`---NORMAL BOOT---.
[Secondary Bootloader (SBL)]
|-.
| [Android Bootloader (ABOOT)]
| `-.
| [boot.img]
| |-- Linux Kernel
| `-- initramfs
| `-.
| [system.img]
|
`-[TrustZone]
[Primary Bootloader (PBL)]
|
`---NORMAL BOOT---.
[Secondary Bootloader (SBL)]
|-.
| [Android Bootloader (ABOOT)]
| `-.
| [boot.img]
| |-- Linux Kernel
| `-- initramfs
| `-.
| [system.img]
|
`-[TrustZone]
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2018-12-25 12:48
被挽梦雪舞编辑
,原因: 重新排版