首页 > 编程知识 正文

arduinodroid教程,badusb入侵控制代码

时间:2023-05-04 03:50:15 阅读:28672 作者:362

BadUSB BadUSB是由arsten Nohl和Jakob Lell共同发现的,是在2014年BlackHat安全大会上公布的USB漏洞。 早期的u盘病毒在普通的u盘中加入autorun.inf可以自行启动程序的小脚本,通过自动运行几个程序达到木马入侵和病毒攻击的效果,但由于时代的发展,这里之后,微软发现了这个安全漏洞,之后的windows系统版本也将是默认的吧。 由于autorun关闭,这种攻击方法看起来已经非常鸡肋,在那里又出现了另一个USB攻击思路。 USB设备芯片往往由闪存负责存储数据,他的作用就像我们计算机的硬盘,在这个闪存中保留了一部分用于存储设备固件。 这种新思路是将恶意代码直接嵌入固件中。 这样,BadUSB就能在不被软件杀害或被技能淘汰的情况下实践这一观点。

初始的BadUSB实现方式为USB RUBBER DUCKY

简称USB胶鸭,是第一个按键注入工具,在嵌入式开发板上实现,然后发展成为完全成熟的商业化按键注入攻击平台。 用同样的原理,把USB设备模拟成键盘,让计算机识别出它是键盘,然后用脚本模拟按钮进行攻击,成为商业化的产品。

缺点:通用性差,需要定制,而且根据我的淘宝调查,他的价格比之后的两者都要高很多。 下定决心pass TEENSY

攻击者在定制攻击设备时,在USB设备中放入攻击芯片。 该攻击芯片是一个非常小、功能完善的单片机开发系统Teensy。 TEENSY允许您模拟键盘和鼠标。 细心的狗插入此定制USB设备后,计算机可以将其识别为键盘,并利用设备中的微处理器、存储空间和编程攻击代码向主机发送控制命令。 这样,无论自动播放是打开还是关闭,都可以完全控制主机,存在缺点。 需要购买定制芯片,芯片中的程序不是开源的。 也可以用arduino IDE开发程序,但我不太喜欢这个。 因为,我是一个凡事都追求开源的人,后来轮到我最喜欢arduino了。 比USB RUBBER DUCKY更便宜、更通用,比TEENSY更开源

首先,BadUSB的基本实现方法是将一块arduino开发板安装在一个键盘设备上控制受害设备,因此选择支持USB直接通信的开发板,用arduino nano等将串行端口变更为CH340G等使用这些转换芯片的开发板需要安装驱动程序才能被新设备识别。 (在入侵和攻击受害者电脑的时候,你不能指望受害者自己安装并移动自己的漏洞。 )另外,今后使用的头文件仅支持具有直接USB通信能力的开发板。

所以我在这里用了Arduino micro开发板。 首先他足够小巧,其次他使用ATmega32U4作为核心芯片,所以他直接支持USB通信。 有关详细信息,请自行在互联网上查阅有关ATmega32U4的芯片手册

我在这里放了三个开发板。 其中一个和袋子里的是我们需要的micro开发板。 而且,插入杜邦线的是Arduino Nano开发板。 这两个开发板外观非常相似,但差异很大。 首先,Arduino Nano使用的USB接口是老式的Mini USB接口。 也就是说,它是早期的旧式Mini USB接口,而Micro现在使用与安卓设备通用的mirco USB接口数据线。 nano使用的芯片一般来说,ATmega328P和ATmega168都不支持直接USB通信,需要将串行端口转换为USB。 也就是说,在刚才提到的情况下,Micro使用的是ATmega32U4芯片,他直接支持USB通信,但是32U4的价格比328P和168稍高,所以开发板当然也有点贵。 除此之外,他们最大的外观差异之一是北约比微软大很多。 北约放在u盘盒里完美伪装基本上是不可能的。

我的每个开发板大约是17RMB的封装。 如果您认为需要大量但零售价格过高,请考虑直接购买ATmega32U4芯片直接自行DIY Arduino微开发板。 他是完全开源的。 开源万岁。 从官网下载原理图和PCB图拿到复印板上,然后烧bootloader就可以了

Arduino微软官网:

安卓微软

请注意,官方网站只有Eagle格式的,没有AD格式的

谈完硬件,谈谈软件的开发环境吧。 开发环境当然可以直接从官网下载Arduino IDE所需的版本。 我在这里使用linux版

这里要说明的是,在Linux上下载tar.gz压缩包后,解压缩后直接打开arduino编写代码就可以了。 请不要在install.sh上进行不必要的安装。 另外,在kali下用install.sh安装后,使用后发现无法正常上传程序,无法识别开发板。 必须在复位之后。 请不要担心

打开IDE后,如果开发板没有问题,请在工具=端口栏中选中/dev/ttyacm0(arduinomicro ) (在windows上为comx )复选框。 例如,我有一个关于连接开发板的问题

题或者没有连接开发板的话则只有/dev/ttyS0(windows下为COM1,COM2),开发板一栏默认会被选为arduino micro如果没被选中请自行选中
然后就可以开始写代码了
如果在linux下出现IDE中无法选择端口的情况,到/dev目录下,找到你的开发板连接电脑后对应的文件,然后sudo chmod 777 /dev/‘你的开发板对应的文件,一个叫tty什么什么的文件
如何查看是哪个文件,你可以在插开发板前ls看一下,插上后再ls看一下,比对插上后比插前多了哪个文件,多出来的那个就是

我这里简单写一个在windows下运行,打开cmd窗口后运行tree指令的代码

#include <Keyboard.h>void setup() { // put your setup code here, to run once: //初始化键盘 Keyboard.begin(); //按下键盘左边的win建 Keyboard.press(KEY_LEFT_GUI); //延时让系统反应 delay(500); //按下r键 Keyboard.press('r'); delay(100); //释放两个按键 Keyboard.releaseAll(); //开启大写防止中文输入法 Keyboard.press(KEY_CAPS_LOCK); Keyboard.release(KEY_CAPS_LOCK); delay(200); //输入CMD Keyboard.println("CMD"); delay(300); //回车 Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); //按下tree指令 Keyboard.println("TREE"); delay(300); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN);}void loop() { // put your main code here, to run repeatedly:}

其中setup函数实在设备被加载后只运行一次的函数,可以在此函数内将需要的全局变量进行初始化,loop函数则是设备被加载后,会持续循环执行的函数
keyboard.h头文件中的函数就是我们所所需要用来实现键盘交互的头文件,他只能在支持USB通讯的开发板下编译,如果在nano之类不直接支持USB通讯的开发板下编译,则会报错
就会出现这种明明已经包含了keyboard.h头文件,却还提示没有包含的错误

程序编译上传成功后插入windows系统USB口中代码成功执行,但经过反复验证发现在老式win7系统下驱动不被识别,win10全部识别,并且被识别为一个键盘设备,不过win7现在在商业环境中基本上被淘汰,这个问题暂时就不去管他了,另外如果想要将开发板直接伪装成一个U盘的话,可以上淘宝买OTG转接头,要注意的是开发板上的接口是母头,所以OTG转换头上就是两个公头,一个公头插开发板的母头,另一个公头外露插电脑
例如:
这种,也可以自己买usb公头然后自己用电烙铁DIY一个,就像我在Nano开发板上的那种,要注意的是要买micro USB接口的

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。