acltoolkit是一款针对ACL(访问控制列表)的多功能安全工具,该工具实现了多种针对ACL的滥用技术,可以帮助广大研究人员更好地研究ACL安全。
工具安装
由于该工具基于Python开发,因此我们首先需要在本地设备上安装并配置好Python环境。接下来,广大研究人员可以使用下列命令将该项目源码克隆至本地,并构建项目代码:
代码语言:javascript复制git clone https://github.com/zblurx/acltoolkit.git
cd acltoolkit
make
除此之外,我们也可以直接使用pip工具安装acltoolkit:
代码语言:javascript复制pip install acltoolkit-ad
工具使用
代码语言:javascript复制
代码语言:javascript复制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} ...
ACL abuse swiss-army knife
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 获取对象ACL
set-objectowner 修改对象拥有者
give-genericall 在目标对象上授权对象GENERIC_ALL
give-dcsync 在域上授予对象DCSync功能
add-groupmember 向组中添加成员
set-logonscript 修改用户登录脚本
options:
-h, --help 显示工具帮助信息和退出
-debug 开启调试模式输出
-no-pass 不询问密码(适用于-k选项)
-k 使用Kerberos验证,从ccache文件获取凭证信息。如果没有找到有效凭证,则需要在命令行参数中直接指定
-dc-ip ip address 目标域控制器的IP地址
-scheme ldap scheme
authentication:
-hashes LMHASH:NTHASH
NTLM哈希,格式为LMHASH:NTHASH
命令使用
get-objectacl
代码语言:javascript复制
$ acltoolkit get-objectacl -h
usage: acltoolkit target get-objectacl [-h] [-object object] [-all]
options:
-h, --help 显示帮助信息和退出
-object object 转储对象ACL,参数可以是一个sAMAccountName、一个名称、一个DN或一个objectSid
-all 枚举对象ACE
get-objectacl将使用一个sAMAccountName、一个名称、一个DN或一个objectSid作为-object的输入,并将列出它的Sid、name、DN、Class、adminCount、配置的LogonScript、PrimaryGroup、Owner和DACL。如果没有提供参数,则将列出有关用于身份验证的帐户的信息:
代码语言:javascript复制
$ acltoolkit waza.local/jsmith:Password#123@192.168.56.112 get-objectacl
Sid : S-1-5-21-267175082-2660600898-836655089-1103
Name : wazaJohn Smith
DN : CN=John Smith,CN=Users,DC=waza,DC=local
Class : top, person, organizationalPerson, user
adminCount : False
Logon Script
scriptPath : \WAZZAAAAAAOCDtest.bat
msTSInitialProgram: \WAZZAAAAAAOCDtest.bat
PrimaryGroup
Sid : S-1-5-21-267175082-2660600898-836655089-513
Name : wazaDomain Users
DN : CN=Domain Users,OU=Builtin Groups,DC=waza,DC=local
[...]
OwnerGroup
Sid : S-1-5-21-267175082-2660600898-836655089-512
Name : wazaDomain 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 : BUILTINAdministrator
AceType : ACCESS_ALLOWED_ACE
AccessMask : 983485
ADRights : WRITE_OWNER, WRITE_DACL, GENERIC_READ, DELETE, EXTENDED_RIGHTS, WRITE_PROPERTY, SELF, CREATE_CHILD
IsInherited : True
set-objectowner
代码语言:javascript复制
$ acltoolkit set-objectowner -h
usage: acltoolkit target set-objectowner [-h] -target-sid target_sid [-owner-sid owner_sid]
options:
-h, --help 显示帮助信息和退出
-target-sid target_sid 设置目标对象SID
-owner-sid owner_sid 新拥有者的SID
set-objectowner需要提供一个目标SID和拥有者SID,并修改目标对象的拥有者。
give-genericall
代码语言:javascript复制
$ acltoolkit give-genericall -h
usage: acltoolkit target give-genericall [-h] -target-sid target_sid [-granted-sid owner_sid]
options:
-h, --help 显示帮助信息和退出
-target-sid target_sid
设置目标对象SID
-granted-sid owner_sid
对象SID授权GENERIC_ALL
give-dcsync
代码语言:javascript复制
$ acltoolkit give-dcsync -h
usage: acltoolkit target give-dcsync [-h] [-granted-sid owner_sid]
options:
-h, --help 显示帮助信息和退出
-granted-sid owner_sid
对象SID授权DCSync功能
add-groupmember
代码语言:javascript复制
$ acltoolkit add-groupmember -h
usage: acltoolkit target add-groupmember [-h] [-user user] -group group
options:
-h, --help 显示帮助信息和退出
-user user 向一个组添加用户
-group group 要添加用户的目标组
set-logonscript
代码语言:javascript复制
代码语言:javascript复制$ 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 显示帮助信息和退出
-target-sid target_sid
目标用户的对象SID
-script-path script_path
针对目标用户设置脚本路径
-logonscript-type logonscript_type
要修改的登录脚本变量(默认为scriptPath)
许可证协议
本项目的开发与发布遵循MIT开源许可证协议。
项目地址
acltoolkit:https://github.com/zblurx/acltoolkit