AD中的常见术语

object
object(对象) 可以定义为 Active Directory 环境中存在的任何资源,例如 OU、打印机、用户、域控制器等。

Attributes

Active Directory 中的每个对象都有一组关联的属性attributes,用于定义给定对象的特征。
计算机对象包含主机名和 DNS 名称等属性。
AD 中的所有属性都有一个关联的 LDAP 字段,可以在执行 LDAP 查询时使用,例如用于全名的 displayName 和用于 First Name 的给定名称。

Schema

Active Directory 架构本质上就是是企业环境的图画。它定义了 企业AD 数据库中存在的对象类型及其相关属性。展示出了与 AD 对象对应的定义并保存了有关每个对象的信息。例如,AD 中的用户属于“用户”类,而计算机对象属于“计算机”,等等。每个对象都有自己的信息(有些需要设置,有些是可选的),这些信息存储在 Attributes 中。从类创建对象时,这称为实例化,从特定类创建的对象称为该类的实例。例如,如果我们使用计算机 RDS01。此计算机对象是 Active Directory 中“计算机”类的一个实例。

Domain

域是对象的逻辑组,例如计算机、用户、OU、组等。我们可以将每个域视为州或国家内的不同城市,域可以完全相互独立地运行,也可以通过信任关系连接起来。

Forest

森林是 Active Directory 域的集合。它是最顶层的容器,包含下面介绍的所有 AD 对象,包括但不限于域、用户、组、计算机和组策略对象。一个森林可以包含一个或多个域,并被视为美国的一个州或欧盟的一个国家/地区。每个林独立运行,但可能与其他林有不同的信任关系。

Tree

树是从单个根域开始的 Active Directory 域的集合,森林是 AD 树的集合。树中的每个域都与其他域共享一个边界。当一个域被添加到树中的另一个域下时,就形成了父子信任关系。同一森林中的两棵树不能共享一个名称(命名空间)。
假设我们在 AD 森林中有两棵树:inlanefreight.local 和 ilfreight.local。第一个的子域是 corp.inlanefreight.local,而第二个的子域可以是 corp.ilfreight.local。树中的所有域共享一个标准全局目录,其中包含有关属于该树的对象的所有信息。

Container

容器对象包含其他对象并在目录子树层次结构中具有定义的位置。

leaf

叶对象不包含其他对象,位于子树层次结构的末尾。

Global Unique Identifier (GUID)

GUID是创建域用户或组时分配的唯一 128 位值。此 GUID 值在整个企业中是唯一的,类似于 MAC 地址。 Active Directory 创建的每个对象都分配有一个 GUID,而不仅仅是用户和组对象。

  • GUID 存储在 ObjectGUID 属性中。在查询 AD 对象(如用户、组、计算机、域、域控制器等)时,我们可以使用 PowerShell 查询其 objectGUID 值或通过指定其专有名称、GUID、SID 或 SAM 来搜索它帐户名称。AD 使用 GUID 在内部识别对象。
  • 按 GUID 值在 Active Directory 中搜索可能是查找您要查找的确切对象的最准确和最可靠的方法,尤其是在全局编录可能包含与对象名称相似的匹配项时。-
  • 在执行 AD 枚举时指定 ObjectGUID 值将确保我们获得与我们正在搜索信息的对象相关的最准确结果。
  • 只要该对象存在于域中,ObjectGUID 属性就永远不会更改并与该对象相关联。

    Security principals

    安全主体Security principals是操作系统可以进行身份验证的任何内容,包括用户、计算机帐户,甚至是在用户或计算机帐户上下文中运行的线程/进程,比如,在域内服务帐户的上下文中运行的应用程序(例如 Tomcat)。
    在 AD 中,安全原则是可以管理对域内其他资源的访问的域对象。我们也可以使用本地用户帐户和安全组来控制对特定计算机上资源的访问。
    这些不是由 AD 管理,而是由安全帐户管理器 (SAM) Security Accounts Manager (SAM) 管理。

Security Identifier (SID)

安全标识符security identifier或 SID 用作安全主体或安全组的唯一标识符。每个帐户、组或进程都有自己唯一的 SID,在 AD 环境中,它由域控制器发布并存储在安全数据库中。一个SID 只能使用一次。即使删除了SID,也永远不能在该环境中再次使用它来识别另一个用户或组。当用户登录时,系统会为他们创建一个访问令牌,其中包含用户的 SID、他们被授予的权限以及用户所属的任何组的 SID。每当用户在计算机上执行操作时,此令牌用于检查权限。还有一些众所周知的 SID well-known SIDs用于识别一般用户和组。这些在所有操作系统中都是相同的。一个例子是Everyone 组。

Distinguished Name (DN)

专有名称 (DN)Distinguished Name (DN) 描述了 AD 中对象的完整路径(例如 cn=bjones、ou=IT、ou=Employees、dc=inlanefreight、dc=local)。在此示例中,用户 bjones 在 Inlanefreight 公司的 IT 部门工作,他的帐户是在为公司员工保存帐户的组织单位 (OU) 中创建的。通用名称 (CN) bjones 只是在域内搜索或访问用户对象的一种方式。

Relative Distinguished Name (RDN)

相对专有名称 (RDN)Relative Distinguished Name (RDN) 是专有名称的单个组件,用于将对象标识为在命名层次结构中的当前级别与其他对象不同。在我们的示例中,bjones 是对象的相对可分辨名称。AD 不允许在同一个父容器下有两个具有相同名称的对象,但是可以有两个具有相同 RDN 的对象在域中仍然是唯一的,因为它们具有不同的 DN。例如,对象 cn=bjones,dc=dev,dc=inlanefreight,dc=local 和对象 cn=bjones,dc=inlanefreight,dc=local 是不同的。

image.png

sAMAccountName

sAMAccountName 是用户的登录名。这里只是bjones。它必须是唯一的值且不超过 20 个字符。

userPrincipalName

userPrincipalName 属性是在 AD 中识别用户的另一种方式。该属性由前缀(用户帐户名)和后缀(域名)组成,格式为 bjones@inlanefreight.local。该属性不是强制性的。

FSMO Roles

在 AD 的早期,如果您在一个环境中有多个 DC,会导致DC冲突,导致对AD设置更改失败,微软随后实行了“最后赢家原则”
然后,他们引入了一个模型,其中单个“主” DC 可以将更改应用于域,而其他仅满足身份验证请求。这是一个有缺陷的设计,因为如果主 DC 出现故障,则在恢复之前无法对环境进行任何更改。为了解决这种单点故障模型,Microsoft 将 DC 可以承担的各种职责划分为灵活的单主机操作 (FSMO)Flexible Single Master Operation (FSMO) 角色。这些使域控制器 (DC) 能够继续对用户进行身份验证并授予权限而不会中断(授权和身份验证)。
有五个 FMSO 角色:架构主机和域命名主机(每个林各一个)、相对 ID (RID) 主机(每个域一个)、主域控制器 (PDC) 模拟器(每个域一个)和基础结构主机(一个每个域)。所有五个角色都分配给新 AD 林中林根域中的第一个 DC。每次将新域添加到林时,只会将 RID 主机、PDC 仿真器和基础结构主机角色分配给新域。FSMO 角色通常在创建域控制器时设置,但系统管理员可以在需要时转移这些角色。这些角色有助于 AD 中的复制顺利运行并确保关键服务正常运行。我们将在本节后面详细介绍这些角色中的每一个。

Global Catalog

全局编录 (GC) global catalog (GC)是在 Active Directory 林中存储所有对象副本的域控制器。 GC 存储当前域中所有对象的完整副本以及属于林中其他域的对象的部分副本。标准域控制器拥有属于其域但不属于林中不同域的对象的完整副本。GC 允许用户和应用程序查找有关林中任何域中的任何对象的信息。 GC 是在域控制器上启用的一项功能,它执行以下功能:

  • 身份验证(为用户帐户所属的所有组提供授权,在生成访问令牌时包括在内)
  • 对象搜索(使森林中的目录结构透明,允许通过仅提供关于对象的一个属性来在森林中的所有域中执行搜索。)

Read-Only Domain Controller (RODC)

Read-Only Domain Controller (RODC)只读域控制器 (RODC) 具有只读 Active Directory 数据库。RODC 上没有缓存任何 AD 帐户密码(RODC 计算机帐户和 RODC KRBTGT 密码除外。不会通过 RODC 的 AD 数据库、SYSVOL 或 DNS 推出任何更改。 RODC 还包括只读 DNS 服务器,允许管理员角色分离,减少环境中的复制流量,并防止 SYSVOL 修改复制到其他 DC。

Replication

Replication当 AD 对象更新并从一个域控制器传输到另一个域控制器时,AD 中会发生复制。每当添加 DC 时,都会创建连接对象来管理它们之间的复制。这些连接由知识一致性检查器 (KCC) 服务建立,该服务存在于所有 DC 上。复制可确保更改与林中的所有其他 DC 同步,有助于在一个域控制器出现故障时创建备份。

Service Principal Name (SPN)

Service Principal Name (SPN)服务主体名称 (SPN) 唯一标识服务实例。Kerberos 身份验证使用它们将服务实例与登录帐户相关联,从而允许客户端应用程序请求服务对帐户进行身份验证,而无需知道帐户名称。

Group Policy Object (GPO)

Group Policy Objects (GPOs) 组策略对象 (GPO) 是策略设置的虚拟集合。每个 GPO 都有一个唯一的 GUID。GPO 可以包含本地文件系统设置或 Active Directory 设置。GPO 设置可以应用于用户和计算机对象。它们可以应用于域内的所有用户和计算机,或者在 OU 级别更精细地定义。

Access Control List (ACL)

访问控制列表Access Control List (ACL) (ACL) 是应用于对象的访问控制实体 (ACE) 的有序集合。

Access Control Entities (ACEs)

ACL 中的每个访问控制实体 (ACE) Access Control Entity (ACE)都标识一个受托者(用户帐户、组帐户或登录会话),并列出给定受托者允许、拒绝或审核的访问权限。

Discretionary Access Control List (DACL)

DACL 定义了允许或拒绝访问对象的安全原则;它包含一个 ACE 列表。当进程尝试访问安全对象时,系统会检查对象的 DACL 中的 ACE 以确定是否授予访问权限。如果对象没有 DACL,则系统将授予所有人完全访问权限,但如果 DACL 没有 ACE 条目,则系统将拒绝所有访问尝试。依次检查 DACL 中的 ACE,直到找到允许请求权限的匹配项或直到访问被拒绝。

System Access Control Lists (SACL)

允许管理员记录对受保护对象的访问尝试。 ACE 指定导致系统在安全事件日志中生成记录的访问尝试类型。

Fully Qualified Domain Name (FQDN)

FQDN 是特定计算机或主机的完整名称。它以 [host name].[domain name].[tld] 格式使用主机名和域名编写。
这用于指定对象在 DNS 的树层次结构中的位置。 FQDN 可用于在不知道 IP 地址的情况下定位 Active Directory 中的主机,这与浏览 google.com 等网站时无需输入关联的 IP 地址非常相似。
一个示例是域 INLANEFREIGHT.LOCAL 中的主机 DC01。此处的 FQDN 为 DC01.INLANEFREIGHT.LOCAL。

Tombstone

墓碑tombstone是 AD 中的容器对象,用于保存已删除的 AD 对象。当从 AD 中删除对象时,该对象会保留一段时间,称为 Tombstone Lifetime,并且 isDeleted 属性设置为 TRUE。一旦一个对象超过了 Tombstone Lifetime,它将被完全移除。Microsoft 建议将 tombstone 生命周期设置为 180 天,以提高备份的实用性,但此值可能因环境而异。根据 DC 操作系统版本,此值将默认为 60 或 180 天。如果一个对象在没有 AD 回收站的域中被删除,它将成为一个 tombstone 对象。发生这种情况时,该对象的大部分属性将被剥离,并在 tombstoneLifetime 期间被放置在 Deleted Objects 容器中。它可以恢复,但任何丢失的属性都无法再恢复。

AD Recycle Bin

AD 回收站AD Recycle Bin最初是在 Windows Server 2008 R2 中引入的,用于帮助恢复已删除的 AD 对象。这使系统管理员可以更轻松地还原对象,避免从备份还原、重新启动 Active Directory 域服务 (AD DS) 或重新启动域控制器的需要。启用 AD 回收站后,任何已删除的对象都会保留一段时间,以便在需要时进行恢复。系统管理员可以设置对象处于已删除、可恢复状态的时间。如果未指定,则对象可恢复默认值为 60 天。使用 AD 回收站的最大优势是保留了已删除对象的大部分属性,这使得将已删除对象完全恢复到其先前状态变得容易得多。

SYSVOL

SYSVOL 文件夹或共享存储域中公共文件的副本,例如系统策略、组策略设置、登录/注销时运行脚本,并且通常包含执行以在 AD 环境中执行各种任务的其他类型的脚本。SYSVOL 文件夹的内容使用文件复制服务 (FRS) 复制到环境中的所有 DC。您可以在此处阅读here有关 SYSVOL 结构的更多信息。

AdminSDHolder

AdminSDHolder 对象用于管理 AD 中标记为特权的内置组成员的 ACL。它充当一个容器,其中包含应用于受保护组成员的安全描述符。SDProp(SD 传播器)进程在 PDC 仿真器域控制器上按计划运行。当此过程运行时,它会检查受保护组的成员以确保将正确的 ACL 应用于他们。它默认每小时运行一次。例如,假设攻击者能够创建恶意 ACL 条目以授予用户对 Domain Admins 组成员的某些权限。在这种情况下,除非他们修改 AD 中的其他设置,否则当 SDProp 进程以设置的时间间隔运行时,这些权限将被删除(并且他们将失去他们希望获得的任何持久性)。

dsHeuristics

dsHuerisitcs属性是在目录服务对象上设置的字符串值,用于定义多个林范围的配置设置。其中一项设置是从受保护的组列表Protected Groups中排除内置组。此列表中的组受到 AdminSDHolder 对象的保护,不会被修改。如果通过 dsHuerisitcs 属性排除了一个组,那么当 SDProp 进程运行时,任何影响它的更改都不会生效。

adminCount

adminCount 属性确定 SDProp 进程是否保护用户。如果该值设置为 0 或未指定,则用户不受保护。如果属性值设置为 value,则用户受到保护。攻击者通常会在内部环境中寻找 adminCount 属性设置为 1 的帐户作为目标。这些通常是特权帐户,可能会导致进一步的访问或整个域的危害。

Active Directory Users and Computers (ADUC)

ADUC 是一个 GUI 控制台,通常用于管理 AD 中的用户、组、计算机和联系人。在 ADUC 中所做的更改也可以通过 PowerShell 完成。

ADSI Edit

ADSI Edit 是一个 GUI 工具,用于管理 AD 中的对象。它提供的访问远远超过 ADUC 中可用的内容,并且可用于设置或删除对象上可用的任何属性,以及添加、删除和移动对象。它是一个强大的工具,允许用户在更深层次上访问 AD。使用此工具时应格外小心,因为此处的更改可能会导致 AD 出现重大问题。

sIDHistory

This此属性包含以前分配给对象的任何 SID。它通常用于迁移,以便用户在从一个域迁移到另一个域时可以保持相同的访问级别。如果设置不安全,则此属性可能会被滥用,如果 SID 过滤(或从用户的访问令牌中删除可用于提升访问权限的另一个域的 SID)不存在,则允许攻击者获得帐户在迁移之前具有的先前提升访问权限启用。

NTDS.DIT

NTDS.DIT 文件可以被认为是 Active Directory 的核心。它存储在域控制器的 C:\Windows\NTDS\ 上,是一个数据库,用于存储 AD 数据,例如有关用户和组对象、组成员的信息,以及对攻击者和渗透测试人员最重要的所有密码哈希域中的用户。一旦达到完整的域危害,攻击者可以检索此文件,提取哈希,然后使用它们执行传递哈希攻击或使用 Hashcat 等工具离线破解它们以访问域中的其他资源。
如果启用了使用可逆加密存储密码Store password with reversible encryption设置,那么 NTDS.DIT 还将为所有创建的用户或在设置此策略后更改密码的用户存储明文密码。虽然很少见,但如果某些组织使用需要使用用户现有密码(而不是 Kerberos)进行身份验证的应用程序或协议,他们可能会启用此设置。