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,如需转载请自行联系原作者

相关文章
|
7月前
|
存储 固态存储 大数据
阿里云服务器2核8G、4核16G、8核32G可选实例规格、收费标准与活动价格
2026年阿里云调整了2核8G、4核16G、8核32G配置的价格与优惠,提供经济型e、通用算力型(u1、u2i、u2a)及第九代企业级实例(c9i,g9i, r9i等)供选择,满足不同用户需求。经济型e实例适合个人开发者及轻量应用;通用算力型实例平衡性能与成本,适合中小企业;第九代企业级实例提供极致性能,适合高性能需求场景。用户可根据业务需求、性能要求及预算选择合适的实例规格与付费模式,并利用优惠券进一步节省成本。
1169 1
|
11月前
|
缓存 Windows
win11更新出问题了安装错误 - 0x80070002,问题解决
Win11更新报错0x80070002?常见原因包括系统文件缺失、更新缓存损坏。可通过运行Windows更新疑难解答、清除SoftwareDistribution缓存、使用SFC和DISM命令修复系统文件、手动下载更新或使用微软官方工具(如MediaCreationTool)解决。还可尝试DirectX修复工具等第三方方案,全面排除问题,确保系统顺利更新。
1775 0
|
Windows
LabVIEW使用 NI Package Manager(NIPM)修复软件
LabVIEW使用 NI Package Manager(NIPM)修复软件
1068 3
|
缓存 PyTorch 算法框架/工具
AI Infra之模型显存管理分析
本文围绕某线上客户部署DeepSeek-R1满血版模型时进行多次压测后,发现显存占用一直上升,从未下降的现象,记录了排查过程。
1880 41
AI Infra之模型显存管理分析
|
人工智能 物联网 UED
自修复材料:未来材料的自我修复能力
【10月更文挑战第14天】自修复材料作为未来材料的重要发展方向之一,以其独特的自我修复能力,正逐步改变着我们的生活和工作方式。通过深入了解其原理、分类、创新性研究及应用前景,我们可以更加清晰地看到自修复材料在推动社会进步和科技创新中的重要作用。让我们共同期待自修复材料在未来带来的更多惊喜和变革!
1113 2
|
消息中间件 存储 负载均衡
两个实验让我彻底弄懂了「订阅关系一致」
这篇文章,笔者想聊聊 RocketMQ 最佳实践之一:**保证订阅关系一致**。 订阅关系一致指的是同一个消费者 Group ID 下所有 Consumer 实例所订阅的 Topic 、Tag 必须完全一致。 如果订阅关系不一致,消息消费的逻辑就会混乱,甚至导致消息丢失。
两个实验让我彻底弄懂了「订阅关系一致」
|
缓存 Java API
Java API设计实战指南:打造稳健、用户友好的API
本文将深入探讨在Java中设计有效API的原则,并着重介绍RESTful设计原则、版本控制策略以及文档实践。
1058 38
|
虚拟化
VMware安装OpenEuler(安装界面)1
VMware安装OpenEuler(安装界面)
508 0
|
并行计算 Ubuntu
ubuntu彻底卸载Nvidia显卡驱动
ubuntu彻底卸载Nvidia显卡驱动
4309 4