【近源攻击】badusb制作

❤️博客主页 iknow181
🔥系列专栏 网络安全、 PythonJavaSEJavaWebCCNP
🎉欢迎大家点赞👍收藏⭐评论✍


在这里插入图片描述

在这篇博客中,我将详细介绍如何从零开始使用 ATtiny85 开发板制作一个 BadUSB。通过这个教程,你将学会如何将 Digispark ATtiny85 开发板变成一个恶意 USB 设备,并模仿橡皮鸭(Rubber Ducky)的功能,执行预定义的脚本。

0x01 badusb介绍

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

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

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

0x02 所需材料

  • USB 版 Attiny85 Digispark 1PCS(从淘宝上购买了一个)
  • Arduino IDE(云端或本地)
  • DPinst64.exe 驱动
  • DigiKeyboard 库(用于模拟键盘输入)
  • Windows 或 Linux 系统

0x03 操作步骤

步骤 1:安装 Arduino IDE

如果你还没有安装 Arduino IDE,可以选择以下两种方式:

  • 本地安装:从 Arduino 官方网站 下载并安装。
  • 云编辑:访问 Arduino Cloud 并创建一个账号,使用在线编辑器。
步骤 2: 下载驱动 DPinst64.exe
步骤 3:安装驱动

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

步骤 4:配置 Arduino IDE

在你安装好 Arduino IDE 之后,需要对其进行配置,以便支持 ATtiny85 开发板。

  1. 打开 Arduino IDE,依次点击 文件 > 首选项
  2. 附加开发板管理器网址 中,添加以下 URL:
https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json

  1. 设置代理

这里有个坑点,最好开启全局代理,并且 Arduino IDE 也设置代理,不然可能会程序包下载不了的问题。

文件>首选项>网络

  1. 然后,点击 工具 > 开发板 > 开发板管理器,搜索 Digistump AVR Boards 并点击 安装

这里我是已经安装好了的页面。

  1. 选择开发板类型

ps: 注意不要用那个 pro(我之前就用的这个 pro,结果发现可以上传但是插入 usb 后不能执行命令。下面图片截的是 用 pro 时截的。之后就改为没有 pro 的。大家体量的看看,流程差不多,就开发板不一样)

  1. 新建一个 Keyboard 示例

选择 DigisparkKeyboard>Keyboard

会跳出这个页面

  1. 选择编程器

工具>编程器>USBtinyISP

这两者的区别:

1. USBtinyISP (ATTinyCore) FAST

  • 适用范围: 适用于运行时钟频率 >= 2 MHz 的 ATtiny 微控制器。
  • 通信速度: 使用较高的通信速度,这样可以更快地编程和烧录程序到微控制器中。
  • 优点: 更快的编程和上传速度,节省时间。
  • 要求: 微控制器需要能够稳定工作在较高的时钟频率下,否则可能会遇到编程错误或失败。

2. USBtinyISP (ATTinyCore) SLOW

  • 适用范围: 适用于新的或运行时钟频率为 1 MHz 的 ATtiny 微控制器。
  • 通信速度: 使用较低的通信速度,这样可以确保更稳定的编程过程。
  • 优点: 适用于时钟频率较低的 ATtiny 微控制器,能够避免由于高速度引起的通信问题。
  • 要求: 适用于较慢的时钟频率,以确保可靠的编程和通信。

3. 总结

  • 选择 FAST 还是 SLOW:
    • 如果你的 ATtiny 微控制器的时钟频率 >= 2 MHz,并且你希望更快的编程速度,可以选择 FAST 选项。
    • 如果你的微控制器运行在较低的时钟频率(例如 1 MHz),或者你遇到编程问题时,建议选择 SLOW 选项,以提高稳定性。
步骤 5:编写 BadUSB 脚本

下面是一段简单的脚本,模仿 USB 键盘输入行为。当 BadUSB 插入电脑时,它会自动打开记事本并输出一些预设信息。

#include "DigiKeyboardBe.h"  // 如果你的库是DigiKeyboardBe

void setup() {
  DigiKeyboard.sendKeyStroke(0);  // 发送一个空按键以唤醒设备
  DigiKeyboard.delay(5000);       // 延迟5秒,确保系统已经完全准备好
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);  // Win + R 打开运行窗口
  DigiKeyboard.delay(500);
  DigiKeyboard.println("notepad");  // 打开记事本
  DigiKeyboard.delay(500);
  DigiKeyboard.println("This is a BadUSB attack!");  // 打印信息
}

void loop() {
  // 空循环,脚本只执行一次
}

步骤 6:编译和上传代码
  1. IDE 编译代码

点击这个验证,会编译代码,看有没有代码报错

出现这些告警信息没事, 这些警告大多是代码风格和整数溢出的问题,通常不会影响程序正常工作。它们提示的是一些宏定义缺少空格,以及大整数被隐式截断成无符号类型。

下面白色字体的是存储空间使用情况

  1. 上传

如果验证无误就可以插入 usb 开发板,进行上传了

注意此时先不要插板

先点击上传按钮,在编译成功后在插板(因为 digispark 需要进行一次热插拔,才会被识别上传成功)

成功后你会在 IDE 窗口中看到 "Upload done" 提示。

步骤 6:测试你的 BadUSB
  1. 将 usb 开发板 插入目标计算机,等待几秒钟。
  2. 你应该看到自动打开的记事本,并输入预设的文本。

0x04 免责说明

本文章仅用于学习、工作与兴趣爱好,并立志为网络安全奉献一份力量,凡是利用本博客相关内容的无良hackers造成的安全事故均与本人无关!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iknow181

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值