Windows Server 2025 Active Directory权限提升漏洞检测工具
BadSuccessor - Active Directory权限提升漏洞检测工具
项目描述
BadSuccessor是一个针对Windows Server 2025中Active Directory权限提升漏洞的安全检测工具。该工具利用PowerShell脚本帮助安全团队识别环境中存在风险的权限配置,特别是针对新引入的委托管理服务账户(dMSA)功能的滥用风险。
功能特性
- 权限分析: 自动检测域中具有创建dMSA权限的身份
- 组织单位识别: 定位存在BadSuccessor攻击风险的OU
- 安全过滤: 自动排除内置特权组(域管理员、企业管理员等)
- 轻量级运行: 仅需要域读取权限,无需高级特权
- 环境兼容: 适用于默认配置的Windows Server 2025环境
安装指南
系统要求
- Windows PowerShell 5.1或更高版本
- Active Directory模块
- 域环境读取权限
安装步骤
- 克隆或下载本仓库到本地
- 确保已安装Active Directory PowerShell模块
- 以域用户身份运行PowerShell
- 执行脚本:
.\Get-BadSuccessorOUPermissions.ps1
使用说明
基础使用
直接在PowerShell中运行脚本即可获取分析结果:
.\Get-BadSuccessorOUPermissions.ps1
输出示例
脚本执行后将生成类似以下格式的表格输出:
| Identity | OUs |
|---|---|
| CORP\svc_app | OU=Apps,DC=corp,DC=local |
| CORP\UserCreators | OU=Tier1,OU=IT,DC=corp,DC=local |
结果解读
- Identity: 具有创建dMSA权限的用户或服务账户
- OUs: 对应身份具有权限的组织单位列表
- 建议审查每个身份的特权级别和监控状态
核心代码
权限检测核心逻辑
# 获取所有非特权用户具有dMSA创建权限的OU
function Get-dMSACreationPermissions {
$OUs = Get-ADOrganizationalUnit -Filter * -Properties nTSecurityDescriptor
$results = @()
foreach ($OU in $OUs) {
$acl = $OU.nTSecurityDescriptor
$accessRules = $acl.Access
foreach ($rule in $accessRules) {
if ($rule.ActiveDirectoryRights -match "CreateChild") {
if ($rule.ObjectType -eq $dMSA_ObjectGuid) {
# 记录具有权限的身份和OU
$result = [PSCustomObject]@{
Identity = $rule.IdentityReference
OU = $OU.DistinguishedName
}
$results += $result
}
}
}
}
return $results
}
特权组过滤机制
# 排除内置特权组
$excludedGroups = @(
"DOMAIN\Domain Admins",
"DOMAIN\Enterprise Admins",
"DOMAIN\Schema Admins",
"DOMAIN\Administrators"
)
function Filter-PrivilegedIdentities {
param($results)
$filteredResults = @()
foreach ($result in $results) {
$isPrivileged = $false
foreach ($group in $excludedGroups) {
if ($result.Identity -like $group) {
$isPrivileged = $true
break
}
}
if (-not $isPrivileged) {
$filteredResults += $result
}
}
return $filteredResults
}
结果汇总与输出
# 主执行逻辑
try {
Write-Host "正在分析Active Directory权限配置..." -ForegroundColor Green
# 获取dMSA对象GUID
$dMSA_ObjectGuid = (Get-ADObject -SearchBase (Get-ADRootDSE).schemaNamingContext -Filter {Name -eq "msDS-GroupManagedServiceAccount"}).ObjectGUID
# 检测权限配置
$rawResults = Get-dMSACreationPermissions
# 过滤特权组
$finalResults = Filter-PrivilegedIdentities -results $rawResults
# 输出结果
$finalResults | Format-Table -AutoSize
} catch {
Write-Error "执行过程中发生错误: $($_.Exception.Message)"
}
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码


浙公网安备 33010602011771号