[6136](In)安全的Android调试:安全分析和经验教训外文翻译资料

 2021-12-06 21:47:54

英语原文共 19 页

计算机与安全

第82卷,2019年5月,第80-98页

(In)安全的Android调试:安全分析和经验教训

摘要:

通用串行总线(USB)是目前控制个人计算机(PC)与其外围设备之间通信的最流行的标准之一。因此,重要的是确定这种连接是否被适当地保护,尤其是当USB用于连接诸如智能手机,平板电脑等可能存储敏感用户数据的设备时。出于这个原因,本文评估了最近的Android版本在USB相关攻击方面的安全性。特别是,我们提出了一种新方法,通过利用中间人(MitM)攻击的Android调试桥(ADB)协议来破坏基于Android的设备。对这些类型的攻击的综合分析揭示了五个新的安全漏洞在Android操作系统中。本文中的安全漏洞不仅可以用于绕过锁定屏幕安全性并获得对用户私有数据的未授权访问,还可以通过结合后门来随时绕过电话安全来实现未来的ADB攻击。我们还开发了一个工具,利用所有发现的漏洞,可以作为评估当前ADB实施以及未来协议改进的安全手段。通过披露新的安全漏洞,我们希望提高与USB相关攻击相关的用户,研究人员,安全专业人员和开发人员的安全意识,以及他们不仅对PC而且对USB设备构成的威胁。

关键词:移动安全;Android的;USB;ADB;MITM

  1. 介绍

使用USB(通用串行总线)绕过现代个人计算机(PC)安全机制是一个有趣但不是新颖的想法。使用这种攻击媒介的第一个恶意软件是2008年发现的Conficker(Hypponen,2009 )。它的直接继承者—Stuxnet(Nicolas Falliere和Chien,2011)—仅设法感染了伊朗的6万多台计算机。早在2014年,由于BadUSB(Karsten Nohl和Lell,2014)的披露,USB用户再次感到兴奋。它变得非常受欢迎,很多人开始开发自己版本的BadUSB攻击(Kamkar,Kamkar,Kierznowski,2016,Todd-Simpson)。与此同时,人们在开发工具方面付出了一些努力(Kopecek,2016),以防止邪恶的USB设备。

当考虑使用该标准的大量设备时,USB安全性尤其令人担忧。目前有数十亿台采用USB的设备,其中一些比其他设备更敏感—智能手机,平板电脑和所有其他移动设备。它们配备了高性能CPU,并且具有大量存储空间,通常充满了用户的私人数据。这些设备中的USB广泛用于从用户桌面轻松访问照片,视频,文档等,而无需将私人数据上传到第三方云。

拥有88%市场份额的Android(Sui,2016 )毫无疑问是最常见的移动操作系统,广泛应用于各种移动设备。除了符合人体工程学,灵活且功能丰富之外,任何成功操作系统的真正优势还在于可用应用程序的数量。拥有2.8百万个应用程序的Android轻松满足应用程序标准的数量(编号,2017 ),如此庞大的可用程序是现有的,充满活力的Android 应用程序开发者社区的结果。据估计,全球有超过1200万移动应用程序开发人员,其中超过一半的人将注意力集中在Android上(应用程序,2016)。

移动应用程序开发过程与典型的软件创建不同,因为代码通常是在PC机上编写的,通常最初使用移动OS模拟器进行测试,然后上传到目标移动设备进行最终测试和调试。因此,开发者的机器和目标设备之间的专用通信机制是必要的。Bootloader和内核开发人员使用JTAG等专用低级接口,允许它们停止CPU并访问RAM内存。安全研究人员还使用JTAG对设备进行取证分析,例如使用JoKER(Guri等,2015))。不幸的是,它需要昂贵的设备并可直接访问设备的PCB(印刷电路板)。这就是为什么,对于应用程序开发,需要更方便和更高级别的工具。在Android中,此要求由称为Android Debug Bridge(ADB)的自定义USB协议实现,ADB提供了许多对移动应用程序开发人员有用的功能,包括:

bull;文件传输,

bull;shell访问,

bull;应用程序安装和调试,

bull;转发端口,

bull;生成输入和传感器事件。

虽然如上所述,ADB功能对于开发人员和高级用户非常有用,但就目前的形式而言,它应该被视为对基于Android的设备安全性的严重威胁。由于ADB连接可以直接访问所有用户的私有数据而无需解锁设备,因此可能会出现安全威胁。尽管有时能够检索这样的数据是有用的,例如,在移动设备显示器被破坏的情况下,当与恶意意图一起使用时,它可能容易导致私人数据泄漏。此外,还有专用工具(例如,在Metasploit包中),允许通过ADB执行任意代码(met,2016)。在过去,还有一些漏洞允许使用ADB连接获得对设备的root访问权(dir,Vidas,Votipka,Christin,2011)。

为了缓解与ADB相关的安全风险,制造商采用了两项主要的安全改进措施。首先,默认情况下,ADB现已禁用。为了使用它,用户必须显式激活在开发者选项子菜单下隐藏的选项。其次,从Android版本4.2.2开始,引入了安全的USB调试功能。此机制旨在防止ADB打开时未经授权的ADB访问移动设备。

随着Android开发者和爱好者社区的不断发展,越来越多的人开始使用亚行。他们中的许多人只激活一次,然后忘记稍后禁用它。在这种情况下,他们唯一的保护是安全USB调试功能。据作者所知,目前尚无对此机制的安全性分析。因此,本文的主要贡献是通过从USB连接角度评估安全USB调试的安全性来填补这一空白。这通过以下方式实现:

bull;介绍已知USB相关安全威胁的分类。

bull;提供ADB协议及其当前安全机制的最新文档。

bull;执行安全评估并讨论ADB协议本身及其在Samsung Galaxy S7和Google Nexus 9移动设备中的实施中发现的漏洞。

bull;引入一个名为adb_mitm的新工具,利用已发现的漏洞。

bull;讨论经验教训并提出可能的对策。

bull;分析所提议的ADB协议修改的性能影响,并建议一种最小化开销的方法。

本文的其余部分结构如下。第2节描述了USB标准的必要基础知识。然后,在第3节中,提供了ADB协议的最新概述。第4节讨论有关ADB和USB安全性的相关工作。接下来,在第5节中,我们展示了用于我们研究的实验试验台。第6节揭示了新的安全漏洞,并引入了利用它们的adb_mitm工具。然后,第7节建议修改ADB协议,以防止讨论攻击。最后,第8节 该论文总结并建议该领域未来的潜在工作。

  1. USB基础知识

USB标准(usb,2000 )是最流行的外部接口之一。大多数消费类家用电子产品能够通过USB进行通信。移动设备和开发者机器之间的通信通常也通过USB总线实现。为了能够执行其安全性分析,了解USB协议如何工作非常重要。

USB标准的第一个版本于1996年发布。它提供低速(1.5 Mb/s)和全速(12 Mb/s)信令速率。然后在2000年,USB 2.0标准已经发布。它引入了明显更快的信号速度,称为高速(480Mb/s)。其后来的版本引入了许多移动设备中采用USB的重要功能,包括最小化连接器尺寸,改进电池充电等。下一代USB标准始于2008年发布USB 3.0规范。该标准是第一个引入全双工的标准通信和信令速度提高到5Gb/s(SuperSpeed)。它还将USB设备的电流限制增加到900 mA。在USB 3.2 SuperSpeed 模式下,该标准(3.1和3.2)的进一步小修改将速度提高到20 Gb/s。值得一提的是,不仅USB标准本身也在发展,而且还有USB连接器标准。在开始时,它仅定义了全尺寸的A型和B型连接器。该标准的后续修订引入了连接器的最小化形状因子。最大的革命是2014年推出的USB Type C连接器,因为它对于通信双方都是对称的。由于市场上大多数移动设备仍在本章中使用USB 2.0规范,因此我们描述了基于该标准的USB协议栈,但大多数信息也适用于较新的。

USB的一般高级概念是扩展机器的功能(配备这样的端口)以及外围设备提供的一些附加功能。在USB术语中,可通过USB扩展的机器称为USB主机。通常它是一种电子产品,直接由人类用户使用,如计算机,智能电视或媒体播放器。相反,通过USB提供一些附加功能的外围设备称为USB设备。以前,USB设备通常是更小且资源有限的设备,例如pendrive或网络摄像头。如今,USB设备模式广泛用于可能具有显着更大计算能力的移动设备中。

USB标准定义了USB堆栈的四层:

物理层:负责电调和低电平信令。

link layer:负责两个USB端口之间的基本数据包传输。

协议层:确保端到端消息可靠性和管理带宽。

功能层:允许开发人员在USB协议的顶部实现自己的功能。

前三层是通用的,独立于通过USB总线提供的功能。功能层用于定义功能特定的协议,该协议可用于通过USB总线提供甚至非常特定的功能。

USB标准允许将多达127个USB设备连接到单个USB 主控制器。显然,在每个USB主机中安装127个USB端口是不可行的。因此,典型的USB主机附带了一些物理USB连接器。为了增加可用USB端口的数量,有一类称为USB集线器的专用USB设备。它们配备一个上游端口,应连接到USB主机和多个下游端口,可用于连接更多USB设备。因此,典型的物理USB 拓扑是树形拓扑(图1),其中USB主机是该树的根,USB集线器是节点,USB设备是叶子。

图1.物理USB 拓扑(1-USB主机,2-根集线器,3-USB设备,4-USB集线器)。

从逻辑上看,USB集线器是透明的,仅用作信号转发器。因此,逻辑USB拓扑形成星形拓扑(图2 ),USB主机是中心节点,USB设备是叶子。在功能级别上,始终在主机和一个连接的USB设备之间实现通信。USB设备之间没有逻辑连接。

图2。逻辑USB 拓扑(1 - USB主机,2 - USB设备)。

典型的USB设备包含三个基本要素:

USB设备控制器(UDC):这是一个允许以USB设备模式通信的硬件。它可能被视为网络环境中的网络接口卡(NIC)的等效物。

执行元素:这可以是硬件组件(如果是pendrive 的闪存),它是提供所需功能所必需的,或者只是提供所需资源或基础设施的软件。

MCU 1 和固件/软件:这是主控制器,它与UDC和Executive元件通信以实现设备逻辑。

典型的USB设备块方案。支持USB的移动设备通常不使用物理执行元件,而是利用其操作系统基础设施来模拟一个。设备逻辑通常也完全在软件中实现。Linux内核甚至为USB设备逻辑实现提供了专用子系统。当硬件实现不可能时,这允许相对容易地实现抽象功能。

为了将多个执行元件放入单个设备中,USB标准允许单个USB设备提供多个不相关的功能。为了使它们以独立的方式工作,单个USB设备可以提供多达31个独立的数据管道。设备端的数据管道末端称为端点。它们可能被理解为来自互联网世界的端口。使用4位数(0-15)和一个方向位来识别端点。除端点0之外的所有端点都是单向的。始终从USB主机角度设置端点的方向,这实际上意味着IN端点可以将数据从设备传输到主机。

不同的功能可能对延迟,交付可靠性等有不同的要求,这就是USB标准根据典型用例定义四种不同端点类型的原因:

控制:这是唯一的强制端点类型,也是唯一允许使用同一端点进行双向通信的端点类型。此类型保留给端点0,因此每个设备可能只有一个这样的端点。建立连接后,它用于发现USB设备功能,但必须注意它也可以由应用程序使用。由于吞吐量较低,该端点类型通常用于发送一小部分超出范围的信令数据。

批量:此端点类型用于传输大量延迟不敏感数据。提供了可靠的数据传输,但数据传输的延迟可能很大。这种类型在与pendrives和移动设备通信时被广泛使用。

中断:此类型用于传输少量(约10 kb/s)的时间敏感数据。无差错传送和数据传输的最大延迟都得到保证。此端点类型通常用于人机接口设备,如键盘或鼠标。

等时:此类端点用于传输大量延迟敏感数据。仅保证最大传输延迟。在数据错误的情况下,没有重传,因此主机可以在没有任何通知的情况下丢弃数据。每当后期数据与没有数据一样好时,例如对于视频流,等时类型被广泛使用。

还值得一提的是,USB标准不提供任何类型的端点或功能来确保数据完整性或机密性。所有数据都以明文形式通过USB发送。因此,功能层需要确保所有必需的安全机制。

还必须注意,USB标准定义了USB设备的通用逻辑结构(图4)。除端点0之外的所有端点都被分组到接口中。接口是一组端点,用于实现一些明确定义的功能。所有接口都分组为配置,配置是一组可以同时使用的接口。USB设备可以具有多种配置,但在给定时刻只有一种可以是活动的。USB主机可以仅与属于活动配置的端点通信。由于端点0既未分组为接口也未分配,因此始终可用于通信。

图4。逻辑USB设备结构。

USB最着名和最受欢迎的功能之一是即插即用哲学实现。这需要对每个新USB设备进行全自动的发现,配置和驱动程序探测过程。为了实现这一点,主机必须检测每个新设备的功能。在USB术语中,此过程称为枚举。其核心部分与获取有关逻辑设备布局的信息有关。每个USB实体(设备,配置,接口,端点)使用

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。