域中的ACL访问控制列表

admin 2024年2月1日21:08:56评论15 views字数 13950阅读46分30秒阅读模式

点击蓝字,关注我们

《域渗透攻防》培训课程:助你弯道超车,《域渗透攻防》培训课程来啦!
本文大纲:
域中的ACL访问控制列表
本文部分节选于《域渗透攻防指南》,购买请长按如下图片扫码
域中的ACL访问控制列表
在学习域的过程中,我们经常会看到访问控制列表(ACL,Access Control Lists),对这个词既熟悉又陌生。现在,就让我们来看看ACL到底是什么,这需要从Windows的访问控制模型开始说起。而说Windows的访问控制模型之前,我们先来看看两个基础的概念。

安全主体

Security Principals

我们先来看看什么是安全主体Security Principals。安全主体是可以通过系统进行身份验证的任何实体,例如用户帐户、计算机帐户,或在用户或计算机帐户的安全上下文中运行的线程或进程,以及这些帐户的安全组。每个安全主体在创建时都会自动分配一个安全标识符(SID)。安全主体是控制对安全资源的访问的基础。在活动目录域中创建的安全主体是活动目录对象,可用于管理对域资源的访问。

安全标识符SID

安全标识符(Security Identifiers,SID)用于唯一标识安全主体或安全组。在帐户的安全上下文中运行的每个帐户、组或进程都有一个唯一的SID,它由当局发布,例如Windows域控制器。它被存储在一个安全数据库中。系统将生成在创建该帐户或组时标识该特定帐户或组的SID。当SID被用作用户或组的唯一标识符时,它再也不能被用于标识其他用户或组。除了分配给特定用户和组唯一创建的、特定于领域的SID外,还有一些众所周知的SID可以识别通用组和通用用户的SID。众所周知的SID在所有操作系统中都保持不变。SID是Windows安全模型的一个基本构建模块,它与Windows服务器操作系统的安全基础设施中的授权和访问控制技术的特定组件一起工作。这有助于保护对网络资源的访问,并提供了一个更安全的计算环境。
如下,是一些众所周知用户的SID:
·administrator:S-1-5--500
·Guest:S-1-5--501
·KRBTGT:S-1-5--502
如下,是一些众所周知组的SID:
·Administrators:S-1-5-32-544
·Users:S-1-5-32-545
·Guests:S-1-5-32-546
·Account Operators:S-1-5-32-548
·Server Operators:S-1-5-32-549
·Print Operators:S-1-5-32-550
·Backup Operators:S-1-5-32-551
·Domain Admins:S-1-5--512
·Domain Users:S-1-5--513
·Domain Guests:S-1-5--514
·Domain Computers:S-1-5--515
·Domain Controllers:S-1-5--516
·Cert Publishers:S-1-5--517
·Schema Admins:S-1-5--518
·Enterprise Admins:S-1-5--519
·Group Policy Creators Owners:S-1-5--520
·RAS and IAS Servers:S-1-5--553
·Pre–Windows 2000 Compatible Access :S-1-5-32-554

Windows访问控制模型

访问控制(AC,Access Control)是指控制谁(安全主体,Security Principals)可以访问操作系统中的资源(被访问实体),这里的访问不仅仅是单纯的访问,而是包括增删改查等操作。这里的安全主体可以是用户、进程等,而被访问实体可能是文件、服务、活动目录对象等资源。系统是如何判断安全主体是否对被访问实体具有权限,并且具有哪些权限呢?这就涉及到Windows的访问控制模型(ACM,Access Control Model)了。 Windows的访问控制模型由访问令牌(Access Token)和安全描述符(Security Descriptors)两部分组成。
如图所示,是Windows访问控制模型。
域中的ACL访问控制列表

1

访问令牌(Access Token)

用户登录系统时,系统会对用户的帐户名和密码进行身份验证。如果登录成功,系统将创建访问令牌。 此后,代表此用户执行的每一个进程都有此访问令牌的副本, 访问令牌是描述进程或线程安全上下文的对象。访问令牌包含用户的SID、用户权限和用户所属的任何组的SID,还包含用户或用户组拥有的权限列表。 当进程尝试访问安全对象或执行需要特权的系统管理任务时,系统使用此访问令牌来标识关联的用户。
访问令牌包含以下信息:
· 用户帐户安全标识符SID
·用户所属组的SID
·标识当前登录会话的登录SID
·用户或 用户组拥有的权限列表
·所有者SID
·主组的SID
·用户创建安全对象而不指定安全描述符时系统使用的默认 DACL
·访问令牌的源
·令牌是主令牌还是模拟令牌
·限制SID的可选列表
·当前模拟级别
·其他统计信息
每个进程都有一个主令牌,用于描述与进程关联的用户帐户的安全上下文。 默认情况下,当进程的线程与安全对象交互时,系统将使用主令牌。 此外,线程可以模拟客户端帐户,模拟允许线程使用客户端的安全上下文与安全对象进行交互,模拟客户端的线程同时具有主令牌和模拟令牌。
如图所示,可以看到安全主体包含了哪些东西。
域中的ACL访问控制列表

2

安全描述符(Security Descriptors)

当创建安全对象时,系统会为其分配一个安全描述符Security Descriptors,其中包含其创建者指定的安全信息;如果未指定任何安全信息,则为其分配默认安全信息。 安全描述符可以包含以下安全信息:
SID(Security Identifiers):对象的所有者和主组的安全标识符SID。
DACL:指定允许或拒绝特定用户或组的访问权限,会在后面详细讲解。
SACL:指定为对象生成审核记录的访问尝试的类型,会在后面详细讲解。
一组控制位flag:这些控制位限定安全描述符或单个成员的含义。
如图所示,可以看到安全描述符包含了哪些东西。
域中的ACL访问控制列表

访问控制列表ACL

(Access Control Lists)

访问控制列表(ACL,Access Control Lists)由一系列访问控制条目(ACE,Access Control Entries)组成,用于定义安全对象的访问策略。而每个访问控制条目ACE可以看作是一条策略。每个安全对象的安全描述符包含两种类型的ACL:DACL和SACL。这两种ACL中都是由ACE组成。
DACL(Discretionary Access Control List):DACL能够记录指定安全主体对该安全对象的访问权限。DACL中的每条ACE定义了哪些安全主体对该安全对象具有怎样的访问权限。当安全主体试图访问一个安全对象时,系统会检查该安全对象DACL中的ACE,以确定是否授予其访问权限。
SACL(System Access Control List):SACL能够记录指定安全主体访问该安全对象的日志。SACL中的每条ACE定义了哪些安全主体对该安全对象访问成功、访问失败的行为进行日志记录。
ACL、DACL、SACL和ACE几者之间的关系如图所示。
域中的ACL访问控制列表
如图所示,我们查看某个安全对象的访问控制列表ACE。权限这一栏就是DACL,下面的每条规则就是每条ACE。
域中的ACL访问控制列表
审核这一栏就是SACL,下面的每条规则就是每条ACE。如图所示:
域中的ACL访问控制列表

1

访问控制条目ACE

(Access Control Entries)

访问控制条目(ACE,Access Control Entries)是具体记录访问策略的条目。
ACE主要记录下面四个方面:
1.安全主体,也就是谁对该安全对象具有权限
2.权限的类型,是允许权限还是拒绝权限
3.具体的权限
4.该权限能否被继承
如图所示,图形化查看域安全对象xie.com的ACL,打开Active Directory用户和计算机窗口,右键xie.com,点击属性,在弹出的对话框中点击高级即可看到如下。
域中的ACL访问控制列表
第一个安全主体这个比较好理解,比如说域用户张三、李四。
第二个权限类型也比较好理解,允许权限还是拒绝权限。
第四个该权限能否被继承也很好理解,就是这个ACE能不能被子对象继承。比如我们在OU上应用了一个ACE,如果该ACE能被继承,则该OU内的用户和组均能继承该ACE;如果该ACE不能被继承,则这条ACE只应用于该OU。
我们着重来看看第三个具体的权限,这里具体权限可以分为三种:
1) 基本权限:就是对安全对象的基本权限。如图所示:
域中的ACL访问控制列表
基本权限包括泛型权限和通用权限。如修改、读取、写入、完全控制、修改所有者、修改DACL等权限。
    泛型权限
   ●○GENERIC _ READ:读取对象维护的信息 的权利。
     ○GENERIC _ WRITE:写入由对象维护的信息的权利。
     ○GENERIC _ EXECUTE:执行或查看对象的权利。
     ○GENERIC _ ALL:读取、写入和执行对象的权利。
    通用权限适用于所有对象类型:
   ●○DELETE:删除对象的权利。
     ○READ _ CONTROL:读取对象的信息。
    ○WRITE _ DACL: 修改对象的DACL信息。
    ○WRITE _ OWNER:修改对象的所有者 SID 的权利。
     ○SYNCHRONIZE:在给定对象上等待 。
2) 对属性的权限:域中每个安全对象对应于一个条目,一个条目包含若干个属性,基本权限是对整个条目的权限,域内的ACL同时也支持对某个属性的权限。如图所示:
域中的ACL访问控制列表
3) 扩展权限域内的安全对象相对较为复杂,基本权限和对属性的权限不够用,因此域内的ACL也支持扩展权限,比如复制目录更改权限、复制目录更改所有项权限等。扩展权限都存储在CN=Extended-Rights,CN=Configuration,DC=xie,DC=com里面。如图所示:
域中的ACL访问控制列表
如图所示,通过ADExplorer连接活动目录查看CN=Extended-Rights, CN=Configuration,DC=xie,DC=com下的扩展权限。
域中的ACL访问控制列表

2

ACL的判断流程

ACL的解析优先级如下:
· 显式拒绝
· 显式允许
· 继承的拒绝
· 继承的允许
如图所示,显示了这些安全主体访问安全对象时的流程。
域中的ACL访问控制列表
系统会按照顺序检查DACL中的每条ACE,直到找到一条或多条允许所有请求访问权限的ACE,或者直到找到一条或多条拒绝所有访问请求的ACE。当所有ACE都没匹配上的时候,是拒绝访问的。如果该安全对象对象没有DACL,系统将授予所有人完全的访问权限。如果该对象有DACL,但是DACL中没有ACE,则系统将拒绝所有人访问该对象,因为该DACL不允许有任何访问权限。
我们接下来举个例子来说明一下,以下只是说明下流程,并未说明具体的权限以及继承相关问题。
安全主体A:  sid=100  groupsid=110  groupsid=120安全主体B:  sid=200  groupsid=210  groupsid=220安全主体C:  sid=300  groupsid=310  groupsid=320安全对象D:  ACE:拒绝sid=200的对象访问  ACE:允许sid=100和groupsid=210的对象访问安全对象E:  有DACL,但是DACL中的ACE条目为0安全对象F:  无DACL
当安全主体A访问安全对象D时,首先匹配第一条拒绝sid=200的访问,没匹配上,然后匹配第二条允许sid=100和sid=210的对象访问,匹配上了,所以允许安全主体A访问。
当安全主体B访问安全对象D时,首先匹配第一条拒绝sid=200的访问,匹配上了,于是拒绝安全主体B对该安全对象D的访问。即使第二条ACE允许了sid=210的对象访问匹配上了,但是因为拒绝的ACE优先级大于允许的ACE,所以最后还是拒绝主体B访问。
当安全主体C访问安全对象D时,第一条ACE和第二条ACE都没匹配上,所以拒绝安全主体C访问。
由于安全对象E有DACL,但是DACL中的ACE条目为0,所以不允许任何主体访问,因此安全主体A、安全主体B、安全主体C均不能访问安全对象E。
由于安全对象F无DACL,因此安全主体A、安全主体B、安全主体C均能访问安全对象F。
如图所示,显示了对象的 DACL 如何允许访问一个线程,同时拒绝访问另一个线程。
域中的ACL访问控制列表
对于线程 A,系统读取 ACE 1 并立即拒绝访问,因为拒绝访问的 ACE 适用于线程的访问令牌中的用户。 在这种情况下,系统不会检查 AES 2 和 3。 对于线程 B,ACE 1 不适用,因此系统将继续访问 ACE 2(允许写入访问)和 ACE 3(允许读取和执行访问权限)。
由于系统在显式授予或拒绝请求的访问权限时停止检查 AES,因此 DACL 中的 AES 顺序非常重要。 请注意,如果示例中的 ACE 顺序不同,则系统可能授予了对线程 A 的访问权限。对于系统对象,操作系统在 DACL 中定义AES的首选顺序。

SDDL安全描述符定义语言

安全描述符定义语言(SDDL,Security Descriptor Definition Language)是一种定义可以描述对象权限的方法。SDDL语言格式主要包含以下四个组件:
· Owner (O: ) :标识对象的所有者的SID字符串。
· Group (G: ) :标识对象的所属组的SID字符串,Windows 通常忽略此参数(由于兼容性原因,该值仍在安全描述符中)。
· DACL (D: ) :包含DACL的安全描述符控制标志,DACL中包含一系列ACE。
· SACL (S: ):包含SACL的安全描述符控制标志,SACL中包含一系列ACE。
对象的ACL存储在nTSecurityDescriptor属性中。因此,我们可以使用如下语句过滤对象的nTSecurityDescriptor属性,以查看对象SDDL语言格式呈现的ACL。
AdFind.exe -b "CN=hack,CN=Users,DC=xie,DC=com" nTSecurityDescriptor -sddl
如图所示,使用adfind查看查询nTSecurityDescriptor属性。
域中的ACL访问控制列表
nTSecurityDescriptor属性的值由以下几部分构成:
· [OWNER]DA
· [GROUP]DA
· DACL(ACE).....
· SACL(ACE).....
接下来,我们来看看ACL中ACE具体的结构和语法。

1

ACE的结构

ACE具体的结构及顺序如下,结构间用分号(;)分隔。一个完整的ACE有6个分号(;),共分隔7个字段,每条ACE被括在括号中。
域中的ACL访问控制列表
注:默认情况下,由于Resource_ Attribute属性是可选的,因此只有5个分号(;),分隔6个字段。
各个字段的含义如下:
· ACE_Type:主要说明是什么类型的· ACE,如允许、拒绝、审计等。
· ACE_Flags:主要设置一些标识符。
· Rights:主要说明是什么权限,如可读、可写等。
· Object_Guid:主要说明对象的GUID值。
· Inherit_Object_Guid:主要说明继承对象的GUID值。
· Account_Sid:主要说明对象的SID值。
· Resource_Attribute:主要说明数据类型,是一个可选字段。
下面看一下每个字段的含义以及包含的值。
(1) ACE_Type
ACE_Type包含的字段和值如下表所示:
域中的ACL访问控制列表
域中的ACL访问控制列表
域中的ACL访问控制列表
(2) ACE_Flags
ACE标志:说明这是继承的权限还是显式给定的权限。ACE_Flags有如下一些值:
域中的ACL访问控制列表
域中的ACL访问控制列表
(3) Rights
表示由ACE控制的访问权限的字符串。此字符串可以是访问权限的十六进制字符串表示,如"0x7800003F",也可以是以下字符串的连接。
通用访问权限
域中的ACL访问控制列表
标准访问权限
域中的ACL访问控制列表
活动目录服务对象访问权限
域中的ACL访问控制列表
文件访问权限
域中的ACL访问控制列表
注册表密钥访问权限
域中的ACL访问控制列表
强制性标签访问权限
域中的ACL访问控制列表
(4) Object_Guid
权限对象的rightsGuid属性值,如复制目录更改权限,其对应的rightsGuid值为1131f6aa-9c07-11d1-f79f-00c04fc2dcd2。扩展权限对象保存在CN=Extended-Rights,CN=Configuration,DC=xie,DC=com里面。下表列出了一些常见的权限对象rightsGuid值:
域中的ACL访问控制列表
如图所示,可以看到复制目录更改权限,其对应的rightsGuid值为1131f6aa-9c07-11d1-f79f-00c04fc2dcd2。
域中的ACL访问控制列表
(5) Inherit_object_guid
继承权限对象的rightsGuid属性值。
(6) Account_sid
表示ACE指定的安全主体的objectSid属性值。如,这条ACE表示hack用于对该安全对象的权限,则Account_sid的值就为hack用户的objectSid。
(7) Resource_attribute
可选结构,resource_attribute仅适用于资源ace,并且是可选的,指示数据类型的字符串。

2

ACE的解析

了解了ACE的结构顺序以及每个字段的含义后,我们来解析下ACE语句。如下,有一条ACE。
(OA;CI;CR;{1131F6AA-9C07-11D1-F79F-00C04FC2DCD2};;S-1-5-21-1313979556-3624129433-4055459191-1105)
我们来对其进行分析:
· 第一个ACE_Type字段对应的是“OA”值,而“OA”又代表ACCESS_ALLOWED_OBJECT_ACE_TYPE(允许对象访问)。因此,可以知道这条是允许类型的ACE。
· 第二个ACE_Flags字段对应的是“CI”值,而“CI”又代表CONTAINER_INHERIT_ACE(容器继承)。因此,可以知道这条ACE是容器继承。
· 第三个Rights字段对应的是“CR”值,而“CR”又代表ADS_RIGHT_DS_CONTROL_ACCESS。因此,可以知道这条ACE是活动目录对象控制访问权限。
· 第四个Object_Guid对应的是“{1131F6AA-9C07-11D1-F79F-00C04FC2DCD2}”值,如图所示,通过查询可以得知其对应的是DS-Replication-Get-Changes扩展权限。因此,可以知道这条ACE所代表的扩展权限是复制目录更改权限。
· 第五个Inherit_object_guid字段是空值,这里我们不管他。
· 第六个Account_sid字段对应的是S-1-5-21-1313979556-3624129433-4055459191-1105值,如图所示,通过查询得知该SID对应的是xiehack用户。因此,可以知道这条ACE所指定的安全主体是xiehack用户。
域中的ACL访问控制列表
域中的ACL访问控制列表
综上所述,我们可以从这条ACE中得到如下权限信息:xiehack用户对当前安全对象具有复制目录更改的权限!
官方文档:https://docs.microsoft.com/en-us/windows/win32/secauthz/ace-strings
https://docs.microsoft.com/en-us/windows/win32/adschema/attributes-all

域对象ACL的查看和修改

域对象除了具有基本权限外,其还具有属性权限、扩展权限。因此,在域内ACL还提供对Active Directory目录服务对象的属性权限和扩展权限进行定义。我们现在来看看域对象ACL的查看和修改。

1

图形化查看和修改

如下操作图形化查看域对象xie.com的ACL。
如图所示,打开Active Directory用户和计算机窗口,右键xie.com,点击属性。
域中的ACL访问控制列表
在“安全”选项卡即可看到不同用户对域对象的不同权限了。如图所示:
域中的ACL访问控制列表
由于域对象有很多的权限,因此这不足以显示。我们可以点击高级查看更多的权限,如图所示:
域中的ACL访问控制列表
如图所示,即可看到不同主体所拥有的不同权限了。
域中的ACL访问控制列表
如果想查看某个主体拥有的具体权限,可以点击编辑,就可以看到详细的权限信息了。
如图所示,域对象除了具有基本权限外,其还具有属性权限、扩展权限。
域中的ACL访问控制列表
如果想添加指定用户对该域对象的权限,可以点击“添加”。如图所示:
域中的ACL访问控制列表
在弹出的对话框中选择主体,我这里选的是hack用户,类型是允许,权限信息自行勾选即可。如图所示:
域中的ACL访问控制列表

2

Adfind查询ACL

Adfind是一款优秀的Ldap查询工具,其支持对域内对象的ACL进行查询。-sddlfilter参数支持使用SDDL语言格式过滤对象。格式如下:
-sddlfilter ;;;;;
后面跟的参数对应的是ACE条目相应的参数,需要说明的是,过滤的格式跟输出的格式要保持一致:
· 如果-rawsddl ,最后一个参数是sid值,这个时候用-sddlfilter进行过滤的话,最后一个参数就要用sid的形式。
· 如果是-sddl+++,最后一个参数是已经解析后的账号名,这个时候用-sddlfilter进行过滤的话,最后一个参数就要用账号名的形式。
注:普通域用户无法使用adfind进行ACL相关的查询!
(1) 查询指定对象的ACL
使用-b参数指定要查询的对象,然后过滤nTSecurityDescriptor属性。使用-sddl进行显示,可以使用+使结果更易读,最多使用三个+。具体 命令如下:
#查找指定对象的ACLAdFind.exe -b "CN=hack,CN=Users,DC=xie,DC=com" nTSecurityDescriptor -sddl#查找指定对象的ACL,使结果更直观AdFind.exe -b "CN=hack,CN=Users,DC=xie,DC=com" nTSecurityDescriptor -sddl+AdFind.exe -b "CN=hack,CN=Users,DC=xie,DC=com" nTSecurityDescriptor -sddl++AdFind.exe -b "CN=hack,CN=Users,DC=xie,DC=com" nTSecurityDescriptor -sddl+++
如图所示,查看hack用户的ACL。
域中的ACL访问控制列表
如图所示,更加直观的查看hack用户的ACL。
域中的ACL访问控制列表
(2) 查询指定对象在域内的ACL
可以直接使用该对象的SID值或者使用该对象的名字执行如下命令即可查询指定对象在域内的ACL。
#使用该对象的SID值AdFind.exe -s subtree -b "DC=xie,DC=com" nTSecurityDescriptor -sddl -sddlfilter ;;;;;"S-1-5-21-1313979556-3624129433-4055459191-1105" -recmute#使用该对象的用户名AdFind.exe -s subtree -b "DC=xie,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;;;"xiehack" -recmute
如图所示,查看指定SID为S-1-5-21-1313979556-3624129433-4055459191-1105对应的用户在域内的ACL。
域中的ACL访问控制列表
(3) 查询指定权限在域内被哪些对象拥有
如下命令,查询复制目录权限和复制目录更改权限被域内哪些对象拥有。
#查询复制目录权限被域内哪些对象拥有AdFind.exe -s subtree -b "DC=xie,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;"Replicating Directory Changes";; -recmute -resolvesids#查询复制目录更改权限被域内哪些对象拥有AdFind.exe -s subtree -b "DC=xie,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;"Replicating Directory Changes All";; -recmute -resolvesids
如图所示,查询复制目录权限和复制目录更改权限被域内哪些对象拥有。
域中的ACL访问控制列表

3

PowerShell脚本查询和修改ACL

Empire中的powerview.ps1脚本已经集成了ACL的相关功能。可以使用该脚本进行ACL的查询和修改,前提是该用户具备查询和修改的权限。
(1) 查询指定对象的ACL
通过Get-DomainObjectAcl脚本执行如下命令查询win2012R2机器的ACL,该结果不是每一条ACE显示,而是把每个ACE中的每个权限都单独显示出来。
Import-Module .powerview.ps1Get-DomainObjectAcl -Identity win2012R2 -ResolveGUIDs
如图所示,通过Get-DomainObjectAcl脚本查询win2012R2机器的ACL。
域中的ACL访问控制列表
我们来看看第一个权限表达的意思,主要看以下字段:
· AceQualifier的值为AccessAllowed,表示是访问允许的ACE。
· ObjectDN的值为CN=WIN2012R2, CN=Computers,DC=xie,DC=com,表示的安全对象是机器Win2012R2。
· ActiveDirectoryRights的值为WriteProperty,说明的是拥有写入属性
· ObjectAceType的值为User-Logon,说明的权限是用户登录。
· ObjectSID代表的是安全对象也就是机器Win2012R2的objectSid
· InheritanceFlags表示的是继承标签
· AceType的值为AccessAllowedObject,表示的是允许访问对象类型的ACE,与AceQualifier类似
· ObjectAceFlags表示的是对象ACE类型
· SecurityIdentifier表示的是安全主体的SID,通过查询S-1-5-21-1313979556-3624129433-4055459191-1105发现其对应的域用户为xiehack
· IsInherited表示的是该ACE是否可继承
· InheritedObjectAceType表示的是继承对象ACE类型
最终从下面的权限信息我们可以知道,xiehack用户拥有登录WIN2012R2机器的权限。
AceQualifier           : AccessAllowedObjectDN               : CN=WIN2012R2,CN=Computers,DC=xie,DC=comActiveDirectoryRights  : WritePropertyObjectAceType          : User-LogonObjectSID              : S-1-5-21-1313979556-3624129433-4055459191-1106InheritanceFlags       : NoneBinaryLength           : 72AceType                : AccessAllowedObjectObjectAceFlags         : ObjectAceTypePresent, InheritedObjectAceTypePresentIsCallback             : FalsePropagationFlags       : NoneSecurityIdentifier     : S-1-5-21-1313979556-3624129433-4055459191-1105AccessMask             : 32AuditFlags             : NoneIsInherited            : FalseAceFlags               : NoneInheritedObjectAceType : ComputerOpaqueLength           : 0
(2) 添加指定用户对指定域对象的完全控制权限
通过powerview.ps1脚本执行如下命令添加指定hack用户对指定域对象xie.com的完全访问权限,该操作需要高权限。
Import-Module .powerview.ps1#添加用户hack对指定域对象xie.com的完全访问权限Add-DomainObjectAcl -TargetIdentity 'DC=xie,DC=com' -PrincipalIdentity hack -Rights All -Verbose
如图所示,通过Get-DomainObjectAcl脚本添加指定hack用户对指定域对象xie.com的完全访问权限。
域中的ACL访问控制列表
添加完成后,我们可以去查询下域xie.com的权限,看hack用户是否对其拥有完全访问权限。
如图所示,打开Active Directory用户和计算机窗口,右键xie.com,点击属性。
域中的ACL访问控制列表
在弹出的对话框中点击高级选项卡,如图所示:
域中的ACL访问控制列表
如图所示,可以看到hack用户对该安全对象具有完全控制的权限了。
域中的ACL访问控制列表
(3) 移除指定用户对指定域对象的完全控制权限
通过Remove-DomainObjectAcl脚本执行如下命令移除指定hack用户对指定域对象xie.com的完全访问权限,该操作需要高权限。
Import-Module .powerview.ps1#移除用户hack对指定域对象xie.com的完全访问权限Remove-DomainObjectAcl -TargetIdentity 'DC=xie,DC=com' -PrincipalIdentity hack -Rights All -Verbos
如图所示,通过Remove-DomainObjectAcl脚本移除指定hack用户对指定域对象xie.com的完全访问权限。
域中的ACL访问控制列表
(4) 添加指定用户对指定域对象的指定权限
通过Add-DomainObjectAcl脚本执行如下命令添加指定hack用户对指定域对象xie.com的DCSync权限,该操作需要高权限。
Import-Module .powerview.ps1#添加用户hack对指定域对象xie.com的DCSync权限Add-DomainObjectAcl -TargetIdentity 'DC=xie,DC=com' -PrincipalIdentity hack -Rights DCSync -Verbose
如图所示,通过Add-DomainObjectAcl脚本添加指定hack用户对指定域对象xie.com的DCSync权限。
域中的ACL访问控制列表
添加完成后,我们可以去查询下域xie.com的权限,看hack用户是否对其拥有DCSync权限。
如图所示,打开Active Directory用户和计算机窗口,右键xie.com,点击属性。
域中的ACL访问控制列表
在弹出的对话框中点击高级选项卡,如图所示:
域中的ACL访问控制列表
如图所示,然可以看到hack用户对该安全对象具有复制目录更改、复制目录更改所有项、以及复制筛选集中的目录更改权限(也就是DCSync权限)了。
域中的ACL访问控制列表
(5) 移除指定用户对指定域对象的指定权限
通过Remove-DomainObjectAcl脚本执行如下命令移除指定hack用户对指定域对象xie.com的DCSync权限,该操作需要高权限。
Import-Module .powerview.ps1#移除用户hack对指定域对象xie.com的DCSync权限Remove-DomainObjectAcl -TargetIdentity 'DC=xie,DC=com' -PrincipalIdentity hack -Rights DCSync -Verbose
如图所示,通过Remove-DomainObjectAcl脚本移除指定hack用户对指定域对象xie.com的DCSync权限。
域中的ACL访问控制列表
    非常感谢您读到现在,由于作者的水平有限,编写时间仓促,文章中难免会出现一些错误或者描述不准确的地方,恳请各位师傅们批评指正。如果你想一起学习AD域安全攻防的话,可以加入下面的知识星球一起学习交流。
域中的ACL访问控制列表
相关文章:
https://www.anquanke.com/post/id/212163#h2-23
https://youngrichog.github.io/2020/02/08/Active-Directory域-ACL相关安全研究/
https://www.specterops.io/assets/resources/an_ace_up_the_sleeve.pdf
https://wald0.com/?p=112
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc780957(v=ws.10)?redirectedfrom=MSDN
https://docs.microsoft.com/en-us/windows/security/identity-protection/access-control/security-identifiershttps://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/d2435927-0999-4c62-8c6d-13ba31a52e1a
https://docs.microsoft.com/zh-cn/windows/win32/secauthz/security-descriptors
https://docs.microsoft.com/en-us/windows/win32/adschema/extended-rights
https://docs.microsoft.com/zh-cn/windows/win32/secauthz/how-dacls-control-access-to-an-object
https://docs.microsoft.com/zh-cn/windows/win32/secauthz/security-descriptor-definition-language
https://docs.microsoft.com/en-us/windows/win32/secauthz/ace-strings
https://docs.microsoft.com/en-us/windows/win32/adschema/attributes-all
https://docs.microsoft.com/zh-cn/windows-server/administration/windows-commands/icacls

原文始发于微信公众号(谢公子学安全):域中的ACL访问控制列表

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月1日21:08:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   域中的ACL访问控制列表https://cn-sec.com/archives/2444356.html

发表评论

匿名网友 填写信息