Powershell tricks::Bypass AV

0x00 Powershell 简介


Powershell犹如linux下的bash,并且在windows中Powershell可以利用.NET Framework的强大功能,也可以调用windows API,在win7/server 2008以后,powershell已被集成在系统当中。 Powershell强大的功能特性给windows管理带来了极大的便利,同时也更加便于windows下的渗透测试。

0x01 PowerShell Execution Policy


Powershell脚本默认情况下无法双击或在cmd下执行。在执行时需要通过一些方法绕过该策略。 最简单的方法就是执行powershell.exe附加需要执行的命令,也可以将要执行的脚本直接复制进powershell的窗口。 当然也可以Download and execute,如下面示例中一样。

如果需要执行ps1文件时,也可以这样:

不建议使用其他方法全局改变执行策略,如果场景不同可以根据参考自行选择执行方式。

0x02 Reverse the Shell


在遇到防护软件时,可以使用powershell执行shellcode返回shell。执行脚本可以用msf生成,也可以用set工具包生成,注意的是msf生成的ps1文件,而set生成的是bat文件。 下面是在set中生成的过程:

生成的文件在/root/.set/reports/powershell/下。 其中x86_powershell_injection.txt为bat文件,可以直接改名运行。 在这里有个技巧可以通过powershell一句话直接下载文件。

enter image description here

然后再执行就可以得到meterpreter会话了。

enter image description here

并且可以正常执行cmd命令、dump hash明文等操作。

enter image description here

enter image description here

0x03 Dump the hash


当然在仅仅需要dump hash时,也可以借助powershell来完成。

enter image description here

0x04 Dump the plain Password


同样也可以用下面的方式(执行powershell版的Mimikatz)获取明文。

enter image description here

值得注意的是在这里也可以通过Command参数执行Mimikatz命令。

0x05 Memory Dumping


Powershell也可以完成像procdump一样的工作,获取某个进程的dumps。 这里演示获取lsass.exe的dumps,然后再用Mimikatz从dumps中获取明文。

enter image description here

然后将lsass dumps文件下载回来用Mimikatz分析可以得到明文密码。

enter image description here

当然内存dumps不仅仅可以获取windows密码,往往进程内存中或许会储存其他重要的信息或数据。参考http://blog.spiderlabs.com/2012/07/pentesting-like-an-eastern-european.html

0x06 Execute the shellcode


Powershell由于丰富的扩展功能使得其调用windows API非常方便,所以同样也可以执行shellcode,这一过程如下:

enter image description here

但是在这里有个问题,就是x64下shellcode已有的很少,往往通过网上搜集的shellcode都是x86的。如果直接执行x86的shellcode则会出错。

不过Invoke-Shellcode.ps1脚本默认是将shellcode注入在powershell.exe进程中,那么便可以用64位系统环境下32位的powershell.exe执行x86的shellcode,过程如下:

enter image description here

并且这一过程适用于大部分msfpayload生成的shellcode。当然在windows下执行shellcode也可以用其它的方法,比如shellcodeexec。不过这个方法并不能bypass AV。但是大家可以根据源码自行bypass。

未完待续。