【THM】Active Directory Basics(活动目录基础·新版)-学习

本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/winadbasics

本文相关内容:介绍活动目录的基本概念和功能。

可参考博客:【THM】Active Directory Basics(活动目录基础·旧版)-学习

image-20230514112135960

简介

微软的Active Directory(活动目录)是企业网络的支柱,它简化了企业网络环境中的设备和用户管理。在本文中,我们将对Active Directory基本组件做一个简单基础的介绍。

我们将了解 Active Directory 并熟悉以下主题:

  1. Active Directory(活动目录)是什么?

  2. Active Directory域是什么?

  3. Active Directory域中的组件有哪些?

  4. 森林(Forests)和域信任介绍。

  5. 其他......

在学习本文内容之前,建议先了解关于Windows系统的基础知识,相关内容可参考以下历史博客:

Windows域

想象一下,如果你管理着一个只有五台电脑和五名员工的小型企业网络。在这样一个小型网络中,你可能能够分别配置每台计算机而不会出现问题,你将手动登录到每台计算机,为将要使用它们的任何人创建用户帐户,并能为每个员工的帐户进行特定的配置。如果用户的计算机停止工作,你可能会直接去用户所在的地方,并现场修复计算机故障。

这听起来像是一种非常轻松的工作方式,但是我们假设你的业务突然增长,现在有157台电脑和320个不同的用户分布在四个不同的办公室。你是否仍然能够将每台计算机作为一个单独的实体进行管理,为内部网络中的每个用户手动配置策略,并且为每个人提供现场技术支持?答案很可能是否定的。

为了克服刚才所描述的现实条件限制,我们可以使用Windows域。简言之,Windows域是在给定业务的管理下的一组用户和计算机,域的主要思想是将Windows计算机网络中的公共组件管理集中在一个名为Active Directory(AD)的存储库中,运行Active Directory服务的服务器被称为域控制器(DC-Domain Controller)。

image-20221001191730857

配置Windows域的主要优点有:

  • 集中式身份管理:通过Active Directory可以以最少的工作量配置局域网络中的所有用户。
  • 管理安全策略:你可以直接通过Active Directory配置安全策略,并根据需要将其应用于局域网络中的用户和计算机。

现实案例

尽管这听起来有点令人困惑,但是你可能已经在学校生活或工作生活中的某个时间点上使用过Windows域。

在学校的网络中,你通常会得到一个用户名和密码,你可以在校园里的任何一台电脑上使用。你的凭据对所有计算机都有效,因为无论何时在计算机上输入凭据,它都会将身份验证过程转发回 Active Directory,在那里将检查你的凭据是否有效。正是因为有了 ActiveDirectory,你的凭证不需要存在于每台计算机中,就可以在整个局域网络中使用。

Active Directory 同时也是一个允许你的学校限制你访问学校计算机上的控制面板的组件,这个策略通常会在整个局域网络中部署,这样你就不会对这些局域网中的计算机拥有管理权限。

实验任务介绍

在本文的实验环境中,我们将担任THM公司的新IT管理员,我们会被要求检查当前域“ THM.local”并做一些额外的配置,可以通过一个预先配置的域控制器(DC)获得执行具体实验任务的管理凭据。

可以通过以下方式连接到目标机器:

1.在tryhackme平台的实验房间内单击Start Machine 按钮;

2.使用自己linux kali通过RDP连接到目标机器,用户凭据如下图所示。

image-20221001193943764

注意: 当我们选择通过RDP连接目标机器时,需要以THM\Administrator作为用户名来指定使用 THM 域上的用户Administrator进行登录。

答题

image-20221001202322850

Active Directory 活动目录

任何Windows域的核心都是Active Directory域服务(AD DS),全称为 Active Directory Domain Service。这个服务充当了一个目录,其中包含了它所在的局域网络中存在的所有“对象”的信息,AD所支持的对象包括用户、组、计算机、打印机、共享文件夹等。

tips:AD DS里面包含了NTDS.dit数据库,路径为%SystemRoot%\NTDS

Active Directory有两种类型的组:

  • 安全组:用于为大量用户分配权限。
  • 通讯组:用于创建电子邮件通讯组列表。

让我们来看看AD域中的一些对象:

用户(Users)

用户是 ActiveDirectory 中最常见的对象类型之一,用户也是称为安全主体的对象之一,这意味着它们可以通过域进行身份验证,并且可以对文件或打印机等资源分配特权。可以说,安全主体是一个可以作用于网络中资源的对象。

用户可用于表示两种类型的实体:

  • 人员: 用户通常可以代表公司等组织中需要访问内部网络的人员,比如公司的员工。

  • 服务: 在AD域中可以定义用户帐户以供IIS或MSSQL等具体服务使用,每个特定的服务都需要使用一个用户身份来运行,但是服务用户不同于普通用户,服务用户通常只会拥有运行特定服务所需的权限。

机器(Machines)

机器(计算机)是Active Directory中的另一种类型的对象,对于加入Active Directory域的每台计算机而言,AD域都将创建一个对应的机器(计算机)对象。机器(计算机)也被认为是“安全主体”,并会像普通用户一样被分配一个帐户,此帐户通常在域内的拥有有限的权限。

机器(计算机)帐户本身可以成为被分配的计算机上的本地管理员,与任何其他帐户一样,如果你有相关的密码凭据,你就能够以计算机帐户身份登录到对应机器。

注意:初始机器(计算机)帐户密码会默认自动加载,一般由120个随机字符组成。

识别机器(计算机)账户相对容易,因为它们遵循特定的命名方案,机器(计算机)帐户名称是计算机的名称后跟一个美元符号。例如,名为 DC01的机器将对应一个名为 DC01 $的机器(计算机)帐户。

安全组(Security Groups)

如果你熟悉Windows系统,你可能知道我们可以定义用户组,以便将文件或其他资源的访问权限分配给整个组,而不是单个用户。这样能体现更好的可管理性,因为你可以将某个用户添加到现有组中,并且该用户将自动继承该组的所有特权。安全组也被认为是安全主体之一,它可以对局域网络中的资源拥有特权。

组可以同时具有用户和计算机作为成员,如果需要的话,组也可以包括其他组。

默认情况下,在可用于向用户授予特定权限的域中能够创建多个组,举个例子,下面是一个域中最重要的一些安全组:

安全组 描述
Domain Admins(域管理员组) 此组的用户在整个域中具有管理权限,默认情况下,他们可以管理域上的任何计算机,包括DC(域控制器)。
Server Operators(服务器操作员组) 此组中的用户可以管理域控制器,但是他们不能更改任何管理组成员。
Backup Operators(备份操作员组) 此组中的用户被允许访问任何文件,忽略他们的权限,他们用于在计算机上执行数据备份操作。
Account Operators(帐户操作员组) 此组中的用户可以创建或修改域中的其他帐户。
Domain Users(域用户组) 包括域中的所有现有用户帐户。
Domain Computers(域计算机组) 包括域中的所有现有计算机。
Domain Controllers(域控制器组) 包括域中的所有现有DC(域控制器)。

你可以通过访问以下链接来获取关于默认安全组的完整列表:

https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/manage/understand-security-groups

活动目录用户和计算机(Active Directory Users and Computers)

为了在Active Directory中配置用户、组、计算机,我们需要登录到DC(域控制器),然后从开始菜单处运行“(Active Directory Users and Computers)”:

image-20221001233934981

这将打开一个窗口,我们可以在其中看到域中存在的用户、组和计算机的层次结构,这些对象将在组织单元(OUs)中被组织起来,组织单元(OUs)是允许我们对用户和计算机进行分类的容器对象。

OU主要用于定义具有类似策略要求的用户集合,例如:在一个域中,销售部门人员与IT部门人员可能各自应用不同的策略集。

注意:一个用户同时只能是一个OU的成员。

检查我们的实验机器,我们可以看到已经有一个名为THM的OU(组织单元),它有四个子OU:IT、Management、Marketing和Sales departments。

我们可以看到实验机器上的OU所模仿的企业业务结构非常典型,这允许我们有效地部署适用于整个部门的基线策略。

OU在大多数情况下会使用预期的业务模型构建,我们也可以任意定义OU,例如:可以随意右键单击THM OU,并在其下创建一个新的子OU,名为Students

image-20221002000103790

打开任何OU,就可以看到它们所包含的用户,并能够根据需要执行创建、删除、修改用户之类的简单操作,如果需要的话,我们也可以选择重置密码:

image-20221002000407316

你可能已经注意到,除了THMOU 之外,还有其他默认容器,这些容器通常由Windows自动创建,包含以下内容:

  • Builtin(内置):包含可用于任何Windows主机的默认组。

  • Computers(计算机):任何加入网络的机器都会默认放在这里,如果需要,你可以移动它们。

  • Domain Controllers(域控制器):包含网络中的DC的默认OU(组织单元)。

  • Users(用户):应用于域范围上下文的默认用户和组。

  • Managed Service Accounts(服务管理账户):保存Windows域中服务 使用的帐户。

安全组与OUs的比较(Security Groups vs OUs)

你可能想知道为什么在AD中会同时有组和OUs(Organizational Units组织单元)的概念,虽然这两者都用于对用户和计算机进行分类,但它们的目的完全不同:

  • OUs可以方便地将策略应用于用户和计算机,其中包括根据用户在企业中的特定角色而适用于用户集的特定配置。请记住,一个用户一次只能是一个OU的成员,因为尝试对一个用户应用两套不同的策略是没有意义的。

  • 另一方面,安全组则用于授予用户对资源的权限,例如,如果希望允许某些用户访问共享文件夹或网络打印机,则将会使用组。一个用户可以是许多组的成员,这是授予某一用户对多个资源的访问权限所必需的。

答题

image-20221002003744120

管理AD域中的用户

因为最近公司业务上发生了一些变化,作为公司新的域管理员,你的第一个任务是检查现有的 AD域OU(组织单元) 和用户。假设你已收到以下的组织结构图,你的工作是对AD(活动目录)作出相应的修改:

image-20221002004447318

删除多余的OU(组织单元)和用户

你应该注意的第一件事情是:在你当前的 AD 配置中,有一个额外的部门 OU 没有出现在图表中。我们接到通知,由于预算削减,这个部门被关闭了,应该把它从域中删除。如果你直接尝试右键单击并删除 OU,你将得到以下报错警告:

image-20221002004510479

默认情况下,OU 将受到保护以防止被意外删除,所以要删除 OU,我们就需要在视图菜单中启用高级功能(Advanced Features):

image-20221002004616169

启用这个高级功能之后,会显示出一些其他容器,并使你能够禁用意外删除保护,你可以右键单击要删除的OU并转到 Properties页面,在 Object 选项卡中找到一个复选框来取消意外删除保护:

image-20221002005022389

取消勾选框之后再次尝试删除OU,此时系统会提示你确认是否要删除 OU,点击确认删除,该OU下面的任何用户、组或 子OU 都将被删除。

在删除多余的 OU 之后,你应该注意到,对于某些部门,AD中显示的用户与我们的组织结构图中的用户不匹配,所以我们根据需要创建和删除AD中的用户以匹配组织结构图中的用户。

授予权限

在AD中还可以做的一件事就是将一些对 OU (组织单元)的控制权授予特定用户,这个过程称为授权,允许你授予用户特定的权限,以便用户在 OU 上执行高级任务,而无需域管理员介入。

最常见的用例之一是授予 IT支持( IT support)重置其他低权限用户密码的权限,根据我们的组织结构图,菲利普负责 IT 支持,所以我们可能想把重置密码的控制权交给他,而不是销售、营销和管理部门。

在本例中,我们将把销售 OU 的控制权委托给用户Phillip,若要授权对 OU 的控制,可以右键单击该OU并选择“授权控制”( Delegate Control):

image-20221002010141667

这将打开一个新窗口,在该窗口中,你将首先被要求 选择向哪些用户授予控制权:

注意: 为了避免输错用户名,请输入“phillip”并单击 Check Names 按钮,Windows 将为你自动检测该用户。

image-20221002010358222

单击“确定”,然后在下一步中选择以下选项:

image-20221002010448025

接着多次单击“下一步”,现在 phillip 应该能够为销售部门的任何用户重置密码。你可能想要重复这些步骤来授予phillip 市场营销部门和管理部门的密码重置权限,如果你愿意,可以自由地继续配置其余的 OU。

现在我们用菲利普的账户重设索菲的密码,以下是菲利普的登录凭证,你可以通过 RDP 登录:

image-20221002010821869

注意: 当通过 RDP 连接时,请使用THM\phillip 作为用户名,来指定你希望使用 THM 域上的用户 phillip 进行登录操作。

虽然你可能很想去“ Active Directory 用户和计算机”那里试试 Phillip 的新权限,但是他并没有打开Active Directory Users and Computers的特权,所以你必须使用其他方法来重置密码。在这种情况下,我们可以使用 Powershell 来实现这一点:

PS C:\Users\phillip> Set-ADAccountPassword sophie -Reset -NewPassword (Read-Host -AsSecureString -Prompt 'New Password') -Verbose

New Password: *********

VERBOSE: Performing the operation "Set-ADAccountPassword" on target "CN=Sophie,OU=Sales,OU=THM,DC=thm,DC=local".

image-20221002011136724

如果我们只是不想让索菲继续使用我们知道的密码,我们也可以在下一次登录时用以下命令强制重置密码:

PS C:\Users\phillip> Set-ADUser -ChangePasswordAtLogon $true -Identity sophie -Verbose

VERBOSE: Performing the operation "Set" on target "CN=Sophie,OU=Sales,OU=THM,DC=thm,DC=local".

image-20221002011235407

注: 当通过 RDP 连接sophie的账户时,使用THM\sophie作为用户名,来指定你希望使用 THM 域上的用户sophie 进行登录操作。

答题

先在THM\Administrator账户下打开“Active Directory 用户和计算机”管理界面,删除多余的OU,再对phillip用户授予重置销售部门任何用户密码的权限,然后登录THM\phillip账户,使用powershell重置销售部门用户sophie的登录密码,最后使用新密码登录THM\sophie账户,查看flag文件。

远程连接(在此页面输入Tryhackme提供的域ip即可,点击连接之后 会自动跳转到域成员的登录界面):

image-20221002130445456

重置THM\sophie用户密码的命令:

Set-ADAccountPassword sophie -Reset -NewPassword (Read-Host -AsSecureString -Prompt 'New Password') -Verbose

#输入密码:qwert123456* (新密码要符合密码长度和复杂度)

image-20221002125441332

登录THM\sophie账户,查看flag文件内容:

image-20221002130109421

image-20221002130648320

管理AD域中的计算机

默认情况下,所有加入域的机器(DC 除外)都将放在名为“ Computers”的容器中,当我们检查我们的 DC(域控制器)时,我们将看到一些设备已经在那里:

image-20221002131153162

我们可以在我们的局域网络中,看到一些服务器,一些笔记本电脑和一些个人电脑对应的用户,把我们所有的设备都放在“Computers”容器中并不是一个好主意,因为你很可能希望为你的服务器和常规用户每天使用的机器制定不同的策略。

虽然没有关于如何组织机器的黄金法则,但一个很好的起点是根据设备的使用情况对其进行隔离,一般来说,你看到的设备至少可以分为以下三类:

1.Workstations(工作站)

工作站是 Active Directory 域中最常见的设备之一,域中的每个用户都可能正在登录到一个工作站,这是他们用来完成工作或正常浏览活动的设备。这些设备永远不应该有特权用户登录进去。

2.Servers(服务器)

服务器是 Active Directory 域中第二常见的设备,服务器通常用于向用户或其他服务器提供服务。

3.Domain Controllers(域控制器)

域控制器是 Active Directory 域中第三个最常见的设备,域控制器允许你管理 Active Directory 域,这些设备通常被认为是网络中最敏感的设备,因为它们包含了环境中所有用户帐户的哈希密码

因为我们正在整理我们的AD域,让我们为 Workstations(工作站)和Servers(服务器)创建两个单独的 OU(组织单元),我们将直接在thm.local域容器下创建他们:

image-20221002133302062

最后,你应该有以下的OU结构:

image-20221002132424215

现在,将个人计算机和笔记本电脑对应的账户从Computers容器移动到工作站 OU,并将服务器对应的账户移动到服务器 OU,这样做将方便我们稍后为每个 OU 配置策略。

答题:

image-20221002154935832

组策略

到目前为止,我们在OU中分配用户和计算机仅仅是为了符合组织关系,但是这背后的主要思想是为了能够给每个OU单独部署不同的策略,通过这种方式,我们可以根据用户的部门向他们推送不同的配置和安全基线。

Windows通过组策略对象(Group Policy Objects-GPO)管理不同策略。GPO只是一组可以应用于OU的设置集合,GPO可以包含针对用户或计算机的策略,也允许你设置特定计算机和身份的基线。

要配置GPO,可以使用组策略管理工具(可从开始菜单处打开) :

image-20221002155628241

当打开它时,你首先看到的是完整的OU层次结构,如前所述,要配置组策略,首先在组策略对象下创建一个GPO,然后将其链接到希望应用策略的GPO。你可以看到你的计算机中已经存在的一些GPO:

image-20221002155907421

我们可以在上图中看到,页面中已经创建了3个GPO,在这些策略中,默认域策略(Default Domain Policy)和 RDP 策略(RDP Policy)已经作为一个整体 链接到 thm.local域,默认域控制器策略(Default Domain Controllers Policy)则链接到域控制器(Domain Controllers)OU。需要注意的一点是,任何GPO都将适用于所链接的OU及其下的任何子OU。例如,Sales OU 会受到默认域策略(Default Domain Policy)的影响。

让我们检查默认域策略(Default Domain Policy),看看 GPO 中有什么,选中GPO,你看到的第一个选项卡显示了它的作用域,这是AD域中建立GPO链接的地方。对于当前策略,我们可以看到它只链接了thm.local域:

image-20221002161048910

如你所见,你还可以对 GPO 应用安全过滤(Security Filtering),以便它们只应用于 OU 下的特定用户/计算机,默认情况下,这些GPO将应用于“身份验证用户”(Authenticated Users)组,该组包括所有用户/个人电脑。

GPO中的Settings 选项卡包含 GPO 的实际内容,能够让我们知道GPO应用的具体配置,如前所述,每个 GPO 都有仅适用于计算机的配置和仅适用于用户的配置。在下面这种情况下,默认域策略(Default Domain Policy)只包含计算机配置:

image-20221002161538571

请随意浏览 GPO 并使用每个配置右侧的“ show”链接展开可用项目,默认域策略(Default Domain Policy)会显示应该适用于大多数域的真正基本的配置,包括密码和帐户锁定策略:

image-20221002162038132

由于这个 GPO 适用于整个域,所以对它的任何更改都会影响所有计算机。我们尝试更改最小密码长度策略,要求用户的密码中至少有10个字符,右键单击 GPO 并选择 Edit即可进行修改:

image-20221002162300953

这将打开一个新窗口,我们可以在其中导航和编辑所有可用的配置。如果要更改最小密码长度,可访问计算机配置-> 策略-> Windows 设置-> 安全设置-> 帐户策略-> 密码策略,最后更改所需设置的策略值:

image-20221002162812278

正如你所看到的,在GPO 中可以建立许多策略,如果需要了解更多关于这些策略的信息,你可以双击它们并阅读每个策略的解释 (Explain)标签:

image-20221002163140308

GPO的分发和同步

GPO通过一个名为 SYSVOL 的共享网络分发到局域网络中,该共享网络存储在 DC 中,在域中的所有用户通常都能够通过局域网络访问此共享,以定期同步其 GPO设置。SYSVOL 共享点默认指向我们网络中每个 DC 上的C:\Windows\SYSVOL\sysvol\目录。

一旦你对任何 GPO 的设置进行了更改,计算机可能需要2个小时才能实现信息同步,如果你想要强制任何特定计算机立即同步其 GPO设置,你可以在需要立即同步GPO的计算机上运行以下powershell命令:

PS C:\> gpupdate /force

image-20221002163659239

为THM公司创建一些GPO

作为我们新工作的一部分,我们的任务是创建一些GPO,使我们能够:

  1. 阻止非 IT 用户访问控制面板。
  2. 让工作站和服务器在用户不活动5分钟后自动锁定屏幕,以避免人们暴露他们的会话。

让我们关注以上两个目标,并定义我们应该在每个 GPO 中启用哪些策略,以及它们应该在哪里相关联。

限制访问控制面板

我们希望将所有计算机上的控制面板的访问权限 设置为只对 IT 部门的用户进行开放访问,其他部门的用户不应该能够更改系统的首选项。

让我们创建一个名为“限制控制面板访问”(Restrict Control Panel Access)的新 GPO,并打开它进行编辑,因为我们希望这个 GPO 适用于特定的用户,我们将在用户配置(User Configuration)下寻找以下策略:

image-20221002173052165

注意,我们已经启用了“禁止访问控制面板和PC设置”(Prohibit Access to Control Panel and PC settings )策略。

一旦 GPO 配置完毕,我们需要将它链接到 哪些不应该拥有访问PC 控制面板权限的用户所在的OU ,我们把 GPO 拖动到每个组织单元(OU)来链接市场部、管理部和销售部:

image-20221002165251559

自动锁屏GPO

关于工作站和服务器的屏幕锁定的GPO,我们可以直接将其分别应用于前面创建的工作站、服务器和域控制器的 OU 上。

虽然这个解决方案应该可以奏效,但是另一种方法是将 GPO 应用到根域,因为这样设置 GPO 就能影响所有计算机。由于工作站、服务器和域控制器 OU 都是根域的子 OU,它们将会自动继承根域的策略。

注意: 你可能会注意到,如果我们的自动锁屏 GPO 应用于根域,它也将被其他 OU (销售部或市场部)继承,由于这些 OU 只包含用户,因此 GPO 中的任何计算机配置都会被用户忽略,也就是说销售、市场这些OU中的用户并不会被自动锁屏策略所影响。

现在让我们创建一个新的GPO,命名为自动锁定屏幕(Auto Lock Screen),对它进行编辑,实现我们所希望的策略的设置界面如下(在计算机配置下寻找策略):

image-20221002172921693

我们将屏幕不活动时间限制设置为5分钟,如果任何用户让屏幕保持5分钟不活动,计算机就会自动锁定屏幕。关闭 GPO 编辑器后,我们把这个 GPO 拖动到根域来将其链接到根域:

image-20221002171042585

一旦 GPO 被应用到正确的 OU 上,我们可以作为Marketing, Sales 或者 Management中的任何用户之一来登录验证这些GPO是否生效,对于这个任务,让我们使用 Mark 的凭证通过 RDP 进行登录 以便验证GPO是否生效:

image-20221002171445083

注意: 当通过 RDP 连接时,使用THM\Mark 作为用户名 来指定你要使用 THM 域上的用户Mark进行登录操作。

如果我们尝试打开控制面板,应该会得到一条消息,指示管理员拒绝此操作,你也可以停止任何操作等待5分钟,以检查屏幕是否会自动锁定。

因为我们没有在 IT 上应用控制面板 GPO,所以你仍然可以以IT中的任何用户身份登录机器并访问控制面板。

注意: 如果你创建并链接好了 GPO,但由于某些原因,它们仍然无法工作,可以打开powershell运行 gpupdate /force命令 来强制更新 GPO。

答题

image-20221002172844392

AD域中的认证方式

使用 Windows 域时,所有凭据都存储在域控制器(DC)中,每当用户尝试使用域凭据对服务进行身份验证时,服务都将请求域控制器(DC)来验证该用户身份是否正确。

可以使用两种协议在 Windows 域中进行网络(身份)认证:

  • Kerberos: 任一最新版本的 Windows 都能使用,这是任意最新域中的默认协议。

  • NetNTLM: 为兼容性目的而保留的 遗留身份验证协议。

虽然 NetNTLM 协议应该被认为是过时的,但是大多数网络都会同时启用以上两种协议,接下来让我们更深入地研究一下这些协议是如何工作的。

Kerberos 身份验证

Kerberos 身份验证是任何最新版本 Windows 的默认身份验证协议。使用 Kerberos 登录到服务的用户将获得票据。可以将票据视为以前身份验证的证据。持有票据的用户可以将票据提供给服务,以证明他们以前已经在网络中进行过身份验证,因此可以使用该服务。

当使用 Kerberos 进行身份验证时,会发生以下过程:

用户的用户名和时间戳会被发送到密钥分发中心(KDC-Key Distribution Center) ,密钥分发中心通常安装在域控制器(DC)上,它(KDC)负责在网络上创建 Kerberos 票据。

KDC 将创建并发送一个 Ticket Granting Ticket (TGT) ,该 TGT 允许用户请求额外的票据以访问特定的服务。需要一张票才能获得更多票,这听起来可能有点奇怪,但是它允许用户每次连接到服务时无需传递凭据就可以请求服务票据。除了 TGT 之外,KDC还向用户提供了一个 Session Key,用户需要这个会话密钥来生成接下来的请求。

注意:TGT 是使用 krbtgt 帐户的密码哈希进行加密的,因此用户无法直接访问其内容。我们必须知道加密的TGT中包含了会话密钥(Session Key)的副本作为其内容的一部分,KDC 不需要存储会话密钥,因为它可以在需要时通过解密 TGT 来恢复一个会话密钥副本。

image-20221002175505083

当用户希望连接到网络上的服务(如共享、网站或数据库)时,他们将使用 TGT 请求 KDC 提供票据授予服务(TGS-Ticket Granting Service)。TGS会创建只允许连接到特定服务的票据。

要请求 TGS,用户需要发送 使用Session Key加密的用户名和时间戳,以及 TGT 和服务主体名称(SPN-Service Principal Name) ,后者(SPN)指示我们打算访问的服务和服务器名称。

作为回应,KDC 将向我们发送一个 TGS 和一个 Service Session Key,我们需要这个服务会话密钥对要访问的服务进行身份验证。TGS 使用从 Service Owner Hash 派生的密钥进行加密,Service Owner 是运行服务的用户或计算机帐户,TGS 在其加密内容上还包含了 Service Session Key的副本,以便 Service Owner 可以通过解密 TGS 来访问它(Service Session Key)。

image-20221002182215743

然后,TGS 可以被发送到用户所需的服务上,以验证和建立连接:该服务将使用其配置的帐户的密码hash来解密 TGS 并验证 Service Session Key(服务会话密钥)。

image-20221002182808204

NetNTLM 身份验证

NetNTLM 使用挑战-响应机制工作,整个过程如下所示:

image-20221002182855678

  1. 客户机向它们想要访问的服务器发送身份验证请求。

  2. 服务器生成一个随机数,并将其作为一个挑战发送给客户端。

  3. 客户端将其 NTLM 密码hash与挑战(以及其他已知数据)组合在一起,以生成对挑战的响应,并将其发送回服务器进行验证。

  4. 服务器转发这个挑战和(来自客户端的)响应给域控制器进行验证。

  5. 域控制器使用挑战来重新计算响应,并将其与客户端发送的原始响应进行比较,如果它们全都匹配成功,则对客户端进行身份验证; 否则拒绝访问。身份验证结果会被发送回服务器。

  6. 服务器将身份验证结果转发给客户端。

注意:为了安全起见,用户的密码(或哈希)从不通过网络传输,以上所描述的NetNTLM 验证过程适用于使用域中的帐户时,如果使用的是本地帐户,服务器可以验证对挑战本身的响应,而无需与域控制器进行交互,因为在它(服务器)的SAM文件中存储了本地的密码hash。

答题

image-20221002184701418

Trees, Forests和信任关系

到目前为止,我们已经讨论了如何管理单个域、域控制器的作用以及它如何连接计算机、服务器和用户。

image-20221002184923375

随着公司的成长,他们的网络也在成长。对于一家小公司来说,拥有一个域名可能已经足够了,但是随着时间的推移,一些额外的需求可能会促使你需要拥有多个域名。

Trees(树)

想象一下,假如你的公司突然扩张到一个新的国家,新的国家可能有不同的法律法规要求你更新你的 GPO来遵守,此外,现在你的公司在两个国家都有 IT 人员,每个 IT 团队都需要管理与每个国家对应的资源,在管理过程中要确保不会干扰到另一个团队,虽然你可以创建一个复杂的OU结构,并使用授权来实现这一点,但是拥有一个庞大的AD(Active Directory )结构可能很难管理,并且容易出现人为错误。

幸运的是,Active Directory 支持集成多个域,这样你就可以将网络划分为可以独立管理的单元。

如果有两个域共享相同的命令空间(在我们的示例中为thm.local) ,则可以将这些域联接到一个 Tree 中。

如果我们的 thm.local 域被分割成两个子域,分别用于 UK 和 US 分支,那么你就可以构建一个Tree(树),其根域为 thm.local,另外两个子域为 UK.thm.local 和 US.thm.local,每个子域都有自己的 AD、计算机和用户:

image-20221002191939679

这种分区结构使我们能够更好地控制谁可以访问域中的内容,来自英国的 IT 人员将拥有自己的 DC,只管理英国的资源,英国用户无法管理美国用户。通过这种方式,每个分支的域管理员将完全控制其各自的 DC,而不是其他分支的 DC。我们还可以为树中的每个域单独配置策略。

在讨论树木和森林时,需要引入一个新的安全组----Enterprise Admins。Enterprise Admins 组(企业管理组)将授予用户对企业所有的域的管理权限,每个域仍然拥有域管理员对其单个域有管理员权限而企业管理员则可以控制企业中的所有域。

Forests(森林)

你所管理的域也可以在不同的命名空间中配置。假设你的公司继续增长,并收购了另一家名为MHT Inc.的公司,当两家公司进行合并时,每个公司可能会有不同的域树,每个域树又由各自的IT部门进行管理,这就会将几个具有不同命名空间的域树合并到同一个网络中并形成域森林。

image-20221002193136608

信任关系

在树和林中组织多个域可以让你在管理和资源方面有一个不错的分区网络。但在某个时刻,THM UK 的用户可能需要访问 MHT ASIA 服务器中的一个共享文件,为了实现这个操作,首先要把树和林中的域通过信任关系连接在一起。

简单地说,域之间的信任关系允许你授予来自THM UK域的用户有权限去访问来自MHT EU域的资源。

能被建立的最简单的信任关系是单向信任关系,在单向信任中,如果 Domain AAA 信任 Domain BBB,这意味着 BBB 上的用户可以被授权访问 AAA 上的资源:

image-20221002194132297

单向信任关系的方向与有权访问的方向相反。

还可以建立双向信任关系,以允许两个域相互授权给来自对面域的用户,默认情况下,在树或林下连接多个域将形成双向信任关系。

注意:域之间具有信任关系之后,并不会自动授予某个用户对其他域上所有资源的访问权。一旦建立了信任关系,你就有机会授权给不同域的用户,但实际授权与否取决于你自己——这是一个手动的过程,而不是一个自动的过程。

答题:

image-20221002194816971

posted @ 2023-05-16 21:39  Hekeatsll  阅读(606)  评论(1编辑  收藏  举报