資源描述:
《sam的散列存儲加密解密算法以及syskey的計算》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、SAM中存放在密碼散列這是大家都知道的,但是其密碼存放在對應(yīng)相對SID的V鍵下面卻是一種加密的形式,如何通過這個加密的串計算出密碼散列了,大家用PWDUMP3這樣的工具可以導(dǎo)出散列來,主要原理是系統(tǒng)空間會存在一個sampsecretsessionkey,PWDUMP3就是拷貝一個服務(wù)到對方機(jī)器上,讀出這個lsass進(jìn)程空間的sampsecretsessionkey再進(jìn)行解密的,其實這個sampsecretsessionkey的生成也是非常復(fù)雜的,我們這里做一個比PWDUMP3更深入的一個探討和分析,sampsecretsessionkey的計算與生成,這樣我們就能在直接從物理文件中計算出s
2、ampsecretsessionkey,來解密注冊表中的密碼散列,對于一個忘記密碼的系統(tǒng)或一個不知道用戶口令但已經(jīng)獲得磁盤的系統(tǒng)有這重要意義,這樣我們完全就能通過注冊表文件的分析來解密注冊表中的密碼散列。通過分析,我們發(fā)現(xiàn)以前在NT中常說的SYSKEY在W2K系統(tǒng)的這個過程中起著非常重要的作用,其實SYSKEY已經(jīng)做為W2K的一個固定組件而存在了,我們下面給出一個整個過程:系統(tǒng)引導(dǎo)時:計算獲得SYSKEY讀取注冊表中的SAMSAMDomainsAccounV中保存的KEY信息(一般是最后的0X38字節(jié)的前0X30字節(jié))使用SYSKEY和F鍵的前0X10字節(jié),與特殊的字串"!@#$%
3、^&*()qwertyUIOPAzxcvbnmQQQQQQQQQQQQ)(*@&%","0123456789012345678901234567890123456789"做MD5運(yùn)算,再與F鍵的后0X20字節(jié)做RC4運(yùn)算就可以獲得sampsecretsessionkey,這個sampsecretsessionkey固定存放在LSASS進(jìn)程中,作為解密SAM中加密數(shù)據(jù)到散列時用-------------------------------------------------
4、系統(tǒng)計算出的SYSKEY
5、
6、F鍵信息的前0x10字節(jié)
7、MD5
8、"!@#$%^&*()qwertyUIOPAzxcvbn
9、mQQQQQQQQQQQQ)(*@&%"
10、--->------
11、"0123456789012345678901234567890123456789"
12、
13、RC4--------------------------------------------------
14、------>sampsecretsessionkey
15、F鍵信息的后0x20字節(jié)-------------------當(dāng)需要解密SAM中加密數(shù)據(jù)到散列時(如遠(yuǎn)程登陸):讀取sampsecretsessionkey,再與當(dāng)前用戶的相對SID,散列類型名(如LMPASSWORD,NTPASSWORD)做MD5運(yùn)算獲得針對這個用戶密碼散列的
16、sessionkey利用sessionkey用RC4解密第一道加密的散列,再將用戶相對ID擴(kuò)展成14字節(jié)做DES切分,生成DESECB,再對用RC4處理后的散列進(jìn)行分開成2次DES解密就可以獲得密碼散列。-------------------------
17、sampsecretsessionkey
18、
19、sid
20、MD5
21、"LMPASSWOR"/"NTPASSWOR"
22、--->sessionkey---
23、
24、
25、RC42次DES(填充SID做KEY切分)-------------------------
26、----->-------------------------->HASH
27、對應(yīng)的SAM中加密的密
28、碼散列---------------------------------這個算法相當(dāng)好,保證了不同用戶的相同散列在SAM存放不一樣(相對SID不一樣),不同機(jī)器的同一SID同口令的SAM中的散列存放不一樣(SYSKEY不同);這個算法的DES/RC4都是可逆的,這樣如果我們能通過離線(文件)方式獲得SYSKEY的話(其他的信息都可以分析SAM文件獲得),我們完全實現(xiàn)離線修改SAM中口令的效果,不過這需要對注冊表的結(jié)構(gòu)和SAM中V/F鍵的數(shù)據(jù)結(jié)構(gòu)再做深入的研究,這里就不談了。那么SYSKEY是如何計算出來的呢?這可能是我發(fā)現(xiàn)MS最牛皮的一個地方了,先開始想一定會存放在注冊表某處,呵呵,最后跟
29、蹤MS引導(dǎo)時候的WINLOGON進(jìn)程才知道,SYSKEY是這樣計算出來的,很多人會大掉眼鏡吧:SYSKEY的計算是:SYSTEM\CurrentControlSet\Control\Lsa下的JD,Skew1,GBG,Data四個鍵值的CLASS值通過換位得來的,靠,佩服MS。這樣我們完全可以離線分析注冊表就能獲得對其SAM的加密散列的導(dǎo)出或改寫了。下面就是給出的完全實現(xiàn)計算SYSKEY-》sampsecretse