解剖安全帳號管理器_第1頁
解剖安全帳號管理器_第2頁
解剖安全帳號管理器_第3頁
解剖安全帳號管理器_第4頁
解剖安全帳號管理器_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、解剖安全帳號管理器(SAM)結(jié)構(gòu)I、 摘要 II、 關(guān)于SAM III、注冊表中SAM數(shù)據(jù)庫的結(jié)構(gòu) IV、 SAM數(shù)據(jù)庫的結(jié)構(gòu)和主要內(nèi)容 V、 關(guān)于SAM數(shù)據(jù)庫分析的結(jié)論 一、摘要 分析安全帳號管理器結(jié)構(gòu)是在一個多月前做的事情了,只零碎地記錄下片段,沒有發(fā)布過。不發(fā)布的主要 原因是安全帳戶管理器(SAM)是WIN系統(tǒng)帳戶管理的核心,并且非常系統(tǒng)化,我也有很多地方僅僅是進行的推 斷和猜測,同時,SAM hack可能造成啟動時lsass.exe加載帳戶管理器出錯,即便是安全模式也不能修復(fù)(啟動 時候必然加載SAM)使得整個系統(tǒng)啟動崩潰(我通常需要依靠第二系統(tǒng)刪除SAM文件來啟動)。至于現(xiàn)在發(fā)布出

2、來,主要是因為Adam和叮叮的克隆管理員帳號種所描述的制作rootkit辦法隱蔽性和危害性,對SAM的結(jié)構(gòu) 的熟悉,可以幫助安全維護人員做好安全檢測(當然也可能讓不良企圖者利用)。 這里只介紹關(guān)于SAM的內(nèi)容,同Security相關(guān)的暫時不公開。 二、關(guān)于SAM 不要誤解了SAM,這不是一個文件sam這么簡單。SAM(Security Accounts Manager安全帳戶管理器)負責(zé) SAM數(shù)據(jù)庫的控制和維護。SAM數(shù)據(jù)庫位于注冊表HKLMSAMSAM下,受到ACL保護,可以使用regedt32.exe打開注 冊表編輯器并設(shè)置適當權(quán)限查看SAM中的內(nèi)容。SAM數(shù)據(jù)庫在磁盤上就保存在%sys

3、temroot%system32config目 錄下的sam文件中,在這個目錄下還包括一個security文件,是安全數(shù)據(jù)庫的內(nèi)容,兩者有不少關(guān)系。 SAM數(shù)據(jù)庫中包含所有組、帳戶的信息,包括密碼HASH、帳戶的SID等。這些內(nèi)容在后面詳細介紹。以我分 析的系統(tǒng)中文Win2K Adv Server為例。 三、注冊表中SAM數(shù)據(jù)庫的結(jié)構(gòu) 展開注冊表HKLMSAMSAM: HKLM-SAM |-SAM |-Domains | |-Account | | |-Aliases | | | |-Members | | | |-Names | | |-Groups | | | |-00000201 | |

4、 | |-Names | | | |-None | | |-Users | | |-000001F4 | | |-000001F5 | | |-000003E8 | | |-000003E9 | | |-Names | | |-Adaministrator | | |-Guest | | |-IUSR_REFDOM | | |-IWASM_REFDOM | |-Builtin | |-Aliases | | |-00000220 | | |-00000221 | | |-00000222 | | |-00000223 | | |-Members | | | |-S-1-5-21-1214440

5、339-706699826-1708537768 | | | |-000001F4 | | | |-000001F5 | | | |-000003E8 | | | |-000003E9 | | |- Names | | |-Administrators | | |-Users | | |-Guests | | |-Power Users | |-Groups | | |-Names | | | |-Users | |-Names | |-RXACT 這是我機器上注冊表中的SAM樹。 對照SAM文件中的內(nèi)容,可以看出,注冊表中的SAM樹實際上就是SAM文件中一樣。不過,SAM文件中是先列 RXA

6、CT然后在是Domains內(nèi)容(以此類推),文件中的表達順序和注冊表中的樹形順序是相反的。如果習(xí)慣于看 文件內(nèi)容,從文件的0000h到0006Ch,表示的是SAM數(shù)據(jù)庫所在的位置:systemrootsystem32configsam,然 后是一端空白,直到01000h(hbin),從這里開始就是整個數(shù)據(jù)庫的內(nèi)容。SAM數(shù)據(jù)庫的文件內(nèi)容不作主要介紹, 不過會穿插著介紹,有興趣可以自己去研究。 四、SAM數(shù)據(jù)庫的結(jié)構(gòu)和主要內(nèi)容: 在整個數(shù)據(jù)庫中,帳號主要內(nèi)容存在于下面這些位置: 在Domains下就是域(或本機)中的SAM內(nèi)容,其下有兩個分支“Account”和“Builtin”。 Domain

7、sAccount是用戶帳號內(nèi)容。 DomainsAccountUsers下就是各個帳號的信息。其下的子鍵就是各個帳號的SID相對標志符。比如000001F4, 每個帳號下面有兩個子項,F(xiàn)和V。其中Names下是用戶帳號名,每個帳號名只有一個默認的子項,項中類型不 是一般的注冊表數(shù)據(jù)類型,而是指向標志這個帳號的SID最后一項(相對標識符),比如其下的Administrator, 類型為0 x1F4,于是從前面的000001F4就對應(yīng)著帳戶名administrator的內(nèi)容。由此可見MS帳號搜索的邏輯。 推斷一:從注冊表中結(jié)構(gòu)來看帳號,如果查詢一個帳戶名refdom的相關(guān)信息,那么,微軟從帳號名r

8、efdom中 找到其類型0 x3EB,然后查找相對標志符(或者SID)為000003EB的帳號內(nèi)容。所有的API函數(shù)(比如NetUserEnum()) 都是這樣來執(zhí)行的。因此,如果改變refdom帳號中的類型0 x3EB為0 x1F4,那么這個帳號將被指向類000001F4的帳 戶。而這個帳號000001F4就是administrator帳戶,這樣,系統(tǒng)在登錄過程中就把refdom帳號完全轉(zhuǎn)為了administrator 帳號,帳號refdom所使用的所有內(nèi)容、信息都是adminisrtator內(nèi)容,包括密碼、權(quán)限、桌面、記錄、訪問時間等 等。這個推斷應(yīng)該成立,但是,將意味著兩個用戶名對應(yīng)一個

9、用戶信息,系統(tǒng)啟動上應(yīng)該會發(fā)生錯誤! 推斷一是在以前分析結(jié)構(gòu)的時候即得出了,揭示了登錄過程中及之后帳戶名和SID關(guān)聯(lián)的關(guān)系。 DomainsAccountUsers000001F4,這就是administrator的帳戶信息(其他類似)。其中有兩個子項V和F。 項目V中保存的是帳戶的基本資料,用戶名、用戶全名(full name)、所屬組、描述、密碼hash、注釋、是否可以更 改密碼、帳戶啟用、密碼設(shè)置時間等。項目F中保存的是一些登錄記錄,比如上次登錄時間、錯誤登錄次數(shù)等,還 有一個重要的地方就是這個帳號的SID相對標志符。 以前分析結(jié)構(gòu)的時候沒有留意到這個地方,這就是Adam提出的思路。這個

10、地方就是這個SID相對標志符在注冊 表中一個帳號出現(xiàn)了兩遍,一個是在子鍵000001F4,另一個地方就是子鍵中項F的內(nèi)容里面,從48到51的四個字節(jié): F4 01 00 00,這實際上是一個long類型變量,也就是00 00 01 F4。當一個標志出現(xiàn)在兩個地方的時候就將發(fā)生 同步問題。明顯,微軟犯了這個毛病。兩個變量本應(yīng)該統(tǒng)一標志一個用戶帳號,但是微軟把兩個變量分別發(fā)揮各自 的作用,卻沒有同步統(tǒng)一起來。 子鍵中000001F4用來同用戶名administrator對應(yīng),方便通過用戶查詢帳戶信息,比如LookupAccountSid()等 帳號相關(guān)API函數(shù)都是通過這個位置來定位用戶信息的,這

11、個關(guān)聯(lián)應(yīng)該是用在了帳戶登錄以后。而項目V值中的 F4 01 00 00是同帳戶登錄最直接相關(guān)聯(lián)的。 推斷二:WIN登錄的時候,將從SAM中獲得相對標志符,而這個相對標志符的位置是V值中的 F4 01 00 00。但是, 帳戶信息查詢卻使用的SAM中子鍵內(nèi)容。 推斷二的原因假設(shè)(假設(shè)一):在帳戶登錄的時候,登錄過程獲得SAM數(shù)據(jù)庫中用戶名使用的帳戶記錄信息中的 相對標志符值(相當于V值中的 F4 01 00 00),帳戶登錄之后,所有跟帳戶相關(guān)的之后,這個值不再被API函數(shù)使 用,而相對標志符由一個數(shù)據(jù)記錄項的字段名代替(相當于子鍵000001F4)。微軟犯了一個同步邏輯問題! 推斷二是根據(jù)Ad

12、am提出而進行的,以前沒有這樣推斷過。 推斷二如果成立,揭示了在登錄過程中帳戶SID進行 的過程。這就是為什么V中的值都是跟帳戶登錄記錄(登錄時間,密碼錯誤次數(shù)等)相關(guān)的原因。同時,因為F中保存 了一個用戶名內(nèi)容,而API函數(shù)查詢的是這個用戶名,所以Adam的克隆辦法還是容易露臉,經(jīng)叮叮補充過后,這個用戶 名也被恢復(fù)原用戶名了,從用戶名上檢測就相對難了。 上面對項目V的介紹可以知道,其中保存的是帳戶的基本資料,用戶名、用戶全名(full name)、所屬組、描述、 密碼hash、注釋、是否可以更改密碼、帳戶啟用、密碼設(shè)置時間等?,F(xiàn)在來關(guān)心的是密碼HASH。 假設(shè)二:在帳戶的項V中,包含了用戶H

13、ASH,分別包括是LM2和NT的密碼加密散列,Crack時,可分開進行。畢竟 LM2簡單。 DomainsBuiltin下的內(nèi)容是同帳戶組相關(guān)的。其結(jié)構(gòu)同Account下的類似,并且也存在相應(yīng)的問題,就不再 羅嗦了。 SAM數(shù)據(jù)庫保存的文件sam中,可沒有注冊表中的這么簡明的內(nèi)容,而主要是通過偏移量、長度來定位內(nèi)容。并 且單個帳號的信息都是集中在一塊的,而不是象注冊表形式這樣分隔開(名字的一個鍵而內(nèi)容在另外一個鍵)。 sam文件中,可根據(jù)這些下面這些分隔符來定位數(shù)據(jù)含義: nk (6E 6B) 鍵或者子鍵名 vk (76 6B) 相應(yīng)的值 if (6C 66) 子鍵列表 sk (73 6B) 權(quán)限 五、關(guān)于SAM數(shù)據(jù)庫分析的結(jié)論: SAM HACK是非常有危險性的。不正確的修改會將系統(tǒng)的安全數(shù)據(jù)管理器破壞,造成系統(tǒng)啟動問題,雖然可以通過 刪除SAM文件來讓啟動恢復(fù)。如果能夠熟悉SAM的結(jié)構(gòu),你將發(fā)現(xiàn),可以對用戶名與用戶名之間、用戶組與用戶組之間 進行調(diào)換,以及帳戶和帳戶組

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論