USB设备我们不知道的危险
推荐语:被称之为USB闪存驱动器、“U盘驱动器”或“USB D ON gle”的USB类存储设备的方式发生了革命性的变革并极大的推动了便携性的发展。自2000年诞生以来,在全球各地生产与销售此类设备不计其数。统计数据显示,仅2008年一年生产的USB类闪存驱动器就高达1.73亿部。
在正式开谈USB安全之前,还是照例来分享一个很有意思的案例:2014年年末,来自Reddit的报道,某大公司高管电脑感染了恶意程序。公司的安全研究人员就调查恶意程序来源,但检查了所有传统可能的感染途经都一无所获。于是他们开始考虑其他突破口,从这位高管的饮食起居入手,翻来覆去地查,最后发现问题居然出在高管的电子烟身上。
“这是一款中国造的电子烟,充电装置部分包含了硬件编码的恶意程序。”而这款电子烟是通过USB口充电的,这名高管为了充电,顺手会将其插入到公司的电脑上,于是电脑就感染了恶意程序。
在这一例中,如果恶意程序做得更加隐秘,那么整个攻击过程甚至可以达到神不知鬼不觉。这其中的传播核心,就是我们要谈的“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盘,或者移动硬盘,甚至软盘中——在不同的PC交换数据的过程中,就可以达到传播病毒的作用。再高明的恶意程序也需要人类去打开才能运行,巧在像Windows这类操作系统,为了加强使用体验,系统中有个针对移动存储介质的AutoPlay/AutoRun自动播放功能。
原本自动播放的功能是,针对CD/DVD多媒体光盘可实现插入即播放,而针对Windows安装介质,插入就能立即弹出安装程序。绝大部分同学应该都知道移动存储介质的根目录下的autorun.inf文件就负责自动播放功能,打开形如以下样式:
[autorun] open=setup.exe icon=setup.exe,0label=My install CD
相较光盘,U盘的可读写方便性明显更胜一筹,如果这里的setup.exe是个病毒,那么设备插入U盘,系统就会自动运行该病毒。所以病毒通过autorun.inf文件实现U盘插入即启动恶意程序的功能,实在是太方便了。同事间交换数据,大家的电脑都插一遍带毒U盘,自然就都感染上了。已经被感染的设备,再感染插入设备的新U盘,以此达到扩散的目的。
这是U盘传播恶意程序的常规手法,也因此有些人将autorun.inf称作“U盘病毒”,虽然这东西其实是很无辜的。实际上,要杜绝这种方式的病毒传播也并不困难,一方面是在系统中禁用移动存储介质的自动播放或自动启动功能,另一方面也可以禁止程序在U盘中创建autorun.inf文件,达到U盘不会传播病毒的目的。
可以说,autorun.inf是过去在民间最广为流传的U盘病毒传播方式。很多U盘病毒查杀工具都主要针对autorun.inf进行围剿。尤其从Windows XP SP2开始,系统针对“USB大容量存储设备”和ZIP驱动器,自动播放功能是默认开启的。微软眼见形势不妙,从Windows Vista和Windows Server 2008开始,针对插入U盘的的系统默认行为,已改为询问用户是否执行自动运行指令。现如今autorun.inf的时代几乎已经过去。
用U盘来钓鱼会不会成功?
如前文所述,其实上面谈到的U盘安全问题并不是USB设备的专属,任何移动存储设备(甚至连内置硬盘)都存在这样的问题。所以严格意义上,这种安全问题根本就怪不到USB头上,如果一定要怪,就如前文所述,只是因为USB实在是太普遍了。
前不久刚刚结束的Black Hat USA 2016黑客大会上,谷歌反欺诈研究团队负责人Elie Bursztein分享了一个议题,名为“Does dropping USB drives really work?”(丢U盘进行社工攻击真的有效吗?)他尝试在伊利诺伊大学校园里各处丢弃297个U盘,看看有没有好奇心重的人会捡回去看U盘里究竟有什么。如果说Bursztein丢的是297块SATA3硬盘(Lol),攻击方式理论上是一样的,但攻击效果有多么糟糕是可想而知的。可见USB的普及性,是我们在此讨论其安全性的依据。
美国计算机行业协会去年曾经发起过一项调查,结果显示17%的人在捡到USB设备后会直接连电脑——这个数据可能还过于保守。Bursztein的调查结果明显更激进:135个U盘(也就是45%)被人捡走后都连接了电脑,这些人还打开了其中的文件,其上的“恶意程序”给Bursztein回传了数据。
好在这还只是个实验,并不存在真的“恶意”。Bursztein的研究团队是这么做的:他们没有用autorun.inf,因为现在的操作系统根本就不吃这套,Mac连自动运行功能都不支持,他们的方法是:钓鱼。
研究团队给这297个U盘分别贴了些标签,甚至还明确写上了U盘所有者(以及归还地址),即便在这种情况下还是有135个U盘被好奇心重的同学打开了。U盘里面的文件迷惑性地写上了“期末考试”“机密”等字样,实际上这些文件都是HTML格式的,文件中有张图片,调用了研究团队服务器的地址——这样一来研究团队就知道,有人打开了文件。
除此之外,HTML文件打开后有个问卷调查,询问这些好奇心宝宝:你们为啥要插人家的U盘呀!的确也有20%的人参与了调查,超2/3的人表示他们其实是想归还U盘的(Really?),18%的人承认他们是好奇,14%的人给出了其他解释。
就这一个例子,我们就不难看出U盘钓鱼的成功率还是相当高的。如果这些HTML文件都换成恶意程序,或者调查问卷改成询问用户名密码的“钓鱼问卷”,又有多少人会栽在其中呢!美剧《黑客军团(Mr Robot)》中就出现了用U盘钓鱼的桥段,看样子这根本就不只是个传说!
U盘攻击绝杀:伪装成HID设备
还是那句话,上面两部分谈的实际上都仍是将USB设备作为传播恶意程序的载体,就好像U盘钓鱼,其本质和丢个软盘来钓鱼(Lol),以及邮件钓鱼是没差别的,原罪不在USB设备身上。如果用这种方法来谈USB安全,实际上还有很多内容可说,比如说USB接口是入侵ATM机的重要途径,还有USB Key这类作为数据解密的安全手段,都不过是将USB作为工具。
那么有没有USB本身的原罪可谈呢?有!可以从USB的协议入手。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的特点。
阅读原文:http://mp.weixin.qq.com/s?__biz=MzI3NzI4NTE0OA==&mid=2247483993&idx=1&sn=ee4fa9d4a33fe5c1f8de657e35f979f3#rd