代号为 ‘BadUSB’ 的 USB 漏洞具体是何情况,有多大危害?

论坛 期权论坛 期权     
匿名用户1024   2021-6-1 08:39   9879   5
分享到 :
0 人收藏

5 个回复

倒序浏览
2#
有关回应  16级独孤 | 2021-6-1 08:39:48
看了 @时国怀 的回答,有不够严谨的地方(可能是站在开发者角度),虽然我也相信原文翻译有些错误、媒体炒作过于夸张,我下面会站在黑客角度去回答这个问题。

1. 这篇文章我溯源了下,发现和本次正在拉斯维加斯如火如荼举行的 Black Hat 大会(Black Hat USA 2014)有关,演讲者的豪言壮语在这:
https://www.blackhat.com/us-14/briefings.html#badusb-on-accessories-that-turn-evil
表达的意思是:
USB 现在这种机制是有缺陷的,可以自己定制恶意的 USB 芯片,插入电脑后可以控制电脑,可以传播他们准备好的 USB 病毒。
2. 之后和 Black Hat 大会关系紧密的至少8家媒体做了预热报道,比如:
ZDNet 的报道:
BadUSB: Big, bad USB security problems ahead
WIRED 的报道:
Why the Security of USB Is Fundamentally Broken

然后可能就这样传播开了,媒体嘛,为了吸引眼球+自身没那么专业,放大报道也是可以理解的。

3. 我一直在关注这方面的攻防,今年初的时候天融信阿尔法实验室的朋友(冷风)在小范围做了这个分享,之后我看他们的官方博客(天融信阿尔法实验室)放出了研究细节(可以肯定是和谐了一些内容),我先来个摘录(文章写得很清晰,建议读完),这篇文章的结论是:具备实战意义

不过不知道 Black Hat 这次的细节是什么(大会结束后,很快就可以知道了),不过我想大体是这个原理,可能升级的是一些猥琐的 Hacking 技巧:

--------------开始--------------
HID攻击之TEENSY实战文/图 天融信阿尔法实验室 冷风

概述

从传统意义讲,当你在电脑中插入一张CD/DVD光盘,或者插入一个USB设备时,可以通过自动播放来运行一个包含恶意的文件,不过自动播放功能被关闭时,autorun.inf文件就无法自动执行你的文件了。然而通过TEENSY,你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器,与存储空间,和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启,都可以成功。


HID攻击介绍

HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。


TEENSY介绍

攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小巧且功能完整的单片机开发系统,它的名字叫Teensy,它能够实现多种类型的项目开发和设计。Teensy为开源项目,任何有能力有技术的厂商都可以生产定制,其中PJRC是最优秀或者说商业化最好的生产商。


Teensy主要特点如下
AVR处理器,16 MHz
单个按键编程
易于使用的Teensy Loader应用程序
免费软件开发工具
兼容Mac OS X,Linux和Windows
小尺寸,多项目的完美支持
开发环境的搭建

对Teensy芯片进行开发,可以在Arduino中进行,不用担心枯燥的汇编与机器代码,因为Arduino IDE具有使用类似Java,C语言的Processing/Wiring开发环境。环境安装与搭建也非常便捷,可以从Arduino - Home下载安装包,进行安装。本文版权为天融信阿尔法实验室冷风,转载请注明出处。
安装完Arduino IDE之后,还需要Teensy芯片的SDK支持库,支持库可以从如下地址获取Teensyduino: Download and Install Teensy support into the Arduino IDE。安装时需要选择Arduino IDE的安装路径,安装完成以后,还需要选择相应的开发板,我们这里应该选择Teensy2.0如图4所示,至此整体开发环境就搭建完成了。


图4
从BackTrack提取攻击代码

在BackTrack中提供了Teensy的完整攻击实例,针对一般情况的测试与使用,是足够的,下面介绍一下攻击代码的提取方法。进入BackTrack5后进入到/pentest/exploits/set目录,如图5所示。


图5

进入目录后执行./set会弹出一个新的菜单,请选择第一项Social-Engineering Attacks如图6所示。


图6
在新的选择项中,选择Arduino-Based-Attack Vector选项(Arduino基础攻击向量)如图7所示。


图7
选择Arduino基础攻击向量后,在新的选择中选择Wscript Http Get Msf Payload如图8所示。


图8

在新的选项中输入一个恶意程序的下载地址,此代码功能为自动去指定的位置下载程序并自动执行。如图9所示。


图9
最后所有的步骤执行完成后,会在reports目录中成一个名为teensy.pde的文件,如图10所示,此文件可以直接导入到Arduino中进行编译。本文版权为天融信阿尔法实验室冷风,转载请注明出处。


图10
攻击代码实现


如上代码从setup开始执行,执行后自动键入tftp下载命令,并执行,最后运行下载的exe文件,omg函数是在开始运行中键入代码执行。关于每个API函数的详细介绍可以参考teensy提供的API手册,这里不再赘述。

攻击效果

代码编译后通过Arduino上传到Teensy芯片,把Teensy插入到电脑USB接口后,会自动打开,运行对话框,键入相应的命令并运行,其效果如图11所示。、


图11

结束语

HID攻击对于大众来说还属于冷门,大众甚至不知道它的存在,防范更是无从谈起,但它的危害却是非常大的,USB设备的普及更是放大了它的邪恶,本文针对HID攻击的方法、原理、实现做了较为详细的描述,希望本文的介绍能让读者对HID攻击有一个更为清晰明了的认识。
--------------结束--------------

好,到此,我继续补充些内容。

1. 冷风这篇文章的实战有个问题就是:USB 这样去模拟键盘操作->下载木马->执行,这个过程是不隐蔽的,很容易被发现。

之前也了解过 NSA 的工具,有个类似这样的,描述如下:
NSA 的另外一个强大的无线间谍工具是水蝮蛇一号(COTTONMOUTH-I)。看起来像是普通的老实优盘,但其实是一个小型间谍电脑。目录上说它可以创建“无线桥接网络接入到目标网络中,还可以向目标电脑上传破坏软件。”
由于没接触过 NSA 这个工具,也不知道这个过程能否隐蔽,但是可以肯定的是 USB 设备存在这种安全缺陷,这种缺陷是 USB 的过于开放性导致,从冷风的实战经验来看:任何人都可以用 Teensy 芯片打造一个邪恶的U盘出来。

2. 至于更多扩展功能,冷风给我说:
这个设备其实可以是一个 USB 集线器,把一个 USB 接口转换为两个,一个连接 U 盘,其中一个连接 USB 3G 网卡,或者任何 USB 设备。所以一个 USB 接口,可以转为多个接口,然后连接不同的攻击设备,很多想象空间。
很多时候,站在黑客角度去上去看待一些东西是很不错的,大多人太容易就忽视一个新技巧带来的实战意义,这点真不可取。

待 Black Hat 大会公布 BadUSB 技术细节后,我再来更新。
3#
有关回应  16级独孤 | 2021-6-1 08:39:49
先说,这个问题可能不靠谱,另外,英文原文没有找到,Google上搜索badUsb没有有用的信息,不排除国内翻译人员理解有误。

截止目前为止(20140803 21:13)有很多回答都提到了刷固件的问题,但如果完全按照链接给出的提示信息来看,各位理解可能有问题。因为链接里给的是“控制器”固件,而并非设备固件,虽然此处很值得怀疑,但控制器固件和设备固件是完全两种东西,前者位于主机上,后者位于设备上。当然,我觉得是国内翻译人员翻译有问题。

然后给文章找bug先:

第一个错误:以我目前了解到的,还没有什么太简单的方法去刷主机控制器(Host Controller)的固件,比如EHCI、UHCI这些。但文章翻译似乎混淆了主机控制器和设备固件(Device Firmware)的区别,设备确实可以刷固件,并且这种东西早存在。

第二个错误:刷固件困难很大,实际上U盘的固件容量并不大,甚至是很小,要把一个U盘刷成一个网卡,几乎是一个不可能的事情,网卡固件的软件规模远远大于U盘,并且没有天线怎么办?

第三个错误:设备无法向操纵主机的行为,设备可以干扰主机的行为,但要想直接运行固件里的代码,还需要主机端的授权和配合,实际上这很难。

再说这个漏洞本身,如果是指网卡可以伪装成U盘这种方式,这早就存在,这不是一个技术问题,这就像我制造一个假的ATM取款机诱骗别人插入银行卡一样,这不能算是一个设备的安全漏洞。这就像警告人们在火车上不要随便吃别人给的东西一样,你怎么知道这个东西是无害的?

最后回答题主的疑惑,美帝真的站在食物链顶端吗?这个难说,但就这个事情来说,我觉得国内厂商也许早就想到了,也早就做到了。

至于安全方面的担心,这个暂时还不用考虑太多,至少目前的设备可编程能力不强,因为成本限制没有厂商会植入太强大的硬件,只要注意不要随便用来源不明的设备即可。如果在公共场合使用电脑,留意USB口上(前置、后置、内置)是否有可疑设备即可。当然,不排除未来有恶意的厂商在U盘/USB键鼠/USB网卡上植入硬件后门方法,并且这种后门在有些时候可以不被主机检测到,按问题是,如果真有厂商敢这么做,那真砸自己的生意了。

不要吃陌生人给的食物,同样地,不要使用陌生人给的设备。

就这样。

补充: @余弦 提到了使用HID模拟设备攻击主机的方法,实际上我觉得这种方法倒不如模拟CDC设备攻击更容易,但CDC规范太庞大,小设备能否容纳下CDC这样庞大的协议栈也是一个问题。另外,嵌入式系统里能模拟USB设备的东西太多了,我见过的有模拟U盘的,模拟键盘鼠标打印机的,还有模拟网络设备的等等,这些东西早就存在了,如果说有漏洞,那么可以说十年前这种东西就已经存在了。我自己就写过这类驱动,买一个支持USBOTG的开发板加上一套嵌入式开发组件就可以做出来这种设备,如何缩小设备可能是个麻烦事,但也绝对不会是一件无法达成的事情。

我只说说 @余弦 说的方法中的一些问题:

1、要把设备接到目标设备上,不管是欺骗手段还是别的什么手段,这是最大的障碍。实际上如果攻击者能接触到目标设备,那么完全可以不用这么麻烦的方法,一个U盘系统就可以全搞定了,如果有物理手段直接接触设备,那么其余的手段都是不必要的。大部分黑客技术都致力于研究非直接接触的攻击。

2、模拟HID设备实际上是要发送一组按键,触发诸如下载文件并运行等功能,这个过程很容易被用户看到,因为用户会发现计算机自己在执行一组操作,并且这些操作都是前台可见的,如果设备上有防火墙等工具,拦截并不困难,而模拟HID的设备要想侦查到防火墙杀毒软件则十分困难。

3、模拟HID不如模拟CDC(网络、通信设备)更容易,伪装成网络设备,可以监听、盗取用户的网络通信记录、使用ARP重定向用户通信,威胁度远远高于HID设备。

4、HID请求包极其简单(一个report才8个字节),很难攻击到主机,但模拟网络设备可以攻击目标主机的网络协议栈,攻击效果更佳。

所以回归我的观点,不要轻易使用陌生人的设备、不要让陌生人接触设备是一个大前提,物理隔离是保证安全的第一要素,如果别人能轻易接触到敏感主机,那么任何安全防护软件、硬件都会失去意义。顺便提一句:震网病毒就是通过U盘传播的,传播的原因就是工作人员把U盘同时在安全设备上和私人设备上使用(在私人设备上感染病毒,在安全设备上传播),管住人比管好设备更重要。
4#
有关回应  16级独孤 | 2021-6-1 08:39:50
13年经验的嵌入式工程师来回答,制造这种攻击U盘,是分分钟的事。

唯一的问题,是如何将U盘插到别人电脑上。
5#
有关回应  16级独孤 | 2021-6-1 08:39:51
BadUSB漏洞:该漏洞是利用将恶意代码存放在USB设备控制器的固件存储区,而不是存放在其它可以通过USB接口进行读取的存储区域,比如Flash等,这样,杀毒软件或者普通的格式化操作是清除不掉该代码的。在USB设备设计阶段,利用一种特殊的方法将恶意代码植入USB设备控制器固件,从而使USB设备在接入PC等设备时,可以欺骗PC OS,从而达到某些目的。介绍该漏洞的文章内容源于美国网络电子杂志WIRED(http://www.wired.com)于14年7月31日刊载的一篇文章:Why the Security of USB Is Fundamentally Broke。这里需要说明的是WIRED杂志是美国著名的网络电子类杂志,反映电脑技术应用于现代和未来人类生活的各个方面。每一期的WIRED杂志,都扫描商业、科学、娱乐、教育、文化的未来,揭示技术如何改变我们生活的惊人故事。无论是科技、商业、新媒体、艺术和文化、环境、最新产品,WIRED都一直站在报道的最前沿。也就是说,该消息并非来自传统的安全漏洞研究评估组织或学术期刊。根据原文(附后),有如下信息:
1.      两位攻击者Nohl和Lell,花费了数月时间对某一USB设备的控制器固件进行了逆向工程。注意,该USB设备(应该指USB通信芯片)具有控制芯片(controller chip)。他们发现该USB设备的固件可以被重编程以植入攻击代码(具体而言,这是指该设备的固件,能够在注入攻击代码后,重新刷入该设备)。
2.      并没有任何厂家或权威组织确认这一漏洞。Nohl和Lell曾联系一家台湾USB设备制造商(具体名称并未被透露)提出了安全警告,该厂商反复否认了该攻击的可能性。而WIRED联系了非盈利组织USB Implementers Forum,该组织的发言人就此的回答较为程式化,即人们在使用USB设备时,始终都应该确认设备来源的可信性。
3.      该文及相关文档在细节上比较晦涩,并没有更多的信息。
以下是针对该文章所描述的攻击对USB安全性的分析:
1. 绝大多数的USB设备控制器是ASIC的,即这些控制器是高度定制的,并无成为其他设备的扩展能力,更无执行其他代码的能力。根据原文,攻击需要修改USB设备类型,而标记USB设备类型和多种信息的USB endpoints在绝大多数情况下是固化在设备里的,因为这些信息不会需要更改。
而由于绝大多数USB设备控制器是ASIC的,这使得极少的设备有被感染的可能。鉴于厂商对于成本的敏感,使得他们制造的设备尽可能的精简,不具备运行恶意代码的条件,换句话说,即使你感染了某些设备,只可能是被感染的设备无法运行,而不是运行恶意代码。而所谓的USB控制器固件,绝大多数是针对逻辑电路的配置文件,即使被篡改或破坏,也只能是使设备无法运行。极少有厂商会生产通用目的的USB控制器。
绝大多数USB设备是不可通过固件升级/重编程进行改变的,这样会使控制器非常昂贵。事实上,绝大多数USB设备控制器根本不支持重编程。很多ASIC没有MCU核而完全依靠逻辑电路,这使得此类攻击完全不可实现。
2. 攻击的前提是,对于设备固件的逆向工程。首先,不同的设备不同的厂商,由于设备结构的不同,固件必然千差万别,不存在可以进行“通吃”感染的恶意代码,而大多数ASIC都是使用定制的MCU内核,根本就没有对外的寄存器/编程指南,逆向工程无从下手;其次制造商通常非常注意保护设备固件,因为其中通常含有敏感信息,这些相关内容从不公开;最后,制造商会在控制器运行固件时检验固件的有效性,也即,制造商通常会对固件签名并核对。这些使得可能的攻击只是有可能在极少的一部分设备上开展。
3. 即使攻击者发现了一个由于某种原因可以通过改变固件而支持其他USB类和Endpoints,并且攻击者成功逆向了固件,攻击者还必须要将篡改后的固件写入设备,USB设备控制器的固件通常是储存于的芯片金属层里,根本就是只读而不可写的;即使固件可写或储存与外部存储,攻击者同样需要制造商提供的特殊命令或专用设备。
4. 根据该文,攻击者的恶意程序位于USB控制器的空间内。USB控制器的固件和PC等系统的BIOS/固件/OS是绝对完全隔离的,且只能运行控制器预定义好的USB命令。一旦涉及到通过USB行为(如键盘鼠标输入等)恶意影响PC等的OS,必然涉及到绕过防火墙和取得系统权限等问题,不可能悄无声息。
但是必须说明,以上的分析,主要是针对于我们实际中所应用的绝大多数USB设备;而该漏洞的利用,根据其原文的描述,是通过支持通用编程开发的USB设备控制器,在成功完成固件的逆向工程后,再成功向USB设备控制器写入固件(可能是直接利用开发工具开发)从而实现的。综上,应有以下判断:
1. 该漏洞几乎不能够被利用来制造可以真正大规模自动复制和传播的类似计算机系统病毒的攻击工具,不能够被大规模应用。
2. 该漏洞的利用场景应为:攻击者制作特制的“USB间谍工具”,利用某种途径使该USB工具接入攻击目标的USB接口,并通过欺骗系统,达到插入攻击目标USB接口后伪装成网卡或键盘等设备的目的,从而获取目标的网络通讯数据,或者通过USB的输入输出设备向PC系统发送指令,安装事先存放在该工具某一位置上的恶意软件,该漏洞的核心价值在于它能够使间谍工具这些USB设备功能下的攻击行为,如果不涉及到在PC上安装软件或开启服务等涉及PC系统的动作,不会被PC杀毒系统检测到,如伪装成网卡等。该场景的必要条件为:利用专门的设备,完成USB间谍工具的制作;插入目标USB接口。
应该说该漏洞并非一个国内某些媒体冠以所谓“灾难性”头衔的漏洞甚至可以说,我们早就处理过类似的问题——实际上,该漏洞完全就可以看作一个高级的难于检测的USB“AUTORUN”。并且,需要指出,该漏洞的实现依赖于特殊硬件,且应用时需要相应特殊场景。

项目评估
传播性
低,自动复制传播的条件十分苛刻,几乎不能自动传播。
对攻击者素质的要求
实行攻击十分简单;但对于不同的攻击目标和攻击目的,有时需要对攻击工具进行较复杂的定制,定制过程对攻击者的素质要求很高,且通常需要相应的通用USB控制设备及外部硬件配合。
危害性                                                                                                                                                                                                      
存放在USB控制器memory中的恶意代码很难被发现,可以避开当前几乎所有的杀软,但是,这些代码的作用范围也限于USB的功能范围内,例如伪装网卡或键鼠等输入输出设备;需要说明的是,由于和PC OS等隔离,使用篡改后的输入输出设备进行恶意软件安装等影响PC  OS的行为实施难度较大,1)需要避开杀软。2)在win7及以上等系统中需要取得相应权限。3)需要避开操作PC设备的使用者。可以视为一个高级的AUTORUN。
6#
有关回应  16级独孤 | 2021-6-1 08:39:52
有吗?
插上,看见鼠标乱动,直接拔掉
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:136515
帖子:27303
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP