usb secure

在正式开谈USB安全之前,还是照例来分享一个很有意思的案例:2014年年末,来自Reddit的报道,某大公司高管电脑感染了恶意程序。公司的安全研究人员就调查恶意程序来源,但检查了所有传统可能的感染途经都一无所获。于是他们开始考虑其他突破口,从这位高管的饮食起居入手,翻来覆去地查,最后发现问题居然出在高管的电子烟身上。

  • “这是一款中国造的电子烟,充电装置部分包含了硬件编码的恶意程序。”而这款电子烟是通过USB口充电的,这名高管为了充电,顺手会将其插入到公司的电脑上,于是电脑就感染了恶意程序。

USB安全?这是什么意思?

我们擅自提“USB安全”这个词汇,其实是不准确的。因为USB本质上只是一种通用串行总线——总线有很多啊,SATA总线、PCIe总线等等,这有什么样的安全话题可谈呢?可能USB充其量可作为恶意程序传播的途经。我们说“USB安全”,和说“网线安全”是不是感觉差不多荒谬? 不过大概是因为USB作为替代古代各种接口的明星级统一标准,而且USB又不像Thunderbolt之类的接口一样需要高昂的授权费用,当代世界的海量设备采用USB接口也是种必然。有趣的是,我们经常将采用USB接口的设备称作USB设备(却没有人将PC内置的硬盘称作SATA设备或者PCIe设备),这也是我们这里谈USB安全的基础。 由于USB当代的使用如此广泛,所以USB设备也就成为了恶意程序传播的重要载体。但如果只说USB设备作为恶意程序的传播途径,那么任何接口实际上也都存在这种传播的可行性。比如说U盘能够传播病毒,Thunderbolt移动硬盘也行,连光盘都可以。 总的说来,我们要谈所谓的USB安全,并不是USB在数据传输过程中存在安全问题,或者某类USB接口规格(如Type-C)某个针脚存在设计缺陷,而是USB接口或总线作为恶意程序的一个重要途经,存在安全问题,以及USB协议、驱动存在的安全问题。 因此针对USB安全,有3点可谈。其一,USB是个具有相当普遍性的标准,鼠标、键盘、电子烟、外置声卡都用USB接口,且即插即用。所以在物理接口中,它对恶意程序的传播大概是除了网络适配器接口之外,效率最高的。其二,USB协议可被攻击者利用,这也将是本文要谈到的重点。其三,最高级的USB 0day漏洞攻击。

autorun.inf时代!U盘病毒? …

用U盘来钓鱼会不会成功? …

U盘攻击绝杀:伪装成HID设备

USB不止MSC(大容量存储)设备这一种,现在的USB接口支持这么多功能,协议其实也五花八门,自然不光有相关MSC的协议,什么USB Power Delivery(USB快速充电规范)、USB OTG(SRP、HNP协议,两个外设间传输)等等,还有一个USB HID设备类协议。这里的USB HID,近两年来已经成为USB设备攻击的绝杀了。 HID也就是Human Interface Device,是与人交互的设备。其实USB-HID设备现如今已经相当普遍了,比如USB键盘、鼠标、手柄等等。这要怎么利用呢?在2014年的Black Hat黑客大会上,安全研究人员Karsten Nohl和Jakob Lell发表了演讲,提到一个有些惊世骇俗意味的USB攻击手段,名叫BadUSB,部分利用了HID的特点。 上面说的好玄乎,所以下面再来举个栗子:键盘都用过吧?有没有试过不用鼠标,纯粹用键盘来进行各项系统操作呢?有经验的同学应该知道,其实也不难。那么如果有这么一个U盘,它能够伪装成键盘,通过脚本执行一系列键盘敲击操作,是不是感觉就能控制你的系统了?这其实就是BadUSB攻击利用USB协议的示例。被BadUSB感染过的U盘不仅能够伪装成USB键盘,还能伪装成USB网卡——篡改DNS,这样一来所有的DNS查询就能发往攻击者的服务器,可进行重定向攻击。 一般U盘的构成除了我们需要用到的存储数据的闪存部分,还有主控芯片,或者叫控制芯片。主控芯片一般会指定某些部分的单元用于存储固件驱动(似也有主控芯片本身就包含了固件闪存)。这里的固件就类似于操作系统,控制软硬件交互。Nohl和Lell花了好几个月的时间进行逆向工程,他们发现许多U盘都可以对固件部分进行重新编程(尤其是PHISON群联的主控芯片)。用户根本就看不到固件部分,要隐藏攻击代码自然就非常容易了。 u 盘 这就是BadUSB得以成型的核心所在。另一方面当代操作系统为了给USB设备提供最大的兼容性,USB标准是允许一个USB设备具有多种输入输出设备的特征的。这样一来,通过重写U盘固件,就能让它伪装成USB键盘、网卡甚至显示器。通过这个假的键盘,输入U盘固件中的恶意指令和代码,还可以配合闪存中的恶意程序进行攻击。 说白了,BadUSB是令普通U盘都变身为橡皮鸭,甚至攻击性更强。这其中的加强体现在BadUSB的伪装和传播性方面。伪装!很容易理解,看起来只是个普通U盘,而且即便格式化U盘也无法清除恶意代码,因为恶意代码在固件中;传播!当年Nohl和Lell在研究报告中有特别提到,BadUSB理论上最大的威胁在于,通过一个BadUSB设备给计算机感染恶意程序之后,计算机也可以将BadUSB传播到其他插入计算机的U盘:某个U盘在插入这台计算机之后,计算机上的恶意程序就能够对U盘固件进行重新编写,U盘主人根本就不会察觉到。 针对U盘固件,引入不可伪造加密签名机制就是种方案,杜绝恶意程序的重新编写。这就主要取决于闪存主控芯片制造商了。因为有人指责Nohl说,他先前在Black Hat上的演讲其实只针对台湾群联的闪存主控芯片——所以2014年年底,Nohl还抽样了8大主要芯片制造商的主控芯片:群联、Alcor、瑞萨、祥硕(华硕的子公司)、创惟、FTDI、微芯、Cypress。 结果发现情况异常复杂。的确有部分USB主控芯片对BadUSB免疫——即无法对固件做重新编程,免疫的芯片占到抽样总数的一半,但每个品牌的表现都是很不稳定的。比如说,采用群联主控芯片的U盘都存在被BadUSB感染的风险,而祥硕则完全对BadUSB免疫,创惟的USB 2.0芯片没问题,但更新的USB 3.0芯片就有问题。其他USB Hub、键盘、摄像头、鼠标等所用的控制芯片情况更是五花八门。而且实际上,即便是一个USB设备制造商的相同型号的产品,他们也会在不同批次中采用不一样的主控芯片,比如金士顿所用的USB控制芯片就有五六种之多。 难不成以后我们要用U盘之前,都得先把U盘拆开看看主控芯片的型号不成? 斯诺登当年揭露NSA的文档中提到了一款窃听设备名为Cottonmouth(如下图所示)。这就是个USB设备,据说能够偷偷地往目标设备中安装恶意程序。 各种USB设备都可能出现伪装的情况。从你的USB鼠标、键盘,到摄像头、电子烟、充电宝。 今年的Black Hat USA 2016大会上,分享丢U盘是否有效的Elie Bursztein不仅做了丢U盘的实验,而且还教育人们如何才能做个完整版的、伪装起来的U盘,那详细程度,从选购芯片到最终U盘外部材料成型一条龙,所用的都是成本很低的现成材料链接

USB攻击的究极形态

Bursztein在Black Hat USA 2016大会上将USB攻击分成了3大类,分别是社会工程(丢U盘),HID伪装和0-day漏洞利用。前两种我们都已经在前文做了简单的分析,最后一种0-day漏洞利用,他只稍作了解释,主要利用的是USB驱动的0-day漏洞,只要计算机插上USB设备,就能立刻对计算机进行控制。 在他看来,0-day漏洞乃是USB攻击的究级形态,无论是复杂程度、可靠性还是隐蔽性都达到了至高境界(虽然因为针对性强,所以跨平台属性不佳)。我们能够列举的此类案例实在稀有,因为这几乎没有被广范围探讨过。之前名噪一时的Stuxnet震网病毒,就利用了USB(但似并非USB驱动的0-day漏洞)传播——Windows系统中,.lnk文件负责渲染U盘中的文件图标,插入U盘的时候,资源管理器就会扫描其中的.lnk文件来显示各种格式的文件,震网病毒就是将恶意程序插入到.lnk文件中——整个过程是插入就执行的,所以其隐蔽性自然可见一斑。 usb execution flow 不过这种例子实在稀有,大约需要投入大量时间和精力,极具针对性地进行攻击研究。对一般人来说,U盘钓鱼和HID伪装的确才是最需要防范的。但在我们谈了这么多以后,是否还要说说USB安全的注意事项呢? 像Nohl说的,防范USB攻击的最佳方案就是不要用USB设备!为了这个目标,就请封死设备上的所有USB接口吧…说正经的,因噎废食当然不好,但来路不明的U盘甚至充电宝、电子烟都不要用,马路上出现U盘,也请忽略之;自己的USB设备也不要去插不受信任的主机设备。用户能做的,大概也只有这些了吧。 解密BadUSB

Written on December 29, 2016