从零开始学badusb(1)--初识badusb

BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。HID设备通常指的就是键盘鼠标等与人交互的设备,用户插入BadUSB,就会自动执行预置在固件中的恶意代码。
​ Bad-Usb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。

为什么要学习badusb
怎么说呢,听网上的大佬们讲。。。badusb可以绕过杀毒什么的,反正很厉害…社工利器,想想你在夜黑风高的夜晚,去插别人的机子,插谁谁怀孕.

环境搭建
arduino
提取码:48bu
然后还需要我们去某宝买一个回来,输入badusb就可以找到很多卖家,买一个跟普通usb差不多的,可以以假乱真,不懂的人以为是个usb呢

然后进入arduino需要配置一下
工具->编译器选择USBasp
插上我们的usb
工具->端口选择插入的usb名字,我的叫arduino micro
然后再在
工具->开发板,选择我们对应的usb

打开arduino,新建一个项目,会看到如下代码

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

光看这个可能理解的不够彻底,可以看看arduino的主函数

#include 
int main(void)
{
init();
setup();
for (;;) {
loop();
if (serialEventRun) serialEventRun();
}
return 0;
}

这就是arduino的大框架,分为setup和loop,解释的也很明显,一个是只执行一次,一个是执行很多次,先执行setup里面代码,再执行loop里面的循环
通过一个简单的例子来了解一下大概的命令

#include
void setup() {
  Keyboard.begin();
  delay(3000);
  Keyboard.press(KEY_LEFT_GUI);
  delay(200); 
  Keyboard.print("r");
  delay(200); 
  Keyboard.release(KEY_LEFT_GUI);
  Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);
  delay(200); 
  Keyboard.println("NOTEPAD");
  delay(500);
  Keyboard.println("hacked!!!");
  Keyboard.end();
}
void loop()
{
}

这个例子比较简单,没有loop所以只执行一次

一上来先引用键盘通讯事件的头

#include 

一头一尾可以看到begin和end

Keyboard.begin();//键盘事件开始
Keyboard.end(); //键盘事件结束,在此期间的键盘操作才是有效的

接下来是一个延时操作,因为有时候由于系统的原因可能出现卡顿,如果操作后没有停顿可能造成执行错误,所以推荐延时使用,延时的基本单位是毫秒,这里的3000毫秒就是3秒

 delay(3000);//延时3秒

接下来是一个press命令,该命令作用是按下一个建并且持续按住,一直按倒结束命令为止,而key_leaf_gui就是键盘上的左边的start键,也就是win键

  Keyboard.press(KEY_LEFT_GUI);//按下一个键并持续按住

以下是对应的键
有些比较熟悉的我就没有注释

KEY_LEFT_CTRL
KEY_LEFT_SHIFT
KEY_LEFT_ALT
KEY_LEFT_GUI//win
KEY_RIGHT_CTRL
KEY_RIGHT_SHIFT
KEY_RIGHT_ALT
KEY_RIGHT_GUI//win
KEY_UP_ARROW//上
KEY_DOWN_ARROW//下
KEY_LEFT_ARROW//左
KEY_RIGHT_ARROW//右
KEY_BACKSPACE//回退键,就是+=号右面那个
KEY_TAB
KEY_RETURN//回车键
KEY_ESC
KEY_INSERT//ins键,我的笔记本上是和F12在一起
KEY_DELETE //del键
KEY_PAGE_UP//这个台式机有,我的好像没找到
KEY_PAGE_DOWN//我也没找到
KEY_HOME//home键
KEY_END//end键
KEY_CAPS_LOCK/caps键
KEY_F1
KEY_F2
KEY_F3
KEY_F4
KEY_F5
KEY_F6
KEY_F7
KEY_F8
KEY_F9
KEY_F10
KEY_F11
KEY_F12

大家可以看到,这里面有很多键,但没有看到数字和字母键,那如果我们想要按数字或字母怎么办

 Keyboard.print("r");

这个操作本来是输出一个r出来。但在这里我们和之前的key_leaf_gui合在一起就变成了调出“运行”这个命令,因为上一步的按键是持续的,所以有这个效果

当然我们键也不能按时间长了,也需要释放所以就对应着这个命令,释放某个键

Keyboard.release(KEY_LEFT_GUI);

接下来这个操作不知道大家可以理解吗,按住key_caps_lock,就是切换大小写,因为如果此时目标电脑是中文输入模式,那么之后我们的输入可能会因为中文输入的原因产生问题,所以及时切换为大写就可以解决这个问题了,而windows系统不区分大小写

 Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);

这个跟刚才的print有些不一样,这个输出完了以后还顺便输出回车,这个效果就是在运行里面输入NOTEPAD在回车,不就是开始运行记事本了吗

Keyboard.println("NOTEPAD");

进入记事本输出一个傻傻的话哈哈

 Keyboard.println("hacked!!!");

代码写完了,点一下小勾,是编译的效果,没有错误的话就可以点击→,上传到我们的usb ,上传成功以后这个usb就会自动运行…
因为我在打字,所以没有运行成功,有我人为的干扰
重插一次

从零开始学badusb(1)--初识badusb_第1张图片 一个善良的badusb就做好了,还挺好玩吧

你可能感兴趣的:(从零开始学badusb)