跳转至

Windows域基础概念

内网也指局域网,是指在某一区域内由多台计算机互连而成的计算机组,组网范围通常在数千米以内。在局域网中,可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等。内网是封闭的,可以由办公室内的两台计算机组成,也可以由一个公司内的大量计算机组成

工作组介绍

在一个大型单位里,可能有成百上千台计算机互相连接组成局域网,它们都会列在"网络"(网上邻居)内。如果不对这些计算机进行分组,网络的混乱程度是可想而知的 为了解决这一问题,产生了工作组( Work Group)这个概念。将不同的计算机按功能(或部门)分别列入不同的工作组,例如技术部的计算机都列入"技术部"工作组、行政部的计算机都 列入"行政部"工作组。要想访问某个部门的资源,只要在"网络"里双击该部门的工作组名 就可以看到该部门的所有计算机了。相比不分组的情况,这样的情况有序得多(尤其对大型局域网来说)。

在工作组中:

  • 所有的计算机都是对等的,没有计算机可以控制另一台计算机。
  • 每台计算机都具有一组用户帐户。若要登录到工作组中的任何计算机,您必须具有该计算机上的帐户。
  • 通常情况下,计算机的数量不超过二十台。
  • 工作组不受密码保护。
  • 所有的计算机必须在同一本地网络或子网中。

加入/创建工作组

  • 加入工作组

加入工作组的方法很简单。右击桌面上的"计算机"图标,在弹出的快捷菜单中选择"属 性"选项,然后依次单击"更改设置"和"更改"按钮,在"计算机名"输入框中输入计算机的 名称,在"工作组"输入框中输入想要加入的工作组的名称

  • 创建工作组

如果输入的工作组的名称在网络中不存在,就相当于新建了一个工作组(当然,暂时只有当前这台计算机在该工作组内)。单击"确定"按钮, Windows会提示需要重新启动。在重新启动之后进入"网络",就可以看到所加入的工作组的成员了。当然,也可以退出工作组(只要修改工作组的名称即可)

这时在网络中,别人可以访问我们的共享资源,我们也可以加入同一网络中的任何工作组 工作组就像一个可以自由进入和退出的社团,方便同组的计算机互相访问。工作组没有集中管理 作用,工作组里的所有计算机都是对等的(没有服务器和客户机之分)

域介绍

Windows域是计算机网络的一种形式,其中所有用户帐户 ,计算机,打印机和其他安全主体都在位于称为域控制器的一个或多个中央计算机集群上的中央数据库中注册。 身份验证在域控制器上进行。 在域中使用计算机的每个人都会收到一个唯一的用户帐户,然后可以为该帐户分配对该域内资源的访问权限。

假如有一个以下的场景:

一个公司有200台计算机,我们希望某台计算机的账户Aan可以访每台计算机的资源或者在每台计算机上登录。那么,在工作组环境中,我们必须在这200台计算机各自的SAM数据库中创建Aan这个账户。一旦Alan想要更换密码,必须进行200次更改密码的操作!这个场景中只有200台计算机,如果有5000计算机或者上万台计算机呢?这就是一个典型的域环境应用场景

Info

域就是用来解决工作组不适用较大型网络和权限/角色管理机制不全面的对策

域 ( Domain)是一个有安全边界的计算机集合(安全边界的意思是,在两个域中,一个域中的用户无法访问另一个域中的资源)可以简单地把域理解成升级版的工作组。

与工作组相比,域的安全管理控制机制更加严格。用户要想访问域内的资源,必须以合法的身份登录域,而用户对域内的资源拥有什么样的权限,还取决于用户在域内的身份。

目录分区/命名上下文

由Active Directory 域服务控制的域林中的每个域控制器都包含目录分区。 目录分区也称为命名上下文。 目录分区是具有独立副本 (replica)范围和计划数据的整个目录的连续部分。 默认情况下,企业Active Directory 域服务包含以下分区:

  • 架构分区:架构分区包含 classSchema 和 attributeSchema 对象,这些对象定义林中可以存在的对象类型。 林中的每个域控制器都具有相同架构分区的副本 (replica)。
  • 配置分区:配置分区包含副本 (replica)拓扑和其他必须在整个林中副本 (replica)的配置数据。 林中的每个域控制器都具有相同配置分区的副本 (replica)。
  • 域分区:域分区包含与本地域关联的目录对象,例如用户和计算机。 一个域可以有多个域控制器,一个林可以有多个域。 每个域控制器为其本地域存储域分区的完整副本 (replica),但不存储其他域的域分区副本 (replica)。

Windows Server 2003 引入了*应用程序目录分区*,它提供控制副本 (replica)范围的功能,并允许以更适合动态数据的方式放置副本 (replica)。 有关应用程序目录分区的详细信息,请参阅 “关于应用程序目录分区”。

参考Windows文档:https://learn.microsoft.com/zh-cn/windows/win32/ad/naming-contexts-and-partitions

域控制器

域控制器( Domain Controller,DC)是域中的一台类似管理服务器的计算机,我们可以形象可以地将它理解为一个单位的门禁系统。域控制器负责所有连入的计算机和用户的验证工作。域内的计算机如果想互相访问,都要经过域控制器的审核。

域控制器中存在由这个域的账户、密码、属于这个域的计算机等信息构成的数据库。当计算机连接到域时,域控制器首先要鉴别这台计算机是否属于这个域,以及用户使用的登录账号是否存在、密码是否正确。如果以上信息有一项不正确,域控制器就会拒绝这个用户通过这台计算机登录。

如果用户不能登录,就不能访问服务器中的资源。域控制器是整个域的通信枢纽,所有的权限身份验证都在域控制器上进行,也就是说,域内所有用来验证身份的账号和密码散列值都保存在域控制器中

域中一般有如下几个环境:

单域

通常,在一个地理位置固定的小公司里,建立一个域就可以满足需求。

在一个域内,一般要有至少两台域服务器,一台作为DC,另一台作为备份DC。活动目录的数据库(包括用广的账号信息)是存储在DC中的,如果没有备份DC,一旦DC瘫痪了,域内的其他用户就不能登录该域 了。如果有一台备份DC,至少该域还能正常使用(把瘫痪的DC恢复即可)

父域和子域

出于管理及其他需求,需要在网络中划分多个域。第一个域称为父域,各分部的域称为该域的子域。例如大公司的各个分公司位于不同的地点,就需要使用父域及子域。如果把不同地点的分公司放在同一个域内,那么它们之间在信息交互(包括同步、复制等)上花费的时间就会比较长,占用的带宽也会比较大(在同一个域内,信息交互的条目是很多的,而且不会压缩; 在不同的域之间,信息交互的条日相对较少,而且可以压缩)。这样处理有一个好处,就是分公司,可以通过自己的域来管理自己的资源。

还有一种情况是出于安全策略的考虑(每个域都有自己的 安全策略)例如,一个公司的财务部希望使用特定的安全策略(包括账号密码策略等)、那么可 以将财务部作为一个子域来单独管理

域树(Tree)是多个域通过建立信任关系组成的集合。一个域管理员只能管理本域,不能访问 或者管理其他域。如果两个域之间需要互相访问,则需要建立信任关系( Trust Relation)信任关系是连接不同域的桥梁。

域树内的父域与子域,不但可以按照需要互相管理、还可以跨网络分配文件和打印机等设备及资源,从而在不同的域之间实现网络资源的共享与管理、通信及数据传输。

在一个域树中,父域可以包含多个子域。子域是相对父域来说的,指的是域名中的每一个段。 各子域之间用点号隔开,一个"."代表一个层次。放在域名最后的子域称为最高级子域或一级域,它前面的子域称为二级域。例如,域asia.abc.com的级别比域abc.com低(域asia.abc.com有两个层次,而域abc.com只有一个层次)再如,域cn.asia.abc.com的级别比域asia.abc.com低可以看出,子域只能使用父域的名字作为其域名的后缀

在一个域树中,域的名字是连续的,如图

域树

域树(tree)是多个域通过建立信任关系组成的集合。正常情况下,一个域管理员只能管理本域,不能访问或管理其他域。如果两个域需要互相访问,则需要建立信任关系。信任关系是连接不同域的桥梁。域树内的父域与子域,不但可以按照需要相互管理,还可以跨网络分配文件和打印机等设备及资源,从而实现不同域的资源共享与管理、通信及数据传输。

在一个域树中,父域可以包含多个子域,一个.代表一个层次,放在最后的子域称之为一级域,前面的子域称之为二级域,子域只能使用父域的名字作为其域名的后缀。

img

域森林

域森林( Forest)是指多个域树通过建立信任关系组成的集合。例如,在一个公司兼并场景中 某公司使用域树 abc.com,被兼并的公司本来有自己的域树 abc. net(或者在需要为被兼并公司建立具有自己特色的域树时),域树abc.net无法挂在域树abc.com下。所以,域树abc.com与域树 abc. net之间需要通过建立信任关系来构成域森林。通过域树之间的信任关系,可以管理和使用整个域森林中的资源,并保留被兼并公司自身原有的特性,如图1-4所示。

域名服务器

域名服务器( Domain Name Server,DNs)是指用于实现域名( Domain Name)和与之相对的IP地址( IP Address)转换的服务器。从对域树的介绍中可以看出,域树中的域名和DNS域名非常相似。而实际上,因为域中的计算机是使用DNS来定位域控制器、服务器及其他计算机、网络服务的,所以域的名字就是DNS域的名字。在内网渗透测试中,大都是通过寻找DNS服务器来确定域控制器的位置的(DNS服务器和域控制器通常配置在同一机器上)

同时,域名服务器又分为正向解析和反向解析。

  • 正向解析:域名→IP地址
  • 反向解析:IP地址→域名
  • 域内计算机使用DNS来定位域控制器/服务器/其他计算机,所以域名==>DNS域的名字
  • 在内网渗透中,通过寻找DNS服务器来确定域控制器的位置:DNS服务器和域控制器通常配置在同一台机器上!!!

域/林功能级别

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012

功能级别决定了可用的 Active Directory 域服务 (AD DS) 域或林功能。 功能级别还决定了你可以在域或林中的域控制器上运行哪些 Windows Server 操作系统。 但是,功能级别不会影响你可以在已加入域或林的工作站和成员服务器上运行哪些操作系统。

部署 AD DS 时,请将域和林功能级别设置为环境可以支持的最高值。 这样一来,你就可以尽可能使用多项 AD DS 功能。 部署新的林时,系统会提示你设置林功能级别,然后设置域功能级别。 可以将域功能级别设置为高于林功能级别的值,但不能将域功能级别设置为低于林功能级别的值。

随着 Windows Server 2003、2008 和 2008 R2 生存期的结束,这些域控制器 (DC) 需要更新到 Windows Server 2012、2012 R2、2016、2019 或 2022。 与任何服务器一样,在不受支持的 Windows Server 版本上运行的域控制器 (DC) 应从域中删除,并替换为受支持的 Windows Server 版本。 有关详细信息,请参阅 Windows Server 版本信息。

在 Windows Server 2008 及更高的域功能级别,分布式文件服务 (DFS) 复制用于在域控制器之间复制 SYSVOL 文件夹内容。 如果在 Windows Server 2008 或更高的域功能级别创建新的域,系统会自动使用 DFS 复制来复制 SYSVOL。 如果在较低的功能级别创建域,则在复制 SYSVOL 时,需从使用 FRS 复制迁移到使用 DFS 复制。 有关迁移步骤,可以遵循 TechNet 上的过程,也可以参考简化 FRS 到 DFSR SYSVOL 的迁移博客。 Windows Server 2016 是最后一个包含 FRS 的 Windows Server 版本。

Info

自 Windows Server 2016 以来,没有添加新的林或域功能级别,更高版本的操作系统可以且也应该用于域控制器,但它们使用 Windows Server 2016 作为最新的功能级别。

域功能级别

  • Windows Server 2016 功能级别

支持的域控制器操作系统:

  • Windows Server 2022
  • Windows Server 2019
  • Windows Server 2016

若要添加其中一个版本的 Windows Server 域控制器,最低要求是 Windows Server 2008 功能级别。 该域还需使用 DFS-R 作为引擎来复制 SYSVOL。

  • Windows Server 2012 R2 功能级别

支持的域控制器操作系统:

  • Windows Server 2022
  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012 R2

  • Windows Server 2012 功能级别


支持的域控制器操作系统:

  • Windows Server 2022
  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012 R2
  • Windows Server 2012

Tip

可以看出,域控系统版本必须大于等于域功能级别的系统版本

林功能级别


  • Windows Server 2012 R2 林功能级别功能
  • Windows Server 2012 林功能级别可用的所有功能,而不是任何其他功能。

  • Windows Server 2012 林功能级别功能
  • Windows Server 2008 R2 林功能级别可用的所有功能,而不是任何其他功能。

  • Windows Server 2008 R2 林功能级别功能
  • Windows Server 2003 林功能级别上可用的所有功能,以及下列功能:
    • Active Directory 回收站,提供在运行 AD DS 时还原整个已删除对象的功能。

Tip

同样的,林中所有的域控系统必须大于等于林功能级别的系统版本

参考Windows官方文档:https://learn.microsoft.com/zh-cn/windows-server/identity/ad-ds/active-directory-functional-levels

本地账户和活动目录账户

本地账户

本地用户帐户在设备上本地定义,并且只能在设备上分配权限和权限。 本地用户帐户是安全主体,用于保护和管理服务或用户对设备上资源的访问。

可以使用如下命令查看本地账户

Text Only
net user

  • 默认本地用户帐户

*默认本地用户帐户*是在安装操作系统时自动创建的内置帐户。 无法删除或删除默认本地用户帐户,并且不提供对网络资源的访问权限。

默认本地用户帐户用于根据分配给帐户的权限来管理对本地设备资源的访问权限。 默认本地用户帐户和创建的本地用户帐户位于 “用户” 文件夹中。 “用户”文件夹位于本地 计算机管理 Microsoft 管理控制台 (MMC) 的“本地用户和组”文件夹中。 计算机管理 是可用于管理本地或远程设备的管理工具的集合。

以下部分介绍了默认本地用户帐户。 展开每个部分以获取详细信息。

Administrator

默认的本地管理员帐户是用于系统管理的用户帐户。 每台计算机都有一个管理员帐户 (SID S-1-5-domain-500,显示名称管理员) 。 管理员帐户是在 Windows 安装过程中创建的第一个帐户。

管理员帐户可完全控制本地设备上的文件、目录、服务和其他资源。 管理员帐户可以创建其他本地用户、分配用户权限和分配权限。 管理员帐户可以通过更改用户权限随时控制本地资源。

无法删除或锁定默认管理员帐户,但可以重命名或禁用该帐户。

Windows 安装程序禁用内置管理员帐户,并创建另一个作为 Administrators 组成员的本地帐户。

管理员组的成员可以使用提升的权限运行应用,而无需使用 “以管理员身份运行” 选项。 快速用户切换比使用 runas 或不同用户提升更安全。

默认情况下,管理员帐户是 Administrators 组的成员。 最佳做法是限制管理员组中的用户数,因为 Administrators 组的成员对设备具有“完全控制”权限。无法从管理员组中删除管理员帐户。

安全注意事项

由于已知许多版本的 Windows 操作系统上都存在管理员帐户,因此最好尽可能禁用管理员帐户,使恶意用户更难访问服务器或客户端计算机。

可以重命名管理员帐户。 但是,重命名的管理员帐户继续使用相同的自动分配的安全标识符 (SID) ,恶意用户可能会发现该标识符。 有关如何重命名或禁用用户帐户的详细信息,请参阅 禁用或激活本地用户帐户 和 重命名本地用户帐户。

作为安全最佳做法,请使用本地 (非管理员) 帐户登录,然后使用 “以管理员身份运行 ”完成需要比标准用户帐户更高级别权限的任务。 除非完全有必要,否则不要使用管理员帐户登录到计算机。 有关详细信息,请参阅 使用管理凭据运行程序。

组策略可用于自动控制本地管理员组的使用。 有关组策略的详细信息,请参阅组策略概述。


重要

  • 不允许使用空密码
  • 即使管理员帐户已禁用,它仍可用于使用安全模式访问计算机。 在恢复控制台中或在安全模式下,会自动启用管理员帐户。 正常操作恢复后,会禁用该操作。

Guest

来宾帐户允许计算机上没有帐户的偶尔用户或一次性用户暂时登录到具有有限用户权限的本地服务器或客户端计算机。 默认情况下,来宾帐户处于禁用状态,并且密码为空。 由于来宾帐户可以提供匿名访问,因此被视为安全风险。 出于此原因,除非需要使用来宾帐户,否则最佳做法是禁用来宾帐户。

Guest帐户组成员身份

默认情况下,来宾帐户是默认来宾组的唯一成员,该组 SID S-1-5-32-546允许用户登录到设备。

Guest帐户安全注意事项

启用来宾帐户时,仅授予有限的权限和权限。 出于安全原因,来宾帐户不应通过网络使用,并可供其他计算机访问。

此外,来宾帐户中的来宾用户应该无法查看事件日志。 启用来宾帐户后,最佳做法是经常监视来宾帐户,以确保其他用户无法使用服务和其他资源。 这包括前一个用户无意中留下的资源。

HelpAssistant

HelpAssistant 帐户是在运行远程协助会话时启用的默认本地帐户。 当没有远程协助请求挂起时,会自动禁用此帐户。

HelpAssistant 是用于建立远程协助会话的主帐户。 远程协助会话用于连接到运行 Windows 操作系统的另一台计算机,它通过邀请启动。 对于请求的远程协助,用户通过电子邮件或文件从其计算机向可以提供帮助的人员发送邀请。 接受用户的远程协助会话邀请后,将自动创建默认 HelpAssistant 帐户,以便向提供协助的人员授予对计算机的有限访问权限。 HelpAssistant 帐户由远程桌面帮助会话管理器服务管理。

HelpAssistant 帐户安全注意事项

与默认 HelpAssistant 帐户相关的 SID 包括:

  • SID: S-1-5-<domain>-13,显示名称 终端服务器用户。 此组包括登录到已启用远程桌面服务的服务器的所有用户。
  • SID: S-1-5-<domain>-14,显示名称 远程交互式登录。 此组包括使用远程桌面连接连接到计算机的所有用户。 此组是交互式组的子集。 包含远程交互式登录 SID 的访问令牌也包含交互式 SID。

对于 Windows Server 操作系统,远程协助是默认未安装的可选组件。 必须先安装远程协助,然后才能使用它。

有关 HelpAssistant 帐户属性的详细信息,请参阅下表。

HelpAssistant 帐户属性
属性 值
Well-Known SID/RID S-1-5-<domain>-13 (Terminal Server User), S-1-5-<domain>-14 (Remote Interactive Logon)
类型 用户
默认容器 CN=Users, DC=<domain>
默认成员 无
的默认成员 域来宾 来宾
受 ADMINSDHOLDER 保护? 否
移出默认容器是否安全? 可以移出,但我们不建议使用。
将此组的管理委托给非服务管理员是安全的? 否

DefaultAccount

DefaultAccount 帐户(也称为默认系统托管帐户 (DSMA) )是一种已知的用户帐户类型。 DefaultAccount 可用于运行多用户感知或用户不可知的进程。

默认情况下,DSMA 在桌面版和具有桌面体验的服务器操作系统上处于禁用状态。

DSMA 具有众所周知的 RID。503 因此,DSMA 的安全标识符 (SID) 将具有以下格式的已知 SID: S-1-5-21-\<ComputerIdentifier>-503。

DSMA 是已知组 **系统托管帐户组**的成员,该组的已知 SID 为 S-1-5-32-581。

即使在创建帐户本身之前,也可在脱机暂存期间向 DSMA 别名授予对资源的访问权限。 帐户和组是在安全帐户管理器 (SAM) 中首次启动计算机期间创建的。

参考Windows文档:https://learn.microsoft.com/zh-cn/windows/security/identity-protection/access-control/local-accounts

活动目录账户

活动目录(AD)账户是活动目录中的账户,可分为用户账户、服务账户、机器账户,活动目录账户存储在活动目录数据库中

用户账户

  • Active Directory 中的默认本地帐户

默认本地帐户是在安装 Windows Server 域控制器并创建域时自动创建的内置帐户。 这些默认本地帐户在 Active Directory 中具有对应帐户。 它们还具有域范围的访问权限,并且与成员或独立服务器的默认本地用户帐户完全分开。

可以向特定域控制器上的默认本地帐户分配权限,并且只能在该域控制器上分配权限。 这些帐户是域的本地帐户。 安装默认本地帐户后,它们将存储在 Active Directory 用户和计算机的用户容器中。 最佳做法是将默认本地帐户保留在用户容器中,而不是尝试将这些帐户移动到其他容器,例如组织单位 (OU)。

用户容器中的默认本地帐户包括:管理员、来宾和 KRBTGT。 建立远程协助会话时,将安装 HelpAssistant 帐户。 以下部分介绍默认本地帐户及其在 Active Directory 中的用法。

默认本地帐户执行以下操作:

  • 让域使用唯一凭据(用户名和密码)来表示、识别和验证分配给帐户的用户的标识。 最佳做法是将每个用户分配给单个帐户,以确保最大安全性。 不允许多个用户共享一个帐户。 用户帐户允许用户使用可由计算机、网络或域进行身份验证的唯一标识符登录到计算机、网络和域。
  • 授权(授予或拒绝)对资源的访问权限。 对用户的凭据进行身份验证后,根据用户对资源的显式分配权限,授权用户访问网络和域资源。
  • 审核对用户帐户执行的操作。

在 Active Directory 中,管理员使用默认本地帐户直接从专用管理工作站管理域和成员服务器。 Active Directory 帐户提供对网络资源的访问权限。 Active Directory 用户帐户和计算机帐户可以表示物理实体(例如计算机或人员),或者充当某些应用程序的专用服务帐户。

每个默认本地帐户都会自动分配到一个安全组,该安全组预配置了执行特定任务的相应权限。 Active Directory 安全组将用户帐户、计算机帐户和其他组收集到可管理的单元中。 有关详细信息,请参阅 Active Directory 安全组。

在 Active Directory 域控制器上,每个默认本地帐户称为安全主体。 安全主体是一个目录对象,用于保护和管理提供域控制器资源访问权限的 Active Directory 服务。 安全主体包括对象,例如用户帐户、计算机帐户、安全组或在用户或计算机帐户的安全上下文中运行的线程或进程。 有关详细信息,请参阅安全主体。

安全主体由唯一安全标识符 (SID) 表示。

Administrator账户

管理员帐户是默认帐户,用于每台计算机和设备上的 Windows 操作系统的所有版本。 系统管理员使用管理员帐户执行需要管理凭据的任务。 无法删除或锁定此帐户,但可以重命名或禁用该帐户。

管理员帐户为用户提供位于该本地服务器上的文件、目录、服务和其他资源的完全访问权限(完全控制权限)。 管理员帐户可用于创建本地用户,以及分配用户权限和访问控制权限。 该帐户还可用于随时控制本地资源,只需更改用户权限即可。 尽管文件和目录可以暂时受到管理员帐户的保护,但该帐户可以随时通过更改访问权限来控制这些资源。

属性 值
已知 SID/RID S-1-5-<domain>-500
类型 User
默认容器 CN=Users,DC=<domain>,DC=
默认成员 空值
默认成员 管理员、域管理员、企业管理员、域用户(所有用户帐户的主组 ID 为域用户) Active Directory 域用户组中的组策略创建者所有者和架构管理员
通过 ADMINSDHOLDER 受保护吗? 是
移出默认容器是否安全? 是
将此组的管理委派给非服务管理员是否安全? 否
Guest 帐户

由于来宾帐户可以提供匿名访问,因此存在安全风险。 它还具有众所周知的 SID。 出于此原因,最佳做法是禁用来宾帐户,除非需要使用来宾帐户,然后仅在非常有限的时间段内具有受限的权限。

如果需要来宾帐户,则需要域控制器上的管理员才能启用来宾帐户。 来宾帐户无需密码即可启用,也可以使用强密码启用。 管理员还授予来宾帐户的受限权限。 若要帮助防止未经授权的访问,请:

  • 不要向来宾帐户授予关闭系统用户权限。 当计算机关闭或启动时,来宾用户或具有本地访问权限的任何人(例如恶意用户)都可能获得对计算机的未经授权的访问权限。
  • 不要为来宾帐户提供查看事件日志的功能。 启用来宾帐户后,最佳做法是经常监视此帐户,以确保其他用户无法使用服务和其他资源,例如以前用户无意中留下的可用资源。
  • 当服务器具有外部网络访问权限或访问其他计算机时,请不要使用来宾帐户。

如果决定启用来宾帐户,请确保限制其使用并定期更改密码。 与管理员帐户一样,你可能希望重命名帐户作为额外的安全预防措施。

此外,管理员还负责管理来宾帐户。 管理员监视来宾帐户,在来宾帐户不再使用时将其禁用,并根据需要更改或删除密码。

属性 值
已知 SID/RID S-1-5-<domain>-501
类型 User
默认容器 CN=Users,DC=<domain>,DC=
默认成员 无
默认成员 来宾、域来宾
通过 ADMINSDHOLDER 受保护吗? 否
移出默认容器是否安全? 可以移出,但我们不建议这样做。
将此组的管理委派给非服务管理员是否安全? 否
KRBTGT 帐户

KRBTGT 帐户是本地默认帐户,充当密钥发行中心 (KDC) 服务的服务帐户。 无法删除此帐户,并且无法更改帐户名称。 无法在 Active Directory 中启用 KRBTGT 帐户。

KRBTGT 也是 KDC 用于 Windows Server 域的安全主体名称,由 RFC 4120 指定。 KRBTGT 帐户是 KRBTGT 安全主体的实体,并在创建新域时自动创建。

Windows Server Kerberos 身份验证是通过使用对称密钥加密的特殊 Kerberos 票证授予票证 (TGT) 实现的。 此密钥派生自请求其访问权限的服务器或服务的密码。 KRBTGT 帐户的 TGT 密码只有 Kerberos 服务知道。 若要请求会话票证,必须将 TGT 提供给 KDC。 TGT 从 KDC 颁发给 Kerberos 客户端。

有关 KRBTGT 帐户属性的详细信息,请参阅下表:

属性 值
已知 SID/RID S-1-5-<domain>-502
类型 User
默认容器 CN=Users,DC=<domain>,DC=
默认成员 无
默认成员 域用户组(所有用户帐户的主组 ID 为域用户)
通过 ADMINSDHOLDER 受保护吗? 是
移出默认容器是否安全? 可以移出,但我们不建议这样做。
将此组的管理委派给非服务管理员是否安全? 否

参考Windows文档:https://learn.microsoft.com/zh-cn/windows-server/identity/ad-ds/manage/understand-default-user-accounts

Important

当一台主机升级为域控时,对应的账户也为进行升级,升级到对应域控本地用户组

服务账户

服务帐户是显式创建的用户帐户,用于为 Windows Server 操作系统上运行的服务提供安全上下文。 安全上下文决定了服务访问本地和网络资源的能力。 Windows 操作系统依靠服务来运行各种功能。 可通过应用程序、服务管理单元或任务管理器,或者使用 Windows PowerShell 来配置这些服务。

详细信息参考Windows文档:https://learn.microsoft.com/zh-cn/windows-server/identity/ad-ds/manage/understand-service-accounts

服务账户同时涉及到SPN,参考文章:https://www.freebuf.com/articles/system/174229.html

机器账户

活动目录机器账户(Computer Account)其实也是一种特殊的用户账户,但是他不能用于登录。机器账户可以代表一个物理实体,如域内机器。

他和域用户一样,同样是域内的成员,它在域内的用户名为机器名+\(,比如机器Win7的机器账户名为Win7\),这个值可以在机器账户的samAccountName属性看到,机器用户在本地的用户名为System

Note

值得一提的是,当机器加入域后,会将机器账户的密码同步保存到域控,并且机器账户的密码是系统随机生成的,并且会定时更新,密码强度为120个字符,所以即使我们得到了机器账户的Hash,也无法进行破解

SamAccountName属性可参考:https://learn.microsoft.com/zh-cn/windows/win32/adschema/a-samaccountname

机器用户跟system用户的关系

img

以WIN7这台机子为例,发现它是computer类的实例。而computer类是user类的子类。而域用户是user类的实例。而类是属性的集合,子类继承了父类的所有属性,因此域用户该有的属性,计算机用户都有。甚至可以说,机器用户就是一种域用户。

域用户添加机器用户

允许非特权用户通过ms-DS-MachineAccountQuota创建计算机帐户,默认为10个,但无法删除创建的计算机账户。创建者帐户的SID存储在计算机帐户的ms-DS-CreatorSID属性中。

添加计算机帐户将创建以下4个SPN

Text Only
HOST/MachineAccountName
HOST/MachineAccountName.domain.name
RestrictedKrbHost/MachineAccountName
RestrictedKrbhost/MachineAccountName.domain.name

机器帐户没有本地登录权限,但可以通过runas /netonly执行命令。 Powermad利用ms-DS-MachineAccountQuota属性设置无需将实际系统附加到AD。

Bash
#创建机器账户 
Import-module Powermad.ps1 New-MachineAccount -MachineAccount testAccount -Password $(ConvertTo-SecureString "123456789" -AsPlainText -Force) #或者不指定Password也可以
#枚举所有计算机帐户(MachineAccount)的创建者
Get-MachineAccountCreator
#[C#实现](<https://github.com/pkb1s/SharpAllowedToAct>)

这时候的账户还没有在DNS服务器里面注册

Bash
#添加DNS记录 
Invoke-DNSUpdate -DNSType A -DNSName testNew -DNSData 192.168.1.111 
#删除此记录 (非特权用户无法修改或删除已有的记录) 
Invoke-DNSUpdate -DNSType A -DNSName testNew
机器用户添加域用户
Bash
#需要下载ActiveDirectory模块
import-module ActiveDirectory
$sd= [System.DirectoryServices.ActiveDirectorySecurity]::new()
$sd.SetSecurityDescriptorSddlForm("D:P(A;CI;GA;;;WD)","Access")
$ba = $sd.GetSecurityDescriptorBinaryForm()
$computer=Get-ADComputer -Identity $env:COMPUTERNAME
$ex= New-ADObject -Name "A" -Path $computer.DistinguishedName -Type "msExchStorageGroup" -OtherAttributes @{nTSecurityDescriptor=$ba} -PassThru
$pwd = ConvertTo-SecureString -String "qweasd.123" -AsPlainText -Force
$user = New-ADUser -Name "USERX" -Path $ex.DistinguishedName -Enabled $true -AccountPassword $pwd -ChangePasswordAtLogon $false -PassThru
Write-Host "Created $($user.DistinguishedName)"

参考文章:https://myzxcg.com/2021/08/%E5%9F%9F%E7%94%A8%E6%88%B7%E4%B8%8E%E5%9F%9F%E6%88%90%E5%91%98%E6%9C%BA%E5%99%A8%E5%85%B3%E7%B3%BB%E5%8F%8A%E5%88%A9%E7%94%A8/#%E6%9C%BA%E5%99%A8%E8%B4%A6%E6%88%B7

Important

当我们获得了域内主机的System权限后,就拥有了一个域内机器账户的权限,也就相当于拥有了一个域内用户的权限了。如果我们发现一个域内机器上没有域用户登录过,只有本地账户Administrator登陆过,那么就可以尝试抓取机器账户的Hash,从而获得域内用户的权限

域内权限划分

本地组和域组

本地组

当计算机安装完系统后,会自动创建默认的本地组

Text Only
net localgroup
net localgroup {GROUPNAME}

可用上述命令查看本地组

Text Only
wmic group get name,sid

可用上述命令查看组的sid

组 描述
Administrators 此组的成员具有对计算机的完全控制权限,并且他们可以根据需要向用户分配用户权限和访问控制权限。Administrator 帐户是此组的默认成员。当计算机加入域中时,Domain Admins 组会自动添加到此组中。因为此组可以完全控制计算机,所以向其中添加用户时要特别谨慎
Backup Operators 此组的成员可以备份和还原计算机上的文件,而不管保护这些文件的权限如何。这是因为执行备份任务的权利要高于所有文件权限。此组的成员无法更改安全设置
Cryptographic Operators 已授权此组的成员执行加密操作
Guests 该组的成员拥有一个在登录时创建的临时配置文件,在注销时,此配置文件将被删除。来宾帐户(默认情况下已禁用)也是该组的默认成员
IIS_IUSRS 这是 Internet 信息服务 (IIS) 使用的内置组
Network Configuration Operators 该组的成员可以更改 TCP/IP 设置,并且可以更新和发布 TCP/IP 地址。该组中没有默认的成员
Performance Log Users 该组的成员可以从本地计算机和远程客户端管理性能计数器、日志和警报,而不用成为管理员组的成员
Performance Monitor Users 该组的成员可以从本地计算机和远程客户端监视性能计数器,而不用成为管理员组或 Performance Log Users 组的成员
Power Users 默认情况下,该组的成员拥有不高于标准用户帐户的用户权限或权限。在早期版本的 Windows 中,Power Users 组专门为用户提供特定的管理员权利和权限执行常见的系统任务
Remote Desktop Users 该组的成员可以远程登录计算机
Users 该组的成员可以执行一些常见任务,例如运行应用程序、使用本地和网络打印机以及锁定计算机。该组的成员无法共享目录或创建本地打印机。默认情况下,Domain Users、Authenticated Users 以及 Interactive 组是该组的成员。因此,在域中创建的任何用户帐户都将成为该组的成员

参考文章:https://forsenergy.com/zh-cn/lug/html/8b53e8eb-37e8-4728-9e24-768348b8b32f.htm

域组

组( Group)是用户账号的集合。通过向组分配权限,就可以不必向每个用户分别分配权限。例如,管理员在日常工作中,不必为单个用户账号设置独特的访问权限,只需要将用户账放到相应的安全组中。管理员通过配置安全组访问权限,就可以为所有加入安全组的用户账号配置同样的权限。使用安全组而不是单个的用户账号,可以大大简化网络的维护和管理工作

安全组提供对象的逻辑分组,组本身可用作访问控制列表(ACL)中的安全主体。 向安全组授予对对象的访问权限时,安全组的所有成员会自动接收对该对象的相同访问权限。 具有通用范围的安全组也可以用作电子邮件实体。 向通用安全组发送电子邮件会将该消息发送到该组的所有成员。

通讯组还提供对象的逻辑分组,但不能提供任何访问权限。 通讯组未启用安全性,不能用作 ACL 中的安全主体。 通讯组仅用于分组目的。 例如,通讯组列表可与电子邮件应用程序(如 Exchange)一起使用,以向用户集合发送电子邮件。

有关Active Directory 域服务中的组类型的详细信息,请参阅 Microsoft TechNet 上的组类型主题。

组作用域

有三个组范围由Active Directory 域服务、通用、**全局**和**域本地**定义。 组的范围定义对象可以属于该组的类型、组可以是成员的组类型以及安全组可以访问的对象范围。 当域功能级别设置为 Windows 2000 混合模式时,无法创建具有通用范围的安全组。

下表列出了三个组范围,以及有关安全组的每个作用域的详细信息。

范围 可能的成员 范围转换 可以授予权限 可能的成员
通用 来自同一林中任何域的帐户。 来自同一林中任何域的全局组。 同一林中任何域中的其他通用组。 可以转换为域本地范围。 只要组不包含任何其他通用组,就可以转换为全局范围。 在同一林或信任林中的任何域中。 同一林中的其他通用组。 同一林或信任林中的域本地组。 同一林或信任林中的计算机上的本地组。
全局 同一域中的帐户。 同一域中的其他全局组。 只要组不是任何其他全局组的成员,就可以转换为通用范围。 在同一林或信任域或林中的任何域中。 来自同一林中任何域的通用组。 同一域中的其他全局组。 来自同一林中的任何域或任何信任域的域本地组。
本地域 来自任何域或任何受信任域的帐户。 来自任何域或任何受信任域的全局组。 来自同一林中任何域的通用组。 同一域中的其他域本地组。 只要组不包含任何其他域本地组,就可以转换为通用范围。 在同一域中。 同一域中的其他域本地组。 同一域中计算机的本地组,不包括具有已知 SID 的内置组。
域本地组

域本地组成员来自林中任何域中的用户账户、全局组和通用组以及本域中的域本地组,在本域范围内可用。

全局组

全局组成员来自于同一域的用户账户和全局组,在林范围内可用

通用组

通用组成员来自林中任何域中的用户账户、全局组和其他的通用组,在全林范围内可用可以这样简单地记忆:

  • 域本地组来自全林,作用于本域

  • 全局组来自本域,作用于全林

  • 通用组来自林,作用于全林

案例一:

有一个打印机连接域控,设置域本地组赋予使用打印机的权限,然后设置全局组,将人员都加入到全局组,然后将全局组加入到域本地组就可以了


案例二

有三个域hack.com(在北京),sh.hack.com(在上海),gz.hack.com(在广州)组成W林,然后北京财务部门,需要进行结算,但是数据在北京的一台服务器上权限比较高只有北京财务人员可以使用,同时因为北京人数不够,需要上海和广州支援,这个时候怎么办?

  1. 只需要在北京的建立一个域本地组,然后赋予域本地组权限可以访问财务的数据机器

  2. 在上海和广州分别建立全局组

  3. 在北京的域控上将上海和广州的全局组加入进来

重要的域本地组
  • 管理员组( Administrators)

管理员组( Administrators)的成员可以不受限制地存取计算机/域的资源。它不仅是最具权力的一个组,也是在活动目录和域控制器中默认具有管理员权限的组。该组的成员可以更 改 EnterpriseAdmins、 Schema admins和 Domain admins组的成员关系,是域森林中强大的 服务管理组

  • 远程登录组( Remote Desktop Users)

远程登录组( Remote Desktop Users)的成员具有远程登录权限。

  • 打印机操作员组( Print Operators)

打印机操作员组( Print Operators)的成员可以管理网络打印机,包括建立、管理及删除网络打印机,并可以在本地登录和关闭域控制器。

  • 账号操作员组( Account Operators)

账号操作员组( Account Operators)的成员可以创建和管理该域中的用户和组并为其设置权 限,也可以在本地登录域控制器,但是,不能更改属于 Administrators或 Domain admins组 的账户,也不能修改这些组。在默认情况下,该组中没有成员。

  • 服务器操作员组( Server Operators)

服务器操作员组( Server Operators)的成员可以管理域服务器,其权限包括建立管理删除 任意服务器的共享目录、管理网络打印机、备份任何服务器的文件、格式化服务器硬盘 锁定服务器、变更服务器的系统时间、关闭域控制器等。在默认情况下,该组中没有成员。

  • 备份操作员组( Backup Operators)

备份操作员组( Backup Operators)的成员可以在域控制器中执行备份和还原操作,并可以 在本地登录和关闭域控制器。在默认情况下,该组中没有成员


再介绍几个重要的全局组、通用组的权限。

  • 域管理员组( Domain Admins)

域管理员组( Domain Admins)的成员在所有加入域的服务器(工作站)、域控制器和活动 目录中均默认拥有完整的管理员权限。因为该组会被添加到自己所在域的 Administrators 组中,因此可以继承 Administrators组的所有权限。同时,该组默认会被添加到每台域成员计算机的本地Administrators组中,这样, Domain admins组就获得了域中所有计算机的所有权。如果希望某用户成为域系统管理员,建议将该用户添加到 Domain admins组中,而 不要直接将该用户添加到Administrators组中。

  • 企业系统管理员组( Enterprise Admins)

企业系统管理员组( Enterprise Admins)是域森林根域中的一个组。该组在域森林中的每个域内都是 Administrators组的成员,因此对所有域控制器都有完全访问权。

  • 架构管理员组( Schema admins)

架构管理员组( Schema admins)是域森林根域中的一个组,可以修改活动目录和域森林的 模式。该组是为活动目录和域控制器提供完整权限的域用户组,因此,该组成员的资格是 非常重要的。

  • 域用户组( Domain users)

域用户组(Domain users)中是所有的域成员。在默认情况下,任何由我们建立的用户账号 都属于Domain Users组,而任何由我们建立的计算机账号都属于 Domain Computers组。因此,如果想让所有的账号都获得某种资源存取权限,可以将该权限指定给域用户组,或者让域用户组属于具有该权限的组。域用户组默认是内置域 Users组的成员。

详细信息参考Windows官方文档:https://learn.microsoft.com/zh-cn/windows-server/identity/ad-ds/manage/understand-security-groups#domain-users

A-G-DL-P策略

A-G-DL-P策略是指将用户账号添加到全局组中,将全局组添加到域本地组中,然后为域本地组分配资源权限

  • A表示用户账号( Account)

  • G表示全局组( Global Group)

  • U表示通用组( Universal Group)

  • DL表示域本地组( Domain Local Group)

  • P表示资源权限( Permission,许可)

按照AG-DL-P策略对用户进行组织和管理是非常容易的。在AGDL-P策略形成以后,当 需要给一个用户添加某个权限时,只要把这个用户添加到某个本地域组中就可以了。

安全域的划分

划分目的

划分安全域的目的是将一组安全等级相同的计算机划入同一个网段。这个网段内的计算机拥 有相同的网络边界,并在网络边界上通过部署防火墙来实现对其他安全域的网络访问控制策略 (NACL),从而对允许哪些P地址访问此域、允许此域访问哪些P地址和网段进行设置。

这些 措施,将使得网络风险最小化,当攻击发生时,可以尽可能地将威胁隔离,从而降低对域内计算机的影响。 一个典型的中小型内网的安全域划分,如图所示,一个虚线框表示一个安全域(也是网络的边界,一般分为DMZ和内网),通过硬件防火墙的不同端口实现隔离

网络安全级别的划分

在一个用路由器连接的内网中,可以将网络划分为三个区域

  • 安全级别最高的内网
  • 安全级别中等的DMZ
  • 安全级别最低的外网( Internet)

这三个区域负责完成不同的任务,因此需要设置不同的访问策略。

DMZ区

DMZ称为隔离区,是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题而设立 的一个非安全系统与安全系统之间的缓冲区。

DMZ位于企业内部网络和外部网络之间。可以在DMZ中放置一些必须公开的服务器设施,例如企业Web服务器、FTP服务器和论坛服务器等,DMZ是对外提供服务的区域,因此可以从外部访问

在网络边界上一般会部署防火墙及入侵检测、入侵防御产品等。如果有Web应用,还会设置 WAF,从而更加有效地保护内网。攻击者如果要进入内网,首先要突破的就是这重重防御,在配置一个拥有DMZ的网络时,通常需要定义如下访问控制策略,以实现其屏障功能。

  • 内网可以访问外网:内网用户需要自由地访问外网。在这一策略中,防火墙需要执行NAT。

  • 内网可以访问DMZ:此策略使内网用户可以使用或者管理DMZ中的服务器

  • 外网不能访问内网:这是防火墙的基本策略。内网中存储的是公司内部数据,显然,这些数据一般是不允许外网用户访问的(如果要访问,就要通过VPN的方式来进行)

  • 外网可以访问DMZ:因为DMZ中的服务器需要为外界提供服务,所以外网必须可以访问DMZ。同时,需要由防火墙来完成从对外地址到服务器实际地址的转换。

  • DMZ不能访问内网:如果不执行此策略,当攻击者攻陷DMZ时,内网将无法受到保护

  • DMZ不能访问外网:此策略也有例外。例如,在DMZ中放置了邮件服务器,就要允许访问外网,否则邮件服务器无法正常工作。 内网又可以分为办公区和核心区。


办公区:公司员工日常的工作区,一般会安装防病毒软件、主机入侵检测产品等。办公区一般能够访问DMZ。如果运维人员也在办公区,那么部分主机也能访问核心数据区(很多企业还会使用堡垒机来统一管理用户的登录行为)攻击者如果想进入内网,一艘会使用鱼叉攻击、水坑攻击,当然还有社会工程学手段。办公区人员多而杂,变动也很频繁,在安全管理上可能存在诸多漏洞,是攻击者进人内网的重要途径之

核心区:存储企业最重要的数据、文档等信息资产,通过日志记录、安全审计等安全措施进行严密的保护,往往只有很少的主机能够访问。从外部是绝难直接访问核心区的。一般来说,能够直接访问核心区的只有运维人员或者I部门的主管,所以,攻击者会重点关注这些用户的信息(攻击者在内网中进行横向移动攻击时,会优先查找这些主机)

域中计算机的分类

域中计算机的分类在域结构的网络中,计算机的身份是不平等的,有域控制器、成员服务器、客户机、独立服务器四种类型。

域控制器

域控制器用于管理所有的网络访问,包括登录服务器、访问共享目录和资源。域控制器中存储了域内所有的账户和策略信息,包括安全策略、用户身份验证信息和账户信息。

在网络中,可以有多台计算机被配置为域控制器,以分别处理用户的登录、访问等操作。多个域控制器可以一起工作,自动备份用户账户和活动目录数据。这样,即使部分域控制器瘫痪,网络访问也不会受到影响,提高了网络的安全性和稳定性

成员服务器

成员服务器是指安装了服务器操作系统并加入了域、但没有安装活动目录的计算机,其主要任务是提供网络资源。

成员服务器的类型通常有文件服务器、应用服务器、数据库服务器、web服务器、邮件服务器、防火墙、远程访问服务器、打印服务器等

客户机

域中的计算机可以是安装了其他操作系统的计算机,用户利用这些计算机和域中的账户就可以登录域。这些计算机被称为域中的客户机。域用户账号通过域的安全验证后,即可访间网络中的各种资源。

独立服务器

独立服务器和域没有关系。如果服务器既不加入域,也不安装活动目录,就称其为独立服务器。独立服务器可以创建工作组、与网络屮的其他计算机共享资源,但不能使用活动目录提供的任何服务域控制器用于冇放活动目录数据库,是域屮必须要有的,而其他三种计算机则不是必须要有的,也就是说,最简单的域可以只包含一台计算机,这台计算机就是该域的域控制器。当然,域中各服务器的角色是可以改变的。例如,独立服务器既可以成为域控制器,也可以加入某个域成为成员服务器

域信任

Tip

域信任主要是用来解决域之间的资源共享的问题提出的概念

单向/双向/快捷信任

根据域信任流方向可以将信任关系分为单向信任、双向信任和快捷信任

单向信任

单向信任是指在两个域之间创建单向的信任路径,即在一个方向上是信任流,在另一个方向上是访问流。在受信任域和信任域之间的单向信任中,受信任域内的用户或计算机可以访问信任域中的资源,但信任域内的用户却无法访问受信任域内的资源。

也就是说,若A域信任B域,那么B域内受信任的主体可以访问A域内信任B域的资源,但是域 A 中的用户不可以访问域 B 中的资源。

双向信任

双向信任是指两个单向信任的组合,信任域和受信任域彼此信任,在两个方向上都有信任流和访问流。这意味着,可以从两个方向在两个域之间传递身份验证请求。活动目录中的所有域信任关系都是双向可传递的。

在创建子域时,会在新的子域和父域之间自动创建双向可传递信任关系。在早期的域中,域信任是单向的,从Windows Server2003开始,域信任关系变为双向的。

快捷信任(跨域链接信任)

快捷信任是简化信任模型提出的概念,具体见下例:

A和B建立了双向信任,A也和C建立了双向信任,那么如果B和C要建立双向信任,就必须要经过林根域A,这中间会增加很多验证步骤和流程,那么为了简化这一流程,B和C之间默认建立了快捷信任

参考文章:https://forsenergy.com/zh-cn/domadmin/html/6d35ab81-0b60-4425-8c95-46f676d1ea69.htm

官方文档:https://learn.microsoft.com/zh-cn/entra/identity/domain-services/concepts-forest-trust

可传递/不可传递信任

传递性决定可否将信任扩展到构成该信任的两个域之外

  • 可以使用可传递信任扩展与其他域的信任关系。
  • 可以使用不可传递信任拒绝与其他域的信任关系。

每次在林中创建新域时,都会在新域及其父域之间自动创建双向可传递信任关系。 如果将子域添加到新域,则信任路径将向上流经域层次结构,扩展在该新域及其父域之间创建的初始信任路径。 传递信任关系形成时会在域树中向上流动,在域树中的所有域之间创建可传递信任。

身份验证请求沿这些信任路径传递,因此来自林中任何域的帐户都可以通过该林中其他任何域的身份验证。 通过单一登录过程,具有适当权限的帐户可以访问林中任何域中的资源。

内部/外部/林信任

根据作用范围,域信任还可以分为内部信任、外部信任和林信任。内部信任是相对于林而言的,外部信任和林信任则是相对于不同林来说的

内部信任

两个域之间必须拥有信任关系(Trust Relationship),才可以访问对方域内的资源。而任何一个新的AD DS域被加入到域树后,这个域都会自动信任其上一层的父域,同时父域也会自动信任这个新子域。 一个林中的域之间所有的Active Directory信任关系都具备双向传递性(Two-Way Transitive)。如图中:域A信任域B,且域B信任域C,则域C中的用户访问域A中的资源。(这些用户被分配了访问权限)由于此信任工作是通过Kerberos security protocol来完成的,因此也被称为Kerveros trust。

image-20211208214045365

图中域A信任域B、域B又信任域C、因此域A自动信任域C;另外域C信任域B、域B又信任域A,因此域C自动信任域A。结果是域A和域C之间会自动建立起双向的信任关系。 所以当任何一个新域加入到域树后,都会自动双向信任这个域树内所有的域,只要拥有适当的权限,这个新域内的用户就可以访问其他域内的资源。同理,其他域内的用户也可以访问这个新域内的资源。

外部信任

外部信任是指两个不同林间的域信任关系,外部信任是单向或双向不可传递的

林信任

林信任也是指两个不同林之间的域信任关系,与外部信任不同的是,林信任提供的是双向可传递的信任关系,林信任自Windows Server 2003正式应用

林信任可以帮助管理分段 AD DS 基础结构,并支持访问多个林中的资源和其他对象。 林信任适用于服务提供商、正在进行合并或收购的公司、协作业务 Extranet 和寻求管理自治解决方案的公司。

使用林信任,可以链接两个不同的林,形成单向或双向可传递信任关系。 使用林信任,管理员可以将通过单个信任关系连接两个 AD DS 林,以便提供跨林的无缝身份验证和授权体验。

只能在一个林中的林根域和另一个林中的林根域之间创建林信任。 只能在两个林之间创建林信任,不能将其隐式扩展到第三个林。 此行为意味着,如果在林 1 和林 2 之间创建了林信任,又在林 2 和林 3 之间创建了另一个林信任,林 1 与林 3 之间不存在隐式信任。

下图显示了一个组织中三个 AD DS 林之间两个单独的林信任关系。

Diagram of forest trusts relationships within a single organization

此示例配置提供以下访问权限:

  • 林 2 中的用户可以访问林 1 或林 3 所含任何域中的资源
  • 林 3 中的用户可以访问林 2 所含任何域中的资源
  • 林 1 中的用户可以访问林 2 所含任何域中的资源

此配置不允许林 1 中的用户访问林 3 中的资源,反之亦然。 若要允许林 1 和林 3 中的用户共享资源,则必须在这两个林之间创建双向可传递信任。

如果在两个林之间创建单向林信任,则受信任林的成员可以利用信任林中的资源。 但是,信任只单向有效。

例如,在林 1(受信任林)与林 2(信任林)之间创建单向林信任时:

  • 林 1 的成员可以访问林 2 中的资源。
  • 林 2 的成员不能使用同一信任访问林 1 中的资源。

官方文档:https://learn.microsoft.com/zh-cn/entra/identity/domain-services/concepts-forest-trust

跨域资源访问

跨域Kerberos身份验证

当用户想要访问同一林中另一个域的资源时,由于TGS只能使用目标服务的密码哈希加密,而域控只包含本域中的安全主体的密码哈希,因此本域中的域控服务器无法颁发另一个域的TGS.

为了弥补这方面的不足,当两个域建立域信任关系时,会建立共享的*域间密钥*(Inter-Realm Key,IRKey).IRKey的作用类似于krbtgt,但是IRKey是用于两个域之间的认证(当两个域之间存在信任关系时,每个域的票证授予服务将注册为安全主体为另一个域的KDC).

简化流程

通过图示内容可以清晰的看到,当蓝色域中用户请求绿色域中资源时(蓝色域和绿色域存在双向信任),整体流程与单一域内**Kerberos**身份认证流程几乎完全一样,唯一的区别是**第四步TGS- REP**.

当用户请求访问另一个域的资源时,用户所在当前域会向用户发送转投**TGS**,作为正常**TGS-REP**的一部分.这部分消息包含用户请求资源所在域的*TGT*,并指示他是对另一个**TGS**的引用.但是这里的**TGT**因为用户所请求的资源在另一个域中(绿色域),因此需要另一个域(绿色域)的**krbtgt**进行签名,很显然此时用户所在域(蓝色域)是不知道此**krbtgt**(绿色域的krbtgt)的账户信息,因此这里使用**域间密钥(Inter-Realm Key,IRKey)**代替**krbtgt**进行签名.之后流程与正常单一域内**Kerberos**身份验证流程无异.

林内所有域树共享相同的全局编录服务器,而全局编录服务器内存储着林内全部域中部分域对象的只读信息,这其中包含SPN、DNS等信息,所以无需担心跨域请求资源时无法构造正确的**TGT**

Question

那么Inter-Realm Key从哪里获取呢?如何实现不同域之间共享Inter-Realm Key呢?

实际上,每个域内有一个信任账户,该账户以$结尾,该账户的Hash就是Inter-Realm Key值

如果A和B、C之间建立双向信任,那么A中就有两个信任账户,分别是C\User$和B\User$,而B和C中的信任账户相同,都为A\User$

工作组和域的区别

方面 域 工作组
数据库 域中的计算机有一个集中的数据库 工作组中的计算机主要有自己的本地数据库
数据传输 域主要是传输和共享敏感和重要的数据 仅由于安全性较低,工作组用于共享安全性较低的个人数据
适用对象 域主要用于大型公共和商业网络 工作组主要适用于小型局域网,如学校、学院、建筑物等
安全性 出于安全考虑,域用于传输和共享敏感和重要数据 工作组用于共享个人数据,因为它的安全性较低。
工作环境 一个域可以更好地适用于大量设备 工作组在更少的计算机上工作得更好
主机寻找 域名由域控制器根据IP地址提供 在工作组中,分配名称不依赖于任何硬件组件和服务器
数据恢复 可以从集中存储中恢复域中的数据 由于每个设备的本地存储,无法在工作组中进行数据恢复
组建范围 可以使用一个或多个不同网络域的设备形成一个域,并将所有预期的设备添加到其中 同一网络的设备只能加入一个工作组

活动目录( Active Directory,AD)是指域环境中提供目录服务的组件

目录用于存储有关网络对象(例如用户、组、计算机、共享资源、打印机和联系人等)的信息。目录服务是指帮助用户快速、准确地从目录中找到其所需要的信息的服务。活动目录实现了目录服务,为企业提供了网络环境的集中式管理机制

如果将企业的内网看成一本字典,那么内网里的资源就是字典的内容,活动目录就相当于字典的索引。也就是说,活动目录存储的是网络中所有资源的快捷方式,用户可以通过寻找快捷方式来定位资源。

在活动目录中,管理员不需要考虑被管理对象的地理位置,只需要按照一定的方式将这些对象放置在不同的容器中。这种不考虑被管理对象的具体地理位置的组织框架称为逻辑结构

活动目录的逻辑结构包括前面讲过的组织单元(OU)、域、域树、域森林。域树内的所有域 共享一个活动目录,这个活动目录内的数据分散存储在各个域中,且每个域只存储该域内的数 据。例如,可以为甲公司的财务科、人事科、销售科各建一个域,因为这几个域同属甲公司,所 以可以将这几个域构成域树并交给甲公司管理;而甲公司、乙公司、丙公可都属于A集团,那 么,为了让A集团更好地管理这三家公司,可以将这三家公司的域树集中起米组成域森林(即A 集团)。因此,A集团可以按"A集团(域森林)→子公司(域树)→部门(域)→员工"的方式 对网络进行层次分明的管理。

活动目录这种层次结构,可以使企业网络具有极强的可扩展性,便 于进行组织、管理及目录定位。

活动目录主要功能

活动目录主要提供以下功能

  • 账号集中管理:所有账号均存储在服务器中,以便执行命令和重置密码等。

  • 软件集中管理:统一推送软件、安装网络打印机等。利用软件发布策略分发软件,可以让 用户自由选择需要安装的软件。

  • 环境集中管理:统一客户端桌面、IE、TCPP协议等设置。 增强安全性:统一部署杀毒软件和病毒扫描任务、集中管理用户的计算机权限、统一制定用户密码策略等。可以监控网络,对资料进行统一管理。

  • 更可靠,更短的宕机时间:例如,利用活动目录控制用户访问权限,利用群集、负载均衡等技术对文件服务器进行容灾设置。网络更可靠,宕机时间更短。

活动目录是微软提供的统一管理基础平台,ISA、 Exchange、SMS等都依赖这个平台

如果网络规模较大,就要把网络中的众多对象,例如计算机、用户、用户组、打印机、共享 文件等,分门别类、井然有序地放在一个大仓库中,并将检索信息整理好,以便查找、管理和使别 用这些对象(资源)这个拥有层次结构的数据库,就是活动目录数据库,简称AD库。

Question

那么,我们应该把这个数据库放在哪台计算机上呢?

要实现域环境,其实就是要安装AD。如果内网中的一台计算机上安装了AD,它就变成了DC(用于存储活动目录数据库的计算机)

回顾之前的例子:在域环境中,只需要在活动目录中创建Aan账户一次,就可以在200台计算机中的任意一台上使用该账户登录;如果要更改Aan账户的密码,只需要在活动目录中更改一次就可以了。

DNS 和 AD DS

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012

Active Directory 域服务 (AD DS) 使用域名系统 (DNS) 名称解析服务使客户端可以定位域控制器,并使承载目录服务的域控制器可以相互通信。

通过 AD DS 可以将 Active Directory 命名空间轻松集成到现有 DNS 命名空间中。 通过 Active Directory 集成 DNS 区域等功能,无需设置辅助区域即可轻松部署 DNS,然后配置区域传送。

参考Windows官方文档:https://learn.microsoft.com/zh-cn/windows-server/identity/ad-ds/plan/dns-and-ad-ds

域组策略管理

组策略是Windows环境下用户管理对象的一种手段。组策略分为**本地组策略**和**组策略**。本地组策略适合于管理独立的未加入域的工作组的机器。而组策略则是用于管理域环境中的对象;本文主要讲解域环境中的组策略。

域环境中通过配置组策略可以对域中的用户、用户组、计算机进行不同维度的管理;如安全配置、注册表配置、软件安装配置、开关机与登入登出管理等。配置的组策略通过关联到站点、域、组织单位上来在不同层级上应用不同的策略配置。组策略配置分为两部分,分别是计算机配置和用户配置。当域控建立时,默认会创建两个组策略,分别是 Default Domain Policy 和 Default Domain Contoller Policy。

img

组策略的配置存储于组策略对象中,**组策略对象(Group Policy Object,简称GPO)由两部分组成,分别是**组策略容器(Group Policy Containers,**GPC)**和**组策略模板(Group Policy Templet,GPT)。**组策略模板GPT是具体的配置模板,包含实际的配置文件;组策略容器GPC是组策略模板GPT的一种容器,可以将其视作组织管理具体配置的容器。此外,客户端扩展程序(CSEs)是存在于客户端上用于执行下发的组策略的代理程序。

img

组策略对象GPO

GPO 是一个包含一个或多个策略设置的对象,这些设置应用于用户或计算机的一个或多个配置设置。

组策略管理控制台的屏幕截图。管理员已选择 Contoso.com 域。图中显示了三个 GPO,还显示了域中的 OU,其中一些具有链接的 GPO。

你可以使用 GPO 向大量用户和计算机推送各种设置。 由于可以将它们应用于从本地计算机到域等不同级别,因此还可以精确地聚焦这些设置。 主要使用组策略来配置不希望用户配置的设置。 此外,还可以使用组策略在组织单位 (OU) 或整个组织中的所有计算机上标准化桌面环境。 还可以使用组策略来提供额外的安全性,配置某些高级系统设置,以及用于后续演示单元中讨论的其他目的。

组策略管理编辑器的屏幕截图。管理员已扩展“计算机配置”和“用户配置”节点以显示“策略”和“首选项”文件夹。

组策略可管理各种策略设置,并且组策略框架可扩展。 使用组策略几乎可以管理所有可配置的设置。

组策略管理中“配置自动更新”对话框的屏幕截图。设置已启用。图中显示了其他值。

定义策略设置:

  1. 在组策略管理编辑器中,找到策略设置,然后选择 Enter。 随即出现策略设置“属性”对话框。
  2. 将策略状态更改为“已启用”或“已禁用”。 大多数策略设置可以有三种状态:“未配置”、“已启用”和“已禁用”。
  3. 如果需要,请配置其他值,完成后,选择“确定”。

GPO 存储组策略设置。 在新 GPO 中,每个策略设置默认为“未配置”。 启用或禁用策略设置时,Windows Server 将对应用了 GPO 的用户和计算机的配置进行更改。

GPO能管理的内容

策略设置有两个主要类别:“计算机配置”节点中包含的计算机设置和“用户配置”节点中包含的用户设置:

  • “计算机配置”节点包含应用于计算机的设置,与登录到计算机的用户无关。 计算机设置在操作系统启动时、后台刷新期间以及此后每隔 90 到 120 分钟的时间应用。
  • “用户配置”节点包含当用户登录到计算机时、后台刷新期间以及此后每隔 90 到 120 分钟应用的设置。

“策略”和“首选项”节点在“计算机配置”和“用户配置”节点中。

“计算机配置”和“用户配置”中的“策略”节点具有包含策略设置的文件夹层次结构。 由于有数千个设置,本课程并未介绍各个设置。 但你可以查看可配置的设置类型。

应用安全设置

在 Windows Server 操作系统中,GPO 包含大量与安全相关的设置,你可以将这些设置应用于用户和计算机。 例如,可以强制实施域密码策略设置或 Windows Defender 防火墙设置,并且可以配置审核和其他安全设置。 还可以配置全套用户权限。

管理桌面和应用程序设置

可以使用组策略为组织中的所有用户提供一致的桌面和应用程序环境。 使用 GPO 可以配置影响用户环境表示形式的每个设置。 还可以为支持 GPO 的某些应用程序配置设置。

部署软件

通过组策略,可以将软件部署到用户和计算机。 可以使用组策略来部署 .msi 格式的所有可用软件。 此外,还可以强制实施自动软件安装,也可以让用户决定是否想要将软件部署到其计算机。

Note

使用 GPO 部署大型软件包可能不是将应用程序分发到组织的计算机的最有效方法。 在某些情况下,将应用程序作为桌面计算机映像的一部分进行分发可能更有效。

管理文件夹重定向

利用“文件夹重定向”选项,备份用户的数据文件会更容易。 通过重定向文件夹,还可以确保用户无论登录到哪一台计算机都可以访问其数据。 此外,还可以将所有用户的数据集中到网络服务器上的一个位置,同时仍然提供类似于在计算机上存储这些文件夹的用户体验。 例如,可以将文件夹重定向配置为将用户的文档文件夹重定向到网络服务器上的共享文件夹。

配置网络设置

通过使用组策略,可以在客户端计算机上配置各种网络设置。 例如,可以强制实施无线网络强制设置,通过预定义的身份验证和加密设置,允许用户仅连接到特定的 Wi-Fi 网络 SSID。 还可以部署应用于有线网络设置的策略,某些 Windows Server 角色使用组策略来配置服务的客户端(如 DirectAccess)。

组策略容器GPC

活动目录以容器的概念来组织和管理策略,组策略容器存储了每一个组策略详细的基本信息;如策略名称、标识组策略的GUID、组策略链接到的层级(即作用的对象)、策略模板的具体路径、策略应用的筛选过滤等,客户端可以从组策略容器中获取到关于该策略的所有元信息以及具体配置路径。

组策略容器位于LDAP数据库中的 “CN=Policies, CN=System, DC=xie, DC=com” ,该节点下是以GUID命名的各个组策略对象,如下是默认的两个组策略对象。

img

组策略容器中,有几个重要的属性配置:

  • displayname:组策略的名称;
  • gPCFileSysPath:组策略模板(GPT)所在的具体路径,即客户端查找具体的配置信息的物理路径,位于域控的SYSVOL共享中;
  • gPCMachineExtensionNames:客户端执行该组策略所需的客户端扩展程序;

img

如下,Domain Controllers组织单元应用了Default Domain Contoller Policy组策略,所以该组织单元的gPLink属性指向了该组策略对象的DN。

img

组策略模板GPT

组策略模板是组策略具体的策略配置信息,其位于域控的C:\Windows\SYSVOL\sysvol\DomainName\Policies共享目录下的各个GUID文件夹内(通过net share可以看到该共享)。

img

我们在域内任意一台主机上,以普通域用户身份可以查看该默认sysvol共享

img

img

参考Windows文档:https://learn.microsoft.com/zh-cn/training/modules/implement-group-policy-objects/2-define-gpos

服务主体名称(SPN)

*服务主体名称(SPN)*是服务实例的唯一标识符。 Kerberos 身份验证 使用 SPN 将服务实例与服务登录帐户相关联。 这样,即使客户端没有帐户名称,客户端应用程序也能请求帐户的服务身份验证。

如果在计算机的整个目录林上安装多个服务实例,那么每个实例都必须有自己的 SPN。 如果客户端可以使用多个名称进行身份验证,则服务实例可以有多个 SPN。 例如,由于 SPN 始终包含运行服务实例的主计算机的名称,因此服务实例可能会注册多个 SPN,一个用于其主机的每个名称或别名。 有关 SPN 格式和撰写唯一 SPN 的详细信息,请参阅 唯一 SPN 的名称格式。

在 Kerberos 身份验证服务可以使用 SPN 对服务进行身份验证之前,必须在服务实例用来登录的帐户对象上注册 SPN。 只能在一个帐户上注册给定的 SPN。 对于 Win32 服务,服务安装程序在安装服务实例时指定登录帐户。 然后,安装程序将 SPN 组成,并将其作为帐户对象的属性写入Active Directory 域服务。 如果服务实例的登录帐户发生更改,则必须在新帐户下重新注册 SPN。 有关详细信息,请参阅 服务如何注册其 SPN。

当客户端想要连接到某个服务时,它将查找该服务的实例,并为该实例编写 SPN,然后连接到该服务并显示该服务的 SPN 以进行身份验证。 有关详细信息,请参阅 客户端如何编写服务的 SPN。

Kerberos中SPN作用

Kerberos认证过程使用SPN将服务实例与服务登录账户相关联,如果想使用 Kerberos 协议来认证服务,那么必须正确配置SPN。如果在整个林或域中的计算机上安装多个服务实例,则每个实例都必须具有自己的 SPN。

如果客户端可能使用多个名称进行身份验证,则给定服务实例可以具有多个SPN。SPN 始终包含运行服务实例的主机的名称,因此服务实例可以为其主机的每个名称或别名注册SPN。

一个用户账户下可以有多个SPN,但一个SPN只能注册到一个账户。在内网中,SPN扫描通过查询向域控服务器执行服务发现。

这对于红队而言,可以帮助他们识别正在运行重要服务的主机,如终端,交换机等。SPN的识别是kerberoasting攻击的第一步。

  • 下面通过一个例子来说明SPN的作用:

当某用户需要访问MySQL服务时,系统会以当前用户的身份向域控查询SPN为MySQL的记录。当找到该SPN记录后,用户会再次与KDC通信,将KDC发放的TGT作为身份凭据发送给KDC,并将需要访问的SPN发送给KDC。KDC中的TGS服务对TGT进行解密。确认无误后,由TGS将一张允许访问该SPN所对应的服务的ST服务票据和该SPN所对应的服务的地址发送给用户,用户使用该票据即可访问MySQL服务。

  • SPN分为两种类型:

  • 一种是注册在活动目录的机器帐户(Computers)下,当一个服务的权限为 Local System 或 Network Service,则SPN注册在机器帐户(Computers)下。域中的每个机器都会有注册两个2.SPN:HOST/主机名 和 HOST/主机名.xie.com

  • 另一种是注册在活动目录的域用户帐户(Users)下,当一个服务的权限为一个域用户,则SPN注册在域用户帐户(Users)下

image.png

  • 这里以SQLServer服务注册为例:

SQLServer在每次启动的时候,都会去尝试用自己的启动账号注册SPN。但是在Windows域里,默认普通机器账号有权注册SPN,但是普通域用户账号是没有权注册SPN的。这就会导致这样一个现象,SQL Server如果使用“Local System account”来启动,Kerberos就能够成功,因为SQL Server这时可以在DC上注册SPN。如果用一个域用户来启动,Kerberos就不能成功,因为这时SPN注册不上去。

  • 解决办法:

可以使用工具SetSPN -S来手动注册SPN。但是这不是一个最好的方法,毕竟手工注册不是长久之计。如果SPN下次丢了,又要再次手动注册。

所以比较好的方法,是让SQL Server当前启动域账号有注册SPN的权力。要在DC上为域账号赋予 “Read servicePrincipalName” 和 “Write serverPrincipalName” 的权限即可。

参考Windows文档:https://learn.microsoft.com/zh-cn/windows/win32/ad/service-principal-names

访问控制

本文介绍 Windows 中的访问控制,即授权用户、组和计算机访问网络或计算机上的对象的过程。 构成访问控制的关键概念包括:

  • 权限
  • 对象的所有权
  • 权限继承
  • 用户权限
  • 对象审核

运行受支持版本的 Windows 的计算机可以通过身份验证和授权的相关机制来控制系统和网络资源的使用。 对用户进行身份验证后,Windows 操作系统使用内置授权和访问控制技术来实现保护资源的第二阶段:确定经过身份验证的用户是否具有访问资源的正确权限。

共享资源可供资源所有者以外的用户和组使用,需要保护它们免受未经授权的使用。 在访问控制模型中,用户和组 (也称为安全主体) 由 SID) 唯一安全标识符 (表示。 他们被分配有权限,告知操作系统每个用户和组可以执行的操作。 每个资源都有一个向安全主体授予权限的所有者。 在访问控制检查期间,将检查这些权限,以确定哪些安全主体可以访问资源以及如何访问资源。

安全主体执行 (操作,包括对象上的读取、写入、修改或完全控制) 。 对象包括文件、文件夹、打印机、注册表项和Active Directory 域服务 (AD DS) 对象。 共享资源使用访问控制列表 (ACL) 分配权限。 这使资源管理器能够通过以下方式强制实施访问控制:

  • 拒绝对未经授权的用户和组的访问
  • 对提供给授权用户和组的访问设置定义完善的限制

对象所有者通常向安全组而不是单个用户授予权限。 添加到现有组的用户和计算机采用该组的权限。 如果对象 ((如文件夹) )可以容纳其他对象 (,例如子文件夹和文件) ,则称为容器。 在对象的层次结构中,容器与其内容之间的关系是通过将容器引用为父级来表示的。 容器中的对象称为子级,子级继承父级的访问控制设置。 对象所有者通常为容器对象(而不是单个子对象)定义权限,以简化访问控制管理。

此内容集包含:

参考Windows文档:https://learn.microsoft.com/zh-cn/windows/security/identity-protection/access-control/access-control

Exchange服务器

Exchange服务器:Exchange服务器是一种用于收发电子邮件和协作共享的服务器软件。它由微软开发并广泛应用于企业环境中。Exchange服务器提供了可靠的电子邮件系统,并允许用户进行日历、联系人、任务等信息的共享和同步。通过Exchange服务器,用户可以方便地访问电子邮件、日历和联系人,无论是通过Outlook客户端、Webmail还是移动设备。

Exchange服务器通常与域控制器一起部署在企业网络中。Exchange服务器需要与域控制器进行通信,以验证用户身份和访问权限。在Exchange服务器上创建的用户帐户也需要在域中进行管理。Exchange服务器还依赖于域的Active Directory服务来存储和管理用户的邮件、联系人和日历等信息。因此,域控制器和Exchange服务器之间的互动是必不可少的。

Exchange服务器为企业提供了一个强大的邮件和协作平台。通过Exchange服务器,企业员工可以方便地发送和接收电子邮件,并进行日程安排、联系人管理和任务跟踪等工作。Exchange服务器还支持共享邮箱、共享日历和共享任务等功能,使得团队成员之间的协作更加高效。此外,Exchange服务器还提供了高级的安全性和数据保护功能,如垃圾邮件过滤、病毒扫描和数据备份等。

在域中,Exchange服务器是高权限,这也导致Exchange可以被利用恶意利用

Exchange服务器权限参考:https://learn.microsoft.com/zh-cn/exchange/permissions/permissions?view=exchserver-2019