如何反打红队BadUSB

admin 2021年4月2日07:31:03评论63 views字数 3434阅读11分26秒阅读模式
如何反打红队BadUSB
前言

        红蓝对抗日益激烈,而红队某些人,甚至都能化个妆玩美人计插BadUSB去拿权限。而蓝队还在被傻乎乎的蒙在鼓里。

        今天教蓝队一个方法反打红队的方法,当红队插入BadUSB之后,蓝队自动拷贝烧录内容到BadUSB...

        实物图:

如何反打红队BadUSB


烧录BadUSB

        BadUSB的话,也是前几年一下大火起来了,网上有很多烧录的文章,其实都是使用arduino进行烧录内容。

        但是arduino也是可以通过命令行参数进行烧录的,具体如下:

C:UsersAdministratorDesktopArduinoarduino_debug.exe --port COM端口 --upload 要烧录的内容文件

        文件路径的话,可以看如下图,当对内容进行保存的时候,给出了详细信息,后缀名为ino,经过笔者用命令行编译试验,路径要为:

C:\xxx\xxx\sketch_apr01asketch_apr01a.ino

        sketch_apr01a为项目文件,而在上层还要有一个sketch_apr01a名字的目录

如何反打红队BadUSB


代码分析流程

        Windows sdk开发中,任何一个窗口都能接收消息并响应。同理 BadUSB或U盘插入或拔出也会有相应的消息与响应。

        用到的消息为:WM_DEVICECHANGE

        (通知应用程序对设备或计算机的硬件配置进行更改,通过WindowProc函数接收消息)

        函数原型如下:

LRESULT CALLBACK WindowProc ( HWND hWnd,                               UINT message,                                WPARAM wParam,                                 LParam);

        WindowProc中第三个参数wParam,指向发生的事件,该参数Dbt.h头文件找那个的值。说说我们要用到的宏吧,Dbt.h中:

DBT_DEVICEARRIVAL //设备插入会进行响应 DBT_DEVICEREMOVECOMPLETE //设备拔出时响应


代码实现消息响应

    首先来看WndProc函数。具体实现就是通过一个case来进行消息响应的

如何反打红队BadUSB

添加自己的消息响应,以下代码当BadUSB插入之后,会弹窗显示设备插入。

  case WM_DEVICECHANGE://捕获设备更改时的消息    switch (wParam){    case DBT_DEVICEARRIVAL://捕获设备插入      MessageBoxA(NULL, "设备插入", "test", NULL);      break;    case DBT_DEVICEREMOVECOMPLETE://捕获设备弹出      MessageBoxA(NULL, "设备拔出", "test", NULL);      break;    }

这里当我插入BadUSB之后,成功捕获到消息并弹窗。

如何反打红队BadUSB

核心代码实现

    既然当BadUSB插入之后,会响应消息函数,那让消息函数执行arduino命令行并进行自动烧录。当红队后期做更改BadUSB的时候,就会执行我们烧录的代码


    BadUSB将要烧录的内容如下,setup函数为初始化函数。当BadUSB插入之后,打开记事本并输入 By:Met32这串字符。这里可自行更改..我这里为了演示方便就这样写的。

void setup() {  // put your setup code here, to run once:
Keyboard.begin();//开始键盘通信 delay(1000);//延时1000毫秒,不要太短,因为每天电脑的运行速度都不一样 Keyboard.press(KEY_CAPS_LOCK); //按下大写键 这里我们最好这样写 不然大多数电脑在中文输入的情况下就会出现问题 Keyboard.release(KEY_CAPS_LOCK); //释放大写键 delay(500); Keyboard.press(KEY_LEFT_GUI);//按下徽标键 也就是win键 delay(500); Keyboard.press('r');//按下r键 delay(500); Keyboard.release(KEY_LEFT_GUI);//松掉win键 Keyboard.release('r');//松掉r键 delay(500); Keyboard.println("notepad");//输入notepad 打开记事本 delay(500); Keyboard.press(KEY_RETURN); //按下回车键 Keyboard.release(KEY_RETURN); //释放回车键 delay(500); Keyboard.println(" By:Met32");//输入我们想显示的信息 Keyboard.press(KEY_RETURN); //按下回车键 Keyboard.release(KEY_RETURN); //释放回车键 delay(500); Keyboard.press(KEY_CAPS_LOCK); //按下大写键 Keyboard.release(KEY_CAPS_LOCK); //释放大写键 我们再次关闭开启的大写键 delay(500); Keyboard.end();//结束键盘通讯
}
void loop() { // put your main code here, to run repeatedly:
}

WndProc全部实现代码如下。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){  int wmId, wmEvent;  PAINTSTRUCT ps;  HDC hdc;
switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // 分析菜单选择: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: 在此添加任意绘图代码... EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; case WM_DEVICECHANGE: switch (wParam){ //代码在这 case DBT_DEVICEARRIVAL: system("C:\Users\Administrator\Desktop\Arduino\arduino_debug.exe --port COM5 --upload C:\Users\Administrator\Desktop\sketch_apr01a\sketch_apr02a\sketch_apr02a.ino"); break; case DBT_DEVICEREMOVECOMPLETE: MessageBoxA(NULL, "设备拔出", "test", NULL); break; } break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0;}

使用过程

        现在来看一下效果,当BadUSB插入之后,自行拷贝烧录内容到对方的BadUSB。

如何反打红队BadUSB

        之后把程序退出,BadUSB从新插入一下,成功显示,证明我们成功烧录到对方的BadUSB 

如何反打红队BadUSB

完整现成代码,关注公众号 回复:"打脸红队" 即可获取下载    


  结尾注意点: Arduino路径方面的问题不必担心,因为都是自己本机,写死即可,问题就在COM端口这,当BadUSB插入之后,我们是不确定使用的哪个端口的。因此可以通过一个循环将常用的COM端口号全部执行一遍即可。

如果想更加完善一点,可以检测当BadUSB插入之后禁用键盘(禁止对方代码操作),之后在执行我们的system命令。



如何反打红队BadUSB


安全族

一个致力于安全研究的公众号

如何反打红队BadUSB




本文始发于微信公众号(连接世界的暗影):如何反打红队BadUSB

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月2日07:31:03
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何反打红队BadUSBhttp://cn-sec.com/archives/314730.html

发表评论

匿名网友 填写信息