权利和特权是 AD 管理的基石,如果管理不善,很容易导致攻击者或渗透测试人员滥用。访问权限和特权是 AD(以及一般的信息安全)中的两个重要主题,我们必须了解其中的区别。权限通常分配给用户或组,并处理访问文件等对象的权限,而权限授予用户执行诸如运行程序、关闭系统、重置密码等操作的权限。权限可以是单独分配给用户或通过内置或自定义组成员资格授予他们。 Windows 计算机有一个称为用户权限分配的概念,虽然称为权限,但实际上是授予用户的权限类型。我们将在本节后面讨论这些。我们必须牢牢把握更广泛意义上的权利和特权之间的差异,以及它们如何应用于反倾销环境。

Built-in AD Groups

AD 包含许多默认或内置安全组 default or built-in security groups,其中一些授予其成员强大的权利和特权,这些权利和特权可被滥用以提升域内的特权并最终获得域控制器 (DC) 上的域管理员或系统特权。应该严格管理其中许多组的成员身份,因为过多的组成员身份/特权是攻击者希望滥用的许多 AD 网络中的常见缺陷。下面列出了一些最常见的内置组。

组名 描述
Account Operators 成员可以创建和修改大多数类型的帐户,包括用户、本地组和全局组的帐户,并且成员可以本地登录到域控制器。他们无法管理管理员帐户、管理用户帐户或管理员、服务器操作员、帐户操作员、备份操作员或打印操作员组的成员。
Administrators 如果成员位于域控制器上的此组中,则他们对计算机或整个域具有完全且不受限制的访问权限。
Backup Operators 成员可以备份和还原计算机上的所有文件,而不考虑对文件设置的权限。备份操作员还可以登录到计算机并关闭计算机。成员可以在本地登录到 DC,并应将其视为域管理员。他们可以制作 SAM/NTDS 数据库的卷影副本,如果创建这些副本,则可用于提取凭据和其他多汁信息。
DnsAdmins 成员可以访问网络 DNS 信息。仅当 DNS 服务器角色曾经或曾经安装在域中的域控制器上时,才会创建该组。
Domain Admins 成员具有管理域的完全访问权限,并且是所有加入域的计算机上的本地管理员组的成员。
Domain Computers 在域中创建的任何计算机(域控制器除外)都将添加到此组中。
Domain Controllers 包含域中的所有 DC。新的 DC 将自动添加到此组。
Domain Guests 此组包括域的内置来宾帐户。此组的成员在以本地来宾身份登录到已加入域的计算机时创建了一个域配置文件。
Domain Users 此组包含域中的所有用户帐户。在域中创建的新用户帐户将自动添加到此组。
Enterprise Admins 此组中的成员身份提供域内的完整配置访问权限。该组仅存在于 AD 林的根域中。此组中的成员被授予进行林范围更改(如添加子域或创建信任)的能力。默认情况下,林根域的管理员帐户是此组的唯一成员。
Event Log Readers 成员可以读取本地计算机上的事件日志。仅当主机提升为域控制器时,才会创建该组。
Group Policy Creator Owners 成员在域中创建、编辑或删除组策略对象。
Hyper-V Administrators 成员可以完全不受限制地访问 Hyper-V 中的所有功能。如果域中存在虚拟 DC,则应将任何虚拟化管理员(如 Hyper-V 管理员的成员)视为域管理员。
IIS_IUSRS 这是 Internet 信息服务 (IIS) 使用的内置组,从 IIS 7.0 开始。
Pre–Windows 2000 Compatible Access 此组的存在是为了向后兼容运行 Windows NT 4.0 及更早版本的计算机。此组中的成员身份通常是剩余的旧配置。它可能导致缺陷,即网络上的任何人都可以从AD读取信息,而无需有效的AD用户名和密码。
Print Operators 成员可以管理、创建、共享和删除连接到域中的域控制器的打印机以及 AD 中的任何打印机对象。允许成员在本地登录到 DC,并可用于加载恶意打印机驱动程序和提升域中的权限。
Protected Users
的成员可获得针对凭据盗窃和 Kerberos 滥用等策略的额外保护。
Read-only Domain Controllers 包含域中的所有只读域控制器。
Remote Desktop Users 此组用于授予用户和组通过远程桌面 (RDP) 连接到主机的权限。无法重命名、删除或移动此组。
Remote Management Users 此组可用于通过 Windows 远程管理 (WinRM)
授予用户对计算机的远程访问权限
Schema Admins 成员可以修改 Active Directory 架构,这是定义所有带有 AD 的对象的方式。此组仅存在于 AD 林的根域中。默认情况下,林根域的管理员帐户是此组的唯一成员。
Server Operators 此组仅存在于域控制器上。成员可以修改服务、访问 SMB 共享和在域控制器上备份文件。默认情况下,此组没有成员。

下面我们提供了一些关于域管理员和服务器操作员的输出。

  1. PS C:\htb> Get-ADGroup -Identity "Server Operators" -Properties *
  2. adminCount : 1
  3. CanonicalName : INLANEFREIGHT.LOCAL/Builtin/Server Operators
  4. CN : Server Operators
  5. Created : 10/27/2021 8:14:34 AM
  6. createTimeStamp : 10/27/2021 8:14:34 AM
  7. Deleted :
  8. Description : Members can administer domain servers
  9. DisplayName :
  10. DistinguishedName : CN=Server Operators,CN=Builtin,DC=INLANEFREIGHT,DC=LOCAL
  11. dSCorePropagationData : {10/28/2021 1:47:52 PM, 10/28/2021 1:44:12 PM, 10/28/2021 1:44:11 PM, 10/27/2021
  12. 8:50:25 AM...}
  13. GroupCategory : Security
  14. GroupScope : DomainLocal
  15. groupType : -2147483643
  16. HomePage :
  17. instanceType : 4
  18. isCriticalSystemObject : True
  19. isDeleted :
  20. LastKnownParent :
  21. ManagedBy :
  22. MemberOf : {}
  23. Members : {}
  24. Modified : 10/28/2021 1:47:52 PM
  25. modifyTimeStamp : 10/28/2021 1:47:52 PM
  26. Name : Server Operators
  27. nTSecurityDescriptor : System.DirectoryServices.ActiveDirectorySecurity
  28. ObjectCategory : CN=Group,CN=Schema,CN=Configuration,DC=INLANEFREIGHT,DC=LOCAL
  29. ObjectClass : group
  30. ObjectGUID : 0887487b-7b07-4d85-82aa-40d25526ec17
  31. objectSid : S-1-5-32-549
  32. ProtectedFromAccidentalDeletion : False
  33. SamAccountName : Server Operators
  34. sAMAccountType : 536870912
  35. sDRightsEffective : 0
  36. SID : S-1-5-32-549
  37. SIDHistory : {}
  38. systemFlags : -1946157056
  39. uSNChanged : 228556
  40. uSNCreated : 12360
  41. whenChanged : 10/28/2021 1:47:52 PM
  42. whenCreated : 10/27/2021 8:14:34 AM

正如我们在上面看到的,该组的默认状态是没有成员,并且默认情况下是域本地组。相比之下,下面看到的组分配了多个成员和服务帐户。域管理员也是全局组,而不是域本地组。有关组成员身份的详细信息,请参阅本模块后面的内容。要警惕你允许谁(如果有的话)访问这些组。如果攻击者获得分配给这些组的用户的访问权限,则可以轻松获得企业密钥。Server OperatorsDomain Admins

域管理员组成员身份

根据其当前的组成员身份以及其他因素(如管理员可以通过组策略 (GPO) 分配的权限),用户可以为其帐户分配各种权限。这篇有关用户权限分配的 Microsoft 文章详细介绍了可在 Windows 中设置的每个用户权限。作为渗透测试人员或防御者,从安全角度来看,并非此处列出的每项权利对我们都很重要,但授予帐户的某些权限可能会导致意外后果,例如权限提升或访问敏感文件。例如,假设我们可以对应用于包含我们控制的一个或多个用户的 OU 的组策略对象 (GPO) 获得写入访问权限。在此示例中,我们可以潜在地利用 SharpGPOAbuse 等工具将目标权限分配给用户。我们可能会在域中执行许多操作,以使用这些新权限进一步访问我们。一些示例包括:

特权 描述
SeRemoteInteractiveLogonRight 此权限可能为我们的目标用户提供通过远程桌面 (RDP) 登录到主机的权限,这可能用于获取敏感数据或提升权限。
SeBackupPrivilege 这授予用户创建系统备份的能力,并可用于获取可用于检索密码(如 SAM 和系统注册表配置单元以及 NTDS.dit Active Directory 数据库文件)的敏感系统文件的副本。
SeDebugPrivilege 这允许用户调试和调整进程的内存。有了这个权限,攻击者可以利用Mimikatz
等工具读取本地系统管理局(LSASS)进程的内存空间,并获取存储在内存中的任何凭据。
SeImpersonatePrivilege 此特权允许我们模拟特权帐户的令牌,例如 .这可以与JuicyPotato,RogueWinRM,PrintSpoofer等工具一起使用,以提升目标系统上的权限。NT AUTHORITY\\SYSTEM
SeLoadDriverPrivilege 具有此权限的用户可以加载和卸载设备驱动程序,这些驱动程序可能用于提升权限或危害系统。
SeTakeOwnershipPrivilege 这允许进程获取对象的所有权。在最基本的级别上,我们可以使用此权限来访问文件共享或共享上的文件,否则我们无法访问这些文件共享。

有许多技术可用于滥用用户权限,详见此处此处。虽然超出了本模块的范围,但必须了解将错误的权限分配给帐户在 Active Directory 中可能产生的影响。一个小的管理错误可能会导致整个系统或企业受到损害。

查看用户权限

登录到主机后,键入该命令将列出分配给当前用户的所有用户权限。某些权限仅对管理用户可用,并且只能在运行提升的 CMD 或 PowerShell 会话时列出/利用。提升权限和用户帐户控制 (UAC) 的这些概念是 Windows Vista 中引入的安全功能,默认情况下,除非绝对必要,否则这些功能默认限制应用程序以完全权限运行。如果我们比较和对比我们作为管理员在非提升的控制台和提升的控制台中可用的权限,我们将看到它们有很大不同。首先,让我们看一下标准 Active Directory 用户可用的权限。
whoami /priv

标准域用户权限

  1. PS C:\htb> whoami /priv
  2. PRIVILEGES INFORMATION
  3. ----------------------
  4. Privilege Name Description State
  5. ============================= ============================== ========
  6. SeChangeNotifyPrivilege Bypass traverse checking Enabled
  7. SeIncreaseWorkingSetPrivilege Increase a process working set Disabled

我们可以看到这些权利是非常的,上面概述的“危险”权利都不存在。接下来,让我们看一下特权用户。以下是域管理员用户可用的权限。
limited

未提升的域管理员权限

我们可以在控制台中看到以下内容,该控制台似乎对标准域用户来说并不多。这是因为,默认情况下,Windows 系统不会向我们启用所有权限,除非我们在提升的上下文中运行 CMD 或 PowerShell 控制台。这是为了防止每个应用程序以尽可能高的权限运行。这由称为用户帐户控制 (UAC) 的东西控制,Windows 权限提升模块中对此进行了深入介绍。non-elevatet

未提升的域管理员权限

  1. PS C:\htb> whoami /priv
  2. PRIVILEGES INFORMATION
  3. ----------------------
  4. Privilege Name Description State
  5. ============================= ==================================== ========
  6. SeShutdownPrivilege Shut down the system Disabled
  7. SeChangeNotifyPrivilege Bypass traverse checking Enabled
  8. SeUndockPrivilege Remove computer from docking station Disabled
  9. SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
  10. SeTimeZonePrivilege Change the time zone Disabled

域管理员权限已提升

如果我们从提升的 PowerShell 控制台输入相同的命令,我们可以看到可供我们使用的权限的完整列表:

  1. PS C:\htb> whoami /priv
  2. PRIVILEGES INFORMATION
  3. ----------------------
  4. Privilege Name Description State
  5. ========================================= ================================================================== ========
  6. SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
  7. SeMachineAccountPrivilege Add workstations to domain Disabled
  8. SeSecurityPrivilege Manage auditing and security log Disabled
  9. SeTakeOwnershipPrivilege Take ownership of files or other objects Disabled
  10. SeLoadDriverPrivilege Load and unload device drivers Disabled
  11. SeSystemProfilePrivilege Profile system performance Disabled
  12. SeSystemtimePrivilege Change the system time Disabled
  13. SeProfileSingleProcessPrivilege Profile single process Disabled
  14. SeIncreaseBasePriorityPrivilege Increase scheduling priority Disabled
  15. SeCreatePagefilePrivilege Create a pagefile Disabled
  16. SeBackupPrivilege Back up files and directories Disabled
  17. SeRestorePrivilege Restore files and directories Disabled
  18. SeShutdownPrivilege Shut down the system Disabled
  19. SeDebugPrivilege Debug programs Enabled
  20. SeSystemEnvironmentPrivilege Modify firmware environment values Disabled
  21. SeChangeNotifyPrivilege Bypass traverse checking Enabled
  22. SeRemoteShutdownPrivilege Force shutdown from a remote system Disabled
  23. SeUndockPrivilege Remove computer from docking station Disabled
  24. SeEnableDelegationPrivilege Enable computer and user accounts to be trusted for delegation Disabled
  25. SeManageVolumePrivilege Perform volume maintenance tasks Disabled
  26. SeImpersonatePrivilege Impersonate a client after authentication Enabled
  27. SeCreateGlobalPrivilege Create global objects Enabled
  28. SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
  29. SeTimeZonePrivilege Change the time zone Disabled
  30. SeCreateSymbolicLinkPrivilege Create symbolic links Disabled
  31. SeDelegateSessionUserImpersonatePrivilege Obtain an impersonation token for another user in the same session Disabled

用户权限根据用户所在的组或其分配的权限而增加。下面是授予组成员的权限的示例。此组中的用户具有当前受 UAC 限制的其他权限(默认情况下,在标准控制台会话中不启用其他权限(如功能者)。不过,从此命令中我们可以看到,它们具有 ,这意味着它们可以关闭域控制器。此权限本身不能用于获取对敏感数据的访问权限,但如果它们在本地(而不是通过 RDP 或 WinRM 远程)登录到域控制器,则可能导致大量服务中断。
Backup Operators``SeBackupPrivilege``SeShutdownPrivilege

备份操作员权限

  1. PS C:\htb> whoami /priv
  2. PRIVILEGES INFORMATION
  3. ----------------------
  4. Privilege Name Description State
  5. ============================= ============================== ========
  6. SeShutdownPrivilege Shut down the system Disabled
  7. SeChangeNotifyPrivilege Bypass traverse checking Enabled
  8. SeIncreaseWorkingSetPrivilege Increase a process working set Disabled

作为攻击者和防御者,我们需要了解通过 Active Directory 中内置安全组的成员身份授予用户的权限。发现看似低特权的用户添加到其中一个或多个组中的情况并不少见,这些用户可用于进一步访问或破坏域。应严格控制对这些组的访问。通常,最佳做法是将大多数这些组留空,并且仅在需要执行一次性操作或需要设置重复性任务时才将帐户添加到组中。添加到本节中讨论的组之一或被授予额外权限的任何帐户都应受到严格控制和监视,分配一个非常强的密码或密码短语,并且应与系统管理员用于执行其日常职责的帐户分开。
现在,我们已经开始触及 AD 中与用户权限和内置组成员身份相关的一些安全注意事项,让我们来看看保护 Active Directory 安装的一些关键点。