解密BadUSB:世界上最邪恶的USB外设

安全 移动安全
在2014年美国黑帽大会上,柏林SRLabs的安全研究人员JakobLell和独立安全研究人员Karsten Nohl展示了他们称为“BadUSB”(按照BadBIOS命名)的攻击方法,这种攻击方法让USB安全和几乎所有和USB相关的设备(包括具有USB端口的电脑)都陷入相当危险的状态。

概述‍‍

[[119511]]

在2014年美国黑帽大会上,柏林SRLabs的安全研究人员JakobLell和独立安全研究人员Karsten Nohl展示了他们称为“BadUSB”(按照BadBIOS命名)的攻击方法,这种攻击方法让USB安全和几乎所有和USB相关的设备(包括具有USB端口的电脑)都陷入相当危险的状态。

USB背景知识‍

‍‍1. USB内部结构‍‍

解密BadUSB:世界上最邪恶的USB外设

注:BadUSB主要依靠USB驱动器的构建方式,USB通常有一个大容量的可重写的内存芯片用于实际的数据存储,以及一个独立的控制器芯片。控制芯片实际上是一个低功耗计算机,并且与你的笔记本电脑或台式机一样,它通过从内存芯片加载基本的引导程序来启动,类似于笔记本电脑的硬盘驱动器包含一个隐藏的主引导记录(MasterBoot Record)。

‍‍2. USB如何识别‍‍

解密BadUSB:世界上最邪恶的USB外设

‍‍3. USB设备的初始化‍‍

解密BadUSB:世界上最邪恶的USB外设

设备可以拥有多个标识(注:一个设备可以被识别为多种类型):‍‍

*一个设备通过一个描述符标明它的功能;

*一个设备可以拥有多个描述符,如果它支持多种设备类别,例如网络摄像头+麦克风;

*设备可以注销,然后再次注册为一个不同的设备;

‍‍可重复编程的外设‍‍

解密BadUSB:世界上最邪恶的USB外设

‍‍USB攻击场景‍‍

‍‍1. 在Windows环境下感染USB,然后再控制Linux机器‍‍

键盘模拟足够用于感染和权限提升(不需要软件漏洞)

解密BadUSB:世界上最邪恶的USB外设

注:在Linux/Unix操作系统,LD_PRELOAD是一个环境变量,可以影响程序的运行时的链接(Runtimelinker),设置在程序运行前优先加载的动态链接库。通过这个环境变量,可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。一方面,我们可以以此功能来使用自己的或是更好的函数(无需别人的源码),而另一方面,我们也可以以向别人的程序注入恶意程序,从而达到那不可告人的罪恶的目的。

‍‍‍‍2. USB设备篡改Windows系统的DNS设置‍‍

‍‍通过“USB上的DHCP”转移网络流量‍‍‍‍

解密BadUSB:世界上最邪恶的USB外设

‍‍意外收获:突破虚拟机‍‍

解密BadUSB:世界上最邪恶的USB外设

‍‍‍‍‍‍‍3. Android转移Windows机器的网络流量‍‍‍‍‍‍‍

“我能借用你的笔记本给手机充电吗?”Android手机是最简单的USB攻击平台。

解密BadUSB:世界上最邪恶的USB外设

注:Ethernet-Over-USB:将USB接口模拟为以太网接口,实现基于Ethernet的网络连接。

Android设备的POC代码下载地址为:

https://srlabs.de/blog/wp-content/uploads/2014/07/BadAndroid-v0.1.zip

‍‍‍4. USB引导扇区病毒‍‍‍

解密BadUSB:世界上最邪恶的USB外设

‍‍‍5. 攻击方式总结‍‍‍

解密BadUSB:世界上最邪恶的USB外设

‍‍防护以及下一步‍‍

‍‍1. 防护对策及缺陷‍‍

解密BadUSB:世界上最邪恶的USB外设

‍‍‍‍2. USB外设的可重复编程也有积极的用途

解密BadUSB:世界上最邪恶的USB外设

‍‍‍‍‍总结‍‍

解密BadUSB:世界上最邪恶的USB外设  

 

以上内容主要源自SRLabs在2014年黑帽子大会上的演讲稿,仅对内容的编排做了调整,原稿的下载地址https://srlabs.de/blog/wp-content/uploads/2014/07/SRLabs-BadUSB-BlackHat-v1.pdf。

花了一周的空余时间翻译的,水平有限,欢迎大家批评指正!

责任编辑:蓝雨泪 来源: FreeBuf
相关推荐

2018-11-06 12:22:18

排序算法代码

2023-07-31 08:59:46

软件FossilSQLite

2013-04-24 09:57:08

Excel微软

2010-09-02 13:21:46

2013-06-09 08:52:50

哈希表

2015-11-25 09:41:05

数据中心

2014-02-11 09:58:19

环保数据中心泰坦

2013-07-09 10:11:41

程序设计大赛程序员

2024-10-14 10:58:13

2024-01-11 09:11:08

数据库SQLite管理

2024-07-15 09:06:51

2013-05-08 09:38:28

InteropNetSDN网络设备供应商

2018-12-04 15:46:53

编程语言Python

2018-07-19 19:07:33

语言编程语言程序

2009-09-11 10:41:36

数据中心

2017-12-04 23:25:24

2009-12-14 16:38:07

自主研发机器人

2019-11-18 15:07:54

编程语言C#

2023-02-28 08:59:47

PythonJavaJavaScript

2013-09-16 11:12:51

编程环境开发
点赞
收藏

51CTO技术栈公众号