作者:
三好學生
·
2015/11/04 10:28
0x00 前言
之前在《匯出當前域內所有使用者hash的技術整理》中測試了5種匯出域內所有使用者hash的方法,經過這一段時間的學習和實踐,找到了新的方法,也很有效,分享給大家。
0x01 簡介
對於離線匯出域控所有使用者Hash,NTDSXtract依舊是主流
優點:
獲取資訊全面
穩定,上G的ntds.dit檔案也可以正常解析
缺點:
耗時,對於大型資料庫,解析效率低
不支援內建索引,對於大型資料庫,查詢特定物件效率低
執行在Linux,不支援windows
無法修改ntds的資料庫
但就在最近,能夠綜合解決上述問題的工具出現了,經過一段時間的測試和使用,個人認為已經可以替代NTDSXtract
下面就介紹一下今天的主角——DSInternals PowerShell Module
下載地址:
DSInternals PowerShell Module:
https://www.dsinternals.com/wp-content/uploads/DSInternals_v2.8.zip
《匯出當前域內所有使用者hash的技術整理》:
/tips/?id=6617
0x02 DSInternals PowerShell Module介紹
1、版本
v2.8
2、適用環境
支援系統:
Windows Server 2012 R2
Windows Server 2008 R2
Windows 10 64-bit
Windows 8.1 64-bit
Windows 7 64-bit
(以上為官方說明)
注:
實際測試32位也可以
Windows 7 、Windows Server 2008 R2預設環境下PowerShell版本2.0,不支援
PowerShell版本需要升級至3.0
軟體版本:
- Windows PowerShell 3+
- .NET Framework 4.5+
(此為官方說明)
注:
實測.NET Framework 4.0即可
3、安裝方法
1、PowerShell 5.0:
Install-Module DSInternals
2、PowerShell 3.0、4.0
解壓壓縮包
cd C:\test\DSInternals
Import-Module .\DSInternals
4、功能模組
1、線上操作活動目錄資料庫
Get-ADReplAccount:讀取賬戶資訊
Set-SamAccountPasswordHash:設定賬戶的NTHash和LMHash
Get-ADReplBackupKey:讀取DPAPI backup keys
2、離線操作活動目錄資料庫
Get-ADDBAccount:從ntds.dit檔案讀取賬戶資訊
Get-BootKey:從SYSTEM檔案讀取BootKey
Get-ADDBBackupKey::從ntds.dit檔案讀取DPAPI backup keys
Add-ADDBSidHistory:向ntds.dit檔案新增SIDHistory資訊
Set-ADDBPrimaryGroup:修改ntds.dit檔案的primaryGroupId屬性
Get-ADDBDomainController:從ntds.dit檔案讀取域控資訊,包括domain name, domain SID, DC name and DC site.
Set-ADDBDomainController:向ntds.dit檔案新增域控資訊
Get-ADDBSchemaAttribute:從ntds.dit檔案讀取AD schema,包括資料表的列名
Remove-ADDBObject:從ntds.dit檔案移除特定物件
3、 Hash計算
ConvertTo-NTHash:給定密碼,計算NT hash
ConvertTo-LMHash:給定密碼,計算LM hash
ConvertTo-OrgIdHash:給定密碼,計算OrgId hash
4、補充
對於Get-ADDBAccount讀取到的賬戶資訊,可將其中包含的Hash值按如下格式匯出:
HashcatNT:支援Hashcat的NT hash
HashcatLM:支援Hashcat的LM hash
JohnNT:支援John the Ripper的NT hash
JohnLM:支援John the Ripper的LM hash
Ophcrack:支援Ophcrack的NT hash、LM hash
注:
列出以上三款Hash破解工具的地址:
Hashcat:
http://hashcat.net/oclhashcat/
John the Ripper:
http://www.openwall.com/john/
Ophcrack:
http://ophcrack.sourceforge.net/
0x03 測試環境
作業系統:
win10 x64
Powershell版本:
v5
需要檔案:
ntds.dit
SAM
SYSTEM
檔案來源:
域控:server2008R2
匯出方法:
vssown.vbs或ShadowCopy(之前文章有介紹,匯出過程略過)
0x04 實際測試
1、安裝配置
下載DSInternals PowerShell Module
允許Powershell執行指令碼:
Set-ExecutionPolicy Unrestricted
安裝DSInternals:
Install-Module -Name DSInternals
匯入DSInternals:
Import-Module DSInternals
2、獲取所有賬戶資訊
$key = Get-BootKey -SystemHivePath 'C:\Users\a\Desktop\a\SYSTEM'
Get-ADDBAccount -All -DBPath 'C:\Users\a\Desktop\a\ntds.dit' -BootKey $key
如圖
3、獲取指定賬戶資訊
$key = Get-BootKey -SystemHivePath 'C:\Users\a\Desktop\a\SYSTEM'
Get-ADDBAccount -DistinguishedName 'CN=krbtgt,CN=Users,DC=test,DC=local' -DBPath 'C:\Users\a\Desktop\a\ntds.dit' -BootKey $key
如圖
4、匯出支援Hashcat的NT hash
Get-ADDBAccount -All -DBPath 'C:\Users\a\Desktop\a\ntds.dit' -BootKey $key | Format-Custom -View HashcatNT | Out-File hashes.txt
如圖
5、匯出DPAPI backup keys
(1)獲得BootKey
Get-BootKey -SystemHiveFilePath 'C:\Users\a\Desktop\a\SYSTEM'
得到c76034ff820edbc012308a258faf3d26
如圖
(2)解密得到DPAPI backup keys
Get-ADDBBackupKey -DBPath 'C:\Users\a\Desktop\a\ntds.dit' -BootKey c76034ff820edbc012308a258faf3d26 | Format-List
(3)匯出到檔案
Get-ADDBBackupKey -DBPath 'C:\Users\a\Desktop\a\ntds.dit' -BootKey c76034ff820edbc012308a258faf3d26 | Save-DPAPIBlob -DirectoryPath .\Keys
6、Hash計算
$pwd = ConvertTo-SecureString 'TestTest' -AsPlainText -Force
ConvertTo-NTHash $pwd
ConvertTo-LMHash $pwd
ConvertTo-OrgIdHash -NTHash 'd280553f0103f2e643406517296e7582'
如圖
0x05 小結
隨著技術的發展,效率一直在提高
在獲取域控許可權下,匯出所有使用者hash的方法越來越簡便,當域控被攻陷後,可以在很短的時間內提取出有用的資訊用來進一步滲透,內網滲透將會越來越有趣。
本文由三好學生原創並首發於烏雲drops,轉載請註明
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!