栏目

首页 首页 硬件查看内容

细说USB安全:这年头真的还有USB设备是安全的吗

最近更新| 发布者: 站长-黑杰克| 查看: |

在正式开谈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,0
label=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的特点。

 
上面说的好玄乎,所以下面再来举个栗子:键盘都用过吧?有没有试过不用鼠标,纯粹用键盘来进行各项系统操作呢?有经验的同学应该知道,其实也不难。那么如果有这么一个U盘,它能够伪装成键盘,通过脚本执行一系列键盘敲击操作,是不是感觉就能控制你的系统了?这其实就是BadUSB攻击利用USB协议的示例。被BadUSB感染过的U盘不仅能够伪装成USB键盘,还能伪装成USB网卡——篡改DNS,这样一来所有的DNS查询就能发往攻击者的服务器,可进行重定向攻击。
一旦这种攻击得以实现,那么攻击方式自然也就变得五花八门了,只有想不到没有做不到,最重要的是跨平台——因为各系统平台遵循一致的USB标准。详情可参见我们当年发布的一篇文章《解密BadUSB:世界上最邪恶的USB外设》。

 
说到底,这种HID模拟攻击不就是当年黑客们很爱的USB橡皮鸭(USB Rubber Ducky)吗?问题是橡皮鸭的内部硬件很彪悍,有个60MHz主频的处理器、microSD扩展插槽。普通U盘何以实现这样的攻击手段?这个问题其实才是Karsten Nohl和Jakob Lell这两位研究人员的高明之处,也是这些U盘在感染BadUSB之后的可怕之处。
一般U盘的构成除了我们需要用到的存储数据的闪存部分,还有主控芯片,或者叫控制芯片。主控芯片一般会指定某些部分的单元用于存储固件驱动(似也有主控芯片本身就包含了固件闪存)。这里的固件就类似于操作系统,控制软硬件交互。Nohl和Lell花了好几个月的时间进行逆向工程,他们发现许多U盘都可以对固件部分进行重新编程(尤其是PHISON群联的主控芯片)。用户根本就看不到固件部分,要隐藏攻击代码自然就非常容易了。

 
这就是BadUSB得以成型的核心所在。另一方面当代操作系统为了给USB设备提供最大的兼容性,USB标准是允许一个USB设备具有多种输入输出设备的特征的。这样一来,通过重写U盘固件,就能让它伪装成USB键盘、网卡甚至显示器。通过这个假的键盘,输入U盘固件中的恶意指令和代码,还可以配合闪存中的恶意程序进行攻击。

文章由天启科技原创,抄袭必究,转载请注明:
本文地址:http://www.goodgoodhack.com/diannaoguzhang/2386.html
文章由天启科技站长黑杰克原创,免费学习黑客技术,业务联系站长QQ9326665

最新视频