天天看點

SID詳解

前言 

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,如需轉載請自行聯系原作者

繼續閱讀