SID 相關資訊

1. SID是什麼

SID (security identifier )是一串由不同長度數字組成的唯一識別碼,被使用在使用者帳戶、群組帳戶、電腦帳戶及服務上作為當用戶存取相關的系統資源時,系統會使用在存取權杖(Access Token)中的SID檢查該項資源的存取控制清單(ACL),並提供用戶該系統資源的適當存取權限。每個安全主體(security Principals),就是以上提到的使用者帳戶、群組帳戶、電腦帳戶及服務,在它們被建立時就會同時被分配到一個唯一的SID

2. 電腦或使用者的SID格式 (常見的 SID 架構)(常見的 SID)

使用者SID範例: S-1-5-21-4197956092-2019137781-999546546-1001
”-“分隔開的每段都有其代表的意義
  • S代表的是security identifier的意思
  • 1是版本號
  • 5是識別碼頒發機構,為148bit identifier authority value
  • 21-4197956092-2019137781-999546546 代表網域或本機電腦識別碼,其中21是固定值,4197956092-2019137781-99954654696bit隨機產生的值,由332bit subauthority所組成。
  • 1001 這欄位是RID (relative identifier)1001代表這是第二個被建立的帳號,除預設內建使用者或群組外,新建使用者由1000起跳。常見的RIDadministrator500guest501

3. 如何查詢SID

      1. 透過regedit查詢登錄值裡的帳號對應SID
      2. 透過微軟免費工具psgetsid查詢SID (建議使用這個)
        1. 查詢本機電腦SID:                                          psgetsid
        2. 查詢遠端主機SID:                                          psgetsid \\hostname
        3. 查詢遠端所有主機SID:                                   psgetsid \\*
        4. DC上查詢Domain SID:                               psgetsid
        5. DC上查詢網域成員Computer Account       psgetsid hostname$
      3. 透過查詢網域帳號SID
        1. Get-ADUser -Identity 網域帳號 | FT Name,SID -Autosize
      4. 透過指令whoami /user查詢SID
        1. 查詢本機電腦SID:                                          whoami /user (去掉RID即為電腦SID)
        2. 查詢現在登入帳戶 SID                                   whoami /user
      5. 透過指令 WMIC 查詢SID
        1. 查詢本機電腦所有帳號SID:                                          WMIC useraccount get name,sid (去掉RID即為電腦SID)
        2. 查詢現在登入帳戶 SID: wmic useraccount where name="user" get sid (去掉RID即為電腦SID)


4. SID重複的影響

      1. 網域成員不可以跟網域控制站有相同的Machine SID,這樣會造成安全性問題。
      2. 在內接硬碟或外接可移除式磁碟(USB Disk)上的NTFS權限,會因其他電腦有相同SID的群組而能夠存取。(經測試,該目錄或檔案安全性權限會變成其他電腦上有相同SID使用者或群組名稱)
      3. 單靠Machine SID 來識別電腦的分佈式軟體。

5. Sysprep 做了什麼?

      1. 產生一個新的 SID、新的 SUSClientID
      2. 啟動隨插即用硬體偵測
      3. 重設產品啟用時鐘
      4. 刪除組態資料檔、紀錄檔、電腦特定組態

6. 是否一定要使用 sysprep?

      1. 解決不能與第一台 Domain Controller 有相同SID的問題。
      2. 避免所有電腦都擁有同一個SUSClientID
      3. 避免使用可移除式磁碟時發生有相同SID的使用者能存取受限的檔案或目錄。
      4. 解決使用BizTalk Server 時, Windows 的 MSDTC 必須獲派唯一的 CID 值。

7. EFS解密問題,實測可行方式

      1. 使用Advanced EFS Data Recovery之類的軟體解密,必須滿足下列條件才有機會解密
        1. 原有的使用者設定檔有保留
        2. 機器SID不能有改變
      2. 如果機器格式化重灌,可利用原先備出的master keyprivate key及簽章救回加密資料
        1. 需備份master keyprivate key及簽章
        2. 需有可變更SID的程式
        3. 需記得原帳戶密碼
                 master key: %UserProfile%\Application Data\Microsoft\Crypto\RSA\SID
        private key: %UserProfile%\Application Data\Microsoft\Protect\SID
       簽章位置: %UserProfile%\Application Data\Microsoft\SystemCertificates\My\Certificates


簡單說,如果master keyprivate key、簽章,帳戶密碼及本機電腦SID沒有保留或記錄下來就肯定沒救。

8. Q&A

Q1. 不做SYSPREP導致電腦SID重複,是否會造成電腦無法加入網域?


A1. 不會,加入網域時電腦會取得該網域配發的電腦帳戶SID,而這組SID跟本機電腦SID是不一樣的。電腦帳戶SID必須從網域控制站才查得到。



Q2. 工作群組裡兩台電腦上的使用者有相同的SID,如果其中一台電腦上的使用者開資料夾共享給自己,另一台上相同SID的使用者是否能直接存取該共享資料夾?

A2. 不行,因為SID只作用在本機端,所有連線到遠端資源的存取都不會用到SID,都必須使用其他的驗證方式。


Q3. 正常狀態下,誰會跟網域控制站有相同的Domain SID?

A3. 其他的網域控制站。在一台成員伺服器升級成網域控制站時,它會將自己的Domain SID改成跟原本的網域控制站一樣。但電腦帳戶SID還是不一樣。


Q4. 如果使用Windows EFS加密檔案後,格式化重灌系統或使用映像檔重灌系統,原本的加密檔打不開了。是否可利用相同SID的電腦及使用者將這些檔案解密?

A4. 不行。如果master keyprivate key沒了,即使是相同SID的電腦及使用者也無法產生一樣的master keyprivate key


Q5. 如果要加入網域的成員伺服器跟網域控制站有一樣的本機電腦SID,能加入網域嗎?

A5. 能夠加入網域,也沒有任何錯誤訊息。此時成員伺服器的本機電腦SID和網域的SID會是一樣,但網域裡的電腦帳戶SID不一樣,不過由於成員伺服器的本機電腦SID和網域的SID一致會造成資安問題。












留言

熱門文章