导语:目前市面上流行着许多类型的Android设备提取方法,且有些公司或个人号称,他们的方法支持数以万计的运行环境。这给人一种印象,似乎只要你愿意,就有人能破解你的Android设备。

timg.jpg

目前市面上流行着许多类型的Android设备提取方法,且有些公司或个人号称,他们的方法支持数以万计的运行环境。这给人一种印象,似乎只要你愿意,就有人能破解你的Android设备。

与破解技术并存的是加密技术的不断改进,目前使用Android 6.0及其以上版本的每个谷歌认证的Android设备在用户完成初始设置后,就会全部加密,目前还没有出现用户可访问的选项来解密设备或以其他方式跳过这个加密的方式。尽管谷歌的这一政策最初引起了用户和OEM厂商的担忧,但是现在大部分Android手机已经实现了这个加密策略。

那么,取证软件供应商是如何克服加密,他们是否可以从加密的Android智能手机中提取任何内容?本文就对此做了研究。 

Android全盘加密,安全启动和基于文件的加密

在我们开始讨论制造商如何绕过加密之前,让我们先看看Android中目前使用的加密类型。

从版本5.0开始,Android就开始提供全盘加密(Full Disk Encryption,FDE)的保护措施。在采用64位处理器的现代设备中(基本上都是从高通Snapdragon 410到最近的Snapdragon 845),全盘加密是使用专用ARMv8命令进行软件加速的。加密密钥受可信执行环境(TEE)的保护,TEE是CPU的专用部分,它只执行一小部分已签名的代码(trustlets)。

默认情况下,用于加密和解密数据的实际加密密钥,都是基于唯一的硬件密钥和短语“default_password”的组合。尽管这种保护方案明显比iOS设备的全盘加密安全性低一个档次,但它仍然为普通消费者提供了合理的保护。换句话说,绕过这种加密是不可能的。

对默认保护级别不满意的用户,可以选择使用基于设备启动时硬件密钥(再次)和用户输入(密码,模式等)组合的更强大的密钥来加密其手机。该选项称为“安全启动(Secure startup)”,可在初始设置期间同时指定锁定屏幕密码。如果用户希望可以在以后激活“安全启动”选项,则他们必须首先从设备中删除PIN码、Pattern用法和开机密码,然后重新启用保护。然后电话会提示用户,他们是否希望手机在启动时询问他们的PIN码、Pattern用法和开机密码。

timg.gif

“安全启动”和“不安全启动”之间的主要区别在于设备如何生成解密密钥以访问数据分区上的信息。如果未启用安全启动,则基于特定硬件相关密钥与密码短语“default_password”的组合,将在启动序列期间自动生成加密密钥,不需要用户特别输入。一旦Android完成启动过程,屏幕将会被锁定,此时,用户必须使用PIN码、PATTERN用法和开机密码解锁(但不是智能锁或任何生物识别传感器)。值得注意的是,即使在用户解锁屏幕之前,数据分区就会被安装并解密,此时应用程序可以启动并访问它们的数据。

但是,如果启用了安全启动选项,那手机则会在启动过程中,要求用户输入密码。这发生在大多数Android服务启动之前,至于应用程序的使用,则想也别想。此时,密码会生成实际的加密密钥,它将被用来代替“default_password”。显然,除了提供了正确的密码,否则无法绕过此保护并对数据进行解密。

虽然“安全启动”本质上是一种更安全的保护信息的方式,但由于其使用的局限性,Android用户并未广泛采用。例如,如果手机重新启动或在夜间,它将无法接听电话或发出警报,而这仅仅是因为所需的服务尚未启动,并且数据仍然处于加密状态。

而在Android 7.0中,谷歌提供了一种全盘加密的替代方案,该方案将安全启动的保护措施与用户的便利实用性相结合。新的加密方案是基于文件的加密(FBE),它通过使用唯一密钥加密每个文件来保护用户数据。所有这些密钥都来自TEE中存储的信息以及用户的凭据(用于解锁手机的PIN码、PATTERN用法和开机密码)。如果使用基于文件的加密,那手机就可以启动和访问存储在仅由硬件密钥保护的特殊设备加密区域中的数据,至少该设备此时能够接听电话。但是,由于大多数信息都存储在受凭据保护的加密区域中,该区域使用基于用户凭据的密钥进行保护。

尽管与FDE相比,FBE本质上更安全,但具体使用哪一种,并不是用户决定的,这些都是由制造商提前定好的,唯一的例外是谷歌发布的Pixel设备。如果OEM决定支持FDE,用户将无法切换到更安全的基于文件的加密。迄今为止,已有少数设备使用了更安全的基于文件的加密技术,其中大部分设备都是鲜为人知的,例如OnePlus 5和OnePlus 5T。

如果你对Android加密的细节感兴趣,请点此阅读《基于Android 7文件的加密以及对它的取证》

该报告描述了Android全盘加密和基于文件的加密的基础知识,并以简明的方式概述了这两种方案之间的差异,即使对于没有深入了解加密技术的初学者也容易理解。

u=1624863466,4225203193&fm=27&gp=0.jpg

破解Android加密的方法为何不能通用

没有加密数据的裸机芯片时代已经一去不复返了,今天,取证专家几乎期望手机能够进行某种加密。这改变了我们获取信息的方式,对于苹果设备来说,chip-off取证方法则是完全无用的。随着越来越多的Android智能手机被加密,取证方也在与时俱进。

那么如何才能攻破加密的Android智能手机并提取信息呢?原始设备制造商,设备制造商和软件开发商的多样性需求使Android智能手机无法制定通用的加密方法。因此,不同的设备采用不同的芯片组,使用不同的保护方法,甚至不同类型的加密算法。现在,我们已经看到了使用内置加密密钥的设备,这是同一型号所有设备的单一密钥。

许多设备具有不可修复的低级漏洞。这些漏洞可以通过EDL模式进行利用,取证专家可以覆盖某些分区并注入修改后的trustlet,这些修改后的trustlet将在暴力破解密码时利用TEE提取加密密钥或消除GateKeeper延迟。

由于Android模型,修改和软件构建的种类繁多,想出现一种针对特定的设备的提取方法并不现实。但是,有些技术适用于可用于物理采集的设备组。

安全启动

如果用户选择使用安全启动来保护他们的加密手机(需要PIN码、PATTERN用法和开机密码来启动设备),则大多数现有的提取方法将失败。必须通过对设备进行暴力取证来恢复原始密码,GateKeeper(山狮中引入的一项新安全技术,它可保证用户安装来自Mac App Store或者拥有开发者签名的应用)将限制取证的速度,除非TEE被利用来禁用该功能。据我所知,目前还没有针对这种情况的现成解决方案,大多数现有解决方案都针对常规FDE加密和密码,而没有针对安全启动的破解。

换句话说,如果你碰巧在一个加密的Android设备上工作,需要启动一个PIN码、PATTERN用法和开机密码,那么成功获取的机会不是很大,除非你愿意投入大量的时间去研究。

u=1701305828,2599762935&fm=27&gp=0.jpg

利用高通的EDL访问模式

许多配备高通芯片组的智能手机(三星和LG除外)都配备了所谓的紧急下载模式。这种模式通常是通过在手机开机时切断某些pin密码来实现的,这可以通过特殊的USB来实现,查找“EDL cable”或““deep flash cable”,你会发现几十种不同的型号USB设备。通过使用EDL,可以对设备的整个存储芯片进行图像处理。

可以从几个供应商(包括Cellebrite、Magnet和Oxygen)获得用于未加密、受未知密码保护的设备的EDL提取。要获得加密设备的信息,则需要付出额外的努力,我将会在下一章中介绍。

EDL访问取证模式的优点

1.相对容易提取支持的设备;

2.与其他方法相比更强大和更可靠;

3.普遍适用于配备多芯片组的设备;

4.无论密码如何保护,都可以提取未加密设备的数据;

5.支持所有版本的Android(不加密);

EDL访问取证模式的缺点

1.即使没有密码,也不会绕过FDE加密;

2.不适用于加密设备;

3.EDL模式可能很难在特定设备上被调用;

利用高通EDL漏洞和加密方式

加密设备后,在EDL取证模式下,你可以完全、无限制地访问设备存储内容。然而,这不是取证的目的。虽然有可能(并且一直有可能)使用EDL模式对高通芯片组的非加密设备(类似于LG LAF)进行图像处理,但是一旦设备被加密,低级访问就变得毫无意义。

另一方面,EDL取证使取证人能够修改设备的内容,以便利用启动顺序绕过某些安全检查,这允许取证人者将修改后的trustlet注入TEE并提取加密密钥,打开Bootloader而不清除设备和补丁内核来获得root访问权限。取证工具甚至可以在设备RAM中执行这些操作而无需修改实际存储,从而使得整个提取和解密过程在法律上合乎情理。

要想真正理解EDL漏洞的工作原理,我推荐你阅读以下文章:

1.开发高通 EDL程序员(1):获取访问并进入PBL内部

2.利用高通 EDL程序员(2):基于存储的取证和root访问

timg (1).jpg

EDL的应用范围很广,包括大多数搭载廉价和中端高通芯片组的智能手机,以下手机型号都是我证实过的:

· LG:LG G4

· 诺基亚:诺基亚6,诺基亚5;

· 谷歌Nexus:Nexus 6,Nexus 6P;

· 摩托罗拉:Moto G4 Plus;

· OnePlus:OnePlus 5,OnePlus 5T,OnePlus 3T,OnePlus 3,OnePlus 2,OnePlus X,OnePlus One;

· 中兴通讯:中兴通讯Axon 7,其他中兴通讯专用漏洞可通过中兴通讯专有的DFU模式获得;

· 联想:ZUK Z1,ZUK Z2;

· 小米:Xiaomi Note 5A, Xiaomi Note 5 Prime, Xiaomi Note 4, Xiaomi Note 3, Xiaomi Note 2, Xiaomi Mix, Xiaomi Mix 2, Xiaomi Mi 6, Xiaomi Mi 5s, Xiaomi Mi 5s Plus, Xiaomi Mi 5x, Xiaomi Mi 5, Xiaomi Mi 3, Xiaomi Mi A1, Xiaomi Mi Max2, Xiaomi Redmi Note 3, Xiaomi Redmi 5A, Xiaomi Redmi 4A

利用这个漏洞既不快也不容易,现有的解决方案非常少,在不同的设备型号上也没有可以使用的“通用”方法来利用此漏洞,至少由于偏移量和设备特定的ABOOT代码的差异。截至目前,EDL漏洞利用的工具已成功开发了几个,仅针对少数几个设备。为了增加对随机加密的Android手机的取证,你必须针对容易受到攻击的高通芯片组开发自定义启动代码。虽然这在技术上是可行的,并且比解锁iPhone 5c更容易,但这个过程仍然是一项耗时耗力的工作。

利用高通EDL漏洞和加密方式的优点

1.它使用目前仅有的加密设备的几种方法之一;

2.可以绕过FDE加密,即使不知道密码(没有安全启动);

3.适用于许多设备配备有易受攻击的高通芯片组;

4.可以用来枚举未知密码,绕过GateKeeper延迟;

利用高通EDL漏洞和加密方式的缺点

1.到目前为止,该解决方案仅适用于少数特定设备,其中大多数设备并不常见;

2.到目前为止,没有现成的通用解决方案;

3.极难实施;

4.增加对特定设备的支持可能既昂贵又耗时,不过还是低于解锁iPhone 5c所花费的百万美元;

5.如果设置了未知的密码,则不能绕过FBE加密;

6.如果同时启用了安全启动和未知密码保护措施,则无法绕过FDE加密;

在接下来的文章中,我们还会介绍其他更有意思的方法,敬请关注。

源链接

Hacking more

...