在windowsNT和win2000中,安全帳戶管理器機制用於用戶帳戶的安全管理。securityaountmanager通過在創建帳戶的同時創建的安全標識來管理帳戶。壹旦賬戶被刪除,安全標識也被刪除。安全標識是唯壹的,即使是同壹個用戶名,每次創建時獲得的安全標識也是完全不同的。因此,壹旦帳戶被刪除,其安全身份就不再存在,也就是說,如果使用相同的用戶名重建帳戶,它將被賦予不同的安全身份,並且原始權限將不會保留。
安全帳戶管理器的具體性能是% systemroot % \ system32 \ config \ Sam文件。Sam文件是windowsnt的用戶帳戶數據庫,所有NT用戶的登錄名、密碼和其他相關信息都將保存在該文件中。Sam文件可以被認為類似於unix系統中的passwd文件,但它不是那麽直觀。Passwd使用保存文本的格式來保存信息,這是linuxpasswd文件內容的壹個示例。
0:根:8L7v6:0:0:根:/root:/bin/bash
1:bin:* 1:1:bin:/bin:
2:守護進程:*:2:2:守護進程:/sbin:
3:adm:*:3:4:adm:/var/adm:
4:LP:* 4:7:LP:/var/spool/lpd:
5:同步:*:5:0:同步:/sbin:/bin/sync
6:關機:*:6:0:關機:/sbin:/sbin/關機
7:暫停:*:7:0:暫停:/sbin:/sbin/暫停
8:郵件:*:8:12:郵件:/var/spool/mail:
9:新聞:*:9:13:新聞:/var/spool/news:
10:uucp:* 10:14:uucp:/var/spool/uucp:
11:操作員:*:11:0操作員:/root:
12:遊戲:*:12:100:遊戲:/usr/遊戲:
13:地鼠:*:13:30:地鼠:/usr/lib/地鼠-數據:
14:FTP:*:14:50:FTP user:/home/FTP:
15:無名小卒:I0iJ。:99:99:Nobody:/home/httpd:/bin/bash
16:David:c6CuzM:500:500::/home/David:/bin/bash
17:mmy:fivtl 4 igu:501:503::/home/mmy:/bin/bash
18:msql:!:502:504::/home/msql:/bin/bash
unix中passwd文件中的每壹行代表壹個用戶的數據,每個帳戶有七個數據部分。不同數據中使用的“:”分段格式如下。
帳戶名:密碼:uid:gid:個人數據:用戶目錄:shell。
除了密碼是加密的(這裏的密碼部分已經陰影化)之外,其他項目都非常清楚。
在nt中並不是這樣,雖然他也將帳戶信息保存在文件中,但如果我們用編輯器打開NT的這些sam文件,除了亂碼之外什麽也看不到。由於這些資料在NT系統中都是加密的,壹般編輯不可能直接閱讀這些資料。在註冊表中
HKEY_LOCAL_MACHINE\SAM\SAM
HKEY _ LOCAL _ MACHINE \ SECURITY \ SAM
保存的是SAM文件的內容,在正常設置下只能由系統讀取和寫入。
* * * NT的帳戶信息如何存儲在SAM文件中?***
SAM文件中保存了兩種不同的密碼信息:LAN manager(LM)密碼哈希算法和更強大的加密nt版本。LM是NT密碼文件的弱點。我們來看看LM密碼算法是如何加密密碼的。考慮這樣壹個密碼:Ba01cK28tr,它已經可以被稱為安全密碼了,盡管它沒有!#和其他特殊字符,但它已經包含大寫字母、小寫字母和數字,並且它是不規則的。它可以被認為是滿足安全要求的密碼。
LM對密碼的處理方法是:如果密碼小於14位,則使用0將密碼補充到14位,並將所有字母轉換為大寫字母。之後,處理後的密碼分為兩組數字,每組都是7位數。經過處理後,我們剛才提到的密碼成為BA01CK2和8TR0000的壹部分。然後,這兩個7位數字用於生成8位DesKEY,每個8位DesKEY使用壹個幻數(將通過用所有1加密壹個密鑰獲得)然後再次加密,將兩個加密字符串連接在壹起,這就是最終的密碼哈希。這種字符傳輸看似是壹個整體,但像L0phtcrack這樣的破解軟件可以獨立破解密碼字符串的兩部分,因此很容易解決問題。迷人嗎?10位),由於密碼已經被分解為兩部分,而後半部分的密碼只有3位,不難想象破解的難度。實際困難在於前七個密碼。因此,就NT而言,10位密碼與7位密碼相比並不太安全。也可以理解為1234567*$#的密碼可能不如SHic6的密碼安全。(關於如何設置安全密碼的問題超出了本文的範圍。感興趣的可以參考相關文章。)
正式密碼(加密NT版本)是將用戶的密碼轉換為unicode代碼,然後使用MD4算法對密碼進行加密。
NT之所以保留兩個不同版本的密碼是由於歷史原因。在純NT環境中,應該關閉LANmanager密碼。由於LANmanager密碼使用較弱的DES密鑰和算法,因此很容易被破解。相比之下,采用強加密算法的NT官方密碼更安全。
但是,這兩種密碼的加密方法總體上仍然不足。因此,在修補了winNT4的SP3之和後,微軟提供了壹個來自syskey.exe的小工具來進壹步加強NT密碼。該軟件是可選的,管理員可以通過運行該程序並回答壹些設置問題來添加此增強功能。(windows2000已被設置為默認安裝設置。)
Syskey旨在防止輕易獲取SAM密碼。它是如何工作的?
激活syskey時,密碼信息在存儲到註冊表中之前會加密壹次。但是,機器啟動後,舊格式的信息仍將存儲在內存中,因為網絡認證需要舊格式的密碼信息。
可以認為syskey使用了壹種方法來混淆密碼信息。或者使用激活syskey的密鑰,用戶選擇存儲位置。該密鑰可以保存在軟盤上,或者由用戶在啟動時生成(由用戶輸入的密碼生成),或者直接保存在註冊表中。因為沒有關於如何關閉syskey的官方技術解釋,壹旦syskey被啟用,它將被關閉,除非在syskey被啟用之前使用註冊表備份恢復註冊表。
* * *激活syskey後系統發生了什麽變化,如何關閉它?***
-1-
激活syskey後,將在註冊表HKLM \系統\ \控制\Lsa中添加壹個新的鍵值“SecureBoot”,並保存syskey的設置:
1鍵保存在註冊表中。
2-KEY由用戶登錄時輸入的密碼生成。
3-KEY保存在軟盤中。
但是,刪除主鍵或將值設置為0無法關閉syskey。好像還有其他地方。......
-2-
HKLM \薩姆\域\帳戶\F是壹個二進制結構,它通常保存計算機的SID和其他描述性信息。當sysKEY被激活時,其中的內容變得更大(大約是原始大小的兩倍)。增加的部分估計是加密密鑰、壹些標簽和其他值,其中壹些標簽和值必須包括與SecureBoot相同的內容。因此,可以通過在NT4(安裝了SP6修補程序包)中將這些標誌位設置為0來關閉syskey。當更改這些設置時,系統給出錯誤消息,表明SAM和系統設置相互沖突,但重新啟動計算機後,系統不再使用syskey。
-3-
在win2000中還有壹個存儲syskey信息的地方。
HKLM \安全\策略\\
這也是壹個二進制結構,其中也使用相同的存儲方法。如果這裏的相應部分也被設置為0,則syskey已從win2000中刪除。(如果這三項修改出現錯誤(不壹致),系統將在下次啟動時自動恢復為默認值。)
-4-
,然後是密碼信息部分。舊密碼信息的長度為16字節,但在使用syskey後,長度全部增加到20字節。前四個字節看起來像某種計數器,可能是歷史使用記錄計數器。奇怪的是,當syskey被激活時,它不會立即記錄它,而是在下次啟動系統時才記錄。此外,當密鑰更改時,密碼信息似乎不會相應更新。