You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查找并移除AD用户的S-1-5-32-554身份引用技术求助

AD权限排查与修复脚本

问题背景

为提升安全性,已将「Authenticated Users」从Pre-Windows 2000 Compatible Access组中移除。但发现普通用户执行PowerShell查询所有用户createTimeStamp属性时,仍能查看部分用户的时间戳;域管理员执行查询则能看到全部数据。排查确认:这些可被普通用户查看的用户对象上绑定了IdentityReference为S-1-5-32-554(即Builtin\Pre-Windows 2000 Compatible Access组)的权限,且这些用户并非该组成员;同时受影响用户均曾或当前设置AdminCount=1,导致AD信息过度暴露。


脚本1:检索带有S-1-5-32-554身份引用的AD用户

需以域管理员身份运行,确保能读取所有用户的权限信息:

Get-ADUser -Filter {AdminCount -eq 1} -Properties ntSecurityDescriptor, Name, SamAccountName | ForEach-Object {
    $targetUser = $_
    $targetUser.ntSecurityDescriptor.Access | Where-Object {
        $_.IdentityReference.Value -eq "S-1-5-32-554"
    } | ForEach-Object {
        [PSCustomObject]@{
            SamAccountName      = $targetUser.SamAccountName
            DisplayName         = $targetUser.Name
            IdentityReference   = $_.IdentityReference.Value
            AccessType          = $_.AccessControlType
            GrantedRights       = $_.ActiveDirectoryRights
        }
    }
} | Export-Csv -Path "Win2kCompatExposedUsers.csv" -NoTypeInformation -Encoding UTF8

说明

  • 针对AdminCount=1的用户(受影响用户的共同特征)筛选,避免无意义遍历
  • 提取包含S-1-5-32-554权限项的用户信息,导出为CSV文件方便后续处理

脚本2:从指定用户中移除S-1-5-32-554身份引用

需以域管理员身份运行,确保CSV文件NoMoreWin2kCompat.csv包含SamAccountName列(存储要处理的用户账号):

$userList = Import-Csv -Path "NoMoreWin2kCompat.csv" -Encoding UTF8

foreach ($user in $userList) {
    try {
        $adUser = Get-ADUser -Identity $user.SamAccountName -Properties ntSecurityDescriptor
        $securityDesc = $adUser.ntSecurityDescriptor

        # 筛选需要移除的权限规则
        $rulesToRemove = $securityDesc.Access | Where-Object {
            $_.IdentityReference.Value -eq "S-1-5-32-554"
        }

        # 批量移除权限规则
        foreach ($rule in $rulesToRemove) {
            $securityDesc.RemoveAccessRule($rule) | Out-Null
        }

        # 更新AD用户的安全描述符
        Set-ADUser -Identity $adUser -Replace @{ntSecurityDescriptor = $securityDesc}
        Write-Host "✅ 已处理用户:$($user.SamAccountName)"
    }
    catch {
        Write-Error "❌ 处理用户 $($user.SamAccountName) 失败:$_"
    }
}

说明

  • 遍历CSV中的用户,逐个移除其安全描述符中指向S-1-5-32-554的所有权限规则
  • 处理过程中输出结果,便于排查异常

内容的提问来源于stack exchange,提问作者BiGBaG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:33:20