Windows操作系统----安全机制----SID

trustee(受托人)

一个ACE使用的用户账户、组或登录会话。ACE属于ACL,ACE有一个SID来标识一个trustee。

当前登录会话的SID是logon SID,用于在注销前准许或拒绝访问权限很方便。

TRUSTEE结构见TRUSTEE_A (accctrl.h) - Win32 apps | Microsoft Docs

这个结构准许使用名称字符串或SID来标识一个trustee。

如果使用名称,通过TRUSTEE创建ACE时,需要通过名称确定对应的SID。BuildTrusteeWithSid and BuildTrusteeWithName函数通过名称或SID转换成对应的TRUSTEE结构。

BuildTrusteeWithObjectsAndSid and BuildTrusteeWithObjectsAndName函数通过ACE转换成对应的TRUSTEE结构。

TRUSTEE结构的ptstrName成员是OBJECTS_AND_NAME or OBJECTS_AND_SID的指针。这些指针提供和ACE所属对象有关的信息。

SID简介

是长度可变的,标识trustee的唯一值。

每个账户有一个授权者分配的唯一SID,存在安全数据库中。用户登录时,系统从数据库获得SID并放在用户的访问令牌中。

使用场景:

安全描述符中标识对象的拥有者,安全描述符中标识首要组

ACE中标识本条目的trustee

访问令牌中标识用户属于的用户或组

有一些代表固定用户或组的SID:Well-known SIDs - Win32 apps | Microsoft Docs

操作SID的函数列表:Security Identifiers - Win32 apps | Microsoft Docs

SID构成

SID值既包含SID相关的信息也包含唯一标识trustee的信息。组成结构包括:

  • SID结构版本
  • 48比特的值标识产生SID的授权者(identifier authority)
  • 可变数量的子授权(subauthority)者或RID(relative identifier),RID唯一标识产生SID的授权者有关的trustee
  • identifier authority和subauthority确保没有相同的SID。
  • SID遵循的模式是:S-R-IA-SA-SA-RID:
  • 字母S指明这是一个SID标识符,它将数字标记为一个SID。
  • R代表Revision(修订),Windows生成的所有SID都使用修订级别 1.
  • IA代表颁发机构。在Widnwos中,几乎所有SID都指定NT机构作为颁发机构,它的ID编号为5.但是,代表已知组和账户的SID例外。
  • SA代表一个子机构。SA指定特殊的组或职能。例如、21表明SID由一个域控制器或者一台单机颁发。随后的一长串数字(1683771068-12213551888-624655398)就是颁发SID的那个域或机器的SA。
  • RID是指相对ID(RID)、是SA所指派的一个惟一的、顺序的编号、代表一个安全主体(比如一个用户、计算机或组)

查看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,其实感觉原理都是读取注册表的值罢了,就是省了一些事情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值