前言:

  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. Java设计模式之单例模式(Singleton)

    前言: 在总结okHttp的时候,为了管理网络请求使用到了单例模式,晚上实在没啥状态了,静下心来学习总结一下使用频率最高的设计模式单例模式. 单例模式: 单例模式确保某个类只有一个实例,而且自行实例化 ...

  2. JQuery利用sort对DOM元素进行排序

    前言 排序对于我们是再熟悉不过了,在绝大数应用程序中都会有这样一个场景:当我们从服务器端获取一个列表时,在界面上进行渲染,我们可以会依赖于某一个规则来进行排序,当然此时绝大多数会再次与服务器进行交互来 ...

  3. linux内核中的每cpu变量

    一.linux中的每cpu变量 看linux内核代码的时候,会发现大量的per_cpu(name, cpu),get_cpu_var(name)等出现cpu字眼的语句.从语句的意思可以看出是要使用与当 ...

  4. 关于Repository、IUnitOfWork 在领域层和应用服务层之间的代码分布与实现

    本来早就准备总结一下关于Repository.IUnitOfWork之间的联系以及在各层中的分布,直到看到田园里的蟋蟀发表的文章:<DDD 领域驱动设计-谈谈 Repository.IUnitO ...

  5. MVC, MVP, MVVM比较以及区别(上)

    MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式.以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解.现在一边查资料,并结合自己的理解,来谈一下 ...

  6. mysql default unix_timestamp(now())

    按照mssql的创建方式,去创建mysql的默认值时间戳是不能被允许的,例如下面代码: CREATE TABLE USERINFO( CREATETIME INT NOT NULL DEFAULT U ...

  7. [c++] Copy Control

    C++ allows the programmer to define how objects are to be copied, moved, assigned and destroyed. Tog ...

  8. C# 复制一个Word文档的部分或全部内容到另一个Word文档

    C# 复制一个Word文档的部分或全部内容到另一个Word文档 我最近喜欢折腾Office软件相关的东西,想把很多Office软件提供的功能用.NET来实现,如果后期能把它用来开发一点我自己的小应用程 ...

  9. 1Z0-053 争议题目解析502

    1Z0-053 争议题目解析502 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 502.A database is running In ARCHIVBXXMS mode. It ...

  10. Oracle数据块损坏篇之10231内部事件

    实验:某个分区数据块损坏,不完全恢复此分区表数据 背景:数据库没有有效备份,某个分区中有数据块损坏. 要求:最大限度恢复此分区数据. 环境:RHEL 6.4 + Oracle 11.2.0.4 1. ...