zoukankan      html  css  js  c++  java
  • 如何把U盘变成黑客工具攻击电脑

    U盘怎么可能随便接入电脑就盗取数据?

    有时候上网会看到有人说用一个U盘接入电脑自动盗取信息的,当时想想U盘怎么可能盗取数据?第一反应就是不可能。

    因为电脑作为USB Host,在USB Mass storage类型的设备中,USB指令的工作流大体是HOST->SLAVE->HOST,所以如果电脑不给相应的指令操作,数据不可能流向U盘。

    当然有些会想到以前的U盘autorun病毒,在当今社会,在系统到防病毒安全软件的各种保护下,autorun病毒几乎毫无用武之地,所以也不难得出前面“不可能”的反应。

            但是黑客往往就是在不可能中创造可能的,因此怎么才能让U盘主动发指令给PC,命令PC把数据传向U盘呢?其实这个问题如果深入其中会发现毫无解决方案,因此我们的思维需要跳出这个问题,把问题转换为:

    “如何让PC自动处理一个USB设备主动发的指令?”

            新的问题可以很容易得到答案,USB设备非常多,如USB网卡,USB鼠标键盘,USB麦克风,USB摄像头等等,这些设备都会主动发送数据给PC,而其中有部分需要打开某一个“开关”才能主动发送数据,如USB摄像头,打开后就可以不停发送视频流给PC。如USB网卡,驱动适配后一旦连接上网络可不停在整个网络中广播数据,但这些都或多或少有一些操作上的限制,因为需要手动参与,并且上层的PC软件负责接收数据后并没有很好的做出“入侵”相关的动作(当然USB网卡可以模拟自动发送网络命令,只需在网络中存在相应的漏洞,网络漏洞说到底也是因为“正常的指令”被PC处理并用于非正常的行为)。

            综上,既然已经有了这么多USB设备能够被PC自动处理,那么就可以实现一个更易于攻击的工具,更自动化的USB设备。

            最常见的就是USB鼠标键盘设备,因为这一类设备一旦接入PC,随时随地都可以触发操作,不需要手动参与,且操作系统自动接收并直接反馈操作(除非PC系统不支持鼠标键盘,那是真的需要被维修),很容易迷惑用户,比如我们假设一下:

    1)一接入USB设备,自动发送WIN+R按键,

    2)在短时间内,自动发送字符按键模拟输入cmd.exe,

    3)再模拟输入net user add 指令,即可创建用户,进而远程连接

    4)利用mshta 执行js脚本,可下载维(MU)护(MA)工具包,再对PC进行远程维(KONG)护(ZHI).等等。。

    如何让一个U盘一接入就能够盗取数据?

    问题回到原点,现在我们有了前面USB鼠标键盘的方案,事情好办多了,USB设备通过主控的固件开发可以实现同时具备Mass storage类型和HID类型,只要两者合二为一,如果没有U盘的主控,可使用“HUB+U盘+普通USB主控芯片”实现,再把U盘低价卖出去,那么....

    那么问题来了,如何防止此类USB设备的攻击?

    从整体上讲,并没有太好的解决办法,因为USB鼠标键盘几乎可随意接入一台PC并直接操作,除非哪天PC系统和USB硬件双向支持可信计算认证,当然还要保证厂商对此支持并且是讲信用的厂商,总之来说,目前10年甚至20年是不可能的。

     现阶段我们假设设备的VID和PID是可信且可识别的(当然残酷的现实是VID和PID可被MPTOOL随意设置),针对不同类型的用户,有以下的建议:

    1)个人用户:

    在日常中,很多人对电脑突然弹出一个一闪而过的小窗口并不会在意,一旦有Win+R的运行窗口,几乎想做什么都可以做到,同样PC中一些常用软件都会开启很多快捷键,可钻的空子非常多(如QQ: 直接模拟鼠标键盘操作自动添加QQ好友,哪天看到QQ处于离开状态,就自动开启QQ远程...)。

    所以,当我们在拿到一个陌生的USB设备时,尽量不要随意接入PC,如确实有必要,就接入虚拟机,把需要的数据拷出或拷入,再拔掉即可。当然一旦确认有异常现象,立即停止使用。

    这种攻击防不胜防,当然我相信最重要的是

    先确认自己是否能够承受被攻击的代价(装甲值最高的莫过于银行没存款,电脑没有女友照片的人啦),

    如果不能承受,那把自己的安全意识培养起来吧。。。

    网上也有很多免费的(可能带广告或病毒)USB设备管理软件。

    2)企业用户:

    安装内网安全系统(国内只要有钱没有什么解决不了的),对USB端口和USB硬件进行策略管控。

    3)开发者:

    21世纪人类需要掌握的必备技能就是程序开发,因为这类人可以动手做自己想做的事(未来世界万物都会IT化),对于这个问题,简单的是利用系统的设备管理API进行管理控制,实现对USB节点的信息过滤筛选,以及设备的禁用启用。

    4)保密涉密用户

     将USB端口使用环氧树脂水泥胶或其他安全固体胶封死,甚至直接定制没有USB HOST的主板,拆除USB端口等等。

    补充1:

    国外已有黑客开发了(BadUSB),不过是利用了群联主控泄漏的固件源码(C51)进行修改。

    https://www.freebuf.com/articles/terminal/82238.html

    开源代码

    https://github.com/brandonlw/Psychson 

    题外话:群联这颗主控估计快停产了吧,国内找一个可开发的USB主控资源越来越少了,没一定出货量芯片厂商还不配合,所以简单需求建议使用stm32,顺便把单片机也温故起来也许还是不错的,就是价格太高没法做低价产品。

  • 相关阅读:
    07_面向对象(成员变量和局部变量区别、类作为形式参数的问题、匿名对象、封装、private关键字、this关键字、构造方法、成员方法、static关键字、静态变量和成员变量、main方法)_02
    07_面向对象(成员变量和局部变量区别、类作为形式参数的问题、匿名对象、封装、private关键字、this关键字、构造方法、成员方法、static关键字、静态变量和成员变量、main方法)_01
    书单
    06_二维数组【四种格式、打印杨辉三角、Java中参数传递、数据加密案例】、面向对象【对象内存图】
    05_方法(重载)、数组(一维)[数组的初始化、遍历、求最值、逆序、查表]
    04循环结构
    基于视频压缩的实时监控系统
    select 和 epoll 的区别
    CGI 程序编写
    面经获取 20170515
  • 原文地址:https://www.cnblogs.com/caibirdy1985/p/9521341.html
Copyright © 2011-2022 走看看