前言
SID也就是安全辨別符(Security Identifiers),是辨別使用者、組和計算機帳戶的唯一的号碼。在第一次建立該帳戶時,将給網絡上的每一個帳戶釋出一個唯一的 SID。Windows 2000 中的内部程序将引用帳戶的 SID 而不是帳戶的使用者或組名。如果建立帳戶,再删除帳戶,然後使用相同的使用者名建立另一個帳戶,則新帳戶将不具有授權給前一個帳戶的權力或權限,原因是該帳戶具有不同的 SID 号。安全辨別符也被稱為安全ID 或 SID。
SID的作用
使用者通過驗證後,登陸程序會給使用者一個通路令牌,該令牌相當于使用者通路系統資源的票證,當使用者試圖通路系統資源時,将通路令牌提供給Windows NT,然後 Windows NT 檢查使用者試圖通路對象上的通路控制清單。如果使用者被允許通路該對象,Windows NT将會配置設定給使用者适當的通路權限。
通路令牌是使用者在通過驗證的時候有登陸程序所提供的,是以改變使用者的權限需要登出後重新登陸,重新擷取通路令牌。
SID号碼的組成
如果存在兩個同樣SID的使用者,這兩個帳戶将被鑒别為同一個帳戶,原理上如果帳戶無限制增加的時候,會産生同樣的SID,在通常的情況下SID是唯一的,他由計算機名、目前時間、目前使用者态線程的CPU耗費時間的總和三個參數決定以保證它的唯一性。
一個完整的SID包括:
• 使用者群組的安全描述
• 48-bit的ID authority
• 修訂版本
• 可變的驗證值Variable sub-authority values
例:S-1-5-21-310440588-250036847-580389505-500
我們來先分析這個重要的SID。第一項S表示該字元串是SID;第二項是SID的版本号,對于2000來說,這個就是1;然後是标志符的頒發機構(identifier authority),對于2000内的帳戶,頒發機構就是NT,值是5。然後表示一系列的子頒發機構,前面幾項是标志域的,最後一個标志着域内的帳戶群組。
SID的獲得
開始-運作-regedt32-HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Builtin\Aliases\Members,找到本地的域的代碼,展開後,得到的就是本地帳号的所有SID清單。
其中很多值都是固定的,比如第一個000001F4(16進制),換算成十進制是500,說明是系統建立的内置管理者帳号administrator,000001F5換算成10進制是501,也就是GUEST帳号了,詳細的參照後面的清單。
這一項預設是system可以完全控制,這也就是為什麼要獲得這個需要一個System的Cmd的Shell的原因了,當然如果權限足夠的話你可以把你要添加的帳号添加進去。
或者使用Support Tools的Reg工具:
reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
還有一種方法可以獲得SID和使用者名稱的對應關系:
1. Regedt32:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion \ProfileList
2. 這個時候可以在左側的視窗看到SID的值,可以在右側的視窗中ProfileImagePath看到不同的SID關聯的使用者名,
比如%SystemDrive%\Documents and Settings\Administrator.momo這個對應的就是本地機器的管理者SID
%SystemDrive%\Documents and Settings\Administrator.domain這個就是對應域的管理者的帳戶
另外微軟的ResourceKit裡面也提供了工具getsid,sysinternals的工具包裡面也有Psgetsid,其實感覺原理都是讀取系統資料庫的值罷了,就是省了一些事情。
SID重複問題的産生
安裝NT/2000系統的時候,産生了一個唯一的SID,但是當你使用類似Ghost的軟體克隆機器的時候,就會産生不同的機器使用一個SID的問題。産生了很嚴重的安全問題。
同樣,如果是重複的SID對于對等網來說也會産生很多安全方面的問題。在對等網中帳号的基礎是SID加上一個相關的辨別符(RID),如果所有的工作站都擁有一樣的SID,每個工作站上産生的第一個帳号都是一樣的,這樣就對使用者本身的檔案夾和檔案的安全産生了隐患。
這個時候某個人在自己的NTFS檔案系統建立了共享,并且設定了自己可以通路,但是實際上另外一台機器的SID号碼和這個一樣的使用者此時也是可以通路這個共享的。
SID重複問題的解決
下面的幾個試驗帶有高危險性,慎用,我已經付出了慘痛的代價!
微軟在ResourceKit裡面提供了一個工具,叫做SYSPREP,這個可以用在克隆一台工作站以前産生一個新的SID号碼。 下圖是他的參數
這個工具在DC上是不能運作這個指令的,否則會提示
但是這個工具并不是把所有的帳戶完全的産生新的SID,而是針對兩個主要的帳戶Administrator和Guest,其他的帳号仍然使用原有的SID。
下面做一個試驗,先獲得目前帳号的SID:
S-1-5-21-2000478354-688789844-839522115
然後運作Sysprep,出現提示視窗:
确定以後需要重新開機,然後安裝程式需要重新設定計算機名稱、管理者密碼等,但是登陸的時候還是需要輸入原帳号的密碼。
進入2000以後,再次查詢SID,得到:
S-1-5-21-759461550-145307086-515799519,發現SID号已經得到了改變,查詢系統資料庫,發現系統資料庫已經全部修改了,當然全部修改了。
另外sysinternals公司也提供了類似的工具NTSID,這個到後來才發現是針對NT4的産品,界面如下:
他可不會提示什麼再DC上不能用,接受了就開始,結果導緻我的一台DC崩潰,重新開機後提示“安全賬号管理器初始化失敗,提供給識别代号頒發機構的值為無效值,錯誤狀态0XC0000084,請按确定,重新開機到目錄服務還原模式...”,即使切換到目錄服務還原模式也再也進不去了!
想想自己膽子也夠大的啊,好在是一台額外DC,但是自己用的機器,導緻重裝系統半天,重裝軟體N天,是以再次提醒大家,做以上試驗的時候一定要慎重,最好在一台無關緊要的機器上試驗,否則出現問題我不負責哦。另外在Ghost的新版企業版本中的控制台已經加入了修改SID的功能,自己還沒有嘗試,有興趣的朋友可以自己試驗一下,不過從原理上應該都是一樣的。
文章發表之前,又發現了微軟自己提供的一個工具“Riprep”,這個工具主要用做在遠端安裝的過程中,想要同時安裝上應用程式。管理者安裝了一個标準的公司桌面作業系統,并配置好應用軟體和一些桌面設定之後,可以使用Riprep從這個标準的公司桌面系統制作一個Image檔案。這個Image檔案既包括了客戶化的應用軟體,又把每個桌面系統必須獨占的安全ID、計算機賬号等删除了。管理者可以它放到遠端安裝伺服器上,供用戶端遠端啟動進行安裝時選用。但是要注意的是這個工具隻能在單硬碟、單分區而且是Professional的機器上面用。
下面是SID末尾RID值的清單,括号内為16進制:
Built-In Users
DOMAINNAME\ADMINISTRATOR
S-1-5-21-917267712-1342860078-1792151419-500 (=0x1F4)
DOMAINNAME\GUEST
S-1-5-21-917267712-1342860078-1792151419-501 (=0x1F5)
Built-In Global Groups
DOMAINNAME\DOMAIN ADMINS
S-1-5-21-917267712-1342860078-1792151419-512 (=0x200)
DOMAINNAME\DOMAIN USERS
S-1-5-21-917267712-1342860078-1792151419-513 (=0x201)
DOMAINNAME\DOMAIN GUESTS
S-1-5-21-917267712-1342860078-1792151419-514 (=0x202)
Built-In Local Groups
BUILTIN\ADMINISTRATORS S-1-5-32-544 (=0x220)
BUILTIN\USERS S-1-5-32-545 (=0x221)
BUILTIN\GUESTS S-1-5-32-546 (=0x222)
BUILTIN\ACCOUNT OPERATORS S-1-5-32-548 (=0x224)
BUILTIN\SERVER OPERATORS S-1-5-32-549 (=0x225)
BUILTIN\PRINT OPERATORS S-1-5-32-550 (=0x226)
BUILTIN\BACKUP OPERATORS S-1-5-32-551 (=0x227)
BUILTIN\REPLICATOR S-1-5-32-552 (=0x228)
Special Groups
\CREATOR OWNER S-1-3-0
\EVERYONE S-1-1-0
NT AUTHORITY\NETWORK S-1-5-2
NT AUTHORITY\INTERACTIVE S-1-5-4
NT AUTHORITY\SYSTEM S-1-5-18
NT AUTHORITY\authenticated users S-1-5-11 *.(over)
本文轉自 goldwinner 51CTO部落格,原文連結:http://blog.51cto.com/355665/83152,如需轉載請自行聯系原作者