SID
也就是安全标识符(
Security Identifiers
),是标识用户、组和计算机帐户的唯一的号码。在第一次创建该帐户时,将给网络上的每一个帐户发布一个唯一的
SID
。
Windows 2000
中的内部进程将引用帐户的
SID
而不是帐户的用户或组名。如果创建帐户,再删除帐户,然后使用相同的用户名创建另一个帐户,则新帐户将不具有授权给前一个帐户的权力或权限,原因是该帐户具有不同的
SID
号。安全标识符也被称为安全
ID
或
SID
。
SID
的作用
用户通过验证后,登陆进程会给用户一个访问令牌,该令牌相当于用户访问系统资源的票证,当用户试图访问系统资源时,将访问令牌提供给
Windows NT
,然后
Windows NT
检查用户试图访问对象上的访问控制列表。如果用户被允许访问该对象,
Windows NT
将会分配给用户适当的访问权限。
访问令牌是用户在通过验证的时候有登陆进程所提供的,所以改变用户的权限需要注销后重新登陆,重新获取访问令牌。
SID
号码的组成
如果存在两个同样
SID
的用户,这两个帐户将被鉴别为同一个帐户,原理上如果帐户无限制增加的时候,会产生同样的
SID
,在通常的情况下
SID
是唯一的,他由计算机名、当前时间、当前用户态线程的
CPU
耗费时间的总和三个参数决定以保证它的唯一性。
一个完整的
SID
包括:
Code:
•
用户和组的安全描述
• 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
列表。
其中很多值都是固定的,比如第一个
000001F
4
(
16
进制),换算成十进制是
500
,说明是系统建立的内置管理员帐号
administrator
,
000001F
5
换算成
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
,得到:
。
J
S-1-5-21-759461550-145307086-515799519
,发现
SID
号已经得到了改变,查询注册表,发现注册表已经全部修改了,当然全部修改了
另外
sysinternals
公司也提供了类似的工具
NTSID
,这个到后来才发现是针对
NT4
的产品,界面如下:
他可不会提示什么再
DC
上不能用,接受了就开始,结果导致我的一台
DC
崩溃,重启后提示
“
安全账号管理器初始化失败,提供给识别代号颁发机构的值为无效值,错误状态
0XC0000084
,请按确定,重启到目录服务还原模式
...”
,即使切换到目录服务还原模式也再也进不去了!
。另外在
Ghost
的新版企业版本中的控制台已经加入了修改
SID
的功能,自己还没有尝试,有兴趣的朋友可以自己试验一下,不过从原理上应该都是一样的。
J
,所以再次提醒大家,做以上试验的时候一定要慎重,最好在一台无关紧要的机器上试验,否则出现问题我不负责哦
L
想想自己胆子也够大的啊,好在是一台额外
DC
,但是自己用的机器,导致重装系统半天,重装软件
N
天
文章发表之前,又发现了微软自己提供的一个工具
“Riprep”
,这个工具主要用做在远程安装的过程中,想要同时安装上应用程序。管理员安装了一个标准的公司桌面操作系统,并配置好应用软件和一些桌面设置之后,可以使用
Riprep
从这个标准的公司桌面系统制作一个
Image
文件。这个
Image
文件既包括了客户化的应用软件,又把每个桌面系统必须独占的安全
ID
、计算机账号等删除了。管理员可以它放到远程安装服务器上,供客户端远程启动进行安装时选用。但是要注意的是这个工具只能在单硬盘、单分区而且是
Professional
的机器上面用。
下面是
SID
末尾
RID
值的列表,括号内为
16
进制:
Code:
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)