| SID也就是安全性識別碼(Security Identifiers),是標識使用者、組和電腦帳戶的唯一的號碼。在第一次建立該帳戶時,將給網路上的每一個帳戶發布一個唯一的 SID。Windows 2000 中的內部進程將引用帳戶的 SID 而不是帳戶的使用者或組名。如果建立帳戶,再刪除帳戶,然後使用相同的使用者名稱建立另一個帳戶,則新帳戶將不具有授權給前一個帳戶的權力或許可權,原因是該帳戶具有不同的 S識別碼。安全性識別碼也被稱為安全性識別碼 或 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) NewSID ,顧名思義,就是可以利用它來為電腦重建新的SID號。為什麼要重新定義新SID?如果用Ghost的鏡像批量的來安裝系統,那麼它們的SID號必然相同。若內部網路上電腦SID相同就會造成許多衝突,加入域也會有很大問題,甚至造成客戶機無法加入到域。對於什麼是SID?2樓已經有很詳細的介紹。 Windows 安裝光碟片不是已經提供了Sysprep嗎?什麼還要用NewSID呢? 1、 凡用過Sysprep的朋友都應該知道,如果用Sysprep來重新封裝系統,在重啟之後會要求我們重新輸入產品序號和重新添加使用者,對於企業來說很多時候是不希望員工得到產品ID的,讓非IT職員來完成系統任務也很有可能造成一些不必要的麻煩。 2、 正是基於我們這些迫切需求,NewSID可謂是一個完美的解決方案。它提供三種方式來讓我們重建SID:a.隨機產生 b.從其它電腦複製 c.手工輸入,以上這三種方式可以滿足大多數使用者的需求。我們還可以選擇是否重新給電腦更名,最後也可以手工指定在SID重定義完成後是否重啟電腦。 3、 電腦重啟之後不會讓我們再次輸入產品序號,也不會讓我們重新添加使用者,這為我們減少了很多不必要的麻煩。 總結:NewSID是一個相當Cool的小工具,大家一定要將其收到自己的工具箱中,以備不時之需。 |