用户帐户在本地系统(未加入 AD)和 Active Directory 中创建,以使个人或程序(例如系统服务)能够登录到计算机并根据其权限访问资源。当用户登录时,系统会验证他们的密码并创建访问令牌。该令牌描述了进程或线程的安全内容,包括用户的安全身份和组成员身份。每当用户与进程交互时,都会显示此令牌。用户帐户用于允许员工/承包商登录计算机并访问资源,在特定安全上下文下运行程序或服务(即,作为高特权用户而不是网络服务帐户运行),以及管理访问对象及其属性,例如网络文件共享、文件、应用程序等。可以将用户分配到可以包含一个或多个成员的组。这些组也可以用来控制对资源的访问。对管理员来说,给一个组分配一次权限(所有组员都会继承),而不是给每个用户分配许多次权限,会更容易。这有助于简化管理,使授予和撤销用户权限更加容易。
配置和管理用户帐户的能力是 Active Directory 的核心元素之一。通常,我们遇到的每一家公司都会为每位用户配置至少一个 AD 用户帐户。一些用户可能根据他们的工作角色(即 IT 管理员或帮助台成员)配置了两个或更多帐户。除了与特定用户绑定的标准用户和管理员帐户外,我们经常会看到许多服务帐户用于在后台运行特定的应用程序或服务或在域环境中执行其他重要功能。
拥有 1,000 名员工的组织可能拥有 1,200 个或更多活动用户帐户!我们还可能看到组织有数百个来自前雇员、临时/季节性雇员、实习生等的禁用帐户。一些公司必须保留这些帐户的记录以用于审计目的,因此一旦员工被停用,他们就会停用它们(并希望删除所有特权)被终止,但他们不会删除它们。通常会看到一个 OU,例如 FORMER EMPLOYEES,其中包含许多已停用的帐户。

image.png

正如我们将在本模块后面看到的那样,可以在 Active Directory 中为用户帐户提供许多权限。他们可以配置为基本上只读用户,他们对大多数环境(这是标准域用户接收的权限)具有读取访问权限,直到企业管理员(完全控制域中的每个对象)以及两者之间的无数组合.
因为用户可以拥有如此多的权限,所以他们也可以相对容易地被错误配置并授予攻击者或渗透测试人员可以利用的意外权限。用户帐户呈现出巨大的攻击面,通常是在渗透测试期间获得立足点的关键焦点。
用户通常是任何组织中最薄弱的环节。很难管理每个用户选择弱密码或共享密码、安装未经授权的软件或管理员犯粗心错误或对帐户管理过于宽容的人类行为和帐户。为了解决这个问题,组织需要制定政策和程序来解决用户帐户周围可能出现的问题,并且必须有深度防御以减轻用户给域带来的固有风险。
与用户相关的错误配置和攻击的细节超出了本模块的范围。尽管如此,了解用户在任何 Active Directory 网络中可能产生的绝对影响以及了解我们可能遇到的不同类型的用户/帐户之间的细微差别仍然很重要。

Local Account

本地帐户本地存储在特定服务器或工作站上。这些帐户可以单独或通过组成员资格在该主机上分配权限。分配的任何权限只能授予该特定主机,并且不能跨域工作。本地用户帐户被视为安全主体,但只能管理对独立主机上的资源的访问和保护。在 Windows 系统上创建了几个默认本地用户帐户:

  • Administrator:此帐户的 SID S-1-5-domain-500 是第一个使用新 Windows 安装创建的帐户。它可以完全控制系统上的几乎所有资源。它不能被删除或锁定,但可以被禁用或重命名。 Windows 10 和 Server 2016 主机默认禁用内置管理员帐户,并在设置过程中在本地管理员组中创建另一个本地帐户。
  • Guest:默认情况下禁用此帐户。此帐户的目的是允许在计算机上没有帐户的用户以有限的访问权限临时登录。默认情况下,它的密码为空,通常建议禁用,因为允许匿名访问主机存在安全风险。
  • SYSTEM:Windows 主机上的 SYSTEM(或 NT AUTHORITY\SYSTEM)帐户是操作系统安装和使用的默认帐户,用于执行其许多内部功能。与 Linux 上的 Root 帐户不同,SYSTEM 是一个服务帐户,并不完全在与普通用户相同的上下文中运行。主机上运行的许多进程和服务都在 SYSTEM 上下文中运行。使用此帐户需要注意的一点是,它的配置文件不存在,但它对主机上的大多数内容具有权限。它不会出现在用户管理器中,也不能添加到任何组中。 SYSTEM 帐户是在 Windows 主机上可以实现的最高权限级别,默认情况下,它被授予对 Windows 系统上所有文件的完全控制权限。
  • Network Service:这是服务控制管理器 (SCM) 用于运行 Windows 服务的预定义本地帐户。当服务在此特定帐户的上下文中运行时,它将向远程服务提供凭据。
  • Local service:这是服务控制管理器 (SCM) 用于运行 Windows 服务的另一个预定义本地帐户。它在计算机上配置有最低权限,并向网络提供匿名凭据。

值得深入研究 Microsoft 有关本地默认帐户的文档,以更好地了解各种帐户如何在单个 Windows 系统和跨域网络上协同工作。花一些时间仔细查看它们并了解它们之间的细微差别。local default accounts

Domain Users

域用户与本地用户的不同之处在于,根据授予其用户帐户或该帐户所属的组的权限,他们被授予域访问资源(如文件服务器、打印机、Intranet 主机和其他对象)的权限。与本地用户不同,域用户帐户可以登录域中的任何主机。有关许多不同 Active Directory 帐户类型的更多信息,请查看此链接link。但是,要记住的一个帐户是 KRBTGT 帐户。这是一种内置于 AD 基础架构中的本地帐户。此帐户充当密钥分发服务的服务帐户,为域资源提供身份验证和访问。此帐户是许多攻击者的共同目标,因为获得控制权或访问权限将使攻击者能够不受限制地访问域。它可以通过Golden Ticket等攻击用于域中的权限升级和持久性。

User Naming Attributes

可以使用一组用户命名属性来提高 Active Directory 中的安全性,以帮助识别登录名或 ID 等用户对象。以下是 AD 中一些重要的命名属性:

UserPrincipalName
(UPN)
这是用户的主要登录名。按照惯例,UPN 使用用户的电子邮件地址。
ObjectGUID 这是用户的唯一标识符。在 AD 中,即使删除了用户,ObjectGUID 属性名称也不会更改并且保持唯一。
SAMAccountName 这是一个支持以前版本的 Windows 客户端和服务器的登录名。
objectSID 用户的安全标识符 (SID)。此属性在与服务器进行安全交互期间标识用户及其组成员身份。
sIDHistory 如果从另一个域移动,这包含用户对象以前的 SID,并且通常在从域到域的迁移方案中看到。发生迁移后,最后一个 SID 将添加到 sIDHistory 属性中,新的 SID 将成为其 objectSID。
.

Common User Atttributes

  1. PS C:\htb Get-ADUser -Identity htb-student
  2. DistinguishedName : CN=htb student,CN=Users,DC=INLANEFREIGHT,DC=LOCAL
  3. Enabled : True
  4. GivenName : htb
  5. Name : htb student
  6. ObjectClass : user
  7. ObjectGUID : aa799587-c641-4c23-a2f7-75850b4dd7e3
  8. SamAccountName : htb-student
  9. SID : S-1-5-21-3842939050-3880317879-2865463114-1111
  10. Surname : student
  11. UserPrincipalName : htb-student@INLANEFREIGHT.LOCAL

要更深入地了解用户对象属性,请查看此page。可以为 AD 中的任何对象设置许多属性。许多对象永远不会被使用或与我们作为安全专业人员无关。尽管如此,熟悉可能包含敏感数据或帮助发动攻击的最常见和更晦涩的数据仍然很重要。

Domain-joined vs. Non-Domain-joined Machines

对于计算机资源,通常有多种管理方式。下面我们将讨论加入域的主机与仅在工作组中的主机之间的区别。

Domain joined

加入域的主机可以更轻松地在企业内共享信息,并且可以通过中央管理点 (DC) 收集资源、策略和更新。加入域的主机将通过域的组策略获取任何必要的配置或更改。这样做的好处是域中的用户可以登录并从任何加入域的主机访问资源,而不仅仅是他们工作的主机。这是您将在企业环境中看到的典型设置。

Non-domain joined

未加入域的计算机或工作组中的计算机不受域策略管理。考虑到这一点,在本地网络之外共享资源比在域上共享资源要复杂得多。这对于用于家庭使用的计算机或同一 LAN 上的小型企业集群来说很好。这种设置的优点是各个用户负责他们希望对其主机进行的任何更改。工作组计算机上的任何用户帐户仅存在于该主机上,配置文件不会迁移到工作组内的其他主机。

请务必注意,AD 环境中的计算机帐户(NT AUTHORITY\SYSTEM 级别访问权限)将具有与标准域用户帐户大部分相同的权限。这很重要,因为我们并不总是需要为单个用户的帐户获取一组有效凭据才能开始枚举和攻击域(正如我们将在后面的模块中看到的那样)。我们可以通过成功的远程代码执行漏洞或通过升级主机权限来获得对已加入域的 Windows 主机的 SYSTEM 级别访问权限。这种访问经常被忽视,因为它只对掠夺特定主机上的敏感数据(即密码、SSH 密钥、敏感文件等)有用。
实际上,在 SYSTEM 帐户的上下文中访问将允许我们读取域内的大部分数据,并且是在继续进行适用的 AD 相关攻击之前收集尽可能多的有关域的信息的一个很好的起点。