1. Security Identifier (SID) là gì?
SID (Security Identifier – Security ID) là con số dùng để định danh các đối tượng (user, group, computer,… ) trong hệ thống Windows.
2. Tại sao Windows cần SID?
Nên biết, thông tin SID cho local group và local account được tạo bởi LSA (Local Security Authority) trên Windows và nó lưu trữ thông tin SID trong registry.
Còn thông tin SID cho domain account và domain group thì được tạo bởi DSA (Domian Security Authority) và được lưu trữ như là 1 thuộc tính của user hoặc group trong Active directory domain services (ADDS).
SID được phát sinh khi một đối tượng (user, group, computer,… ) được khởi tạo và tuyệt nhiên không thể tồn tại 2 SID giống nhau. Thông thường chúng ta chỉ thấy username là “Tí”, “Tèo” nhưng đối với Windows nó là 1 con số định danh đại diện (SID). Và Security Authority không bao giờ sử dụng lại SID của những đối tượng đã bị delete (vd: tạo user name tên Tí, sau đó xóa xong, tạo lại thì user name Tí “mới” sẽ có SID khác).
SID cho phép rename các đối tượng mà không ảnh hưởng đến các thuộc tính của đối tượng.
Các dạng thức của SID cho Windows có dạng như S-1-5-21-D1-D2-D3-RID
Trong đó:
- S-1-5-21 là một tiền tố của NT.
- D1, D2, D3 là những con số 32-bit đặc trưng cho một miền. Khi một miền được tạo ra, các con số từ D1 cho tới D3 này cũng được xác định theo. Tất cả các SID trong miền đó đều có cùng ba giá trị này.
- RID (Relative Identifier) là mã nhận diện tương đối. Đây chính là phần duy nhất của một SID bất kỳ. Mỗi tài khoản mới luôn có một con số RID hoàn toàn khác biệt với các tài khoản trước đó trong miền.
3. Cấu trúc SID
Cấu trúc thông tin một SID có dạng như sau:
Chú thích:
- Revision: xác định phiên bản của SID
(nếu SID được tạo bởi HDH server 2003 trở về sau thì có Revision là 1). - Identifier Authority (IA): Dùng để định danh cho tổ chức cấp phát SID có các giá trị dưới.
+ IA=0: Null Authority đại diện cho SID của một đối tượng không được biết.
+ IA=1: World Authority (Ví dụ: đại diện cho SID của group EveryOne).
+ IA=2: Local Authority(đại diện cho SID của user có quyền đăng nhập cục bộ).
+ IA=3: Creator Authority (đại diện cho SID của chủ sở hữu tạo đối tượng).
+ IA=4: Non-unique Authority.
+ IA=5: NT Authority hay Security Group (vd: group administrators, group users v.v).
+ IA=9: Resource Manager Authority. - SubAuthorities: chứa những thông tin quan trọng của SID, dùng dể định danh local computer hoặc domain.
Relative Identifier (RID): phần giá trị cuối cùng của SubAuthorites dùng để định danh user hoặc security group trong domain hoac local computer.
Ví dụ: S-1-5-12-7723811915-3361004348-033306820-515 là SID của 1 user thuộc nhóm Administrator
Chú thích:
- S: xác định đây là 1 SID
- 1: Revision
- 5: IA
- 12-1180699209-877415012-3182924384: Subauthorities
- 515: RID.
(RID của tài khoản Administrator luôn bằng 500. RID của tài khoản guest luôn bằng 501).
Lưu ý: S-1-5-12 trong ví dụ trên thực chất là Restricted Code (reserved for future use).
SID user account thay đổi khi di chuyển (move) user từ domain này sang domain khác nhưng SID của group thì không đổi), lúc này SID mới sẽ chép đè lên thuộc tính của user. SID cũ sẽ được copy vào thuộc tính khác của user là SID-Hostory (sidHistory). Cứ mỗi lần move user thì hệ thống lại làm tiếp tục như thế. Thuộc tính SID-History sẽ chứa nhiều SID cũ.
Ghi chú:
- Windows cấp quyền (allow, deny) cho đối tượng để truy cập tài nguyên dựa vào Acess Control Lists (ACLs) mà ACLs lại dùng SID để định danh các đối tượng.
- Trong môi trường domain, khi user đăng nhập thành công, Domain Authentication Service sẽ truy vấn về AD database, trả về kết quả là các SID của user (cũ, mới) và SID của group mà chứa user đó. Windows sẽ khởi tạo Acess Token (thẻ truy cập) chứa các SID đó.. Khi user truy cập tài nguyên, Acess Token sẽ kiểm tra lại ACLs để thực hiện hành động allow hay deny.
- Do SID của group trong môi trường domain không đổi (vì it khi move group) cho nên ta nên phân quyền tài nguyên theo group,nhưng có các trường hợp ta phân quyền theo user thì nhờ vào thuộc tính Sid-History mà ACLs có thể biết quyền của user này khi nó bị thay đổi SID.
- Các SID không bao giờ được tái sử dụng, không bao giờ xuất hiện lần thứ hai. Vì tính chất độc nhất này nên khi một tài khoản bị xóa, SID của tài khoản đó cũng biến mất vĩnh viễn theo.
4. Xem thông tin SID trên Windows Server
- Cách 1 – “PsGetSid”
Để xem thông tin SID trên hệ thống Windows Server ta có thể dùng công cụ có tên “PsGetSid“.
PsGetSid: https://docs.microsoft.com/en-us/sysinternals/downloads/psgetsid
Download chương trình “PsGetSid” về, copy PsGetsid.exe vào ổ C và sử dụng chương trình bằng terminal CMD. Lúc đó bạn sẽ có được thông tin SID như hình dưới. - Cách 2 – “WMIC”
Mở terminal CMD : Run -> cmd . Sau đó thực thi câu lệnh sau trên CMD, câu lệnh này giúp xem SID của Account User.
wmic useraccount get name,sid
SID S-1-5-21-3463156894-1999072988-1980740203 cho local computer
SID S-1-5-21-3463156894-1999072988-1980740203 cho Local Computer
SID S-1-5-21-2438277076-3472095679-928950307 cho domain qk7.bqp
Ta có thể thấy SID của các đối tượng user, group được phát sinh từ SID của computer hoặc domain (thêm RID). - Cách 3 – “Registry”
Bạn hoàn toàn có thể kiểm tra thông tin SID dựa vào thông tin Registry với đường dẫn registry như dưới.
Run -> regedit ->
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
Lưu ý:
– Khi Join Domain, SID giữa các máy phải khác nhau. Nếu clone trong VMware hoặc dùng phần mềm ghost, .v.v... thì các máy sẽ có SID giống nhau, vì vậy ta phải xóa SID đi để hệ thống tạo ra SID khác. Nếu không sẽ phát sinh lỗi do sự trùng lặp thông tin SID.
5. Cách thay đổi SID trên Windows
Chúng ta sẽ sử dụng công cụ “sysprep” có sẵn trên Windows. Bạn vào thư mục đường dẫn: C:\Windows\System32\Sysprep\Sysprep.exe, chạy chương trình Sysprep .
Check vào ô “Generalize” khi tool box hiện ra như dưới.
Sau khi reboot, Windows bắt ta khai báo lại các thông số.