Active Directory最佳安全检查点(AD域易被攻击的薄弱点)

Active Directory最佳安全检查点(AD域易被攻击的薄弱点)

目录导航

本文由Google智障翻译自动生成,如有拗口晦涩难懂处,请访问原文自行翻译
https://www.cert.ssi.gouv.fr/uploads/guide-ad.html
[法语+英语]

介绍

Active Directory是Microsoft信息系统安全的神经中心,是集中管理帐户,资源和权限的关键元素。在此目录上获得提升的特权,可以即时,完全地控制由此管理的所有资源。

鉴于最近的攻击的操作方法是大多数信息系统的基础,Active Directory目录的针对性的分析突显了它们的针对性增加。确实,在目录上获得了最高权限的攻击者随后可以在整个信息系统上部署恶意负载,特别是通过GPO或使用直接连接(psexec,wmiexec)。因此,低级别的目录安全性会危害整个信息系统,并给组织带来系统性风险。

ANSSI的观察结果表明,Active Directory目录的安全性严重且反复出现缺乏成熟度的情况。因此,安全级别随时间和对象处理或执行管理动作的速度而显着降低。

为了应对这种不断增长的风险,ANSSI已开发并提供了一系列检查点,以支持DSI和SSI链监视Active Directory目录的安全级别。打算根据研究工作,审计中发现的做法以及对不利操作模式的分析来定期充实此收藏集。

每个检查点的目的是验证是否存在可能削弱安全级别并且在必要时可以用于攻击的做法。根据发现的弱点,为Active Directory分配一个级别:

  • 1 Active Directory提出了严重的配置问题,这些问题立即威胁到所有托管资源。必须尽快采取纠正措施;
  • 2 Active Directory具有足够的配置和管理差距,足以危害所有托管资源。短期内应采取纠正措施;
  • 3 自安装以来,Active Directory的基本安全级别并未降低;
  • 4 Active Directory具有良好的安全性;
  • 5 Active Directory具有最先进的安全级别。

要获得级别,Active Directory必须成功通过较低级别的所有检查点。一级目录5 已成功通过所有检查点。

每个详细的控制点均具有以下特征:

  • 控制点标题和相关级别;
  • 控制点的标识符;
  • 对检查点试图描述的脆弱性或诱导安全性减弱的描述;
  • 建议用于验证检查点并加强目录的配置。

如果适用,将提供官方文档以供进一步研究。

由ANSSI开发的ADS(Active Directory安全)服务为受管制的运营商和公共领域提供对Active Directory目录的审核功能,旨在使他们可以查看其目录的安全级别以及通过逐步采用适当的措施并随着时间进行监控,来支持他们的强化。ADS服务实现了此集合中提供的所有控制点。  

上下文:控制路径
Active Directory最佳安全检查点(AD域易被攻击的薄弱点)

控制路径由一组直接控制关系组成,其中每个关系都通过特定属性将一个对象的控制权转换为另一个对象的控制权。因此,控制路径代表了攻击者可以达到目标的手段,并可以识别域管理中的偏差,验证所考虑目标周围安全边界的应用,而且还可以揭示攻击者在妥协后留下的持久性手段。

上下文:特权组

特权组是在林中拥有所有权利和特权或能够将它们分配给自己的管理组和操作组:

  • “  董事 ”;
  • “  计划管理员 ”;
  • “公司  董事 ”;
  • “  域 管理员”:这些管理员有权读取所有帐户的机密数据库,从而提取所有特权帐户的机密;
  • “  帐户操作员 ”:这些操作员可以管理所有用户帐户,计算机和组;除受adminSDHolder保护的帐户外 ;
  • “  服务器操作员 ”:这些操作员可以管理域控制器,因此可以恢复所有特权帐户的机密;
  • “  备份操作员 ”:这些操作员可以备份域控制器,因此可以从此备份中提取所有特权帐户的机密;
  • “  打印操作员 ”:这些操作员可以在域控制器上加载打印驱动程序,因此可以加载恶意驱动程序,例如,提取所有特权帐户的机密。

默认情况下,“运算符”组为空,并且不应包含任何成员。


在Active Directory中可以显示一个用于多个安全级别的检查点。目标水平越高,其标准就越严格。迄今为止,仅发布允许验证安全级别13的要点。更高级别的检查点将在本文档的将来更新中发布。

12 命名上下文根源的危险控制路径

ID:vuln1_permissions_naming_context vuln2_permissions_naming_context   

描述

存在指向Active Directory ldap根目录的危险控制路径,称为命名上下文

根据应用于命名上下文的控件,攻击者可以完全控制Active Directory。

建议

Active Directory包含几个称为命名上下文的分区 :

  • Domain,包含有关域中对象的信息,例如计算机,用户,组等。
  • Configuration,包含林的配置元素;
  • Schema,包含所有对象的定义;
  • DomainDns,包含域级别的DNS区域;
  • ForestDns,包含林级DNS区域。

强烈建议不要更改命名上下文根的默认权限。因此,建议删除这些危险的权限。通常使用ADSI Edit管理单元或ldp实用程序进行更正。

其中某些权限(尤其是与Microsoft Exchange服务相关的权限)可能受到必须应用的安全补丁程序的约束。当涉及以下对象时,尤其如此:

  • Exchange Windows权限;
  • Exchange可信子系统。

位于域根上的与Exchange权限有关的文档:

Azure ADConnect帐户(MSOL)的文档:

如果需要特定的权限,请考虑使帐户或委派组本身具有特权。因此,必须对它们进行适当的保护,并且所应用的权限必须至少与对adminSDHolder所应用的权限一样严格。因此,有必要对它们应用“安全”权限。为此,建议使用Azure AD Connect随附的AdSyncConfig.psm1模块命令。此命令删除继承并应用受限权限(ACE)。 Set-ADSyncRestrictedPermissions

Set-ADSyncRestrictedPermissions在特权帐户上应用“安全”权限的示例:Import-Module .\AdSyncConfig.psm1
$credential = Get-Credential
Set-ADSyncRestrictedPermissions -ADConnectorAccountDN "CN=COMPTE,CN=Users,DC=exemple,DC=ads" -Credential $credential

注意:可以使用内置实用程序msiexec从Azure AD Connect安装文件中直接提取AdSyncConfig.psm1模块 : msiexec /a "AzureADConnect.msi" /qb TARGETDIR=c:\temp\

可以从以下地址下载安装包:https : //go.microsoft.com/fwlink/?LinkId=615771。  

12 ADMINSDHOLDER对象的危险权限

ID:vuln1_permissions_adminsdholder vuln2_permissions_adminsdholder   

描述

adminSDHolder对象上存在危险权限。这些权限允许受影响的帐户完全控制Active Directory。在分层管理模型中,这些权限破坏了方法0的密封。

建议
一般情况

adminSDHolder对象的权限定期应用于Active Directory的所有受保护对象(管理和操作组的成员)。默认情况下,只有特权对象才具有adminSDHolder对象的权限。因此,此机制可以保护Active Directory的最高特权用户和组。

强烈建议不要更改此对象的默认权限。因此,建议删除adminSDHolder对象上的危险权限,以便返回默认状态。通常使用ADSI Edit管理单元或ldp实用程序进行更正。

特别案例

作为管理林的实现的一部分,在以下情况下,可以向adminSDHolder上的组添加权限:

  • 与adminSDHolder对象最初应用的权限相比,该组的权限更具限制性 ;
  • 该组的权限继承已禁用。

如果权限链接到Exchange(例如, WRITE_SPN),则有必要应用临时Exchange更新。可通过以下URL访问与在adminSDHolder对象上设置的Exchange权限有关的文档:

如果权限与Azure ADConnect(MSOL)帐户相关,则必须重新配置AD中与指定MSOL帐户相关的权限。可通过以下URL访问与Azure ADConnect帐户(MSOL)有关的文档:

12 域控制器的危险控制路径

ID:vuln1_permissions_dc vuln2_permissions_dc   

描述
一般情况

域控制器存在危险的控制路径。这样,受影响的帐户就可以完全控制Active Directory。例如,攻击者可以复制所有机密(包括域管理员的机密),再使用它们,从而完全控制域。

只读域控制器

在只读域控制器(RODC)的特定情况下,攻击者可以复制此RODC上授权的所有机密信息,并成为本地管理员。控制MANAGED_BY 允许您成为本地RODC管理员。

建议

具有域控制器权限的帐户应被视为特权帐户。然后有必要使用adminSDHolder机制保护它们。为此,这些帐户必须属于 公司Administrators 或域Administrators 组。

作为建立管理林的一部分,在以下情况下,可以在域控制器上添加权限:

  • 该组是DOMAIN LOCAL类型 ;
  • 该组的权限比adminSDHolder的权限更具限制性。

12 DPAPI密钥的危险控制路径

ID:vuln1_permissions_dpapi vuln2_permissions_dpapi   

描述

存在指向DPAPI密钥的危险控制路径。如果攻击者获得了该域的DPAPI密钥,则他可以在事先访问此加密数据的情况下解密受DPAPI保护的所有机密。

建议

Microsoft Windows提供了一种数据保护机制(DPAPI),其目的是保护用户或系统进程的数据(通常是文件或密码)。例如,Windows密码管理器,多个Web浏览器,多个即时通讯程序,Wi-Fi密钥和证书的存储都使用DPAPI。受保护的数据由称为主密钥的密钥加密,该密钥本身受用户密码或域密钥备份密钥)的保护。注意:DPAPI机制被认为是健壮的,因此在这一点上没有质疑。

强烈建议不要修改DPAPI密钥的默认权限。因此,建议删除这些密钥上的危险权限,以便返回默认状态。通常使用ADSI Edit管理单元或ldp实用程序进行更正。

12 GMSA密钥的危险控制路径

ID:vuln1_permissions_gmsa_keys vuln2_permissions_gmsa_keys   

描述

组管理服务帐户 (gMSA)的密钥存在危险的控制路径。对这些密钥具有控制权的攻击者能够检索与这些密钥关联的gMSA的密码。

建议

gMSA成员帐户从用户和计算机类继承某些属性,因此可以在管理服务帐户方面提供更大的灵活性。该GMSA使用密钥分发服务(KDS)来创建和管理帐户的密码。这些帐户的密码是由KDS管理的密钥派生的。

强烈建议不要修改这些对象的默认权限。因此,建议删除对它们的危险权限,以便返回默认状态。可以使用命令进行更正Dsacls <DN> /S /T。此命令从架构恢复默认权限。

12 SYSVOL的DFSR参数的危险控制路径

ID:vuln1_permissions_dfsr_sysvol vuln2_permissions_dfsr_sysvol   

描述

系统卷(SYSVOL)上的Microsoft卷复制引擎(DFSR)设置存在危险的控制路径。攻击者可以注册SYSVOL的新DFS副本,修改其内容并最终强制对其进行同步。组策略模板和/或修改后的脚本将由临时GPO应用(例如,应用于域控制器),从而实现完全域控制。

建议

强烈建议不要更改此对象的默认权限。因此,建议删除对SYSVOL的DFSR参数的危险权限,以便返回默认状态。通常使用ADSI Edit管理单元或ldp实用程序进行更正。

如果需要特定的权限,请考虑使帐户或委派组本身具有特权。因此,必须对它们进行适当的保护,并且所应用的权限必须至少与对adminSDHolder所应用的权限一样严格。因此,有必要对它们应用“安全”权限。为此,建议使用Azure AD Connect随附的AdSyncConfig.psm1模块命令。此命令删除继承并应用受限权限(ACE)。 Set-ADSyncRestrictedPermissions

Set-ADSyncRestrictedPermissions在特权帐户上应用“安全”权限的示例:Import-Module .\AdSyncConfig.psm1
$credential = Get-Credential
Set-ADSyncRestrictedPermissions -ADConnectorAccountDN "CN=COMPTE,CN=Users,DC=exemple,DC=ads" -Credential $credential

注意:可以使用内置实用程序msiexec从Azure AD Connect安装文件中直接提取AdSyncConfig.psm1模块 : msiexec /a "AzureADConnect.msi" /qb TARGETDIR=c:\temp\

可以从以下地址下载安装包:https : //go.microsoft.com/fwlink/?LinkId=615771。  

12 通往图对象的危险控制路径

ID:vuln1_permissions_schema vuln2_permissions_schema   

描述

存在指向图表对象的危险控制路径。拥有架构控制权的攻击者可以完全控制Active Directory。

建议

架构是Active Directory 的三个分区之一(也称为命名上下文)。它包含Active Directory林中所有对象的定义。

强烈建议不要更改这些对象的默认权限。因此,建议删除对模式对象的危险权限,以便返回默认状态。可以使用命令进行更正。此命令从架构恢复默认权限。 Dsacls <DN> /S /T

如果需要特定的权限,请考虑使帐户或委派组本身具有特权。因此,必须对它们进行适当的保护,并且所应用的权限必须至少与对adminSDHolder所应用的权限一样严格。因此,有必要对它们应用“安全”权限。为此,建议使用Azure AD Connect随附的AdSyncConfig.psm1模块命令。此命令删除继承并应用受限权限(ACE)。 Set-ADSyncRestrictedPermissions

Set-ADSyncRestrictedPermissions在特权帐户上应用“安全”权限的示例:Import-Module .\AdSyncConfig.psm1
$credential = Get-Credential
Set-ADSyncRestrictedPermissions -ADConnectorAccountDN "CN=COMPTE,CN=Users,DC=exemple,DC=ads" -Credential $credential

注意:可以使用内置实用程序msiexec从Azure AD Connect安装文件中直接提取AdSyncConfig.psm1模块 : msiexec /a "AzureADConnect.msi" /qb TARGETDIR=c:\temp\

可以从以下地址下载安装包:https : //go.microsoft.com/fwlink/?LinkId=615771。  

1 通往MICROSOFTDNS服务器的危险控制路径

ID:vuln1_permissions_msdns  

描述

Microsoft DNS服务器存在危险的控制路径。

有权写入容器CN = MicrosoftDNS,CN = System的属性的帐户可以具有由DNS服务执行的任意代码,该服务通常由域控制器托管。默认情况下,DnsAdmins组的成员具有此权限。

建议

建议删除这些帐户的容器CN = MicrosoftDNS,CN = System的属性上的写许可权。

如果已经为DNS的管理建立了这样的许可,则可以手动创建委派。通常使用ldp实用程序完成此委派,可以分两步完成。

步骤1:允许访问使用DNS管理管理单元所需的RPC

在域分区的CN = System容器中,将以下权限委派给CN = MicrosoftDNS容器 :

步骤2:授权修改DNS区域

在分区DC = DomainDnsZones中,在需要管理的每个区域上,在容器CN = MicrosoftDNS上通过继承委派以下权限 :

注意不要忘记委派反向区域(反向DNS)。

注意:要更改ldp中的命名上下文(分区),必须使用显示菜单,树结构并使用下拉菜单选择DomainDnsZones。

如果需要特定的权限,请考虑使帐户或委派组本身具有特权。因此,必须对它们进行适当的保护,并且所应用的权限必须至少与对adminSDHolder所应用的权限一样严格。因此,有必要对它们应用“安全”权限。为此,建议使用Azure AD Connect随附的AdSyncConfig.psm1模块命令。此命令删除继承并应用受限权限(ACE)。 Set-ADSyncRestrictedPermissions

Set-ADSyncRestrictedPermissions在特权帐户上应用“安全”权限的示例:Import-Module .\AdSyncConfig.psm1
$credential = Get-Credential
Set-ADSyncRestrictedPermissions -ADConnectorAccountDN "CN=COMPTE,CN=Users,DC=exemple,DC=ads" -Credential $credential

注意:可以使用内置实用程序msiexec从Azure AD Connect安装文件中直接提取AdSyncConfig.psm1模块 : msiexec /a "AzureADConnect.msi" /qb TARGETDIR=c:\temp\

可以从以下地址下载安装包:https : //go.microsoft.com/fwlink/?LinkId=615771。  

1 适用于特权组成员的GPO的危险控制路径

ID:vuln1_permissions_gpo_priv  

描述

应用于特权组成员的GPO存在危险的控制路径。控制了这些GPO的攻击者可以在这些成员使用的计算机上执行代码,并提高其特权。

建议

建议检查对GPO对象设置的权限。

通常使用ADSI Edit管理单元或ldp实用程序进行更正。

1 特权组成员的危险控制路径

ID:vuln1_privileged_members_perm vuln2_privileged_members_perm   

描述

特权组成员存在危险的控制路径。这些控制路径与权限或特权相对应,允许非特权用户控制特权帐户。

建议

此漏洞中引用的大多数控制路径也链接到“ adminSDHolder对象上的危险权限”和“域控制器的危险控制路径”漏洞。应用与这些漏洞相关的建议将纠正大多数此类路径。

对于其余路径,建议删除这些危险权限。通常使用ADSI Edit管理单元或ldp实用程序进行更正。

如果需要特定的权限,请考虑使帐户或委派组本身具有特权。因此,必须对它们进行适当的保护,并且所应用的权限必须至少与对adminSDHolder所应用的权限一样严格。因此,有必要对它们应用“安全”权限。为此,建议使用Azure AD Connect随附的AdSyncConfig.psm1模块命令。此命令删除继承并应用受限权限(ACE)。 Set-ADSyncRestrictedPermissions

Set-ADSyncRestrictedPermissions在特权帐户上应用“安全”权限的示例:Import-Module .\AdSyncConfig.psm1
$credential = Get-Credential
Set-ADSyncRestrictedPermissions -ADConnectorAccountDN "CN=COMPTE,CN=Users,DC=exemple,DC=ads" -Credential $credential

注意:可以使用内置实用程序msiexec从Azure AD Connect安装文件中直接提取AdSyncConfig.psm1模块 : msiexec /a "AzureADConnect.msi" /qb TARGETDIR=c:\temp\

可以从以下地址下载安装包:https : //go.microsoft.com/fwlink/?LinkId=615771。  

1 特权组的大量成员

ID:vuln1_privileged_members  

描述

该林包含50多个特权帐户。

大量特权帐户的存在无法确保控制的可能性:这导致特权帐户的可视性很差,而这是真正必要的,这增加了忘记停用或删除未使用的帐户的风险,等等

建议

Active Directory中的特权组允许作为这些组成员的用户拥有对林的完整权限。因此,使用这些组(“ 管理员 ”和“  域管理员 ”组除外)  会产生错误的安全感。

必须建立一个允许减少特权帐户数量的管理模型。为此,有必要参考每个帐户的管理需求并进行临时授权。例如,对于需要创建和删除用户的管理员,必要的委派将是:

  • 生育孩子
  • 删除一个孩子;
  • 书面财产;
  • 重设密码。

通常使用ldp实用程序完成此委派。

注意:Active Directory中的“控制助手委派”还允许您委派某些管理操作。尽管易于使用,但该向导为某些委托设置了太多特权。因此,建议使用ldp实用程序。

最后,必须实施以下成员资格规则:

  • 操作组:全部为空;
  • 复制组:全部为空;
  • 林级管理组(公司和图表):空并且仅在需要这些权限的操作期间临时填充;
  • 域级管理组:无服务帐户。

1 域控制器不一致

ID:vuln1_dc_inconsistent_uac  

描述

林中的某些域控制器的属性处于不一致状态。这些不一致可能是配置错误(手动或软件)或恶意意图痕迹的征兆。

建议

每个域控制器必须具有以下特征:

  • 域控制器的计算机对象的userAccountControl属性必须包含SERVER_TRUST_ACCOUNT(0x00002000)| TRUSTED_FOR_DELEGATION(0x00080000)= 0x00082000  ;
  • RODC机器对象的userAccountControl属性必须包含PARTIAL_SECRETS_ACCOUNT(0x04000000)| TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION(0x01000000)| WORKSTATION_TRUST_ACCOUNT(0x00001000)= 0x05001000  ;
  • 服务器类型对象必须存在于配置分区中,并且具有serverReference属性,该属性带有计算机帐户的DN:
  • 服务器对象必须具有类型为nTDSDSA的NTDS设置子对象(或nTDSDSARO,如果它是只读域控制器)。

通常使用ldp实用程序进行更正。

注意:某些发布者会为其产品创建这种类型的配置。对于编辑Riverbed来说尤其如此。

1 将受约束的身份验证委派给域控制器的服务

ID:vuln1_delegation_a2d2  

描述

帐户已将身份验证委托限制在域控制器的服务中。它们允许帐户通过域控制器提升其特权。

建议

受约束的身份验证委派允许一个帐户使用另一个用户的身份(先前已使用此帐户进行身份验证)通过Kerberos服务进行身份验证。如果此委派被授权用于特权资源(特别是域控制器上提供的服务),则它允许帐户提升其特权并破坏森林。

不应将约束身份验证委派给域控制器上的服务。

对于受影响的帐户,请在msDS-AllowedToDelegateTo属性中删除所有引用域控制器的服务主体名称(SPN)。可以直接从用户和计算机管理控制台的“委派”选项卡完成此操作。

1 通过协议转换将受约束的身份验证委派给域控制器的服务

ID:vuln1_delegation_t2a4d  

描述

帐户已将身份验证委托与协议转换约束到域控制器的服务。它们允许帐户通过域控制器提升其特权。

建议

通过协议转换委派受约束的身份验证允许帐户使用另一个用户的身份向Kerberos服务进行身份验证。如果此委派被授权用于特权资源(特别是域控制器上提供的服务),则它允许帐户提升其特权并破坏森林。

不应将约束身份验证委派给域控制器上的服务。

对于受影响的帐户,请在msDS-AllowedToDelegateTo属性中删除所有引用域控制器的服务主体名称(SPN)。可以直接从用户和计算机管理控制台的“委派”选项卡完成此操作。

1 域控制器上基于资源的约束委派

ID:vuln1_delegation_sourcedeleg  

描述

在域控制器上,配置了基于资源的约束委派。此配置将帐户完全委派给域控制器。

建议

不应使用委托特权资源(例如域控制器的服务)。

与其他类型的基于服务主体名称(SPN)的委派不同,基于资源的约束委派是在目标资源上使用安全描述符来实现的。此安全描述符存储在目标计算机上的msDS-AllowedToActOnBehalfOfOtherIdentity属性中。要删除此委托,必须删除该属性。

可以在PowerShell中完成此修改。例如,该命令允许您在名为MACHINE的计算机上撤回此授权委托。 Set-ADComputer MACHINE -PrincipalsAllowedToDelegateToAccount $Null

1 没有KERBEROS预身份验证的特权帐户

ID:vuln1_kerberos_properties_preauth_priv  

描述

特权帐户不需要Kerberos预身份验证。

建议

预身份验证可确保用户在请求TGT(从域控制器获取的Kerberos票证)时知道其身份验证秘密之一。如果没有预身份验证,则可以获得带有与相应帐户关联的秘密之一的加密票证。然后可以发起攻击以恢复用户密码,如果密码不够健壮,则可以方便地进行攻击。

物业 DONT_REQUIRE_PREAUTH 必须删除这些帐户的密码,并且必须更改密码。

默认情况下,所有用户帐户都需要进行预身份验证,因为所有权 DONT_REQUIRE_PREAUTH未定位。永远不要为域中的特权帐户设置此属性。在与应用程序不兼容的情况下,这必须是应用程序发展的主题。

1 SPN特权帐户

ID:vuln1_spn_priv  

描述

为几个特权帐户设置了servicePrincipalName(SPN)属性。

可能会发动攻击以查找用户的密码,如果密码不够安全,可以方便进行攻击。

建议

SPN允许将Kerberos服务名称与帐户关联。当帐户具有Kerberos服务名称时,任何经过身份验证的用户都可以请求该服务的票证。在这种情况下,将使用与相应帐户关联的Kerberos密钥之一对发出的票证进行加密,从而允许蛮力攻击。默认情况下,只有计算机帐户具有SPN,对于域中的特权帐户,此属性必须始终为空。

一般情况:删除SPN

如果确实需要授予具有SPN的帐户特权,则应删除其servicePrincipalName属性,并更改其密码。

注意:在以下情况下,特权帐户具有SPN是可以容忍的:

  • 该帐户是托管服务帐户(sMSA / gMSA);
  • 要么
    • 完善的密码策略(密码设置对象或PSO)适用于密码长度大于32的帐户 ;
    • 完善的密码策略(密码设置对象或PSO)适用于该帐户,最长有效期为3年  ;
    • 自从上次修改PSO以来,帐户密码已更改;
  • 该帐户只能使用AES算法。
特殊情况:撤回特权组帐户

如果具有SPN的帐户实际上并不需要成为Active Directory特权组的成员,则最好将其从这些组中删除并进行必要的委派。

1 密码永不过期的特权帐户

ID:vuln1_dont_expire_priv  

描述

某些特权帐户的密码不会过期。

如果没有安全机制强制更改这些密码,则恢复特权帐户将使恶意个人长期保留对域的这些访问权限。

建议
一般情况

建议定期更改特权组成员的密码(最多每三年一次)。为了在这些帐户上实施域密码策略,所有权DONT_EXPIRE不应定位。因此,建议删除这些帐户的此属性,并在属性删除后立即定期更新其密码。可以通过在用户帐户(“帐户”标签)的属性中取消选中“密码永不过期”框来执行此操作。

重要说明:建议您不要过于频繁(几个月)强制进行此更新。过于频繁的更新请求在统计上会导致新的较弱的密码选择,这使其适得其反。更改频率必须根据帐户的使用情况进行调整。域施加的密码策略可以是全局的,也可以通过密码设置对象(PSO)机制来完善。

特别案例

如果财产 DONT_EXPIRE已定位,因为更改这些帐户的密码不太容易,这可能意味着这些帐户未用于管理操作(例如,服务帐户)。这些帐户决不能是特权组的成员。正确的是:

  • 从这些组中删除它们;
  • 向他们授予其运作所需的代表团;
  • 记录特定的密码更改过程;
  • 删除财产 DONT_EXPIRE
未使用的帐户

有必要中和不再使用的帐户。以下中和方法具有与删除相同的优点,同时保留了简单停用所提供的可追溯性。要取消帐户,您必须:

  • 禁用账户 ;
  • 将他从他的所有家庭小组中删除;
  • 随机更改您的密码。为了保证随机密码,建议在帐户属性中选择选项“需要智能卡才能打开交互式会话”。这等效于定位属性 ADS_UF_SMARTCARD_REQUIRED在userAccountControl属性中 ;
  • 可能将帐户移至专用的OU;
  • 可能会更新帐户描述字段以指示停用上下文(日期,原因等)。

1 密码已超过3年的特权帐户

ID:vuln1_password_change_priv  

描述

特权帐户密码的最后更改日期已超过3年。

建议
一般情况

为了限制密码盗用的影响,有必要对特权帐户实施密码更新策略。续签的期限必须少于3年。

还必须每3年更改一次“集成管理员”帐户(RID 500,用作碎玻璃帐户,除非极少数情况,否则不得使用)。确实,定期检查它始终可访问并且与它使用相关的过程总是正确是很重要的。

重要说明:建议您不要过于频繁(几个月)强制进行此更新。过于频繁的更新请求在统计上会导致新的较弱的密码选择,这使其适得其反。

服务帐号

如果是无法更改密码的服务帐户,则应:

  • 将他从这些团体中除名;
  • 给它进行运作所需的代表团 
  • 探索使用托管服务帐户(sMSA,gMSA)的可能性。
未使用的帐户

有必要中和不再使用的帐户。这种中和方法具有与删除相同的优点,同时保留了简单停用所提供的可追溯性。要取消帐户,您必须:

  • 禁用账户 ;
  • 将他从所有小组中驱逐出去;
  • 随机更改您的密码。为了保证随机密码,建议在帐户属性中选择选项“需要智能卡才能打开交互式会话”。这等效于定位属性 ADS_UF_SMARTCARD_REQUIRED在userAccountControl属性中 ;
  • 可能将帐户移至专用的OU;
  • 可能会更新帐户描述字段以指示停用上下文(日期,原因等)。

1 计算机帐户密码更改超过45天的域控制器

ID:vuln1_password_change_dc_no_change  

描述

域控制器超过45天未更改其计算机帐户密码,这表明它们的机密未得到更新。

建议

在默认操作中,域控制器会自动定期更改其计算机帐户密码(默认为30天)。应调查阻止域控制器更改其密码的原因。

第一项检查是检查以下注册表项的值:

  • HKLM \ System \ CurrentControlSet \ Services \ Netlogon \ Parameters \ DisablePasswordChange  :必须为0或不存在;
  • HKLM \系统\ CurrentControlSet \服务\ Netlogon \参数\ MaximumPasswordAge  :必须为30。

如果这些值不正确,则应将它们重置为默认值,并确保它们未被GPO定位。

1 非活动域控制器

ID:vuln1_password_change_inactive_dc  

描述

域控制器未通过身份验证的时间超过45天。

建议

在默认操作中,域控制器必须每30天对域进行身份验证并自动更改一次其密码。

缺少域身份验证是不同步计算机的症状。必须重新安装或删除域中不同步的域控制器。在重新安装的情况下,为了避免类型控制路径 所有者建议您使用Djoin实用程序执行脱机域加入。  

1 证书容器的危险控制路径

ID:vuln1_adcs_control  

描述

通往证书容器的危险控制路径存在。这些控制路径使添加恶意证书颁发机构成为可能,因此特别是篡改用户或服务。

建议

在安装Microsoft PKI服务器时,执行安装的用户将自动委派这些容器的权限。

建议删除这些证书容器上的危险权限,以便返回默认状态。通常使用adsiedit.msc控制台或ldp实用程序进行更正。

12 通往证书模型的危险控制路径

ID:vuln1_adcs_template_control vuln2_adcs_template_control   

描述

证书模板存在危险的控制路径。

证书模板的控制允许证书颁发机构生成任意证书。例如,可以通过智能卡为任何用户获得认证证书,从而模拟其身份。

在水平 1个仅显示由至少一台Active Directory证书服务(AD CS)服务器发布的模型。在水平3 所有模型都受影响。

建议

建议删除这些证书模板上的危险权限,以恢复默认状态。通常使用adsiedit.msc控制台,pkiview.msc或ldp实用程序来进行更正。

1 PRIMARYGROUPID小于1000的帐户

ID:vuln1_primary_group_id_1000  

描述

某些用户或计算机的primaryGroupId属性超出建议的默认值。低于1000 的PrimaryGroupID通常是首选。

建议

在Active Directory的操作中,用户或计算机帐户的primaryGroupId属性用于隐式将此帐户分配给一个组,即使该组未由用户的memberOf属性列出。通过此属性在组中的成员资格不会出现在某些界面的组成员列表中。此属性可用于隐藏组中帐户的成员身份。

建议将相关用户或计算机的primaryGroupId属性重新定位为其默认值:

  • 用户:513(域用户)或514(域访客);;
  • 计算机:515(域中的计算机);
  • 域控制器:516(域控制器);
  • 只读域控制器(RODC):521(只读域控制器)。

123 证书薄弱

ID:vuln1_certificates_vuln vuln2_certificates_vuln vuln3_certificates_vuln    

描述

某些证书有问题,不应再使用。此漏洞可能出现在各个级别1个, 2 和 3 根据遇到的问题:

  • 1个DSA的使用:数字签名算法(DSA)是由NIST标准化的数字签名算法,并且是1993年采用的数字签名标准规范(FIPS 186)的一部分。FIPS 186-5项目(进行中)建议删除此算法。此删除将禁止使用DSA生成数字签名。;
  • 1个 RSA密钥大小非常小(<1024):使用小于1024位的模块被认为不足以保证实用的安全性;
  • 1个 容易受到ROCA漏洞攻击的密钥:此漏洞使得可以从公共密钥中恢复私钥;
  • 2 证书无法解码:这可能意味着证书格式无效,并且可能无法使用;
  • 3 RSA密钥大小低(<2048):通用安全性存储库(RGS)建议最小大小为2048位,以不超过2030年使用,最小大小为3072位,以用于超过2030年2030年;
  • 3 使用弱算法(与SHA2或SHA3不同)进行签名:MD5或SHA1之类的算法容易受到冲突的影响;
  • 3RSA公开指数弱(<65537):RSA加密和解密计算涉及模块以外的其他两个数据,称为公开指数和秘密指数。一般安全参考标准(RGS)建议使用大于65536的公共参展商。

恶意个人可能试图利用这些漏洞之一来生成具有有效签名的恶意证书,从而使他们可以冒充任何用户。

建议
有效认证机构的情况

建议您撤销有问题的证书并重新生成它们。子证书也必须重新生成。最后,必须从受信任的容器中清除过期的证书。

生成新证书时,请确保:

  • DSA算法不用于签署证书(最好使用RSA或ECDSA);
  • RSA密钥的大小至少为2048位,并且公共指数大于65536;
  • RSA密钥是使用最新的库生成的(以避免ROCA漏洞)。
认证机构已过期

如果证书已过期,建议将其从Active Directory中公认的权限列表中删除。如果使用代码签名,则可以由GPO重新部署证书颁发机构。

1 DNSADMINS组成员帐户

ID:vuln1_dnsadmins  

描述

有几个帐户是DnsAdmins组的成员。

DnsAdmins组的成员有权管理Microsoft DNS服务。在这些权利中,有可能由DNS服务执行任意代码,该服务通常由域控制器托管。

建议

建议不要使用DNSAdmin组。通常,必须使用ldp实用程序执行委派,以创建DNS管理(区域的创建/删除,记录管理等)。该授权可以分两个阶段进行。

步骤1:允许访问使用DNS管理管理单元所需的RPC

在域分区的CN = System容器中,将以下权限委派给CN = MicrosoftDNS容器 :

步骤2:授权修改DNS区域

在分区DC = DomainDnsZones中,在需要管理的每个区域上,在容器CN = MicrosoftDNS上通过继承委派以下权限 :

注意不要忘记委派反向区域(反向DNS)。

注意:要更改ldp中的命名上下文(分区),必须使用显示菜单,树结构并使用下拉菜单选择DomainDnsZones。

此外,必须在DnsAdmins组上执行以下操作 :

  • 清空组;
  • 确保组所有者是域管理员 ;
  • (可选)放置ACE,禁止所有人更改所有者,更改访问权限和编写组成员。

如果需要特定的权限,请考虑使帐户或委派组本身具有特权。因此,必须对它们进行适当的保护,并且所应用的权限必须至少与对adminSDHolder所应用的权限一样严格。因此,有必要对它们应用“安全”权限。为此,建议使用Azure AD Connect随附的AdSyncConfig.psm1模块命令。此命令删除继承并应用受限权限(ACE)。 Set-ADSyncRestrictedPermissions

Set-ADSyncRestrictedPermissions在特权帐户上应用“安全”权限的示例:Import-Module .\AdSyncConfig.psm1
$credential = Get-Credential
Set-ADSyncRestrictedPermissions -ADConnectorAccountDN "CN=COMPTE,CN=Users,DC=exemple,DC=ads" -Credential $credential

注意:可以使用内置实用程序msiexec从Azure AD Connect安装文件中直接提取AdSyncConfig.psm1模块 : msiexec /a "AzureADConnect.msi" /qb TARGETDIR=c:\temp\

可以从以下地址下载安装包:https : //go.microsoft.com/fwlink/?LinkId=615771。  

13 DNS区域配置错误

ID:vuln1_dnszone_bad_prop vuln3_dnszone_bad_prop   

描述

DNS区域存在配置问题。

例如,值 ZONE_UPDATE_UNSECURE (属性DSPROPERTY_ZONE_ALLOW_UPDATE)允许在不进行身份验证的情况下更新DNS记录。恶意个人可以利用此漏洞来:

  • 任意添加一个DNS名称;
  • 替换名称以篡改管理界面并等待身份验证以窃取标识符。

注意:在水平 1个仅增加域的区域和关联的_msdcs区域;在水平 3 所有区域都重新组装。

建议

如果DSPROPERTY_ZONE_ALLOW_UPDATE属性为 ZONE_UPDATE_UNSECURE,建议使用以下命令将DNS区域重新配置为仅允许安全更新: dnscmd <servername> /Config <zone> /AllowUpdate 2

12 危险的DSHEURISTICS设置

ID:vuln1_dsheuristics_bad vuln2_dsheuristics_bad   

描述

在dSHeuristics属性中配置了危险参数。此漏洞可能出现在各个级别1 和 2 根据遇到的问题:

  • 1如果fAllowAnonNSPI不同于0;
  • 1如果dwAdminSDExMask不为0;
  • 2如果fLDAPBlockAnonOps为2
建议

dSHeuristics属性用于定义启发式,用于确定Active Directory某些机制的功能。例如 :

  • fLDAPBlockAnonOps允许对LDAP操作进行授权而无需身份验证;
  • fAllowAnonNSPI允许授权对名称服务提供者接口(NSPI)的匿名访问;
  • dwAdminSDExMask允许您定义受SDProp机制保护的组。

必须修改dSHeuristics属性中配置的危险参数,并将其重置为默认值:

  • fLDAPBlockAnonOps不得配置为2以外的其他值;
  • fAllowAnonNSPI必须为0;
  • dwAdminSDExMaMa必须为0。

通常使用adsiedit.msc控制台或ldp实用程序进行更正。

1 未过滤的域类型出站信任关系

ID:vuln1_trusts_domain_notfiltered  

描述

林中的一个或多个域无需过滤即可信任外部域。

攻击了外部域的攻击者可以欺骗域中任何用户或计算机的身份(RID小于1000的帐户除外,该帐户不包括默认存在的用户或组)。这样,该恶意个人就有可能访问域中的所有数据。如果存在欺骗帐户的控制路径,它也可以将其特权提升为“  域管理员 ”,从而损害整个林。

建议

以来 Windows 2003,则可以过滤批准的外部域。这种机制称为“隔离”。此筛选可防止来自受信任域的任何用户模仿来自另一个域的用户。相关的信任关系必须启用此隔离机制。可以通过命令执行此操作。 netdom trust <domaine> /domain:<domaine_externe_approuvé> /Quarantine:yes

另外,建议不要建立从信任林到信任/敏感度较低的域的出站信任关系。

注意:信任关系的类型通过某些ldap属性的存在或不存在来验证。此漏洞中指出的外部关系是由于缺少属性而得出的WITHIN_FOREST。在某些情况下,当森林变旧时,内部信任关系没有正确标记WITHIN_FOREST。在这种情况下,必须执行手动操作以在关系上定位正确的属性。

1 启用了SID历史记录的出站林信任关系

ID:vuln1_trusts_forest_sidhistory  

描述

森林信任外部森林,但过滤功能减弱。攻破了外部林的攻击者可以欺骗该林中任何用户或计算机的身份(RID小于1000的帐户除外,该帐户不包括默认存在的用户或组)。这样,该恶意个人就有可能访问林中的所有数据。如果存在欺骗帐户的控制路径,它也可以将其特权提升为“  域管理员 ”,从而损害整个林。

建议

通过构建,可以过滤林类型信任关系。但是,此过滤功能已被削弱,以允许称为sIDHistory的机制发挥作用,特别是在森林迁移期间使用。

事先证明削弱这些森林之间的过滤是合理的。这可能是由于需要sIDHistory机制的正在进行的迁移。如果是这种情况,则有必要在重新激活默认过滤之前完成此迁移。可以使用命令返回默认过滤状态。 netdom trust <forêt> /domain:<forêt_tierce_approuvée> /EnableSIDHistory:no

1 大量未使用的活动帐户

ID:vuln1_user_accounts_dormant  

描述

森林包含超过25%的休眠帐户。休眠帐户对应于未停用的用户帐户或计算机帐户,这些帐户未使用Active Directory进行身份验证已超过一年。这些休眠帐户要么是不经常使用的合法帐户,要么是过时的帐户。

过时的帐户可以使不再需要它们的人(例如,在离开之后)或被攻击者以隐身方式使用的人访问,如果这些帐户获得特权,则更有害。这些帐户的存在还增加了帐户管理工作(权利审查等)。

建议

缺少帐户管理策略(或其应用不佳)会导致域上过时帐户的持续存在。例如,这可以通过用户分配的离开或更改,应用程序的删除或机器的报废来解释。

被视为休眠帐户,但该帐户已在域中停用超过一年。在域中不再存在的休眠帐户被视为过时的。

可以使用两个条件来列出域中的休眠帐户:

  • 密码必须过期且最近更改日期超过一年的帐户(pwdLastSet属性);
  • 超过一年未与域执行身份验证的帐户(LastLogonTimestamp属性)。请注意,仅当域的功能级别至少设置为时,才更新此属性。 Windows 2003

应从这些休眠帐户中确定过期的帐户。确实,附录中提供的部分帐户可能与合法的休眠帐户(例如备份帐户)有关,甚至可能与用于创建仅由委派协商的Exchange邮箱的帐户有关。必须停用这些功能性Exchange帐户并将其放置在适当的OU中。

有必要消除过期的帐户。这种中和方法具有与删除相同的优点,同时保留了简单停用所提供的可追溯性。要取消帐户,您必须:

  • 禁用账户 ;
  • 将他从他的所有家庭小组中删除;
  • 随机更改您的密码。为了保证随机密码,建议在帐户属性中选择选项“需要智能卡才能打开交互式会话”。这等效于定位属性 ADS_UF_SMARTCARD_REQUIRED在userAccountControl属性中 ;
  • 可能将帐户移至专用的OU;
  • 可能会更新帐户描述字段以指示停用上下文(日期,原因等)。

2 具有错误密码策略的特权组成员帐户

ID:vuln2_privileged_members_password  

描述

对特权帐户强加了弱密码策略。

建议

建议对具有以下特权的帐户应用密码策略:

  • 每3年最多续约一次;
  • 长度至少为8个字符。

重要说明:不建议强制过于频繁的更新(几个月)。过于频繁的更新请求在统计上会导致新的较弱的密码选择,这使其适得其反。

2 不受限制的身份验证委托

ID:vuln2_delegation_t4d  

描述

林帐户具有不受约束的身份验证委托。此委派允许篡改使用这些帐户进行身份验证的任何用户的身份。

建议

不受限制的身份验证委派允许帐户使用用户身份使用任何Kerberos服务进行身份验证(之前已使用此帐户进行了身份验证)。默认情况下,它仅授予域控制器,不应授予其他帐户。

对于相关帐户,应删除该财产 TRUSTED_FOR_DELEGATION存在于userAccountControl属性中。可以直接从用户和计算机管理控制台的“委派”选项卡完成此操作。如果要实现Kerberos委派,则必须使用约束委派。

2 没有KERBEROS预身份验证的帐户

ID:vuln2_kerberos_properties_preauth  

描述

帐户不需要Kerberos预身份验证。如果没有预身份验证,则可以获得带有与相应帐户关联的秘密之一的加密票证。然后可以发起攻击以恢复用户密码,如果密码不够健壮,则可以方便地进行攻击。

建议

预身份验证可确保用户在请求TGT(从域控制器获取的Kerberos票证)时知道其身份验证秘密之一。默认情况下,用户帐户需要预身份验证。永远不要为域帐户设置此属性。

一般情况

物业 DONT_REQUIRE_PREAUTH 必须删除这些帐户的密码,并且必须更改密码。

特别案例

在与应用程序不兼容的情况下,这必须是应用程序发展的主题。可以通过以下解决方法来减少此问题:

  • 完善的密码策略(密码设置对象或PSO)适用于密码长度大于32的帐户 ;
  • 完善的密码策略(密码设置对象或PSO)适用于该帐户,最长有效期为3年  ;
  • 自从上次修改PSO以来,帐户密码已更改;
  • 该帐户只能使用AES算法。

2 KERBEROS加密较弱的用户帐户

ID:vuln2_kerberos_properties_deskey  

描述

物业 USE_DES_KEY_ONLY为多个用户设置。此属性允许域控制器发布使用DES算法加密的票证,以确保与较早的Kerberos实现兼容。该算法被认为已过时,不应再使用。它大大降低了发出的Kerberos票证的可靠性,并简化了暴力攻击。

建议

在默认配置下,Windows系统上对加密系列的支持如下:

  • Windows XP和Windows Server 2003:DES和RC4;
  • Windows Vista和Windows Server 2008:DES,RC4和AES;
  • Windows 7和Windows Server 2008 R2(及更高版本):RC4和AES。支持DES,但默认情况下禁用DES。

物业 USE_DES_KEY_ONLY必须从帐户的userAccountControl属性中删除。通过取消选中“为此帐户仅通过Kerberos使用DES加密类型”复选框,可以直接从用户和计算机管理控制台的“帐户”选项卡中完成此操作。

在与应用程序不兼容的情况下,这必须是应用程序发展的主题。

2 密码永不过期的帐户

ID:vuln2_dont_expire  

描述

某些帐户的密码不会过期。恢复帐户可以使恶意个人长期保留其对域的访问权限。

建议
一般情况

为了使Active Directory从技术上强制进行续订,这些帐户必须没有所有权 DONT_EXPIRE。应删除此属性,并更改密码。

服务帐号

为了能够更改服务帐户的密码并能够跟踪其使用情况,有必要记录其使用情况。因此,文档必须列出所有服务帐户及其用途。它必须包含所标识的每个服务帐户:

  • 帐户信息(samAccountName,描述,AD组,特征等);
  • 使用该帐户的应用程序或系统;
  • 与该帐户关联的密码的最后更改日期;
  • 更改帐户密码的步骤;
  • 一个对其生命周期负责的人或团队。

2 服务器计算机密码更改超过90天的服务器

ID:vuln2_password_change_server_no_change_90  

描述

服务器超过90天未更改其计算机帐户密码,这表明它们的机密未得到更新。

建议

在默认操作中,服务器会自动定期(默认30天)更改其计算机帐户的密码。值得调查阻止服务器更改其密码的原因。

第一项检查是检查以下注册表项的值:

  • HKLM \ System \ CurrentControlSet \ Services \ Netlogon \ Parameters \ DisablePasswordChange  :必须为0或不存在;
  • HKLM \系统\ CurrentControlSet \服务\ Netlogon \参数\ MaximumPasswordAge  :必须为30。

如果这些值不正确,则应将它们重置为默认值,并确保它们未被GPO定位。

2 使用NTFRS进行SYSVOL复制

ID:vuln2_sysvol_ntfrs  

描述

域控制器被配置为使用NTFRS复制协议(尤其是对于SYSVOL复制)。该协议已过时,不必要地将管理接口添加到域控制器。此外,Windows Server的最新版本不再支持此协议,这会阻止迁移到最新版本。

建议

建议仅使用分布式文件系统复制 (DFSR)机制来同步不同服务器上的目录,尤其是对于SYSVOL的复制。

注意:Windows Server的最新版本不再支持NTFRS。微软记录了向DFSR的迁移过程: https : //docs.microsoft.com/zh-cn/windows-server/storage/dfs-replication/migrate-sysvol-to-dfsr

2 ACTIVE DIRECTORY的错误版本

ID:vuln2_adupdate_bad  

描述

模式更新正在审核中 15。此更新创建了一条控制路径,允许某些组完全控制Active Directory。

建议

使用修订版更新架构 15 为“密钥管理员”和“企业密钥管理员”组设置了过于宽松的ACE 。在Windows Server版本1709(及更高版本)中更新架构可解决此问题。因此,建议更新架构。

通常使用最新Windows Server安装介质中的adprep实用程序执行此操作。执行该操作的命令是adprep /ForestPrep那么adprep /DomainPrep
 https://docs.microsoft.com/zh-cn/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/dd464018(v=ws.10)

2 “ WINDOWS 2000以前的兼容访问”组包含“匿名”

ID:vuln2_compatible_2000_anonymous  

描述

Windows 2000之前的兼容机制已激活。其特征是在“ Windows 2000之前的兼容访问  ” 组中的成员中存在安全标识符“  匿名  ”(S-1-5-7)  。此机制允许使用域控制器匿名列出某些元素。

建议

Windows 2000之前的兼容机制可确保支持Windows 2000之前的系统(Windows NT 4.0)。历史上出于向后兼容的原因而使用,“ Windows 2000之前的兼容访问 ”组   应仅包含“  身份验证的用户  ”(S-1-5-11)。

2 KRBTGT帐户密码已超过一年未更改

ID:vuln2_krbtgt  

描述

krbtgt帐户密码已超过一年未更改。

krbtgt帐户是用于存储Kerberos密钥分发中心的密钥的基础结构帐户。Krbtgt帐户的泄密使得攻击者可以伪造Kerberos票证(通常称为黄金票证),从而能够通过以下方式对Active Directory域的任何资源(服务器,工作站等)进行身份验证:相对隐秘的管理权。krbtgt帐户 如果提取了Active Directory帐户数据库(例如,由以前的管理员,在审核过程中或在进行密码强度测试时),则不会自动更改密码,这是可能的,只要未更改此密码,就可以使用库中包含的信息来提取机密。因此,几年后,攻击者可以在Active Directory域的所有服务上进行身份验证。

建议

krbtgt帐户是用于存储Kerberos密钥分发中心的密钥的基础结构帐户。为了更新用于加密TGT的Kerberos密钥,有必要每年手动更改krbtgt帐户的密码。建议您使用Microsoft提供脚本进行此更改。为了使脚本在以法语安装的计算机上运行,​​必须进行以下修改:  

  • 第62行:替换"*completed*""*effectués*" ;
  • 第84行:替换"*Successfully replicated object*"为。 "*a été correctement répliqué*"

密码更改必须进行两次才能生效。

警告:任何更改krbtgt帐户密码的操作都只能在域控制器之间进行正常复制的Active Directory环境中执行。因此,必须等待一段时间才能更改第二个密码。

也可以使用与标准帐户相同的方式手动重置krbtgt帐户的密码。如果未使用提供的脚本,则建议两次更改之间的间隔至少为24小时,以确保域控制器之间的有效复制。一种策略可以是每6个月更改一次密码,以保证有效的年度更改。

2 RODC披露属性中存在的首选帐户或组

ID:vuln2_rodc_priv_revealed  

描述

特权帐户已在RODC上公开,这意味着其身份验证秘密已存储在该帐户中。破坏这些机器(通常比常规域控制器暴露更多)可以破坏整个域。

建议

RODC除其他事项外,保留该域的部分机密副本。默认情况下,特权组成员帐户不会在RODC上显示(即复制)。此措施将恶意访问的影响限制为仅对RODC上的已显示帐户进行访问。因此,不应在RODC上显示特权用户。

为此,只读域控制器(RODC)在msDS-NeverRevealGroup属性中必须具有以下值:

  • “  董事 ”;
  • “  域管理员 ”;
  • “  帐户操作员 ”;
  • “  服务器操作员 ”;
  • “  后备操作员 ”;
  • “  RODC密码复制组被拒绝 ”。

可以直接从用户和计算机管理控制台的“密码复制策略”选项卡完成此操作。

2 具有似乎不符合SID历史记录的帐户或组

ID:vuln2_sidhistory_dangerous  

描述

林中的几个帐户或组具有sIDHistory属性,该属性的值是众所周知的SID(通用用户和组的SID)或特权域SID的值。攻击者可以使用此机制来非法授予自己访问权限。

建议

sIDHistory属性用于将任意安全标识符(SID)添加到用户或计算机帐户的组列表中。当将帐户从一个域迁移到另一个域以永久访问旧资源时,主要使用此机制。

必须进行调查以解释这些不符合标准的SID的存在。一旦执行了迁移操作,就必须删除所有相关帐户和组的sIDHistory属性。

2 信任密码未更改一年以上的帐户

ID:vuln2_trusts_accounts  

描述

信托帐户已超过一年未更改其密码。这可能意味着信任关系已被删除,但是关联的帐户仍然存在。

建议
信任关系被删除的情况

即使已删除关联的关系,某些信任帐户仍然存在。因此,必须删除这些帐户。

批准关系未删除的情况

建议至少每年更改一次信任帐户的密码。在Microsoft环境之间,此更改必须是自动的。还需要调查自动不更新此密码的原因。

3 服务器计算机密码更改超过45天的服务器

ID:vuln3_password_change_server_no_change_45  

描述

服务器超过45天未更改其计算机帐户密码,这表明它们的机密未得到更新。

建议

在默认操作中,服务器会自动定期(默认30天)更改其计算机帐户的密码。值得调查阻止服务器更改其密码的原因。

第一项检查是检查以下注册表项的值:

  • HKLM \ System \ CurrentControlSet \ Services \ Netlogon \ Parameters \ DisablePasswordChange  :必须为0或不存在;
  • HKLM \系统\ CurrentControlSet \服务\ Netlogon \参数\ MaximumPasswordAge  :必须为30。

如果这些值不正确,则应将它们重置为默认值,并确保它们未被GPO定位。

3 不活动的服务器

ID:vuln3_password_change_inactive_servers  

描述

服务器未通过身份验证超过90天。

建议

在默认操作中,服务器必须每30天对域进行身份验证并自动更改一次密码。必须禁用未使用的服务器。

缺少域身份验证是不同步计算机的症状。必须重新安装或删除域中不同步的服务器。在重新安装的情况下,为了避免类型控制路径所有者对于计算机帐户,建议使用Djoin实用程序执行脱机域加入。  

3 具有修改后的PRIMARYGROUPID的帐户

ID:vuln3_primary_group_id_nochange  

描述

某些用户或计算机具有修改后的primaryGroupId属性。

建议

在Active Directory的操作中,用户或计算机帐户的primaryGroupId属性用于隐式将此帐户分配给一个组,即使该组未由用户的memberOf属性列出。通过此属性在组中的成员资格不会出现在某些界面的组成员列表中。此属性隐藏特权组中帐户的成员身份。

建议将相关用户或计算机的primaryGroupId属性重新定位为其默认值:

  • 用户:513(域用户)或514(域访客);;
  • 计算机:515(域中的计算机);
  • 域控制器:516(域控制器);
  • 只读域控制器(RODC):521(只读域控制器)。

3 “ WINDOWS 2000以前版本的兼容访问”的帐户或组成员

ID:vuln3_compatible_2000_not_default  

描述

Windows 2000以前的兼容机制已为某些帐户激活。此机制允许Windows 2000以前版本的Compatible Access组的成员访问某些RPC 。根据系统设置,Everyone 组可以包含匿名用户,如果它是向后兼容组的成员,则可能增加风险。

建议

Windows 2000之前的兼容机制可确保支持Windows NT类型的域。历史上出于向后兼容的原因而使用,“ Windows 2000之前的兼容访问 ”组应仅包含“ 身份验证的用户 ”(S-1-5-11)。

注意:ADCS服务器在安装过程中已在该组中注册。在大多数情况下,此组中的成员身份不是必需的,可以删除。此操作很容易逆转。

3 拥有者不合适的物件

ID:vuln3_owner  

描述

对象具有非标准所有者。
注意:仅显示前20个对象。

建议

所有对象(用户,组,sMSA,gMSA,计算机,OU和GPO)必须具有以下对象之一:

  • “  域管理员 ”;
  • “公司  董事 ”;
  • “  董事 ”;
  • “  本地系统 ”。

3 特权帐户不是“受保护的用户”组的成员

ID:vuln3_protected_users  

描述

特权帐户不受“受保护的用户”组的保护。

建议

必须将所有特权帐户添加到“ 受保护的用户” 组中,以便:

  • 在Kerberos中强制进行身份验证;
  • 减少Kerberos票证的寿命;
  • 强制使用强加密算法(AES);
  • 禁止在工作站上缓存密码;
  • 禁止任何形式的授权。

请注意  :使用“ 受保护的用户”组会产生重大的功能影响。
参考:https : //docs.microsoft.com/zh-cn/windows-server/security/credentials-protection-and-management/protected-users-security-group。  

3 密码可逆存储的帐户

ID:vuln3_reversible_password  

描述

帐户的密码可逆地存储在目录中。

具有管理员权限,可以恢复纯文本密码。

建议

为了避免密码管理方面的弱点,有必要从用户帐户中删除危险的密码属性。可以使用“ AD用户和计算机”控制台执行此操作。为此,请在相关帐户属性的“帐户”标签中取消选中“使用可逆加密保存密码”复选框。这具有从userAccountControl属性中删除ENCRYPTED_TEXT_PASSWORD_ALLOWED属性的作用。

如果这些参数符合合法的业务需求,则应将其记录在案,例如通过在帐户注释中进行指示。

3 只读域控制器(RODC)的危险配置(NEVERREVEAL)

ID:vuln3_rodc_never_reveal  

描述

该林具有带有危险公开属性的只读域控制器(RODC)。RODC 的msDS-NeverRevealGroup属性中缺少默认组。

建议

通过msDS-NeverRevealGroup属性,可以禁止透露此处列出的对象的秘密(并且此操作是递归的)。

只读域控制器(RODC)在msDS-NeverRevealGroup属性中必须至少具有以下值:

  • 董事 ;
  • 服务器运营商 ;
  • 账户运营商 ;
  • 备用运营商 ;
  • RODC密码复制组被拒绝。

3 RODC披露属性中存在的首选帐户或组

ID:vuln3_rodc_reveal  

描述

该林具有带有危险公开属性的只读域控制器(RODC)。实际上,msDS-RevealOnDemandGroup属性中存在一些用户或特权组(RID <1000)。

建议

msDS-RevealOnDemandGroup属性用于定义授权在RODC上显示的用户和组。

只读域控制器(RODC)在此属性中不得具有RID小于1000的组。

3 只读域控制器(RODC)的复制组的危险配置(允许)

ID:vuln3_rodc_allowed_group  

描述

授权RODC密码的复制组组不为空。

建议

可以在所有RODC上显示“ 授权RODC密码复制组” 组成员的秘密。

建议您清空此组,并在每个RODC 的PRP(密码复制策略)中使用特定的组。

3 只读域控制器(RODC)的复制组的危险配置(拒绝)

ID:vuln3_rodc_denied_group  

描述

默认情况下,RODC拒绝密码复制组组没有其所有成员。

建议

RODC拒绝密码复制组组必须至少具有以下成员(默认情况下为集成):

  • 域控制器 ;
  • 只读域控制器 ;
  • 制定集体战略的业主 ;
  • 域管理员 ;
  • 证书发行人 ;
  • 公司管理员 ;
  • 计划管理员 ;
  • KRBTGT 。

3 具有SID历史记录的帐户或组

ID:vuln3_sidhistory_present  

描述

林中的帐户或组的sIDHistory属性为非空。

sIDHistory的存在不必要地导致Windows 4665和4666事件的产生,这会使监视更加困难。此外,它们的合法使用会削弱信任关系的安全性。

建议

sIDHistory属性用于将任意安全标识符(SID)添加到用户或计算机帐户的组列表中。当将帐户从一个域迁移到另一个域以永久访问旧资源时,主要使用此机制。攻击者还可以使用它来非法授予自己访问权限。

一旦执行了迁移操作,就必须删除所有相关帐户和组的sIDHistory属性。

3 与委托的入站信任关系

ID:vuln3_trusts_tgt_deleg  

描述

信任关系允许Kerberos委派。通过构造,这些关系允许批准的外部资源能够使用与其连接的帐户(被分析森林的成员帐户)的身份进行身份验证。这使攻击了受信任外部域的攻击者可以将其特权提升到受信任本地域。

建议

入站信任关系允许您由外部域或第三方林信任。这使帐户可以连接到林外的资源。

入站信任关系必须禁止将Kerberos委派给信任资源。从Windows 2012 可以使用以下命令停用TGT的委派 netdom trust <domaine> /domain:<domaine_externe_approuvé> /EnableTGTDelegation:no