前言:

  USB设备使用方便,但也可能被用来携带恶意软件、病毒,感染计算机系统。通过禁用自动播放功能、杀毒软件查杀、不定期的对设备进行格式化等操作可以确保它是干净的。但它存在的安全问题要比我们想象的更深,问题不仅在于它携带了什么,还在于通过它的工作方式就能产生安全隐患。

  USB隐藏的危险:

  安全研究员Karsten Nohl 和Jakob Lell 发现了从根本上颠覆USB安全性的方法。他们创建的恶意软件,暂且称为BadUSB,可以被安装到USB设备中完全控制PC,无形中修改内存中的文件,甚至重定向用户的互联网流量。由于BadUSB不是存储在USB设备的闪存中,而在于可以控制其基本功能的固件中,攻击代码在设备内存被用户删除后仍可以隐藏很久。两位研究者表示修复这一问题并不容易,除非禁止USB设备的传播或将USB端口封起来。

  ‘IN THIS NEW WAY OF THINKING, YOU HAVE TO CONSIDER A USB INFECTED AND THROW IT AWAY AS SOON AS IT TOUCHES A NON-TRUSTED COMPUTER.’

  Nohl和Lell并不是第一个之处USB设备可以存储和传播恶意软件的人,但他们并没有止步于仅仅将自己的代码复制到USB设备的内存中。他们花了几个月的时间对USB的固件进行逆向工程,而固件决定着USB的基本通信功能——控制芯片让设备能和PC通信,用户可以移动和修改文件。他们最重要的发现是USB设备中的固件可以被二次编程已隐藏攻击代码。你可以把它给那些做安全研究的人,他们会扫描并删除一些文件,然后告诉你设备室"干净"的。但除非他们具备逆向工程的能力并对固件进行分析,前面描述的"清洗"过程根本不会碰到BadUSB。 

  所有形式的有固件的的USB设备,从键盘到鼠标再到智能手机都可以被重新编程。除了常见的USB设备,Android手机连接到PC上同样会遭受攻击,一旦受感染设备连接到PC,BadUSB可以做的事情就像变戏法一样,它可以将安装的软件替换为损坏的或者有后门的版本,甚至还可以模拟USB键盘突然就输入命令,通过键盘能做的都可以做到 —— 基本电脑能做到的一切。 

  该恶意软件也可以悄悄地劫持互联网流量,改变计算机的DNS设置以将流量牵引到它设置的服务器。如果代码用于手机和其他连接到互联网的设备,它还可以扮演中间人,秘密地监听通信。 

  我们大多数人都学会了不要随便运行USB上的可执行文件,但这并不能阻止新的感染方式,即便用户意识到可能会遭受攻击,确认USB设备未被攻击也基本上是不可能的。这些设备并没有"代码签名"的设置—— 确保新加入的代码都有设备制造商不可伪造的签名机制,甚至没有任何可以信的USB固件可以用来对比。

  任何时候将Upan插到电脑上,其固件就会被那台电脑上的恶意软件再编程,U盘的主人很难检测到它。同样的,USB设备也可以悄悄地感染用户的计算机。这其实是双向的,任何人都不可信。  

  BadUSB传播过程中无法被检测到的能力引起了一个疑问:是否能安全地使用USB设备。当我们把USB端口给人访问时,人们可以再上面做点坏事,但现在又有了一种新的可能的方向,这意味着一个受感染的USB设备是一个非常严重的实际问题。

  Blaze推测USB攻击实际上早已成为NSA的普遍做法,他提到了早些时候斯诺登泄露的被称为Cottonmouth的间谍设备。该设备据说隐藏在一个USB外设中,为秘密地安装恶意软件到目标机器上收集NSA需要的信息。

  THE ALTERNATIVE IS TO TREAT USB DEVICES LIKE HYPODERMIC NEEDLES. [皮下注射器的针]

  Nohl说他们将他们的研究告知过一个台湾的USB设备制造商,一系列的邮件交流后,该公司不承认这种攻击存在的可能[换做是我估计也不愿意承认呢]。Nohl认为短期内无法通过技术手段给该问题打上补丁,为避免该问题,你只能不让USB设备和电脑相连[谁知道还有没其他办法绕过呢,USB终归是要拿来用的]。信息安全的本质问题是信任,但在这种情况下一切都变得不可信。当USB接触到不受信的电脑后,你最好是当它已经被感染了,并将它扔了[太严重了吧!不过政府部门及一些信息比较敏感的地方还是需要提高警惕啊]。这两名研究者将在今年的黑帽大会上公布他们的发现,但还没有决定发行哪一个BadUSB设备攻击,因为这可能会导致USB的恶意固件会快速传播。

  要实行一项新的安全模式,首先需要让设备制造商相信威胁真的存在,同时用户也需要提高自己的安全意识,因为说不定哪一天我们就碰到了一个这样的BadUSB!

参考:

  http://www.wired.com/2014/07/usb-security/

  https://www.blackhat.com/us-14/briefings.html#badusb-on-accessories-that-turn-evil

你的USB设备还安全吗?USB的安全性已从根本上被打破!的更多相关文章

  1. USB 设备类协议入门【转】

    本文转载自:http://www.cnblogs.com/xidongs/archive/2011/09/26/2191616.html 一.应用场合 USB HID类是比较大的一个类,HID类设备属 ...

  2. USB设备的基本概念

    在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的.一个USB设备由3个功能模块组成:USB总线接口.USB逻辑设 ...

  3. KVM客户机使用主机USB设备

    有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持 -usbdevice devname 为客户机增加usb设备,devn ...

  4. Linux下usb设备驱动详解

    USB驱动分为两块,一块是USB的bus驱动,这个东西,Linux内核已经做好了,我们可以不管,我们只需要了解它的功能.形象的说,USB的bus驱动相当于铺出一条路来,让所有的信息都可以通过这条USB ...

  5. kvm云主机使用宿主机usb设备

    有些时候KVM客户机还是要使用USB设备,比如USB密钥等 KVM命令行参数 -usb 打开usb驱动程序,启动客户机usb支持-usbdevice devname 为客户机增加usb设备,devna ...

  6. USB设备驱动程序学习笔记(一)

    现象:把USB设备接到PC1. 右下角弹出"发现android phone"2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能知道 ...

  7. USB设备---URB请求块

    1.urb 结构体 USB 请求块(USB request block,urb)是USB 设备驱动中用来描述与USB 设备通信所用的基本载体和核心数据结构,非常类似于网络设备驱动中的sk_buff 结 ...

  8. USB设备驱动总结

    现象:把USB设备接到PC        (韦老师总结) 1. 右下角弹出"发现android phone" 2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有" ...

  9. 12、USB设备驱动程序

    linux-3.4.2\driver\hid\usbhid\usbmouse.c 内核只带USB驱动程序 (hub和usb是两个不同的设备,hub在内核上电的过程中在usb_hub_init函数中调用 ...

随机推荐

  1. js只能输入数字、汉字、字母等正则匹配

    只能输英文:<input type="text" onkeyup="value=value.replace(/[^a-zA-Z]/g,'')"> 只 ...

  2. 【开源】OSharp框架解说系列(4):架构分层及IoC

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  3. ASP.NET MVC之下拉框绑定四种方式(十)

    前言 上两节我们讲了文件上传的问题,关于这个上传的问题还未结束,我也在花时间做做分割大文件处理以及显示进度的问题,到时完成的话再发表,为了不耽误学习MVC其他内容的计划,我们今天开始好好讲讲关于MVC ...

  4. 百度sdk定位不成功,关闭定位

    公司项目有用到百度地图,登录的时候需要定位一次,获取登录的地址信息,在手机无法连接外网的情况,也就无法访问百度定位服务器的时候,定位的回调函数要30秒以上才能返回结果,于是去仔细查百度api,发现没有 ...

  5. Rehosting the Workflow Designer

    官方文档:https://msdn.microsoft.com/en-us/library/dd489451(v=vs.110).aspx The Windows Workflow Designer ...

  6. angular开发者吐槽react+redux的复杂:“一个demo证明你的开发效率低下”

    曾经看到一篇文章,写的是jquery开发者吐槽angular的复杂.作为一个angular开发者,我来吐槽一下react+redux的复杂. 例子 为了让大家看得舒服,我用最简单的一个demo来展示r ...

  7. android studio 导入有so 文件的项目是,程序崩溃的可能原因

    被这玩意坑了2个多小时. ----------------------------------- 由于 android studio 在建项目时,不会自动识别 so 文件,所以在含有so 文件的项目中 ...

  8. 利用SimpleExpandableListAdapter为ExpandableListActivity提供数据

    首先MainActivity继承自ExpandableListActivity,其中的声明如下: setContentView(R.layout.expandmain); //定义一个:List,该L ...

  9. 2.Java基础之Runtime对象

    毕向东老师Java基础学习笔记——Runtime对象 今天学习Java中的Runtime对象后,感觉这个对象对我们主要有以下几点用处. 1.使用java代码打开本地可执行文件,比如打开一个计算器. 2 ...

  10. springmvc4环境简单搭建和定时任务

    之前复制粘贴创建了几个ssm的项目,然而回头让自己写的时候还是一头雾水,究其原因是spring的陌生.仅仅是写过几个helloworld而已.而且是照着写.我都不知道springmvc到底需要多少ja ...