序言
随着“网络强国战略”的实施,越来越多的企业着重网络安全的建设,企业在维护企业网络安全上煞费苦心,开发人员定期的进行安全开发培训,尽可能的减少在软件开发时期漏洞的产生,还通过添加硬件防火墙,入侵检测系统、防御系统等安全设备防御外部对企业的威胁,这些有效的手段即增强了企业网络的安全性,但是也导致现在的Web渗透测试难度越发提高。即使代码层面存在着高风险漏洞,但是由于安全设备的介入,仍给测试人员一头重击,导致了『无从下手』的尴尬处地。如果需要进一步的对目标进行安全检测,便只能在其它方面进行安全测试,比如社工攻击测试。本文会介绍Web攻击以外的一种攻击测试手法,社工攻击中的badusb攻击。
简介
社工攻击:全称社会工程学攻击,主要通过心理弱点、本能反应、好奇心、信任、贪婪等一些心理陷阱进行的诸如欺骗、伤害、信息盗取、利益谋取的行为。以信息泄露事件为例。信息泄露的原因不只是由于网络入侵方面,还有另外一种威胁,这种威胁不是技术层面导致的,而是来自可能得企业人为泄露,如误操作,被恶意攻击人员,钓鱼等等。而这种不属于技术层面的攻击便就是社工攻击。
BadUSB是利用伪造HID设备执行攻击载荷的一种攻击方式。HID设备通常指的就是键盘鼠标等与人交互的设备,用户插入BadUSB,就会自动执行预置在固件中的恶意代码,如下载服务器上的恶意文件,执行恶意操作等。由于恶意代码内置于设备初始化固件中,而不是通过autorun.inf等媒体自动播放文件进行控制,因此无法通过禁用媒体自动播放进行防御,杀毒软件更是无法检测设备固件中的恶意代码。
本文会详细的介绍下BadUSB的一些原理,代码详解,以及制作方法,先看一下固件中的代码形式,一个简单的小demo,执行结果为打开cmd命令框。
#include void setup() {
Keyboard.begin();delay(1000);Keyboard.press(KEY_LEFT_GUI);Keyboard.press('r');delay(500);Keyboard.release(KEY_LEFT_GUI);Keyboard.release('r');delay(500);Keyboard.println("CMD");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);Keyboard.end();}void loop(){}
讲解这个小demo代码原理。
#include void setup() {
}void loop()//循环{}
首先这一部分代码为固定代码,主要是导入键值库,然后分void setup,void loop两部分,分别代表执行一次,以及循环执行。
Keyboard.begin();Keyboard.press(KEY_LEFT_GUI);Keyboard.press('r');delay(500);Keyboard.release(KEY_LEFT_GUI);Keyboard.release('r');delay(500);Keyboard.println("CMD");Keyboard.press(KEY_RETURN);Keyboard.release(KEY_RETURN);Keyboard.end();
这一部分只要为执行代码,首先介绍下再第一部分引入的keyboard库,常见的API如下:
Keybo