StandIn v1.3 releases: NET35/45 AD post-exploitation toolkit
StandIn
StandIn is a small AD post-compromise toolkit. StandIn came about because recently at xforcered we needed a .NET native solution to perform resource-based constrained delegation. However, StandIn quickly ballooned to include a number of comfort features.
LDAP Object Operations
All object operations expect that the LDAP filter returns a single object and will exit out if your query returns more. This is by design.
Get object
Use Case
Operationally, we may want to look at all of the properties of a specific object in AD. A common example would be to look at what groups a user account is member of or when a user account last authenticated to the domain.
Get object access permissions
Use Case
At certain stages of the engagement, the operator may want to resolve the access permissions for a specific object in AD. Many permissions can offer an operational avenue to expand access or achieve objectives. For instance, a WriteDacl permission on a group could allow the operator to grant him / her self permissions to add a new user to the group. Tools like SharpHound already, in many instances, reveal these Dacl weaknesses.
Grant object access permission
Use Case
With the appropriate rights, the operator can grant an NTAccount special permissions over a specific object in AD. For instance, if an operator has GenericAll privileges over a user account they can grant themselves or a 3rd party NTAccount permission to change the user’s password without knowing the current password.
Set object password
Use Case
If the operator has
User-Force-Change-Password
permissions over a user object they can change the password for that user account without knowing the current password. This action is destructive as the user will no longer be able to authenticate which may raise alarm bells.
Add/Remove ASREP from object flags
Use Case
If the operator has write access to a user account, they can modify the user’s
userAccountControl
flags to includeDONT_REQUIRE_PREAUTH
. Doing so allows the operator to request an AS-REP hash for the user which can be cracked offline. This process is very similar to kerberoasting. This action is not destructive, but it relies on the fact that the user has a password which can be cracked in a reasonable timeframe.
Add/Remove ASREP from object flags
Use Case
If the operator has write access to a user account, they can modify the user’s
userAccountControl
flags to includeDONT_REQUIRE_PREAUTH
. Doing so allows the operator to request an AS-REP hash for the user which can be cracked offline. This process is very similar to kerberoasting. This action is not destructive, but it relies on the fact that the user has a password which can be cracked in a reasonable timeframe.
Changelog v1.3
– Added function to list ADCS templates
– Added function to add/remove Client Authentication from ADCS template
– Added function to add/remove ENROLLEE_SUPPLIES_SUBJECT from ADCS template
– Added function to change ADCS template Owner
– Added function to add/remove Write permissions on ADCS template
– Added function to add/remove Certificate Enrollment permissions on ADCS template