【技术分享】Windows环境渗透技巧之PowerShell Payload的远程执行

https://p4.ssl.qhimg.com/t014e8f938f35e7c2a6.png

译者:h4d35

预估稿费:100RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


在Windows环境的渗透测试过程中,PowerShell对于攻击者来说是绝佳的后期利用工具。在内部测试过程中,像PowerSploit和PowerShell Empire这类工具能帮不少忙。但问题是,Windows系统默认打开了限制执行策略,这就造成在执行ps1脚本时出现问题。如果没有拿到admin权限,这就意味着你基本上只能执行一句话的PowerShell命令,命令长度有限制(cmd.exe中最长为8191个字符)。

绕过这种限制的一个方案是,想办法拿到目标主机的admin权限,然后通过`Set-ExecutionPolicy`命令解除PowerShell脚本执行限制。这是一个全局设置项,所以用完了别忘了给改回来。

http://p3.qhimg.com/t01b2b78c12e910c7b4.png

另一个很棒的技巧是编写一个简单的命令进行“表达式求值”(evaluates expression),然后有效地在内存中执行它。无论ps1脚本多大,您都可以执行整个脚本。下面是一个一句话下载powercat代码并执行的例子:

http://p0.qhimg.com/t01cc2cf3b62e0eb05d.png

执行策略不适用于单行PowerShell脚本。我们还可以更进一步,从文件读取数据内容,执行它并运行我们的Payload。但为什么不能将这一过程自动化呢?对我来说,我正在寻找一种很轻松地在多台Windows机器上远程执行Invoke-Mimikatz.ps1脚本的方式。通过这种方式,可以免去这一系列繁琐的操作:通过`smbclient`上传脚本,运行`psexec`禁用执行策略,运行脚本本身,最后还要还原执行限制。

这个想法很简单。我们通过单个bat文件传递我们的Payload。PowerShell脚本被base64编码,并放置在bat脚本的注释中。注释之后是一个简单的一句话命令:读取相同的文件,解码我们的Payload并运行它。你可以使用python脚本将您喜爱的PowerShell脚本快速转换为bat文件。重申一次,执行策略并不重要,因为你只是执行了一个单行PowerShell命令。

http://p1.qhimg.com/t01701cb04099d6e6aa.png

生成的文件如下所示:

http://p6.qhimg.com/t0132e2c8151e2a53a1.png

现在我们可以使用“-c”参数将此文件传递给psexec.py,并获取结果。现在,远程mimikatz就是一句话命令了,如果您想在目标域中大量收集凭据,则完全可以将其编写成脚本:)

http://p6.qhimg.com/t01eb101f21a68069ef.png

更多mimikatz神技 – 在一个工作站上的启用多个RDP连接:

http://p7.qhimg.com/t01eb101f21a68069ef.png

你可以在这里找到这个脚本 :https://github.com/artkond/bat-armor

(完)