RID有什么作用?
SID(Security Identifier)是在Windows操作系统中用于标识唯一用户、组和计算机的标识符。SID由一个固定长度的字符串表示,在系统中是唯一的。
我们根据上面SID,先简单解释它的结构:
第一个标识符:1,表示SID的版本。
第二个标识符:5,表示权限颁发机构,5代表NT权限机构。
第三个标识符:21,表示本地或域用户组。
第四、五、六个标识符表示机器码,804928018: 主机的唯一标识号、3453593241: 主域的唯一标识号、2207110815: 工作组或子域的唯一标识号。
第七个标识符:1001,表示RID(相对标识符)主要用于保证在同一个系统中不同的主体(用户、组)都有一个唯一标识符也就是SID,同时分配对应的安全性设置及控制主体对资源和对象的访问权限控制列表(ACL)。
用户、计算机和组的RID从1000开始。500-999的RID为系统保留。管理员的RID为500、Guest的RID为501。
到这里我们已经发现问题了,按照刚才的解释如果我们将admin或其它低权限账户的RID更改为administratir的RID:500,那该账户是否可以获得与administratir相同的安全性设置和ACL。
手工实验
1、打开注册表查看Guest、administrator的RID。
Guest账户的RID
注册表位置:
HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNamesGuest
Administrator的RID
2、劫持RID
找到Guest账户对应的F键,这里关注两个偏移量30、38。偏移量30存储的用户RID, 偏移量38表示的是账户状态,1502表示禁用、1402表示启用。
直接将偏移量30值F501改为F401(RID:500),执行命令验证。
Tips:管理组中是不显示Guest账户的。
通过命令查询Guest的SID还是为501,没有改变。
实验复盘
原理:通过实验我们成功验证如果更改低权限账户的RID,可以劫持该RID对应的安全性设置及控制主体对资源和对象的访问权限控制列表(ACL)。使我们的低权限账户拥有对应RID相同的权限,利用的是Windows操作系统中的权限管理机制来获取超级用户权限进行权限维持。
优点:
1、通过命令查询账户的SID不会发生变化。
2、劫持管理员RID时,低权限账户不会显示在管理组中。
3、可以利用存在的低权限账户进行维权,增加隐蔽性。
4、攻击过程简单、成本低、痕迹小。
缺点:
1、操作注册表需要system权限。
2、如果使用Guest劫持用户目录会创建Guest用户的文件夹。
工具利用
使用Github上公开的即可,通过powershell可以无文件利用。
Import-Module .Invoke-RIDHijacking.ps1 ##导入模块
Invoke-RIDHijacking -User Guest -RID 500 -Password admin123 ##指定Guest账户并更改密码
net user guest /active:yes ##开启Guest账户
原文始发于微信公众号(YongYe 安全实验室):权限维持一、RID劫持技术
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论