While playing about with my Active directory (AD) lab infrastructure, I discovered I was able to create machine accounts across domain trusts. This led to the following bit of research.
There's been a lot of research into the impact of users creating machine accounts, including by Kevin Robertson's here and by Elad Shamir here but not much discussed about doing this across a domain trust.
The lab I'm using for this blog post is setup as follows:
So here there are 3 forests and 4 domains (1 child domain). For the sake of simplicity this is a completely flat network, so all machines can access all other machines.
We have access to a low privileged user in the other.zeroday.lab domain.
This domain has a bidirectional external trust with the child domain child1.internal.zeroday.lab:
The child1.internal.zeroday.lab domain has an addition trust with it's parent domain internal.zeroday.lab:
Limitations Of The Current Position
It is not possible to authenticate against the internal.zeroday.lab domain using the current user:
And therefore, it is not possible to perform any real enumeration against that domain.
Also, it is not possible to create DNS records in the child1.internal.zeroday.lab domain:
Enter Machine Accounts
So while trying some things on this lab I attempted to create a machine account in child1.internal.zeroday.lab using the other.user user from other.zeroday.lab, and it worked:
The reason I tried this initially was because I wanted to create a DNS record in the trusted domain, which is now possible using this newly created machine account:
This shows that I now have more privileges on the trusted domain than I did otherwise.
But the implications were bigger, I can now use this machine account to query other trusted domains. So I can now enumerate trusts for the trusted domain internal.zeroday.lab:
And as a result, it's also possible to perform attacks such as kerberoasting against those trusted domains:
So we now clearly have much greater privileges across the enterprise than we did with only the user account we started out with.
Limitations Of Machine Accounts
While the machine accounts can create other machine account within the same domain (as I mentioned in my delegate to thyself post, a machine account is not able to create machine accounts across a trust:
This means we cannot use this machine account to pivot across the whole enterprise and gain access to the external.zeroday.lab domain without compromising another user account.
For me at least, this makes clear that the machine account quota configuration is more important than previously thought. By leaving this configuration at anything but 0, you allow for attackers on any domains that you have trust relationships with, to perform attacks against all other domains you have trust relationships with. Clearly it's not a huge impact if your domain only has 1 trust, then the main impact I can see is the ability for an attacker on the other domain to create DNS records within your domain.
More research is definitely needed in this area, I can't help but feel that this opens up new attacks that I'm not currently seeing.