购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.6 域

1.6.1 域的基础概念

1.工作组和域

在介绍域之前,我们先了解一下什么是工作组。工作组是在Windows 98系统中引入的。一般按照计算机的功能划分工作组,如将不同部门的计算机划分为不同工作组。虽然对计算机划分工作组使得访问资源具有层次感,但还是缺乏统一的管理和控制机制,因此引入“域”。

域(domain)是在本地网络上的Windows计算机集合。与工作组的平等模式不同,域是严格的管理模式。在一个域中至少有一台域控制器(Domain Controller,DC),通过域控制器对域成员,即加入域的计算机、用户进行集中管理,对域成员下发策略、分发不同权限等。域控制器包含整个域中的账号、密码以及域成员的资料信息。当计算机接入网络时,要鉴别它是不是域成员,账户和密码是否在域中,这样能在一定程度上保护网络资源。

2.活动目录

活动目录(Active Directory,AD)是域中提供目录服务的组件,它既是一个目录,也是一个服务。活动目录中存储着域成员的信息,其作用就是帮助用户在目录中快速找到需要的信息。

活动目录可以集中管理账号、密码、软件、环境,增强安全性,缩短的宕机时间。其优势主要表现在以下几点。

1)集中管理。活动目录集中管理网络资源,类似于一本书的目录,涵盖了域中组织架构和信息,便于管理各种资源。

2)便捷访问。用户登录网络后可以访问拥有权限的所有资源,且不需要知道资源位置便可快速、方便地查询。

3)易扩展性。活动目录具有易扩展性,可以随着组织的壮大而扩展成大型网络环境。

3.域控制器

域控制器类似于指挥调度中心,所有的验证、互访、策略下发等服务都由它统一管理。安装了活动目录的计算机即域控制器。

4.域树

域树是多个域之间为建立信任关系而组成的一个连续的命名空间。域管理员不能跨域管理其他域成员,他们相互之间需要建立信任关系。不仅此信任关系是双向信任,而且信任属性可以传递。例如A和B之间是信任关系,B和C之间是信任关系,则A和C因为信任关系的传递而相互信任。他们之间可以自动建立信任关系并进行数据共享等。

命名空间是类似于Windows文件名的树状层级结构,如一个域树中父域名称为a,它的子域即为aa.a,以此类推,之后的子域为xxx.aa.a,如图1-49所示。

图1-49 域树

5.域林

域林由没有形成连续命名空间的域树组成。域林中各个域树之间命名空间不是连续的,但是它们仍共享同一个表结构、配置和全局目录。和域树类似,域林之间也有信任关系,每个域树通过建立信任关系可以交叉访问其他域中资源。如图1-50所示。

域林的根域是第一个创建的域,与此同时第一个林也就诞生了。

图1-50 域林

6.信任关系

信任关系是指两个域之间的通信链路。一个域控制器因为信任关系可以验证其他域的用户,使域用户可以互相访问。

(1)信任的方向

信息关系有两个域:信任域和受信任域。

两个域建立信任关系后,受信任域方用户可以访问信任域方资源,但是信任域方无法访问受信任域方资源。这个信任关系虽然是单向的,但是可以通过建立两次信任关系使双方能够互访。

(2)信任的传递

信任关系分为可传递和不可传递。

如果A和B、B和C之间都是信任可传递的,那么A和C之间是信任关系,可以互访资源。

如果A和B之间、B和C之间都是信任不可传递的,那么A和C之间不是信任关系,无法互访资源。

(3)信任的类型

信任关系分为默认信任和其他信任,默认信任包括父子信任、域间信任,其他信任包括快捷信任、外部信任、森林信任、领域信任,如图1-51所示。

图1-51 信任关系

默认信任是系统自行建立的信任关系,不需要手动创建。

❑父子信任:在现有的域树中增加子域时,子域和父域建立信任关系,并继承父域信任关系。

❑域间信任:在现有的域林中建立第二个域树时,将自动创建它与第一个域树的信任关系。

其他信任是非系统自行建立的信任关系,需要手动创建。

❑快捷信任:在域树或域林中通过默认信任建立的信任关系有时会因信任路径很长、访问资源容易,造成网络流量增加或访问速度变慢,访问效率低下。这种情况下,可以建立访问者与被访问者之间的快捷信任关系,提高访问效率。

❑外部信任:构建在两个不同的森林或者两个不同的域(Windows域和非Windows域)之间的信任关系。这种信任是双向或单向的、不可传递的信任关系。

❑森林信任:如果在Windows Server 2003功能级别,可以在两个森林之间创建一个森林信任关系。这个信任是单向或双向的、可传递的信任关系。注意:森林信任只能在两个林的根域上建立。

❑领域信任:使用领域信任可建立非Windows Kerberos领域和Windows Server 2003或Windows Server 2008域之间的信任关系。

1.6.2 组策略

组策略(Group Policy)用来控制应用程序、系统设置和网络资源,通过组策略可以设置各种软件、计算机、用户策略。其主要意义在于对计算机账户及用户账户在当前计算机上的行为操作进行管控。组策略可分为本地组策略和域组策略。

1.本地组策略

本地组策略(Local Group Policy)是组策略的基础版本,它面向独立且非域的计算机,包含计算机配置及用户配置策略,如图1-52所示。可以通过本地组策略编辑器更改计算机中的组策略设置。例如:管理员可以通过本地组策略编辑器为计算机或特定组策略用户设置多种配置,如桌面配置和安全配置等。

图1-52 本地组策略

2.本地组策略编辑器

1)通过按下Windows+R组合键调出“运行”窗口并输入gpedit.msc以运行本地组策略编辑器,如图1-53所示。

图1-53 运行本地组策略编辑器

2)进入本地组策略编辑器,如图1-54所示。

图1-54 本地组策略编辑器

3)依次选择“计算机配置”→“Windows设置”→“脚本(启动/关机)”,然后选择“启动”选项,如图1-55所示。

4)单击“脚本(启动/关机)”界面中的“属性”链接,如图1-56所示。

5)在这里可以设置开机时启动的脚本,如图1-57所示。

6)单击“显示文件”按钮(见图1-58)就会打开一个目录,可以向该目录投放后门木马,实现权限维持,如图1-59所示。

图1-55 选择“脚本(启动/关机)”界面中的“启动”选项

图1-56 在“脚本(启动/关机)”界面中单击“属性”链接

图1-57 设置开机启动脚本

图1-58 “显示文件”按钮

图1-59 打开目录文件

3.域组策略

域组策略(Domain Policy)是一组策略的集合,可通过设置整个域的组策略来影响域内用户及计算机成员的工作环境,以降低用户单独配置错误的可能性。

4.域组策略实现策略分发

1)在DC中打开组策略管理,如图1-60所示。

图1-60 打开组策略管理

2)新建组策略对象,利用组策略对内网中的用户批量执行文件,如图1-61所示。

图1-61 新建组策略对象

3)右击编辑新建的组策略,如图1-62所示。

图1-62 编辑新建的组策略

4)使用组策略管理用户登录配置,如图1-63所示。

图1-63 使用组策略管理用户登录配置

5)双击“登录”项目后打开显示文件,如图1-64所示。

6)如图1-65所示,在显示的文件夹中手动创建一个test.bat文件。(此文件主要用于在启动时自己打开计算器。)

7)将test.bat批处理文件添加到登录脚本中,如图1-66所示。

8)将当前域组策略链接到现有GPO,如图1-67、图1-68所示。

图1-64 登录属性文件

图1-65 创建test.bat批处理文件

图1-66 将test.bat批处理文件添加到登录脚本中

图1-67 将当前域组策略链接到现有GPO(一)

图1-68 将当前域组策略链接到现有GPO(二)

9)使用gpupdate/forCE命令强制更新刚才创建的策略,如图1-69所示。

10)登录域账号进行策略验证。通过验证发现,当域账号登录成功时,会自动弹出我们创建的“启动计算器”策略,如图1-70所示。

图1-69 使用gpupdate/forCE命令强制更新组策略

图1-70 登录域账号验证策略

1.6.3 LDAP

1.LDAP简介

LDAP(Lightweight Directory Access Protocol,轻量目录访问协议)是在X.500标准基础上产生的一个简化版本的目录访问协议,用来访问目录数据库。LDAP目录服务是由目录数据库和一套访问协议组成的系统。可以把LDAP理解为一个关系型数据库,其中存储了域内主机的各种配置信息。当我们想要查找和管理某个对象时,可以通过查找LDAP层次结构实现,如图1-71所示。

图1-71 LDAP层次结构

2.LDAP组成

LDAP是为了实现目录服务信息访问而构建的一种协议,由<LDAP>、<Domain>、<DN>三部分组成。客户端通常会通过LDAP发起会话以连接到请求服务器,在请求时客户端无须等待服务器响应即可发送下一条请求,服务器会按照请求顺序依次对客户端进行响应。以下是LDAP的格式及组成部分。

❑<LDAP>:LDAP。

❑<Domain>:所要连接的域控制器的域名或者IP地址。

❑<DN>:标识名称(Distinguished Name),用户标识对象在活动中的完整路径。

3.LDAP目录结构

LDAP目录服务是由目录数据库和一套访问协议组成的系统。Microsoft Active Dire-ctory是微软对目录数据库的实现,里面存放着整个域里的所有配置信息(用户、计算机等),而LDAP则是对整个目录数据库的访问协议。图1-72所示为LDAP中的目录结构组织图。

❑目录树:整个目录信息集可以表示为一棵目录树,树中每个节点就是一个条目。

❑条目:条目是具有DN的属性-值对的集合,每个条目就是一条记录。例如,图1-72中的每一个圆圈为一条记录。

图1-72 LDAP目录结构组织图

❑DN:一个条目的标识名称叫作DN。DN相当于关系型数据库表中的主键,通常用于检索。

❑属性:通常用于描述条目的具体信息,例如uid=UserA,ou=sales,dc=ex ample,dc=com,则它有属性name为UserA,属性age为32。

4.LDAP名称路径

通常情况下,Active Directory会利用LDAP命名路径来表明要访问的对象在Active Directory中的位置,以便客户端在通过LDAP访问时能够快速查找到此对象。图1-73为LDAP名称路径图。

5.DN

DN是对象在Active Directory内的完整路径,它有3个属性,分别是CN(公共通用名称)、OU(组织单位)、DC(域名组件)。对DN的3个属性的解读见表1-8。

表1-8 DN的3个属性

图1-73 LDAP名称路径图

图1-74所示为一个DN。其中,“CN=yunwei01”代表一个用户名,“OU=安全运维组,OU=运维管理部”代表一个目录服务中的组织单位。这个DN的含义是,yunwei01这个对象处在testfirest.com域的运维管理部安全运维组中。

图1-74 DN

用户yunwei01的完整路径为testfirest.com域中运维管理部下面的安全运维组,如图1-75所示。

图1-75 用户yunwei01的完整路径

接下来介绍几个常见的术语。

❑相对标识名称(Relative Distinguished Name,RDN):类似于文件系统中的相对路径,与目录树结构无关的部分。例如,上述路径中的CN=yunwei01与OU=运维管理部等都是RDN。

❑全局唯一标识符(Global Unique IDentifier,GUID):GUID是一个128位的数值,系统会自动为每个对象指定一个唯一的GUID。虽然可以改变对象的名称,但是其GUID永远不会改变。

❑Base DN:LDAP的数据作为树形结构存储,LDAP目录树的顶部就是根,也就是所谓的Base DN,如DC=testfirest, DC=com。

❑用户主体名称(User Principal Name,UPN):可以理解成DN的简称。比如yunwei01属于testfirest.com,那么其简称就是yunwei01@testfirest.com。

1.6.4 SPN

1.SPN简介

SPN(Service Principal Name,服务主体名称)是服务实例的唯一标识符。当域内存在大量的服务器时,为了方便管理,管理员会对服务器进行标识,而他所用的方法就是SPN。

2.SPN类型分类

SPN分为两种类型,一种注册在活动目录的机器账户Computers下,另一种注册在活动目录的域账号Users下,如图1-76所示。

图1-76 SPN类型

1)注册在活动目录的机器账户(CN=Computers)下。当某一个服务的权限为Local System或者Network Service时,SPN会注册在机器账户下,同时它所加入域的每台机器都会自动注册两个SPN——“Host/主机名”和“Host/主机名.DC名”,如图1-77所示。

2)注册在活动目录的域账号(CN=Users)下。当某一个服务的权限为一个域用户时,SPN会注册在活动目录的域账号下,如图1-78所示。

图1-77 注册在活动目录的机器账户下

图1-78 注册在活动目录的域账号下

3.SPN格式定义

如下为SPN格式定义,其中<serviceclass>服务类和<host>主机名为必要参数,<port>、<servername>、<Domain user>为可选参数。

❑<serviceclass>:服务的名称,如LDAP、MSSQL等。

❑<host>:系统的名称,可以是FQDN、NetBIOS名这两种形式中的任意一种。

❑<port>:服务器的端口号,如果使用的是默认端口,可以省略。

❑<servername>:服务器的专有名称、主机名、FQDN。

❑<Domain user>:域中的用户。

4.SPN实例名称

表1-9列举了一些常见的SPN实例名称。

表1-9 常见SPN实例名称

5.SPN服务注册

前面讲过Kerberos协议关于PC1请求server1的某种服务,假设我们需要请求server1的HTTP服务并且还想经过Kerberos协议的认证,那么就需要给server1注册一个SPN。注册之后,Kerberos就会将服务器实例和服务登录账号关联。在SPN服务注册方面,我们使用本地Windows自带的二进制文件Set SPN。操作流程如下。

1)以域管理员的身份登录域控制器,如图1-79所示。

2)打开PowerShell管理命令行,如图1-80所示。

图1-79 以域管理员的身份登录域控制器

图1-80 打开PowerShell管理命令行

3)以z3用户的身份进行SPN服务注册(假设z3是一个HTTP服务的登录账号),如图1-81所示。

图1-81 以z3用户的身份进行SPN服务注册

4)通过setspn-T命令查看验证注册状态,如图1-82所示。

图1-82 通过setspn-T命令查看验证注册状态

注意:以普通域用户注册SPN服务主体时,需要域管理员的权限,否则会提示权限不够,如图1-83所示。

图1-83 普通域账号SPN注册

6.SPN服务主体配置

一般情况下,我们都是通过Set SPN的方式对SPN进行手动注册的,但手动注册的SPN存在一定的丢失问题。解决SPN丢失的最好办法是让一些“服务”的启动域账号拥有自动注册SPN的权限,而这需要在域控制器上对其开放读写“ServicePrincipalName”的权限。操作流程如下。

1)在域控制器上打开“Active Directory用户和计算机”,方法是依次选择“开始”→“所有程序”→“管理工具”→“Active Directory用户和计算机”,如图1-84所示。

2)在Computers中找到一个计算机账户,右击并选择“属性”,如图1-85所示。

图1-84 打开Active Directory用户和计算机

图1-85 选择计算机属性

3)在“属性”窗口中选择“安全”选项卡并单击“高级”按钮,如图1-86所示。

4)选择要添加的网络控制器计算账户或组,单击“编辑”按钮,在“属性”中勾选读取和写入servicePrincipalName两项,如图1-87所示。

图1-86 配置“安全”选项卡

图1-87 设置读取和写入servicePrincipalName权限

5)单击“确认”按钮即可确定权限,如图1-88所示。

7.SPN服务查询

在内网域环境中进行信息收集的最好方式是通过SPN扫描。对于红队来讲,通过SPN扫描进行信息收集的方式比通过端口扫描的方式更加隐蔽,因为SPN扫描查询实际上就是对LDAP中存储的内容进行查询,并不会对网络上的每个IP进行端口扫描。而对域控制器发起的LDAP查询是正常Kerberos票据行为中的一部分,其查询操作很难被检测出来,由此以来可以规避端口扫描带来的“风险”,提高红队自身的隐蔽性。以下是通过setspn进行信息收集的常见用法。

图1-88 确认当前权限

1)查看当前域内的所有SPN。

2)查看指定用户或者主机名注册的SPN。

3)查找本域内重复的SPN。

4)删除指定用户或者主机名。 NcmTPuKwmtG56dAu57X1tdO7rk9RmkoTT2f31clJMkhSFZd2szKh4UGjbwHTAKsD

点击中间区域
呼出菜单
上一章
目录
下一章
×