域渗透基础知识(四)之域组
目录
域组
在域内,使用组的概念管理用户。当为组设置权限时,组内所有的用户都会自动设置权限,因此就不需要单独为某个用户设置权限了。域组账户也都有一个唯一的安全标识符(security identifier,SID)。
组(Group)是用户账号的集合。通过向一组用户分配权限,就可以不必向每个用户分别分配权限了。按照用途分类,域组分为通讯组和安全组。
对于通讯组,我们接触的比较多的就是邮件组,将若干个人划分到一个通讯组,给这个通讯组发件,那组内用户都能收到。但本节我们主要讲的还是安全组。
安全组则是用户权限的集合。举个例子,管理员在日常的网络管理中,不必向每个单个用户账号都设置单独的访问权限,只需要创建一个组,对这个组配置访问权限,然后将需要配置该访问权限的用户账号拉进这个组中即可。并且如果管理员在网络运维中需要一些特殊的管理权限时,只需将自己的运维账号拉进该组中就行了。
adfind.exe -b dc=hack,dc=com -f "(objectcategory=group)" -dn #查询hack.com域内所有的组
组类型
域组可以分为下面两种类型,且他们之间可以相互转换,几乎绝大部分的组都是安全组。
1.安全组(security group):它可以被用来分配权限,例如你可以指定安全组对文件具备读取等的权限。它也可以用在与安全无关的工作上,例如可以给安全组发送电子邮件。
2.通讯组(distribution group):它被用在与安全无关的工作上,例如您可以给通信组发送电子邮件,但是无法为通信组分配权限与权利。
adfind.exe -b dc=xie,dc=com -f "(&(objectcategory=group)(grouptype:AND:=2147483648))" -dn #查询xie.com域内所有的安全组
adfind.exe -b dc=xie,dc=com -f "(&(objectcategory=group)(!grouptype:AND:=2147483648))" -dn
#查询xie.com域内所有的通讯组
组的作用域
组的作用域是相对于域林的概念。每个安全组和通信组均有作用域,该作用域标识组在域树或树林中应用的范围。
安全组可以按照其作用范围划分为:
全局组(Global Group)
通用组(Universal Group)
域本地组(Domain Local Group)
域本地组(Domain Local Group)
域本地组就是本域内的本地组。域本地组主要用于本域内资源的访问权限,不适用于林,但可以包含域林内任何一个域的账户、通用组和全局组,也可以包含相同域内的域本地组,但无法包含其他域内的域本地组。本地域组只能够访问该域内的资源,无法访问其他不同域内的资源,即当你在设置权限时,只可以设置相同域内的域本地组的权限,无法设置其他不同域内的域本地组的权限。
当多域用户访问单域资源(访问本域、同一个域)时,可以从任何域向这个域的域本地组添加用户账户、通用组和全局组,但只能在其所在域内指派权限。比如一个域林里面,只有林根域有Enterprise Admins
这个组(通用组),然后其他子域的域本地组Administrators
会把林根域的Enterprise Admins
组加进来,所以林根域的Enterprise Admins
组用户才在整个域林内具备管理员权限。可见,如果想要一个只允许访问同一个域中的资源的组,那么使用域本地组即可。
以下命令可以查询域内的所有域本地组:
adfind.exe -b dc=xie,dc=com -f "(&(objectcategory=group)(grouptype:AND:=4))" -dn
下面介绍几个的常见的系统内置的域本地组及其组权限:
Administrators:管理员组,改该组的成员可以不受限制地存取计算机/域的资源。不仅是最具有权限的一个组,也是在活动目录和域控制器中默认具有管理员权限的组,是域森林中强大的服务管理组。
Remote Desktop Users:远程登录组,处于远程登录组中的用户才有权限使用远程登录服务。
Print Operators:打印机操作员组,位于该组内的成员可以管理网络中的打印机,包括建立、管理和删除网络打印机,并可以在本地登录和关闭域控制器。
Account Operators:账号操作员组,该组的成员可以创建和管理该域中的用户和组并为其设置权限,也可以在本地登录域控制器,但是,不能更改属于 Administrators 或 Domain Admins 组的账户,也不能修改这些组。在默认情况下,该组中没有成员。
Server Operators:服务器操作员组,该组的成员可以管理域服务器,其权限包括建立/管理/删除任意服务器的共享目录、管理网络打印机、备份任何服务器的文件、格式化服务器硬盘、锁定服务器、变更服务器的系统时间、关闭域控制器等。在默认情况下,该组中没有成员。
BackupOperators,备份操作员组,改组的成员可以在域控制器中执行备份和还原操作,并可以在本地登录和关闭域控制器。在默认情况下,该组中没有成员。
通用组(Universal Group)
通用组的成员可包括域林中任何域的用户账号、全局组和其他通用组,可以在该域林的任何域中指派权限,可以嵌套在其他组中,非常适合在域森林内的跨域访问中使用。
通用组的成员保存在全局编录服务器(GC)中而不是保存在各自的域控制器中,任何变化都会导致全林复制。
全局编录通常用于存储一些不经常发生变化的信息。由于用户账号信息是经常变化的,建议不要直接将用户账号添加到通用组中,而要先将用户账号添加到全局组中,再把这些相对稳定的全局组添加到通用组中。
通用组可以在所有域内被分配访问权限,以便访问所有域内的资源,比如林根域的Enterprise Admins
组。通用组具备万用领域的特性,其成员可以包含林中任何一个域内的用户、全局组和其他通用组。但是它无法包含任何一个域内的本地域组。通用组可以访问任何一个域内的资源、也就是说您可以在任何一个域内来设置通用组的权限,这个通用组可以位于任何一个域内,以便让此通用组具备权限来访问该域内的资源。
以下命令可以查询域内的所有通用组:
adfind.exe -b dc=xie,dc=com -f "(&(objectcategory=group)(grouptype:AND:=8))" -dn
下面介绍两个的常见的系统内置的通用组及其组权限:
Enterprise Admins:企业系统管理员组,改组是域森林根域中的一个组。Enterprise Admins 组在域森林中的每个域内都是 Administrators 组的成员,因此对所有域控制器都有完全访问控制权。
Schema Admins:架构管理员组,是域森林根域中的一个组,可以修改活动目录和域森林的模式。Schema Admins 组是为活动目录和域控制器提供完整权限的域用户组,因此,该组成员的资格是非常重要的。
全局组(Global Group)
全局组是一个介于二者中间一个组,它可以在域林中使用,但是只能包含本域内的账户。全局组的使用范围是本域以及受信任关系的其他域。
只能在创建该全局组的域中添加用户和全局组,也就是说全局组只能包含本域内的用户账户,因此来自一个域的账户不能嵌套在另一个域中的全局组中。这就是为什么来自同一个域的用户不符合在外部域中的域管的成员资格。但是可以将本域内某个全局组添加或嵌套到同一个域的另一个全局组中,或者添加到其他域的通用组和域本地组中。
单域用户访问多域资源(必须是一个域里面的用户)。只能在创建该全局组的域中添加用户和全局组。可以在域森林的任何域内指派权限。全局组可以嵌套在其他组中。可以将某个全局组添加到同一个域的另一个全局组中,或者添加到其他域的通用组和域本地组中(不能添加到不同域的全局组中,全局组只能在创建它的域中添加用户和组)。虽然可以通过全局组授予用户访问任何域内资源的权限,但一般不直接用它来进行权限管理。
全局组和域本地组的关系,与域用户账号和本地账号的关系类似。域用户账号可以在全局使用,即在本域和其他关系的其他域中都可以使用,而本地账号只能在本机中使用。例如:将用户张三(Z3)添加到域本地组 Administrators 中,并不能使Z3对非域成员计算机拥有任何特权。但若将Z3添加到全局组Domain Admins中,用户张三就成为了域管理员了(可以在全局使用,对域成员计算机拥有特权)。
它主要用来组织用户,也就是您可以将多个即将被赋予相同权限的用户账号,加入到同一个全局组中。
全局组内的成员,只可以包含相同域内的用户与全局组。
全局组可以访问任何一个域内的资源,也就是说您可以在任何一个域内设置全局组的权限(这个全局组可以位于任何一个域内)以便让此全局组具备权限来访问该域内的资源。
以下命令可以查询域内的所有全局组:
adfind.exe -b dc=xie,dc=com -f "(&(objectcategory=group)(grouptype:AND:=2))" -dn
下面介绍几个的常见的系统内置的全局组及其组权限:
Domain Admins,管理员组,该组的成员在所有加入域的服务器、域控制器和活动目录中均默认拥有完整的管理员权限。因为该组会被添加到自己所在域的 Administrators 组中,因此可以继承 Administrators 组的所有权限。同时,该组默认会被添加到每台域成员计算机的本地 Administrators 组中,这样,Domain Admins 组就获得了域中所有计算机的所有权。如果希望某用户成为域系统管理员,建议将该用户添加到 Domain Admins 组中,而不要直接将该用户添加到 Administrators 组中。
Domain Users,域用户组,该组的成员中是所有的域用户。在默认情况下,任何由我们建立的更户账号都属于 Domain Users 组。因此,如果想让所有的账号都获得某种资源在取权限、可以将该权限指定给域用户组,或者让域用户组属于具有该权限的组。
Domain Computers,域成员主机组,该组的成员是域内所有的域成员主机,任何由我们建立的计算机账号都属于 Domain Computers 组。
Domain Controllers,域控制器组,该组成员包含了域内所有的域控制器。
Domain Guests,域访客用户组,该组内的成员默认为域访客用户,域成员计算机会自动将此组加到本地的 Guests 组中。
Group Policy Creator Owners:此组成员可以修改域的组策略。
DnsUpdateProxy:此组成员允许替其他客户端(如DHCP服务器)执行动态更新的 DNS 客户端。
Read-only Domain Controllers:此组中的成员是域中的只读域控制器
三种组作用域的比较
组类型 | 作用范围 | 可包含的成员 | 成员是否在全局编录复制 |
---|---|---|---|
域本地组 | 在同一个域内,本域内。 | 来自任何域或任何受信任域的帐户。 来自任何域或任何受信任域的全局组。 来自同一林中任何域的通用组。 来自同一域的其他域本地组。 | 否 |
通用组 | 所有域。 | 来自同一林中任何域的帐户。 来自同一林中任何域的全局组。 来自同一林中任何域的其他通用组。 | 是 |
全局组 | 所有域。 | 来自同一域的帐户。 来自同一域的其他全局组。 | 否 |
简单一句话概括:
* 域本地组:来自全林,作用于本域
* 全局组:来自本域,作用于全林
* 通用组:来自全林,作用于全林
域组的查询
域环境中的组都是group
类的实例,所以我们可以用(objectClass=group)
或者(objectCategory=group)
来查询域组。
那我们该如何区分不同作用域的域组呢?域组的作用类型是由其属性groupType
决定,该groupType
是一个位字段,所以这里涉及到了按为查询。以下是groupType
属性各个位所代表的含义:
属性值 | 说明 |
---|---|
1 (0x00000001) | 指定一个组为系统创建的组 |
2 (0x00000002) | 指定一个组为全局组 |
4 (0x00000004) | 指定一个组为域本地组 |
8 (0x00000008) | 指定一个组为通用组 |
16 (0x00000010) | 为 Windows Server 授权管理器指定一个 APP_BASIC 组 |
32 (0x00000020) | 为 Windows Server 授权管理器指定一个 APP_QUERY 组 |
2147483648 (0x80000000) | 指定一个组为安全组, 如果未设置此位标志,则该组默认是通讯组 |
知道了groupType
属性各个位代表的含义后,我们便可以对域组进行按位查询了。
查询域内的所有全局组:
Adfind.exe -b dc=hack,dc=com -bit -f "(&(objectClass=group)(grouptype:AND:=2))" cn -dn
查询域内的所有通用组:
Adfind.exe -b dc=hack,dc=com -bit -f "(&(objectClass=group)(grouptype:AND:=8))" cn -dn
查询域内的所有域本地组:
Adfind.exe -b dc=hack,dc=com -bit -f "(&(objectClass=group)(grouptype:AND:=4))" cn -dn
查询域内的所有安全组,包括全局组,通用组,域本地组:
Adfind.exe -b dc=hack,dc=com -bit -f "(&(objectClass=group)(grouptype:AND:=2147483648))" cn -dn
查询域内系统创建的群组:
Adfind.exe -b dc=hack,dc=com -bit -f "(&(objectClass=group)(grouptype:AND:=1))" cn -dn
活动目录中内置的组
活动目录中有许多内置组,它们分别隶属于本地域组、全局组、通用组和特殊组。
内置的本地域组
这些内置的本地域组本身已经被赋予了一些权利与权限,以便让其具备管理活动目录域的能力。只要将用户或组账户添加到这些组内,这些账户也会自动具备相同的权限。下面是Builtin容器内常见的本地域组:
1. Account Operators:该组的成员可以创建和管理该域中的用户和组并为其设置权限,也可以在本地登录域控制器。但是,不能更改属于Administrators或Domain Admins组的账号,也不能更改这些组。在默认情况下,该组中没有成员。
2. Administrators:其成员具备系统管理员权限,他们对所有域控制器拥有最大的控制权,可以执行活动目录管理工作。内置系统管理员Administrator就是此组的曾有,而且无法将其从此组内删除
3. Backup Operators:其成员可以通过Windows Server Backup工具来备份与还原域控制器内的文件,不管他们是否有权限访问这些文件。其成员也可以对域控制器执行关机操作。
4. Certificate Service DCOM Access:其组成员可以连接到企业中的证书颁发机构
5. Cryptographic Operators:其组成员可以执行加密操作
6. Distributed COM Users:其组成员允许启动、激活和使用此计算机上的分布式COM对象
7. Event Log Readers:其组成员可以从本地计算机读取事件日志
8. Guests:其成员无法永久改变其桌面环境,当他们登录时,系统会为他们建立一个临时的用户配置文件,而注销时此配置文件就会被删除。此组默认的成员为用户账户Guest与全局组Domain Guests
9. IIS\_IUSRS:其组成员是Internet信息服务使用的内置组
10. Incoming Forest Trust Builders:其组成员可以创建到此林的传入、单向信任
11. Network Configuration Operators:其成员可在域控制器上执行常规网络配置工作,例如变更ip地址,但不可以安装、删除驱动程序与服务,也不可执行与网络服务器配置有关的工作,例如DNS与DHCP服务器的设置
12. Performance Log Users:此组的成员可以计划进行性能计数器日志记录、启用跟踪记录提供程序,以及在本地或通过远程访问此计算机来收集事件跟踪记录
13. Performance Monitor Users:其组成员可监视域控制器的运行情况
14. Pre-Windows 2000 Compatible Access:此组主要是为了与WindowsNT4.0兼容。其成员可以读取活动目录内的所有用户与组账户。其默认的成员为特殊组 Authenticated Users。只有在用户的计算机是Windows NT4.0或更早版本的系统时,才将用户加入到此组中
15. Print Operators:该组的成员可以管理网络打印机,包括建立,管理及删除网络打印机,并可以在本地登录和关闭域控制器。
16. Remote Desktop Users:其成员可以远程计算机通过远程桌面来登录
17. Replicator:此组成员支持域中文件的复制
18. Server Operators:该组的成员可以管理域服务器,其权限包括建立、管理、删除任意服务器的共享目录、管理网络打印机、备份任何服务器的文件、格式化服务器硬盘、锁定服务器、变更服务器的系统时间、关闭域控制器等。在默认情况下,该组中没有成员。
19. Terminal Server License Servers:此组的成员可以使用有关许可证颁发的信息更新活动目录中的用户账户,以进行跟踪和报告TS每用户CAL使用情况
20. Users:其成员仅拥有一些基本权限,例如执行应用程序,但是他们不能修改操作系统的设置,不能修改其他用户的数据、不能将服务器关闭。此组默认的成员为全局组Domain Users。
21. Windows Authorization Access Group:此组的成员可以访问User对象上经常计算机 tokenGroupsGlobalAndUniversal 属性
内置的全局组
活动目录内置的全局组并没有任何的权利与权限,但是可以将其加入到具备权利或权限的域本地组中,或另外直接分配权利或权限给此全局组。这些内置全局组位于Users容器内。
1.Domain Admins:该组的成员在所有加入域的服务器、域控制器和活动目录中均默认拥有完整的管理员权限。因为该组会被添加到自己所在域的Administrators组中,因为可以继承Administrators组的所有权限。同时,该组默认会被添加到每台域成员计算机的本地Administrators组中。这样,Domain Admins组就获得了域中所有计算机的所有权。如果希望某用户成为域系统管理员,建议将该用户添加到Domain Admins组中,而不要直接将该用户添加到Administrators组中。
2.Domain Computers:所有的域成员主机都会被自动加入到此组中(域控除外)
3.Domain Controllers:域内的所有域控制器都会被自动加入到此组内
4.Domain Guests:域成员计算机会自动将此组加入到本地Guests内。此组默认的成员为域用户Guest
5.Domain Users:该组是所有的域成员,在默认情况下,任何由我们建立的用户账号都属于Domain Users组,而任何由我们建立的计算机账号都属于Domain Computers组。因此,如果想让所有的账号都获得某种资源存取权限,可以将该权限指定给域用户组,或者让域用户组属于具有该权限的组。域用户组默认是内置域Users组的成员。
6.Group Policy Creator Owners:此组成员可以修改域的组策略
7.DnsUpdateProxy:此组成员允许替其他客户端(如DHCP服务器)执行动态更新的DNS客户端。
8.Read-only Domain Controllers:此组中的成员是域中只读域控制器
内置的通用组
1.Enterprise Admins:该组是域森林根域中的一个组。该组在域森林中的每个域内都是2.Administrators组的成员,因此对所有域控制器都有完全访问权。
3.Enterprise Read-only Domain Controllers:该组的成员是企业中的只读域控制器
4.Schema Admins:该组是域森林根域中的一个组,可以修改活动目录和域森林的模式。该组是为活动目录和域控制器提供完整权限的域用户组,因此,该组成员的资格是非常重要的。
特殊组
1.Everyone:任何一个用户都属于这个组,若Guest账户被启用,则您在分配权限给2.Everyone时需小心,因为若一位在你计算机内没有账户的用户,通过网络来登录你的计算机时,他会被自动允许利用Guest账户来连接,此时因为Guest也隶属于Everyone组,所以他具备Everyone组所拥有的权限。
3.Authenticated Users:任何利用有效用户账户来登录此计算机的用户,都隶属于此组
4.Interactive:任何在本地登录的用户,都隶属于此组
5.Network:任何通过网络来登录此计算机的用户,都隶属于此组
6.Anonymous Logon:任何未利用有效的普通用户账户来登录的用户,都隶属于此组。Anonymous Logon默认并不属于Everyone组
7.Dialup:任何利用拨号方式连接的用户,都隶属于此组
AGDLP 权限划分策略介绍
安全组就是域内权限的集合,所以在域环境中我们并不建议单独赋予某个用户权限,而是赋予一个组权限,然后将用户拉近这个组。AGDLP,A-G-DL-P 策略是指将用户账号(A)添加到全局组(G)中,将全局组(G)添加到域本地组(DL)中,然后为域本地组(DL)分配资源权限(P)。
A(Account)表示用户账号
G(Global Group)表示全局组
U(Universal Group)表示通用组
L(Local Group)表示本地组
DL(Domain Local Group)表示域本地组
P(Resource Permissions)表示资源权限
A-G-DL-P原则
按照 AGDLP 权限划分策略对域用户进行组织和管理十分方便,在 AGDLP 策略形成之后,如果需要给一个用户添加某个特定权限时,只需要把这个用户添加到其所在域的域本地组中就行了。下面我们来举一个例子说明。
假设,你有两个域,a.com 和 b.com,a.com 中的 5 个财务人员和 b.com 中的 3 个财务人员都需要访问 B 中的 “FINA” 文件夹,这时,你可以在 b.com 中建一个域本地组(DL),因为域本地组(DL)的成员可以来自所有的域,然后把这 8 个人都加入这个域本地组(DL),并把 FINA 的访问权赋给域本地组(DL)。但是这样做的坏处是什么呢?因为域本地组(DL)是在 b.com 域中,所以管理权也在 b.com 域,如果 a.com 域中的 5 个人变成 6 个人,那只能 a.com 域管理员通知 b.com 域管理员,将域本地组(DL)的成员做一下修改, 这样 b.com 域的管理员就太累了。
这时候,我们可以改变一下思路,在 a.com 和 b.com 域中都各建立一个全局组(G),然后在 b.com 域中建立一个域本地组(DL),把这两个全局组(G)都加入 b.com 域的域本地组(DL)中,然后把 FINA 的访问权赋给 DL。这下两个全局组(G)就都有权访问 FINA 文件夹了。此时,这两个全局组(G)分布在 A 和 B 域中,也就是 a.com 域和 b.com 域的管理员便都可以自己管理自己的全局组(G)了,只要把那 5 个人和 3 个人分别加入各自的全局组(G)中就可以了。以后有任何修改,都可以自己做了,再也不用麻烦 b.com 域的管理员了。
除了 AGDLP 策略以外,还有几种常见的权限划分方式:
AGP:A-G-P,将用户账号(A)添加到全局组(G),然后为全局组分配资源权限(P)。
AGLP:A-G-L-P,将用户账号(A)添加到全局组(G),将全局组(G)添加到本地组(L), 然后为本地组(L)分配资源权限(P)。
ADLP:A-DL-P,将用户账号(A)添加到域本地组(DL),然后为域本地组(DL)分配资源权限(P)。
AGDLP:A-G-DL-P,将用户账号(A)添加到全局组(G),将全局组(G)添加到域本地组(DL), 然后为域本地组(DL)分配资源权限(P)。
AGUDLP,A-G-U-DL-P,将用户账号(A)添加到全局组(G),将全局组(G)添加到通用组(U),将通用组(U)添加到域本地组(DL), 然后为域本地组(DL)分配资源权限(P)。
A、G、G、DL、P原则
A、G、G、DL、P原则就是先将用户账号(A)加入到全局组(G),然后将全局组加入到另一个全局组中,再将此全局组加入到本地域组(DL)中,然后设置本地域组的权限(P)。
如图,全局组G3内包含了两个全局组(G1和G2),它们必须是同一个域内的全局组,因为全局组只能够包含位于同一个域内的用户账户和全局组。
A、G、U、DL、P原则
图中的全局组G1和G2若不是与G3在同一个域内,则无法采用A、G、G、DL、P原则。因为全局组G3内无法包含位于另外一个域内的全局组,此时需将全局组G3改为通用组,也就是需要改用A、G、U、DL、P原则。此原则是先将用户账号A加入到全局组G中,然后将此全局组加入到通用组U中,再将此通用组加入到本地域组DL中,然后设置本地域组的权限P。