看了 @时国怀 的回答,有不够严谨的地方(可能是站在开发者角度),虽然我也相信原文翻译有些错误、媒体炒作过于夸张,我下面会站在黑客角度去回答这个问题。
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 技术细节后,我再来更新。 |