了解
sam文件:是用來存儲本地用戶賬號密碼的文件的數據庫
system文件:里面有對sam文件進行加密和加密的密鑰
不知道講的對不對,自己感覺是這樣理解的,有錯誤麻煩說下
SAM文件路徑:%SystemRoot%\system32\config
SYSTEM文件路徑:%SystemRoot%\system32\config
利用方式:
導出sam和system:
reg save hklm\sam sam.hiv
reg save hklm\system system.hiv
解密工具mimikatz:
lsadump::sam /sam:sam.hiv /system:system.hiv
原理:
1、讀取HKLM\SYSTEM
,獲得syskey
:
syskey的由來: 讀取注冊表項HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
下的鍵值JD
、Skew1
、GBG
和Data
中的內容,拼接成syskey
syskey的作用: Syskey中的加密的是賬號數據庫,也就是位於%SystemRoot%\system32\config
的SAM文件
代碼可參考:
https://github.com/gentilkiwi/mimikatz/blob/master/mimikatz/modules/kuhl_m_lsadump.c#L219
完整計算代碼可參考:
https://raw.githubusercontent.com/3gstudent/Writeup/master/getsyskey.cpp
(Steal from http://www.zcgonvh.com/post/ntds_dit_pwd_dumper.html)
2、使用syskey解密HKLM\SAM:
讀取注冊表項HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users
下每個用戶中F項和V項的內容,使用syskey進行一系列的解密
詳細解密過程可參考鏈接:http://www.xfocus.net/articles/200306/550.html
總結:
綜上,想要通過SAM數據庫獲得用戶hash,需要獲得兩個文件:HKLM\SYSTEM
和HKLM\SAM
最直接的導出方式是讀取當前系統下的注冊表HKLM\SYSTEM
和HKLM\SAM
,但需要獲得system權限
admin切換到system權限參考文章:https://www.secshi.com/goto/zkv7