前言
在美剧《黑客军团》中有过这样一个画面,组织成员在警局停车场随机的撒下大量用于钓鱼的U盘,
然后就发生了下面的画面,
然而此时警局的电脑已经被黑,即使断网也已经无济于事了。
这就是一种黑客常用的手段——利用BadUSB攻击
而我今天想要介绍的只是该手段中的其中一种变体,利用了 USB 设备模拟成 HID 设备(Human Interface Device,人机交互设备,比如键盘或鼠标),从而执行代码,进行攻击和数据篡改等操作。下面的图片可以看出它伪装成了人体学输入设备。
当然制作并利用BadUSB干坏事肯定是违法的,所以在这里我只能举个例子:通过插入U盘,让电脑迅速关机。
操作还算简单,可以用来整蛊同学,有兴趣的话大家可以跟着试试看。操作过程中如果存在什么问题,欢迎联系我一起讨论!
正文
这种通过模拟成HID设备的U盘严格来说其实并不是U盘,而是一个套了U盘外壳的树莓派板。需要事先在电脑上进行烧录写入代码,然后才能实现目的。
一些在操作过程遇到的错误,因为来不及截图,所以只能通过口头的方式进行说明
需要准备的材料
- 一块Digispark 树莓派板——网上有卖,大概30¥左右
(大概长这个样子)
提醒一下注意保护开发板,因为它真的很脆,如果没有必要就不要拆开它的外壳看了。
- Arduino IDE程序
- Digispark AVR Board的驱动程序以及编译程序
当然如果你足够有钱(一般不太可能),可以考虑一下USB Rubber Ducky,一个由美国厂家做的现成品。至少我只能自己动手卑微的搓了一个。
正式开始
①首先,我们先进行相关软件的安装,下载Arduino IDE的程序。这里使用的是1.8.3的版本,链接放在下方
https://github.com/arduino/Arduino/archive/refs/tags/1.8.19.zip
或者https://downloads.arduino.cc/arduino-1.8.3-windows.zip
先不要插入BadUSB,因为它可能事先已经烧录了一些代码,会干扰安装的过程。
另外,可能会要求你需要什么编程环境,但我是学计算机的,所以没在这方面卡壳。
在这里我又忍不住想吐槽一下:在计算机科学中,各种软件或者库的版本问题,是导致项目无法正常运行的一大重要因素,不是太新就是太老……
如果你打不开上述的链接,那么大概率是因为github被墙的原因。
如果你想翻墙,或者你也想使用ChatGPT,欢迎来我的小站商铺看看:yiming1234.com
下载完成并打开后应该是这样的一个界面
②然后是安装Digispark板的驱动
驱动链接放在下方
https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip
解压后运行Dpinst64.exe即可(根据自己的操作系统决定)
③附加开发板管理网址
因为Arduino IDE原有的程序,是没有携带Digispark的相关编译程序的,所以需要外部链接引入下载。
如上图所示,点击文件 首选项 在附加开发板管理器网址中输入:http://digistump.com/package_digistump_index.json
这里我想说明一下,我查了一些资料,发现网上清一色的都是用的这个网址。其实这个网址只是为了方便国内的网友不方便翻墙而进行重定向的一个网址,实际指向的是这个:https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
如果这两个链接填入都报错(忘记截报错内容了),自己在服务器上随便搭个网站存入这个json文件,然后引用应该就可以了。(不然我也无能为力了)
④安装相应环境
引入网址后,现在应该就可以搜索到相应的库。点击工具 开发板 开发板管理器
下载Digistump AVR Boards 1.6.7
编写代码
BadUSB也有属于它自己的简洁的代码格式,但导入到开发板中是C语言格式的代码,所以就需要进行转化。我这里用的是一个python的脚本。
在这里需要注意的是,你在网上可能会搜到这样的内容
但需要注意的是,需要结合自己的开发板情况而定。我就试过了,一会儿报错Keyboard.h不存在,一会儿报错HID.h不存在……
如果大家有需要,日后我可以将这个python转换文件做成在线转换网站供大家使用。
下面我们就拿强制关机来举个例子
具体实例
BadUSB Scripts
储存在target.txt中
DELAY 500
GUI r
DELAY 500
STRING cmd
DELAY 500
ENTER
ENTER
DELAY 500
STRING shutdown -s -f -t 0
DELAY 500
ENTER
ENTER
P.S. 多次输入enter为了防止中文输入法导致代码无法输入 延时根据电脑实际响应时长进行适当调整
然后在CMD终端中,cd 到项目文件夹,输入python change.py target.txt finish
就会通过python将target.txt用change.py转换成可供BadUSB执行的代码finish.ino
上传至U盘
成功界面,点击编译,显示编译完成
然后就只需点击右侧的上传按钮,等待交互框显示请在60s内插入开发板,然后插入BadUSB等待上传成功即可。
上传后需立刻拔出U盘,因为BadUSB已经制作完成,其中的代码会被立刻执行,然后你的电脑就马上关机了……
一些说明
这样,你就可以以此类推,将badusb scripts换做其他的内容,或是借用其他的库(比如说控制鼠标的mouse.h),来实现你的伟大抱负。
要知道通过BadUSB进行的黑客攻击远比你想象的要快的多,因为攻击代码已经被事先编码然后通过机器执行,远超在屏幕前敲代码的程序员。
试想一下,你只是插了个U盘,就相当于在1s内就有个超级黑客坐在了你的电脑前,打开了命令终端或是关闭了防火墙,破解了你的密码,通过ssh ftp等远程文件传输协议,复制 修改了你的文件……
尾声
在现如今的时代,这种攻击手段用于钓鱼到不太可能。在路上掉落U盘的概率本来就微乎其微,又有多少人会费尽心思去弯腰捡起然后去插到电脑上查看。
然而如果不是专业的程序员,这种攻击手段的成功率往往还挺高的。
所以,请大家引以为戒,日后涨个心眼。
部分图片来自网络 转载请注明出处
开发板管理器没有Digistump AVR Boards,版本2.3.3,怎么办???
我也不清楚哎,太久之前写的了
我用的开发板网址https://gitee.com/scriptmonkey/package_digistump_index/raw/master/package_digistump_index.json