Microsoft Local Administrator Password Solution (LAPS)

问题
企业环境中计算机上本地帐户的真正问题是“本地”一词是一个不正当的用语。如果网络上的50台计算机的本地管理员帐户为“管理员”,密码为“P @ 55w0rd1!”,首先是一个HORRIBLE密码。第二,更重要的是,如果其中一台计算机受到威胁,他们都将被妥协。 Windows是非常有帮助的如果您将本地管理员凭据传递给具有相同本地凭据的另一台计算机,那么您可以使用目标系统凭据登录进行访问。将管理员凭据转储给所有管理员!减轻此问题的最佳方法是确保每台计算机具有不同的本地管理员帐户密码,这些密码长,复杂,随机,并且定期进行更改。

早期尝试提供一种从Microsoft定期更改本地管理员密码的方法不太理想(参见组策略首选项密码存储安全性问题 )。您也应该永远不要使用包含明文密码脚本来更改本地管理员密码,因为这些脚本往往被放置在容易访问的位置,如SYSVOL(以利用组策略)。

即使您部署了LAPS或其他本地管理员帐户密码管理解决方案,仍然建议您安装KB2871997 (如果需要),并配置组策略以阻止本地帐户通过网络进行身份验证。 KB2871997为任何作为管理员组成员的本地帐户添加了两个新的本地SID,包括LOCAL_ACCOUNT_AND_MEMBER_OF_ADMINISTRATORS_GROUP(S-1-5-114)。在组策略中配置此SID,具有“拒绝从网络访问此计算机”和“通过远程桌面服务拒绝登录”可防止本地帐户通过网络进行连接(对于工作站,在部署到服务器之前,请仔细检查)。

我还在2016年8月发布了关于“ Microsoft LAPS安全和Active Directory LAPS配置侦测 ”的内容,其中涵盖了一些更有趣的LAPS安全场景。

Microsoft本地管理员密码解决方案(LAPS)概述
Microsoft本地管理员密码解决方案( LAPS为Active Directory中的每台计算机提供自动本地管理员帐户管理(LAPS最适用于工作站本地管理员密码)。安装在每台计算机上的客户端组件生成随机密码,更新相关AD计算机帐户上的(新) LAPS密码属性,并在本地设置密码。 LAPS配置通过组策略管理,提供密码复杂度,密码长度,密码更改的本地帐户名称,密码更改频率等的值。

对于需要用户登录到没有域凭据的计算机的环境,密码管理可能成为一个复杂的问题。这种环境大大增加了通过散列(PtH)凭证重放攻击的风险。本地管理员密码解决方案(LAPS)为在域中的每台计算机上使用相同密码的常见本地帐户提供了一个解决方案。 LAPS通过为域中的每台计算机上的公用本地管理员帐户设置不同的随机密码来解决此问题。使用该解决方案的域管理员可以确定哪些用户(如帮助台管理员)有权读取密码。

LAPS简化了密码管理,同时帮助客户实施针对网络攻击的推荐防御。特别地,解决方案减轻了当客户在其计算机上使用相同的管理本地帐户和密码组合时导致横向升级的风险。 LAPS将Active Directory中每台计算机的本地管理员帐户的密码存储在计算机对应的Active Directory对象中的机密属性中。允许计算机在Active Directory中更新自己的密码数据,域管理员可以授予对授权用户或组(如工作站帮助台管理员)的读访问权限。

使用LAPS自动管理域名加入的计算机上的本地管理员密码,以便密码在每台托管计算机上都是唯一的,随机生成并安全地存储在Active Directory基础架构中。该解决方案基于Active Directory基础架构,不需要其他支持技术。 LAPS使用在受管计算机上安装的组策略客户端扩展(CSE)来执行所有管理任务。该解决方案的管理工具提供了简单的配置和管理。

LAPS如何工作?
LAPS解决方案的核心是GPO客户端扩展(CSE),执行以下任务,并可在GPO更新期间执行以下操作:
•检查本地管理员帐户的密码是否已过期。
•当旧密码过期或需要在到期之前更改时,生成新密码。
•根据密码策略验证新密码。
•向Active Directory报告密码,将其与Active Directory中的计算机帐户的机密属性一起存储。
•向Active Directory报告密码的下一个到期时间,并将其与计算机帐户的属性存储在Active Directory中。
•更改管理员帐户的密码。
然后可以由允许这样做的用户从Active Directory读取密码。符合条件的用户可以为计算机请求更改密码。

LAPS的特点是什么?
LAPS包括以下功能:
•提供以下能力的安全性:
•随机生成受管机器上自动更改的密码。
•有效缓解依赖于相同本地帐户密码的PtH攻击。
•通过使用Kerberos 5协议的加密在传输过程中强制实施密码保护。
•使用访问控制列表(ACL)来保护Active Directory中的密码,并轻松实现详细的安全模型。
•可管理性,提供以下能力:
•配置密码参数,包括年龄,复杂程度和长度。
•强制每个机器的密码重置。
•使用与Active Directory中的ACL集成的安全模型。
•使用任何选择的Active Directory管理工具;提供了自定义工具,如Windows PowerShell。
•防止计算机帐户删除。
•轻松实现最小占地面积的解决方案。

为什么这很重要?
LAPS解决了管理每台计算机的本地管理员帐户密码的困难问题,该密码通常仅在域帐户不能使用的情况下使用。通常,本地管理员帐户密码在计算机的整个生命周期内保持不变,并且通常与网络上的许多其他计算机相同。攻击者可以利用多台计算机上相同的本地管理员帐户和密码来破坏网络。确保本地管理员帐户密码在网络上的每台计算机上都不同,从而减轻攻击者使用本地凭据将管理控制扩展到单个系统之外的能力。
如何配置?
LAPS部署有几个步骤:
  1. 下载LAPS文件..这包括操作指南 - 请在部署前仔细阅读
  2. Active Directory架构更新为计算机帐户添加2个必需的LAPS属性。
  3. 在域或组织单位(OU)级别进行授权,以便计算机可以更新其LAPS密码。
  4. 在OU级别授权,使AD组可以查看或强制重置计算机本地管理员帐户密码。
  5. 安装执行密码更改的LAPS客户端组件(通过SCCM或类似程序),并根据LAPS GPO设置更新计算机的属性。
  6. 创建一个新的组策略,以使LAPS客户端组件更改本地帐户密码,并为客户端提供LAPS配置(密码复杂度,密码长度,本地帐户名称,密码更改,密码更改频率等)。
一旦LAPS被部署,有几种方法被批准用户可以查看计算机本地管理员密码:
  • 电源外壳:
    Get-AdmPwdPassword -ComputerName <computername>
  • Active Directory用户和计算机:
    查看计算机属性ms-Mcs-AdmPwd的值
  • LAPS客户端
  • 全自动化,可配置的计算机本地管理员帐户更新
  • 通过OU访问存储的密码的简单委派。
  • LAPS利用Active Directory组件(组策略,计算机对象属性等)不需要额外的服务器。
  • 计算机帐户只能写/更新自己的本地管理员帐户密码(ms-Mcs-AdmPwd属性),它不能从该属性读取密码。
  • 密码更新流量被加密。
  • 可以轻松地执行OU /域中每台计算机的密码更改。 (空白密码最后设置属性)
  • 免费(免费软件,您的时间和资源是额外的)
  • 密码以明文形式存储,如果未正确计划/部署授权,则可能会显示密码。请注意, 加密密钥管理难度大 ,解决方案复杂化。专注于适当的授权,这种风险得到缓解。
  • 只有当前的密码被存储并可用于检索。
  • 一次只有一个本地管理员帐户可以一次由LAPS管理其密码(仅一个密码属性)。
  • 域控制器妥协可能会损害域中的所有本地管理员帐户密码。
  • 任何时候都可以访问密码,并随时使用这些密码进行查看。虽然有可以启用的审核,但是必须根据每个OU配置每个组,每个组在域控制器上记录事件ID 4662。此外,使用后密码不会像其他本地帐户密码管理解决方案一样自动更改。
  • 可以在环境中配置扩展权限,这可能允许未经授权的用户在某些计算机上访问LAPS密码。有关如何删除扩展权限的其他信息,请参阅“LAPS操作指南”(其中一些是在该部分的这篇文章的末尾。
LAPS启用对本地管理员帐户(RID 500)密码或其他自定义本地帐户的密码管理。 Microsoft建议只有默认的管理员本地帐户是本地管理员组的成员,并且LAPS管理该帐户。
虚拟环境中的LAPS

在不改变状态的物理计算机上配置时,LAPS工作得很好。当您在VDI环境中引入LAPS时,事情会变得有些棘手。

持久VDI(相同的计算机名):
该过程与物理计算机相同,因为用户连接到持续存在的VDI图像(在注销时不被破坏)。

不持久VDI(新计算机名):
如果VDI工作站在每次连接时都有新的计算机名称(非持久会话,新计算机映像作为用户登录的一部分),LAPS将在LAPS客户端运行时更新密码,并注意到ms-Mcs-AdmPwdExpirationTime AD计算机帐户的属性为空。作为此过程的一部分,LAPS客户端生成并设置本地管理员密码,然后更新AD计算机帐户上的LAPS ms-Mcs-AdmPwd属性(ms-Mcs-AdmPwdExpirationTime属性也会更新)。这里没有问题,因为这个过程与物理计算机相同。

非持久性VDI(相同计算机名称:
如果VDI工作站在每次连接时都有相同的计算机名称(非持续会话,相同的计算机映像),LAPS将在启动后不久更新密码,因为它会注意到ms-Mcs AD计算机帐户的-AdmPwdExpirationTime属性在定义的阈值内(例如14天)。在这种情况下,LAPS客户端将休眠,直到它注意到ms-Mcs-AdmPwdExpirationTime属性中的值大于阈值。这意味着VDI系统在绝大多数阈值期间以及当超过LAPS阈值时VDI系统处于活动状态时,将具有默认的VDI映像密码。此时,LAPS会在本地更新本地管理员密码以及AD计算机帐户上的ms-Mcs-AdmPwdExpirationTime属性以及ms-Mcs-AdmPwdExpirationTime属性,在该位置睡眠定义的天数(在此为14)案件)。
由于LAPS没有(明显)选项强制LAPS客户端在启动时更改密码,所以脚本需要运行才能清除ms-Mcs-AdmPwdExpirationTime属性,以便LAPS客户端运行时(GPO刷新时间)并检查最后的密码更改时间(ms-Mcs-AdmPwdExpirationTime),本地管理员密码将被更改。可以配置PowerShell脚本,用于在用户注销时(或在另一个事件期间)清除ms-Mcs-AdmPwdExpirationTime。此时,VDI解决方案可以提供运行脚本的功能。计算机启动脚本(通过GPO)也可以工作。


审计访问:
配置LAPS访问审核:

Set-AdmPwdAuditing -OrgUnit:<您要设置审核的OU的名称> -AuditedPrincipals::<对密码访问的用户/组的身份进行审核>

当有人访问LAPS密码属性时,事件ID 4662被记录在响应于读取请求的域控制器上。
  • 由于此解决方案旨在自动化本地管理员密码的更改以及将此信息保留为不公开,因此需要认真了解哪些人能够在一组计算机上检索本地管理员密码。
  • 关键点是需要仔细设计和部署对(属性)访问密码属性的授权。这是LAPS部署中最重要的部分:确定谁应该具有对计算机密码数据的读取权限。
  • 密码本身应该是大约25个字符(因为今天是“合理的”)。一定要超过15岁。
  • 本地管理员密码也应至少与计算机AD帐户密码(每15到30天)一样频繁地旋转。
  • 委托将计算机加入域的帐户可能能够查看计算机对象上的LAPS密码数据

LAPS企业(LAPS-E)注:
还有另一个版本的LAPS,被称为LAPS企业版(LAPS-E),其中包括其他功能,如加密密码和多个本地帐户的管理(如果部署为定制的Microsoft交付)。但是,LAPS-E具有与LAPS不同的代码库,并且在Microsoft中尚未完成所需的安全性评估。还没有更新模型来确保客户接收代码更新。因此, Microsoft不支持LAPS-E,并且不再包括LAPS-E在任何客户的可交付成果。这意味着您不应该使用LAPS-E(尽管代码在MSDN上可用 )。事实上,LAPS的工作效果非常好,如果需要高级功能,还有几款提供类似功能的第三方产品(Cyber​​-Ark,Thycotic,Xceedium,Lieberman,Dell等)。

LAPS安装
LAPS需要更新Active Directory架构,因此至少部分安装需要Schema Admins的成员资格。
在安装之前,请阅读LAPS文档(LAPS操作指南等),因为它将节省您的时间和麻烦。 🙂
EffectivePermissions-2
开始安装...
LAPS安装-01 LAPS安装-02
自定义设置页面有几个选项。
Fat客户端UI和PowerShell模块仅需要安装在将管理LAPS的系统上,其中包括将访问密码的用户。
GPO组件用于部署和管理LAPS GPO。
注意:
由于LAPS将开始更改该域的默认管理员帐户(RID 500),因此请勿在域控制器上安装LAPS客户端(并且在域级别上配置了LAPS GPO)。这发生在我在实验室环境中,很有趣跟踪它! 😉
可以通过检查c:\ program files \ LAPS \ CSE中的admpwd.dll来验证安装的LAPS客户端。
PowerShell是一种快速简单的验证安装方式​​: Get-ChildItem'c:\ program files \ LAPS \ CSE \ Admpwd.dll'
GPO客户端扩展(CSE)在这里注册:HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon \ GPExtensions
admpwd GPO CSE在此位置注册。
LAPS模式更新
一旦安装了LAPS客户端,并且在任何其他配置之前,现在是使用LAPS计算机对象属性来扩展AD模式的好时机。请记住在修改AD模式之前始终执行备份。
LAPS模式增加了两个属性:
  • ms-Mcs-AdmPwd - 以明文形式存储密码
  • ms-Mcs-AdmPwdExpirationTime - 存储重置密码的时间

LAPS包括用于更新AD模式的PowerShell cmdlet:Update-AdmPwdADSchma。 LAPS-更新-AD-模式

在使用RODC的环境中安装时,有一个重要的LAPS注意事项:

注意如果环境中安装了RODC,并且需要将属性ms-Mcs-AdmPwd的值复制到RODC,则需要更改ms-Mcs-AdmPwd的searchFlags属性值的 10位模式对象为0(从searchFlags属性的当前值中减去512)。有关向RODC Filtered Attribute Set添加属性或从其中删除属性的更多信息,请参阅http://technet.microsoft.com/en-us/library/cc754794(v=WS.10).aspx

组策略配置
安装LAPS时,将将LAPS组策略管理模板复制到本地系统中:
  • AdmPwd.admx - >%WINDIR%\ PolicyDefinitions
  • AdmPwd.adml - >%WINDIR%\ PolicyDefinitions \ en-US

这些文件可以复制到AD GPO Central Store,因此可以从任何系统(在PolicyDefinitions中的admx文件和en-US子文件夹中的adml文件)中管理LAPS GPO。

有四个主要LAPS配置设置:
  1. 密码设置 - 配置密码长度和复杂度。
  2. 配置是否存在除默认管理员帐户(RID 500)以外的帐户。
  3. 启用此功能以防止本地管理员密码早于域密码策略(设置为启用)。更多关于这个在我的LAPS安全文章
  4. 启用LAPS管理本地管理员密码。在您准备好LAPS管理密码之前,请勿切换到“已启用”。如果这不是启用,LAPS客户端将不会管理密码。
圈-GPO-配置-02
LAPS-GPO-Config-02(1)
授权访问计算机本地管理员帐户密码
在运行任何LAPS PowerShell cmdlet之前,请确保安装并导入LAPS PowerShell模块(“Import-Module AdmPwd.PS”)。
运行附带的PowerShell cmdlet“ Set-AdmPwdComputerSelfPermission ”以委派OU(或域)中的每台计算机的权限,以更新其自己的包含本地管理员密码(ms-Mcs-AdmPwd)的计算机属性。
LAPS安装-08
运行附带的PowerShell cmdlet“ Set-AdmPwdReadPasswordPermission ”委派组的权限以查看指定OU中的本地管理员帐户密码。
LAPS安装-09
运行附带的PowerShell cmdlet“ Set-AdmPwdResetPasswordPermission ”委派组的权限,以强制指定OU中的本地管理员帐户密码更改(ms-Mcs-AdmPwdExpirationTime)。
LAPS-INSTALL-10
授权访问权限在工作站OU上。
LAPS-SecurityPermissions
LAPS计算机属性被标记为“机密”,这意味着Authenticated Users没有像Active Directory中的其他对象那样的读取访问。域管理员确实具有对机密属性的读取权限,因此如果这不是可取的,则需要删除这些“扩展权限”。有关如何执行此操作的说明,请参阅LAPS操作指南:

要快速找到哪些安全主体具有对OU的扩展权限,您可以使用PowerShell cmdlet。如果这是新窗口,则可能需要运行Import-module AdmPwd.PS。

Find-AdmPwdExtendedrights -identity:<OU name> |格式表

参考资料:
(参观35,028次,今天访问69次)

为您推荐了相关的技术文章:

  1. Xsl Exec Webshell (aspx) - Evi1cg's blog
  2. windows内网渗透杂谈
  3. CmsEasy代码审计——都是session的锅 - feelw0rk's Blog
  4. 分享老农经验-外贸网站源码站库的简单拿法
  5. 【独家】Fucking勒索软件分析|漏洞研究 - 安全技术社区

原文链接: adsecurity.org