USB设备安全问题及防御方法综述

2021-03-03 09:15张乃珩
河南科学 2021年1期
关键词:存储设备固件攻击者

张乃珩

(纽卡斯尔大学,纽卡斯尔NE1 7RV,英国)

目前,虽然USB设备作为在网络信息系统中应用非常普遍的一种终端设备,在输入输出设备、多媒体设备、通信设备、储存器等领域发挥着越来越重要的作用,但是它的安全性问题却一直没有得到足够的关注和重视. 即使有像Stuxnet[1]这种典型的攻击事件的警醒,提高了人们对USB设备安全问题的关注度,但目前来看在该领域的研究仍然还有很多的问题亟须解决.

为了厘清目前USB设备安全研究领域存在的问题和挑战,本文从攻击和防御两个角度对已知的USB设备安全问题展开分析研究,并在此基础上总结提出USB设备安全问题的发展趋势,从而为未来的研究提供思路和方向.

1 USB设备安全问题

自1991年USB1.0诞生以来,USB协议得到了迅速发展,逐渐取代了很多其他串行总线协议而成为当前应用非常广泛的一种数据传输方式,因此采用USB 协议的USB 设备在种类和数量上也都得到了极大丰富.正是因为USB设备的大发展吸引了攻击者的注意力,各种针对USB设备的攻击技术开始出现,各类网络攻击事件更加深了人们对USB设备安全问题的关注.

基于安全问题存在形式的不同,现有的USB设备安全问题可以分为如图1所示的四种类型,即USB设备作为攻击负载的传播媒介、USB HID攻击、BadUSB攻击和驱动漏洞利用攻击.

图1 USB设备安全问题Fig.1 Security issues of USB equipments

1.1 USB设备作为攻击负载传播媒介的问题

随着网络安全防护技术的发展和实际部署的各种安全机制的逐步完善,以前通过网络连接进行的攻击负载的传播方式受到了很大限制,实现越来越困难,很容易被入侵检测系统等检测到. 另外,当攻击者的攻击目标部署在一个相对封闭的内部网络环境时,例如工控系统、监控系统等,如何将攻击负载传输到目标所在的内网中就成为攻击者要解决的一个非常基础和关键的问题.

针对上述问题,随着USB设备的普遍运用,攻击者开始将目光转移到USB设备上,尤其是针对使用USB协议的移动存储设备,例如优盘、移动硬盘等. 攻击者通过分析发现,为了方便使用,早期很多操作系统(例如2011年前的Windows 操作系统)都支持和允许移动存储设备在其根目录下添加autorun.inf 和setup.exe 文件,实现自动运行功能. 因此,当移动储存设备通过USB接口连接到主机时,通过自动运行功能可以实现多种自动化的操作. 为了利用这一机制,攻击者首先将恶意代码置于存储设备中,并通过设置autorun.inf 和setup.exe自动执行功能,实现将恶意代码从存储设备转移到目标主机的相应操作,从而解决前面提到的攻击负载传播和传染的问题(如Stuxnet[1]、Conficker[2]、Flame[3]等). 图2 展示了Stuxnet 攻击的实现过程,可见攻击者就是以优盘作为媒介,将攻击负载从外网最终传播到了伊朗核设施的相应控制系统内.

图2 Stuxnet攻击流程Fig.2 Stuxnet attack flow

因此,USB设备安全问题的早期表现主要是作为一种攻击负载的传播途径,当将攻击负载复制到目标主机后,具体的攻击操作则仍然由攻击负载实施,USB设备并不参与后续的攻击操作.

1.2 USB人机交互设备安全问题

随着USB设备的普遍使用和地位的提高,攻击者已经不再满足仅仅将USB设备作为攻击负载传播的一种媒介,开始探索更加直接和隐蔽的USB设备攻击方式.

USB人机交互设备(Human Interface Device,HID)是一种非常重要和广泛使用的USB设备类型,被广泛应用于人机交互和少量实时数据传输中,例如键盘、鼠标、游戏杆等应用场景. USB HID设备最主要的特点是可以模拟人和机器的交互过程,能够主动地向连接的主机中传输数据和命令. 同时,基于USB HID协议中的约定,USB HID设备无须安装驱动就能与主机进行交互. 另外,操作系统完全信任与USB HID设备的整个交互过程. 基于上述原因和背景,在2010年美国黑客安全大会上,Pisani等首次提出并展示了USB HID攻击[4].

USB HID攻击技术是利用USB接口伪造用户键盘敲击等行为实施的一种攻击方式. 攻击者首先设计实现一个具有恶意功能的USB HID 设备,当该设备被接入到某个目标主机中时,通过在设备枚举过程中将自己声明为一个HID设备,由于主机无条件相信外部设备. 因此该设备将被作为HID设备并触发主机加载相应的HID 驱动程序,之后恶意USB设备即可直接执行事先设计好的通过模拟键盘按键操作、鼠标操作等构造的攻击行为(例如篡改系统网络配置、读取和泄露用户敏感信息等).

USB HID攻击相对于仅将USB作为传播介质的攻击方式具有以下两个特点.

1)隐蔽性更强:USB HID攻击模仿用户按键操作,使得操作系统将输入的数据或命令当作来自用户的键盘或鼠标操作,因此系统并不对输入数据或命令进行任何监控和审查,整个攻击过程得以隐蔽和毫无阻碍地进行;更重要的是,USB HID 攻击的恶意代码被隐藏在芯片的固件中,上层杀毒软件无法检测这部分代码. 因此,USB HID攻击的隐蔽性更强.

2)更易获得高权限:由于USB HID 攻击本质上与系统用户的直接操作没有本质区别,因此通过模拟特定的键盘敲击操作可轻易获得比当前主机用户更高的系统管理权限,如图3所示,即为通过模拟键盘敲击获取系统管理员权限的一种实现方式.

USB HID 攻击的出现,使得USB 设备开始直接参与全部的攻击过程,由传播媒介转而变成攻击发起的主体. 更为严重的是,自2010 年被首次提出以来,现在已经存在多种可定制化的USB HID 攻击开发平台[5-6],如图4所示,这就使得USB HID攻击的技术门槛变得极低,造成的危害也更严重.

图3 基于模拟键盘操作的系统管理员权限获取方式Fig.3 The way of obtaining administrator rights based on simulated keyboard operation

图4 USB HID攻击开发平台Fig.4 USB HID attack development platform

1.3 BadUSB攻击问题

USB HID攻击最初都是依赖于基于某些嵌入式的USB开发板设计实现的,而无法在通用USB设备上实现,这就在一定程度上限制了USB HID攻击的通用性;同时由于采用基于开发板的定制化实现,该类USB设备极易被破除设备封装等检测方式发现. 这就迫使攻击者继续探索更好的攻击方式. 在2014年美国黑帽大会上,研究者首次提出并展示了称为“BadUSB”的攻击技术[7]. BadUSB 攻击的提出较好地解决了USB HID攻击的局限性.

BadUSB攻击的基本思路是篡改USB设备中的原有固件,将含有攻击负载的内容写入到设备固件中,从而使得USB 设备在接入到目标主机时,通过执行固件中的攻击负载实现攻击功能. BadUSB 攻击的实现虽然需要USB 设备支持固件更新这一前提,但是仍然比USB HID 攻击具有更好的通用性(据Karsten Nohl称,BadUSB首次提出时可以适用的优盘占当时市场份额的50%以上[7]). 另外,由于BadUSB攻击实现过程中仅对存储器芯片中存放的固件进行了篡改,并不对USB设备硬件进行任何改变,所以该类攻击的隐蔽性更高.

BadUSB攻击的出现,不仅仅是在通用性和隐蔽性上对USB HID攻击进行了改进,而且通过篡改设备固件,为攻击者提供了更多的攻击选择. 一方面,攻击者通过修改固件,能够执行的操作不仅仅局限在模拟HID操作,通过借助USB设备控制器可以实现更多的复杂操作;另一方面,具有不同类型和功能配置的USB设备给攻击者提供了更多可能性,例如攻击者通过对设备固件的篡改,可控制USB网卡设备中本身具备的网络适配器,从而可实现对目标主机网络流量的劫持和监控;还可以通过控制USB存储设备的存储器,实现对目标主机敏感信息的提取和隐蔽存储等.

BadUSB攻击的高隐蔽性、强通用性以及可以实现的功能的复杂性,使得BadUSB攻击具有远比USB HID攻击更严重的安全威胁,标志着USB设备攻击技术上升到一个新的层次.

1.4 USB设备驱动安全问题

USB HID攻击和BadUSB攻击都是基于对USB设备自身的篡改实现的,而除了上述方式实现外,攻击者还可以通过对USB设备驱动中漏洞的利用实现攻击目的[8-9].

USB设备的架构如图5所示,安装在主机端的USB设备驱动是一个USB设备实现其与主机操作系统以及应用程序之间交互的媒介,驱动接收所连接的USB设备的所有输入并进行相应处理. 因此,如果设备驱动程序存在某些安全漏洞,那么攻击者就可以基于USB设备向其输入特定信息实现漏洞利用. 例如,当设备驱动中存在某个内存漏洞时,来自USB设备的意外或特定输入将导致缓冲区溢出等攻击.

图5 USB架构Fig.5 USB architecture

基于主机端驱动的攻击,根本上源于主机端软件对外部设备的隐式信任,并无条件接收所有来自设备的输入;另外,可编程的USB 设备(例如FaceDancer[10])正变得越来越多,攻击者可以更加方便地利用该类USB设备触发设备驱动中的安全漏洞;更严重的是,USB驱动程序运行在内核或特权进程中,因此这种攻击方式仍然可以较为容易地获得高操作权限.

综上,通过对USB设备安全问题的分析可以发现,随着攻击技术的发展,USB设备的攻击面也在发生改变. 从最开始通过利用USB 存储设备的自动执行功能,将USB 存储设备作为攻击负载的传播媒介,到USB HID攻击,再到基于固件篡改的BadUSB攻击,最后到不再基于对硬件设备的改变,而是转而面向USB设备驱动中的漏洞利用,整个攻击技术的发展过程体现了攻击者对攻击隐蔽性和灵活性要求的不断提高. 总之,目前USB设备正面临多个层面的安全威胁,被攻击的风险日益增加.

2 USB设备攻击防御方法

针对USB设备的安全问题,研究者已经提出了一些防御方法,并且随着USB设备攻击方式的发展演变,防御技术也在不断适应和发展.

2.1 针对USB存储设备作为攻击负载媒介的防御方法

USB存储设备作为攻击负载传播媒介的核心是操作系统允许设备配置自动运行功能. 针对该问题,一方面,微软在2011年通过补丁修复了自动执行漏洞,使得USB存储设备无法在连接到主机后自动执行;另一方面,由于这种攻击方式的实质仍然是软件代码实现的攻击负载,随着越来越多的终端防护系统、病毒检测软件等的出现和部署,对USB设备的存储区域和主机系统中的软件攻击代码的检测能力大大增强,使得存在于这些部位的攻击负载更容易被检测、发现和处理.

目前,虽然将USB存储设备作为攻击负载传播媒介的安全问题仍然时有发生,但是总的来说,该类安全问题已经得到了极大限制. 在一个操作系统和病毒防护软件经常保持更新的主机中,该类攻击已很难达到其设定的攻击目标.

2.2 针对USB HID和BadUSB攻击的防御方法

虽然BadUSB 攻击比USB HID 攻击隐蔽性更好、通用性更强,但是BadUSB 攻击的实现也仍然离不开对HID接口的声明和利用,因此对USB HID和BadUSB攻击的防御方法很多是相同的.

2.2.1 基于USB协议层的安全增强方法 USB HID攻击和BadUSB攻击实现的一个关键原因在于USB协议中缺乏对枚举过程的有效访问控制[11],主机仅仅根据外部USB设备在设备描述符中的声明决定该设备请求的接口类型,从而使得攻击者可以为本身并不是人机交互设备的USB设备申请HID 接口,从而最终获得对键盘敲击等操作的模拟能力. 基于上述分析,很多研究者从增强USB协议安全性的角度提出了相应的防护方法.

一些研究者提出了类似白名单的防护方法,即通过USB设备签名[12-13]验证USB设备固件的可信,只有经过认证的USB设备才可以通过枚举过程申请到所需要的接口,但在设备制造商以及密钥不可靠的情况下,这种方法也存在被绕过的风险. 另外,采用白(黑)名单的保护机制,虽然能在一定程度上避免恶意USB设备的攻击,但是却同时限制了主机使用USB设备的灵活性. 文献[11]、[14]、[15]和[16]均提出了基于USB设备与USB接口类型匹配绑定的安全策略,即只允许USB设备在枚举过程中申请与之功能或用途相匹配的接口类型,从而有效防止非HID设备申请HID接口. 但是,当目标设备本身就能够申请使用多个接口类型,甚至本身即包括HID接口时,这类防护方法通常会面临安全性和可用性之间的矛盾. 另外,还有研究者提出了基于设备特性与物理外观的一致性进行判断的防护方法[17],该方法的核心是基于设备外观等已知信息判断某USB设备是否能够作为HID设备,但这种判断方法很多时候依赖于用户对设备的认知水平.

2.2.2 基于USB设备行为的安全监控方法 不论是USB HID攻击、BadUSB攻击还是其他攻击方式,其最终的攻击实施过程都会落脚于具体的具有恶意性的操作上,因此一些研究者从USB设备行为监控的角度提出了相应的防护方法.

为了监控USB设备行为,研究者提出了对USB协议数据包的监控和过虑机制[18-19],在USB设备连接到主机之后,监测USB设备与主机之间通信的所有数据包,然后基于对已知攻击特征的对比和分析,判断当前的数据包中是否含有可疑内容,并阻止可疑数据包的传输. 基于包过滤的安全机制可有效检测和防御已知攻击类型,但是对于新型或未知攻击则效果有限. 还有一些研究者提出了基于执行隔离的安全防护方法,例如文献[20]和文献[21],通过对接入的不可信USB 设备的执行空间进行严格的限制和隔离,使得恶意的USB设备无法对主机产生真正的攻击效果. 但是这类基于隔离的防护方法严重依赖虚拟化或IOMMU模块等硬件支持,而且实现过程复杂,阻碍了该类方法的广泛应用.

2.3 针对USB设备驱动漏洞利用的防御方法

对USB设备驱动漏洞的利用是导致USB设备安全问题的一个重要原因,而为了解决该类安全问题,目前主要采用的方法是通过符号执行[22-25]、模糊测试[26-28]等漏洞挖掘技术,在实际应用某USB设备前,首先分析和挖掘其对应的设备驱动可能存在的安全漏洞,从而提前掌握USB设备驱动的安全风险,并采取有针对性的防御措施.

FirmUSB[22]实现了一个针对USB设备固件的分析框架,通过对一个USB设备固件的符号执行和静态分析,提取出一个USB设备固件功能模型,并使用该模型与设备预期的功能进行对比,从而检测出目标USB设备中存在的各种可疑行为. 该方法可有效提前检测出USB设备是否意图执行超出其本身功能定位外的其他功能,例如原本不需要申请HID接口的USB设备的固件中却出现了对该类接口的申请. 但同样,当面对本身就具有复合功能的USB设备时,该方法的防御效果也存在一定的局限性. 除FirmUSB外,其他研究者也提出了不同的基于符号执行的分析方法. SymDrive[23]和DDT[24]通过将设备端读出的数据转化为符号化值,而Potus[25]使用类似的符号执行方法向USB设备驱动中注入错误数据. 这些方法都避免了对硬件设备的依赖,但是由于存在路径爆炸以及开销较大等问题,限制了它们的可用性.

模糊测试是漏洞挖掘中普遍使用的一种非常重要的技术方法,核心是构建模糊测试数据集,并将这些数据作为目标对象的输入,测试目标对象出现执行异常的情况,从而进一步基于异常情况分析潜在漏洞. 由于USB设备驱动接收实际的USB设备的输出作为输入,所以在进行漏洞挖掘的过程中如何向设备驱动中注入测试数据、如何提高测试覆盖率以及如何提高方法的可移植性,这些都是影响该类安全分析方法的重要因素. vUSBf[26]通过模拟USB 设备接口来代替硬件USB 设备向驱动程序中注入数据,但是在测试覆盖率方面欠缺考虑;USBFuzz[27]则是采用仿真USB设备向驱动中注入测试数据,并在Linux系统中实现了支持覆盖率引导的模糊测试;usb-fuzzer[28]采用增加特定系统调用的方式向被测试的USB设备驱动中注入数据,保证了一定的测试覆盖率,但是由于该方法实现过程中需要对操作系统内核中某些关键模块的修改,导致该方法的可移植性较差.

通过漏洞挖掘的方式提前暴露USB设备驱动中的安全隐患,发现某些未知的安全威胁,可以尽可能地缓解攻击的影响和效果. 但是该类方法受限于漏洞挖掘、动态分析、设备仿真等技术的发展,并且只是尽可能地缓解而无法彻底消除USB设备驱动中潜在的安全漏洞.

可以看出,通过对已有的USB设备安全防护技术的分析可以发现,现有防御技术:基本解决了最早期的以USB存储设备作为攻击负载传播媒介所带来的安全问题;对USB HID 攻击和BadUSB 攻击也具有了一定的检测和防护能力,但防御效果有限;对USB设备驱动漏洞利用这一安全问题,虽然已经存在若干可行的漏洞检测和设备行为安全分析方法,但一方面该类防御方法距离广泛应用还有较大差距,另一方面不同方法之间的检测能力差别较大,实际检测效果难以评估.

3 USB设备攻防技术展望

综合分析目前USB 设备攻防技术的发展现状,本文对USB 攻防研究领域的未来发展提出以下分析和预测.

3.1 USB设备攻击方面

1)BadUSB攻击威胁将长期存在. BadUSB攻击在目前的防护水平下仍然具有较强的生命力. 首先对该类攻击的检测难度较高,目前尚没有非常有效的检测方法;另外,该类攻击可以综合运用现有的各种各样的USB设备中具备的各类功能模块,例如无线模块、蓝牙模块、传感器模块等,尤其在物联网发展的大背景下,BadUSB攻击的影响范围和威胁程度将得到进一步提高.

2)USB设备驱动漏洞利用攻击的研究将日益增加. USB设备驱动漏洞利用攻击通过对主机侧驱动的攻击实现,在一定程度上避免了对设备本身的篡改,使得这种攻击方式具有非常强的隐蔽性,并且由于漏洞的不可预测性,使得对该类攻击的防御难度较大,尤其是在设备固件本身难以修改的情况下,该类攻击方式对攻击者的意义将更加重要.

3.2 USB设备安全防护方面

1)USB设备固件升级过程的安全研究. 固件对USB设备的功能具有重要影响,BadUSB攻击即通过对固件的篡改实现,某些对USB设备驱动漏洞的利用攻击也需要对设备固件进行相应修改. 因此,设备固件升级过程的安全性对USB设备安全具有重要影响. 为了应对这类攻击,有些USB设备直接在制造完成后利用熔丝等机制禁止对固件的读写操作,以阻断攻击者对固件的篡改操作,但这就导致当发现当前固件有漏洞时也无法通过补丁等方式更新修复. 当前,很多USB设备仍允许在一定条件下实现对固件的更新升级以保证USB设备的易用性,而如何保证升级过程不会被攻击者利用而引入恶意操作将是当前和未来一个重要的研究热点.

2)驱动模糊测试技术的进一步完善. 模糊测试已经被公认是一种非常有效的漏洞挖掘方式,但是在驱动分析方面,由于驱动对硬件设备的依赖性导致该方面的模糊测试实现难度高且效果有限. 如何针对USB设备驱动设计实现一种不依赖硬件的、全覆盖的、具有更高效率的模糊测试方法,对于检测驱动漏洞、弥补安全缺陷具有重要意义.

3)基于云平台的USB设备行为监控技术的研究. 在云计算发展背景下,USB设备在云环境下的应用将越来越普遍. 研究适合云平台的USB设备行为监控技术是未来不可避免的一种发展需求. 其中,如何合理描述USB设备攻击的行为特征以提高攻击检测精度,如何充分利用现有硬件支持的虚拟化技术降低监控开销等都是该领域研究的重要方向.

4 总结

本文从USB 设备存在的安全问题和已有的安全防护技术两个方面分别展开论述,综合全面地分析了USB设备攻击和防御中的典型技术和方法,并对当前攻防技术存在的问题进行了总结. 最后,对USB设备攻防领域未来的发展方向进行了预测和分析,为下一步的研究工作提供了一定的参考.

猜你喜欢
存储设备固件攻击者
正面迎接批判
正面迎接批判
浅析计算机硬件发展史
基于固件的远程身份认证
浅析铁路视频监控存储设备设计
谷歌公司推出计算机固件分析工具帮助用户阻止恶意软件入侵
有限次重复博弈下的网络攻击行为研究
英特尔发布免费固件引擎
提取ROM固件中的APP
防止USB接口泄密