{"id":1790,"date":"2015-09-15T20:46:36","date_gmt":"2015-09-16T00:46:36","guid":{"rendered":"https:\/\/adsecurity.org\/?p=1790"},"modified":"2016-11-14T14:04:08","modified_gmt":"2016-11-14T19:04:08","slug":"microsoft-local-administrator-password-solution-laps","status":"publish","type":"post","link":"https:\/\/adsecurity.org\/?p=1790","title":{"rendered":"Microsoft Local Administrator Password Solution (LAPS)"},"content":{"rendered":"<p><strong>The Issue<br \/>\n<\/strong>The real problem with local accounts on a computer in an enterprise environment is that the term &#8220;local&#8221; is a misnomer. If 50 computers on a network have the local administrator account of &#8220;Administrator&#8221; and a password of &#8220;P@55w0rd1!&#8221;, first of all that&#8217;s a HORRIBLE password. Second of all and more to the point, if one of those computers is compromised, they will all be compromised. Windows is very helpful. So helpful that if you pass the local admin credentials to another computer with the same local credentials, access is granted as if you logged on with the target system credentials. Dump administrator credentials on one to get admin on all! The best way to mitigate this issue is to ensure every computer has a different local administrator account password that is long, complex, and random and that changes on a regular basis.<\/p>\n<p>The earlier attempt to provide a method for regularly changing the local administrator password from Microsoft was less than ideal (see <a href=\"https:\/\/adsecurity.org\/?p=384\">Group Policy Preferences password storage security issue<\/a>). You should also never, ever use a <a href=\"https:\/\/gallery.technet.microsoft.com\/scriptcenter\/c6ecba88-88ae-4e9d-9581-c0d27e20ebd6\">script that includes a clear-text password to change the local admin password<\/a> since these scripts tend to be placed in easily accessible locations like SYSVOL (to leverage Group Policy).<\/p>\n<p>Even if you deploy LAPS or some other local Administrator account password management solution, it&#8217;s still recommended to install <a href=\"https:\/\/adsecurity.org\/?p=559\">KB2871997 <\/a>(if required) and configure a Group Policy to block local accounts from authenticating across the network. KB2871997 adds two new local SIDs including LOCAL_ACCOUNT_AND_MEMBER_OF_ADMINISTRATORS_GROUP (S-1-5-114) for any local account that is a member of the administrators group. Configuring this SID in a Group Policy with the settings \u201cDeny access to this computer from the network\u201d and \u201cDeny log on through Remote Desktop Services\u201d prevents local accounts from connecting over the network (for workstations, test carefully before deploying to servers).<\/p>\n<p>I also posted about &#8220;<a href=\"https:\/\/adsecurity.org\/?p=3164\">Microsoft LAPS Security &amp; Active Directory LAPS Configuration Recon<\/a>&#8221; in August 2016 which covers some of the more interesting LAPS security scenarios.<\/p>\n<p>&nbsp;<\/p>\n<div>\n<div><strong>Microsoft Local Administrator Password Solution (LAPS) Overview<\/strong><\/div>\n<div><a href=\"https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=46899\">Microsoft Local Administrator Password Solution (<span class=\"il\">LAPS<\/span>) <\/a>provides automated local administrator account management for every computer in Active Directory (LAPS is best for workstation local admin passwords). A client-side component installed on every computer generates a random password, updates the (new) <span class=\"il\">LAPS<\/span> password attribute on the associated AD computer account, and sets the password locally. <span class=\"il\">LAPS<\/span> configuration is managed through Group Policy which provides the values for password complexity, password length, local account name for password change, password change frequency, etc.<\/div>\n<div><\/div>\n<\/div>\n<p><!--more--><\/p>\n<div><strong>\u00a0<a href=\"https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=46899\">Microsoft Local Administrator Password Solution (<span class=\"il\">LAPS<\/span>):<\/a><\/strong><\/div>\n<div>\n<blockquote>\n<div>\n<p>For environments in which users are required to log on to computers without domain credentials, password management can become a complex issue. Such environments greatly increase the risk of a Pass-the-Hash (PtH) credential replay attack. The Local Administrator Password Solution (LAPS) provides a solution to this issue of using a common local account with an identical password on every computer in a domain. LAPS resolves this issue by setting a different, random password for the common local administrator account on every computer in the domain. Domain administrators using the solution can determine which users, such as helpdesk administrators, are authorized to read passwords.<\/p>\n<p>LAPS simplifies password management while helping customers implement recommended defenses against cyberattacks. In particular, the solution mitigates the risk of lateral escalation that results when customers use the same administrative local account and password combination on their computers. LAPS stores the password for each computer\u2019s local administrator account in Active Directory, secured in a confidential attribute in the computer\u2019s corresponding Active Directory object. The computer is allowed to update its own password data in Active Directory, and domain administrators can grant read access to authorized users or groups, such as workstation helpdesk administrators.<\/p>\n<p>Use LAPS to automatically manage local administrator passwords on domain joined computers so that passwords are unique on each managed computer, randomly generated, and securely stored in Active Directory infrastructure. The solution is built on Active Directory infrastructure and does not require other supporting technologies. LAPS uses a Group Policy client-side extension (CSE) that you install on managed computers to perform all management tasks. The solution\u2019s management tools provide easy configuration and administration.<\/p>\n<p><b>How does LAPS work?<\/b><br \/>\nThe core of the LAPS solution is a GPO client-side extension (CSE) that performs the following tasks and can enforce the following actions during a GPO update:<br \/>\n\u2022 Checks whether the password of the local Administrator account has expired.<br \/>\n\u2022 Generates a new password when the old password is either expired or is required to be changed prior to expiration.<br \/>\n\u2022 Validates the new password against the password policy.<br \/>\n\u2022 Reports the password to Active Directory, storing it with a confidential attribute with the computer account in Active Directory.<br \/>\n\u2022 Reports the next expiration time for the password to Active Directory, storing it with an attribute with the computer account in Active Directory.<br \/>\n\u2022 Changes the password of the Administrator account.<br \/>\nThe password then can be read from Active Directory by users who are allowed to do so. Eligible users can request a password change for a computer.<\/p>\n<p><b>What are the features of LAPS?<\/b><br \/>\nLAPS includes the following features:<br \/>\n\u2022 Security that provides the ability to:<br \/>\n\u2022 Randomly generate passwords that are automatically changed on managed machines.<br \/>\n\u2022 Effectively mitigate PtH attacks that rely on identical local account passwords.<br \/>\n\u2022 Enforced password protection during transport via encryption using the Kerberos version 5 protocol.<br \/>\n\u2022 Use access control lists (ACLs) to protect passwords in Active Directory and easily implement a detailed security model.<br \/>\n\u2022 Manageability that provides the ability to:<br \/>\n\u2022 Configure password parameters, including age, complexity, and length.<br \/>\n\u2022 Force password reset on a per-machine basis.<br \/>\n\u2022 Use a security model that is integrated with ACLs in Active Directory.<br \/>\n\u2022 Use any Active Directory management tool of choice; custom tools, such as Windows PowerShell, are provided.<br \/>\n\u2022 Protect against computer account deletion.<br \/>\n\u2022 Easily implement the solution with a minimal footprint.<\/p>\n<\/div>\n<\/blockquote>\n<\/div>\n<div>The <a href=\"https:\/\/technet.microsoft.com\/en-us\/library\/security\/3062591.aspx\">Microsoft Security Advisory 3062591<\/a> includes additional information on LAPS.<\/div>\n<div><\/div>\n<div>\n<div><strong>Why is this important?<\/strong><\/div>\n<div><span class=\"il\">LAPS<\/span> solves the difficult issue of managing every computer\u2019s local administrator account password which is often only used in situations where a domain account cannot. Often a local administrator account password will remain the same throughout the lifetime of a computer and is often the same as many other computers on the network. The same local administrator account and password on multiple computers can be exploited by attackers to compromise a network. Ensuring local admin account passwords are different on every computer on the network mitigates an attackers ability to expand administrative control beyond a single system using local credentials.<\/div>\n<div><\/div>\n<div><\/div>\n<div><strong>How is it configured?<\/strong><\/div>\n<div><span class=\"il\">LAPS<\/span> deployment has several steps:<\/div>\n<ol>\n<li><a href=\"https:\/\/support.microsoft.com\/en-us\/kb\/3062591\">Download LAPS files..<\/a>.This includes the Operations guide &#8211; please read it thoroughly before deploying<\/li>\n<li>Active Directory schema update to add the 2 required <span class=\"il\">LAPS<\/span> attributes for computer accounts.<\/li>\n<li>Delegation at the domain or Organizational Unit (OU) level so the computers can update their <span class=\"il\">LAPS<\/span> passwords.<\/li>\n<li>Delegation at the OU level enabling AD groups to view or force a reset of computer local admin account passwords.<\/li>\n<li>Installation of the <span class=\"il\">LAPS<\/span> client-side component (via SCCM or similar) which performs the password change and updates the computer\u2019s attribute based on LAPS GPO settings.<\/li>\n<li>A new Group Policy created to enable the <span class=\"il\">LAPS<\/span> client-side component to change the local account password as well as provide <span class=\"il\">LAPS<\/span> configuration for the client (password complexity, password length, local account name for password change, password change frequency, etc).<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<div>Once LAPS is deployed, there are several methods approved users can view the computer local admin password(s):<\/div>\n<ul>\n<li>PowerShell:<br \/>\n<em>Get-AdmPwdPassword -ComputerName &lt;computername&gt;<\/em><\/li>\n<li>Active Directory Users &amp; Computers:<br \/>\nView the value of the computer attribute ms-Mcs-AdmPwd<\/li>\n<li>LAPS Client<\/li>\n<\/ul>\n<div><\/div>\n<div><strong>Pros:<\/strong><\/div>\n<ul>\n<li>Fully automated, configurable computer local administrator account updating<\/li>\n<li>Simple delegation for access to stored passwords by OU.<\/li>\n<li>No need for additional servers since <span class=\"il\">LAPS<\/span> leverages Active Directory components (Group Policy, computer object attributes, etc).<\/li>\n<li>Computer account can only write\/update its own local Administrator account password (ms-Mcs-AdmPwd attribute), it can&#8217;t read the password from the attribute.<\/li>\n<li>Password update traffic is encrypted.<\/li>\n<li>Password changes for every computer in an OU\/domain can be performed easily. (blank out password last set attribute)<\/li>\n<li>Free (as in no cost for the software, your time &amp; resources are extra)<\/li>\n<\/ul>\n<div><\/div>\n<div><strong>Cons:<\/strong><\/div>\n<ul>\n<li>Passwords are stored in clear-text and may be exposed if delegation is not properly planned\/deployed. Note that <a href=\"http:\/\/blogs.msdn.com\/b\/laps\/archive\/2015\/06\/01\/laps-and-password-storage-in-clear-text-in-ad.aspx\">encryption key management is hard<\/a> and complicates solutions. Focus on proper delegation and this risk is mitigated.<\/li>\n<li>Only the current password is stored and available for retrieval.<\/li>\n<li>Only one local administrator account can have its password managed by <span class=\"il\">LAPS<\/span> at a time (only one password attribute)..<\/li>\n<li>Domain Controller compromise can compromise all local administrator account passwords in the domain.<\/li>\n<li>Passwords can be accessed at any point and used by those delegated to view them at any time. While there is auditing that can be enabled, it has to be configured per OU, per group which logs event ID 4662 on the Domain Controller. Additionally, the password is not automatically changed after use as in some other local account password management solutions.<\/li>\n<li><a href=\"http:\/\/blogs.msdn.com\/b\/laps\/archive\/2015\/07\/17\/laps-and-permission-to-join-computer-to-domain.aspx\">Extended rights may be configured in the environment which could allow unauthorized users to access LAPS passwords on some computers.<\/a> Additional information on how to remove Extended rights is the in LAPS Operation Guide (and some of it is at the end of this post in the Delegation section.<\/li>\n<\/ul>\n<div>LAPS enables password management of the local Administrator account (RID 500) password or another custom local account. Microsoft recommends that only the default Administrator local account is a member of the local Administrators group and that LAPS manages that account.<\/div>\n<\/div>\n<div><\/div>\n<div><strong>LAPS in a Virtual Environment:<\/strong><\/div>\n<div>\n<p>LAPS works pretty well when configured on a physical computer that doesn&#8217;t change state. Things get a little tricky when you introduce LAPS in a VDI environment.<\/p>\n<p><span style=\"text-decoration: underline;\">Persistent VDI (same computer name):<br \/>\n<\/span>This process is the same as a physical computer since the user connects to the same VDI image which persists (not destroyed at logoff).<\/p>\n<p><span style=\"text-decoration: underline;\">Non-Persistent VDI (new computer name):<br \/>\n<\/span>If the VDI workstation has a new computer name at every connect (non-persistent session, new computer image spun-up as part of user logon), then LAPS will update the password when the LAPS client runs and notices the ms-Mcs-AdmPwdExpirationTime attribute for the AD computer account is blank. As part of this process, the LAPS client generates and sets the local admin password and then updates the LAPS ms-Mcs-AdmPwd attribute on the AD Computer account (the ms-Mcs-AdmPwdExpirationTime attribute is updated as well). No problem here as this process is the same as a physical computer.<\/p>\n<p><span style=\"text-decoration: underline;\">Non-Persistent VDI (same computer name:<\/span><br \/>\nIf the VDI workstation has the same computer name at every connect\u00a0(non-persistent session, same\u00a0computer image spun-up), then LAPS will not update the password when the LAPS client runs soon after startup since it will notice that the ms-Mcs-AdmPwdExpirationTime attribute for the AD computer account is within the defined threshold (14 days for example). In this case the LAPS client will sleep until it notices the value in the ms-Mcs-AdmPwdExpirationTime attribute is greater than the threshold. This means that the VDI system would have the default VDI image password during most of the threshold period and for the time while the VDI system is active when the LAPS threshold is exceeded. At this point, LAPS updates the local administrator password locally and on the ms-Mcs-AdmPwdExpirationTime attribute on the AD computer account as well as the ms-Mcs-AdmPwdExpirationTime attribute at which point it sleeps for the defined number of days (14 in this case).<br \/>\nSince\u00a0 LAPS doesn&#8217;t have an (obvious) option to force the LAPS client to change the password at boot-up,\u00a0a script would need to run to clear the\u00a0ms-Mcs-AdmPwdExpirationTime attribute so when the\u00a0LAPS client runs (GPO refresh time) and checks the last password change time (ms-Mcs-AdmPwdExpirationTime), the local admin password would be changed. A PowerShell script can be configured that clears the ms-Mcs-AdmPwdExpirationTime when the user logs off (or during another event). The VDI solution may provide the ability to run a script at this point. A computer startup script (via GPO) would work as well.<\/p>\n<\/div>\n<div><\/div>\n<div>\n<div><strong><br \/>\nAuditing Access:<\/strong><\/div>\n<\/div>\n<div>Configure LAPS access auditing:<\/div>\n<blockquote>\n<div>\n<p>Set-AdmPwdAuditing \u2013OrgUnit: &lt;name of OU on which you want to setup the auditing&gt; -AuditedPrincipals: :&lt;identification of users\/groups whose access to password shall be audited&gt;<\/p>\n<\/div>\n<\/blockquote>\n<div>When someone accesses the LAPS password attribute, event ID 4662 is logged on the Domain Controller that responded to the read request.<\/div>\n<div><\/div>\n<div>\n<div><strong>Notes:<\/strong><\/div>\n<ul>\n<li>Since this solution is meant to automate the changing of local admin passwords as well as keeping this information private, identifying who should be able to retrieve the local admin passwords on a set of computers needs to be well thought-out.<\/li>\n<li>Key point is that delegation of (read) access to the password attribute needs to be carefully designed and deployed. This is the most important part of a LAPS deployment: determining who should have read access to the computer password data.<\/li>\n<li>The password itself should be about 25 characters (because that\u2019s what is \u201creasonable\u201d today). It should definitely be more than 15.<\/li>\n<li>The local admin password should also rotate at least as frequently as the computer AD account passwords (every 15 &#8211; 30 days).<\/li>\n<li>Accounts delegated to join computers to the domain <a href=\"http:\/\/blogs.msdn.com\/b\/laps\/archive\/2015\/07\/17\/laps-and-permission-to-join-computer-to-domain.aspx\">may be able to view LAPS password data on computer objects<\/a>.<\/li>\n<\/ul>\n<\/div>\n<p>&nbsp;<\/p>\n<p><strong>LAPS Enterprise (LAPS-E) Note:<\/strong><br \/>\nThere was another version of LAPS, known as LAPS Enterprise (LAPS-E), which included additional features such as encrypted passwords and management of multiple local accounts (if deployed as part of a customized Microsoft delivery).\u00a0 However, LAPS-E has a different code base from LAPS and hasn&#8217;t complete required security reviews within Microsoft. There is also no update model to ensure that customers receive code updates.\u00a0 Because of this, <em>Microsoft doesn\u2019t support LAPS-E, and no longer includes LAPS-E in any customer deliverables.<\/em> This means you shouldn&#8217;t use LAPS-E (though <a href=\"https:\/\/code.msdn.microsoft.com\/windowsapps\/Solution-for-management-of-ae44e789\">the code is available on MSDN<\/a>). In fact, LAPS works really well and if advanced functionality is required, there are several third-party products that provide similar capability and more (Cyber-Ark, Thycotic, Xceedium, Lieberman, Dell, etc).<\/p>\n<p>&nbsp;<\/p>\n<div><strong>LAPS Installation<\/strong><\/div>\n<div>LAPS requires updating the Active Directory schema, so membership in Schema Admins is required for at least part of the install.<br \/>\nPlease read through the LAPS documentation (LAPS Operation Guide, etc) before installing as it will save you time and hassle. \ud83d\ude42<\/div>\n<div><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/EffectivePermissions-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1798\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/EffectivePermissions-2.png\" alt=\"EffectivePermissions-2\" width=\"617\" height=\"387\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/EffectivePermissions-2.png 617w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/EffectivePermissions-2-300x188.png 300w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/a><\/div>\n<div><\/div>\n<div>Start the install&#8230;<\/div>\n<div><\/div>\n<div><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1799\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-01.png\" alt=\"LAPS-Install-01\" width=\"502\" height=\"386\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-01.png 502w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-01-300x231.png 300w\" sizes=\"auto, (max-width: 502px) 100vw, 502px\" \/><\/a><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1800\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-02.png\" alt=\"LAPS-Install-02\" width=\"498\" height=\"384\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-02.png 498w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-02-300x231.png 300w\" sizes=\"auto, (max-width: 498px) 100vw, 498px\" \/><\/a><\/div>\n<div>The custom setup page has several options.<br \/>\nThe Fat client UI &amp; PowerShell module only need to be installed on systems which will manage LAPS which includes those who will access the password(s).<br \/>\nThe GPO components are for deploying &amp; managing the LAPS GPOs.<\/div>\n<div><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-03.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1801\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-03.png\" alt=\"LAPS-Install-03\" width=\"500\" height=\"385\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-03.png 500w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-03-300x231.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1802\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-04.png\" alt=\"LAPS-Install-04\" width=\"499\" height=\"385\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-04.png 499w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-04-300x231.png 300w\" sizes=\"auto, (max-width: 499px) 100vw, 499px\" \/><\/a><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1803\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-05.png\" alt=\"LAPS-Install-05\" width=\"502\" height=\"383\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-05.png 502w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-05-300x229.png 300w\" sizes=\"auto, (max-width: 502px) 100vw, 502px\" \/><\/a><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-06.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1804\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-06.png\" alt=\"LAPS-Install-06\" width=\"499\" height=\"387\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-06.png 499w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-06-300x233.png 300w\" sizes=\"auto, (max-width: 499px) 100vw, 499px\" \/><\/a><\/div>\n<div><\/div>\n<div>NOTE:<br \/>\nDon&#8217;t install the LAPS client on a Domain Controller (and have the LAPS GPO configured at the domain level) since LAPS will start changing the default Administrator account (RID 500) for the domain. This happened to me in a lab environment and was fun tracking it down! \ud83d\ude09<\/div>\n<div><\/div>\n<div>The LAPS client installed can be verified by checking for admpwd.dll in c:\\program files\\LAPS\\CSE.<br \/>\nPowerShell is a quick &amp; easy way to verify install:\u00a0 <em>Get-ChildItem &#8216;c:\\program files\\LAPS\\CSE\\Admpwd.dll&#8217;<\/em><\/div>\n<div>GPO Client Side Extensions (CSEs) are registered here: HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\GPExtensions<br \/>\nThe admpwd GPO CSE is registered in this location.<\/div>\n<div><\/div>\n<div><\/div>\n<div><strong>LAPS Schema Update<br \/>\n<\/strong><\/div>\n<div>Once the LAPS client is installed and before any other configuration, now is a good time to extend the AD schema with the LAPS computer object attributes. Remember to always perform backups before modifying the AD schema.<\/div>\n<div>The LAPS schema adds two attributes:<\/div>\n<ul>\n<li>ms-Mcs-AdmPwd \u2013 Stores the password in clear text<\/li>\n<li>ms-Mcs-AdmPwdExpirationTime \u2013 Stores the time to reset the password<\/li>\n<\/ul>\n<p>LAPS includes a PowerShell cmdlet for updating the AD schema: Update-AdmPwdADSchma.<a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Update-AD-Schema.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2907\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Update-AD-Schema.png\" alt=\"LAPS-Update-AD-Schema\" width=\"1619\" height=\"261\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Update-AD-Schema.png 1619w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Update-AD-Schema-300x48.png 300w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Update-AD-Schema-768x124.png 768w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Update-AD-Schema-1024x165.png 1024w\" sizes=\"auto, (max-width: 1619px) 100vw, 1619px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<div>There is an important LAPS note when installing in an environment with RODCs:<\/div>\n<blockquote>\n<div>\n<p><strong><em>Note<\/em>:<\/strong> If you have an RODC installed in the environment and you need to replicate the value of the attribute ms-Mcs-AdmPwd to the RODC, you will need to change the 10<sup>th<\/sup> bit of the searchFlags attribute value for ms-Mcs-AdmPwd schema objet to 0 (substract 512 from the current value of the searchFlags attribute). For more information on Adding Attributes to or Removing attributes from the RODC Filtered Attribute Set, please refer to <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/cc754794(v=WS.10).aspx\">http:\/\/technet.microsoft.com\/en-us\/library\/cc754794(v=WS.10).aspx<\/a>.<\/p>\n<\/div>\n<\/blockquote>\n<div><\/div>\n<div><\/div>\n<div><strong>Group Policy Configuration<\/strong><\/div>\n<div>The LAPS Group Policy admin templates are copied to the local system when LAPS is installed:<\/div>\n<ul>\n<li>AdmPwd.admx &#8211;&gt; %WINDIR%\\PolicyDefinitions<\/li>\n<li>AdmPwd.adml &#8211;&gt; %WINDIR%\\PolicyDefinitions\\en-US<\/li>\n<\/ul>\n<p>These files can be copied to the <a href=\"https:\/\/support.microsoft.com\/en-us\/kb\/3087759\">AD GPO Central Store<\/a> so LAPS GPOs can be managed from any system (admx files in the PolicyDefinitions and the adml file in the en-US sub-folder).<\/p>\n<div><\/div>\n<div>There are four primary LAPS configuration settings:<\/div>\n<ol>\n<li>Password Settings &#8211; configure password length &amp; complexity.<\/li>\n<li>Configure if there&#8217;s an account other than the default Administrator account (RID 500).<\/li>\n<li>Enable this to prevent local admin passwords from being older than the domain password policy (set to Enabled). More on this in <a href=\"https:\/\/adsecurity.org\/?p=3164\">my LAPS security post<\/a>.<\/li>\n<li>Enable to enable LAPS to manage the local admin password. Don&#8217;t switch to &#8220;Enabled&#8221; until you are ready to have LAPS manage the passwords. If this is not Enabled, the LAPS client will not manage the passwords.<\/li>\n<\/ol>\n<div><\/div>\n<div><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3362\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-GPO-Config-02-2.png\" alt=\"laps-gpo-config-02\" width=\"745\" height=\"413\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-GPO-Config-02-2.png 745w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-GPO-Config-02-2-300x166.png 300w\" sizes=\"auto, (max-width: 745px) 100vw, 745px\" \/><\/div>\n<div><\/div>\n<div><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-GPO-Config-02-1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-1791\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-GPO-Config-02-1.png\" alt=\"LAPS-GPO-Config-02 (1)\" width=\"511\" height=\"470\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-GPO-Config-02-1.png 700w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-GPO-Config-02-1-300x276.png 300w\" sizes=\"auto, (max-width: 511px) 100vw, 511px\" \/><\/a><\/div>\n<div><\/div>\n<div><strong>Delegating Access to Computer Local Administrator Account Passwords<\/strong><\/div>\n<div>Before running any of the LAPS PowerShell cmdlets, ensure the LAPS PowerShell module is installed and imported (&#8220;Import-Module AdmPwd.PS&#8221;).<\/div>\n<div>Run the included PowerShell cmdlet &#8220;<em>Set-AdmPwdComputerSelfPermission<\/em>&#8221; to delegate rights for every computer in an OU (or the domain) to update its own computer attribute containing the local admin password (ms-Mcs-AdmPwd).<\/div>\n<div><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-08.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1805\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-08.png\" alt=\"LAPS-Install-08\" width=\"689\" height=\"248\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-08.png 689w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-08-300x108.png 300w\" sizes=\"auto, (max-width: 689px) 100vw, 689px\" \/><\/a><\/div>\n<div><\/div>\n<div>Run the included PowerShell cmdlet &#8220;<em>Set-AdmPwdReadPasswordPermission<\/em>&#8221; to delegate rights for a group to view local administrator account passwords in the specified OU.<\/div>\n<div><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-09.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1795\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-09.png\" alt=\"LAPS-Install-09\" width=\"842\" height=\"280\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-09.png 842w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-09-300x100.png 300w\" sizes=\"auto, (max-width: 842px) 100vw, 842px\" \/><\/a><\/div>\n<div><\/div>\n<div>Run the included PowerShell cmdlet &#8220;<em>Set-AdmPwdResetPasswordPermission<\/em>&#8221; to delegate rights for a group to force local administrator account passwords in the specified OU to change (ms-Mcs-AdmPwdExpirationTime).<\/div>\n<div><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-10.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1796\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-10.png\" alt=\"LAPS-Install-10\" width=\"802\" height=\"223\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-10.png 802w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-Install-10-300x83.png 300w\" sizes=\"auto, (max-width: 802px) 100vw, 802px\" \/><\/a><\/div>\n<div><\/div>\n<div>Permissions on a Workstation OU after delegating access.<\/div>\n<div><a href=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-SecurityPermissions.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1797\" src=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-SecurityPermissions.png\" alt=\"LAPS-SecurityPermissions\" width=\"777\" height=\"529\" srcset=\"https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-SecurityPermissions.png 777w, https:\/\/adsecurity.org\/wp-content\/uploads\/2015\/09\/LAPS-SecurityPermissions-300x204.png 300w\" sizes=\"auto, (max-width: 777px) 100vw, 777px\" \/><\/a><\/div>\n<div><\/div>\n<div>NOTE:<\/div>\n<div>The LAPS computer attributes are flagged as &#8220;confidential&#8221; which means that Authenticated Users don&#8217;t have read access like other objects in Active Directory. Domain Admins do have read access to confidential attributes, so if this is not desirable, these &#8220;extended rights&#8221; need to be removed. Instructions on how to do this are in the LAPS Operation Guide:<\/div>\n<blockquote>\n<div>\n<p>To quickly find which security principals have extended rights to the OU you can use PowerShell cmdlet. You may need to run Import-module AdmPwd.PS if this is a new window.<\/p>\n<p>Find-AdmPwdExtendedrights -identity :&lt;OU name&gt; | Format-Table<\/p>\n<\/div>\n<\/blockquote>\n<div><\/div>\n<div>\u00a0References &amp; Resources:<\/div>\n<ul>\n<li><a href=\"https:\/\/www.microsoft.com\/en-us\/download\/details.aspx?id=46899\">Microsoft Local Administrator Password Solution (<span class=\"il\">LAPS<\/span>) <\/a><\/li>\n<li><a href=\"https:\/\/technet.microsoft.com\/en-us\/library\/security\/3062591.aspx\">Microsoft Security Advisory 3062591<\/a> includes additional information on LAPS<\/li>\n<li><a href=\"http:\/\/blogs.msdn.com\/b\/laps\/archive\/2015\/07\/17\/laps-and-permission-to-join-computer-to-domain.aspx\">LAPS and permission to join computer to domain<\/a><\/li>\n<li><a href=\"https:\/\/blogs.technet.microsoft.com\/askpfeplat\/2015\/12\/28\/local-administrator-password-solution-laps-implementation-hints-and-security-nerd-commentary-including-mini-threat-model\/\">Local Administrator Password Solution (LAPS) Implementation Hints and Security Nerd Commentary (including mini threat model)<\/a><\/li>\n<\/ul>\n<div><\/div>\n<div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The Issue The real problem with local accounts on a computer in an enterprise environment is that the term &#8220;local&#8221; is a misnomer. If 50 computers on a network have the local administrator account of &#8220;Administrator&#8221; and a password of &#8220;P@55w0rd1!&#8221;, first of all that&#8217;s a HORRIBLE password. Second of all and more to the &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/adsecurity.org\/?p=1790\">Continue reading<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[565,11],"tags":[651,649,448,196,631,647,637,648,638,650,652,636,632,630,629,633,634,635,641,639,640],"class_list":["post-1790","post","type-post","status-publish","format-standard","hentry","category-activedirectorysecurity","category-microsoft-security","tag-cleartext","tag-eventid4662","tag-gpo","tag-grouppolicy","tag-laps","tag-lapsauditing","tag-lapsdelegation","tag-lapsevent4662","tag-lapsgpo","tag-lapspassword","tag-lapsschemaupdate","tag-lapssetup","tag-localadmin","tag-localadministratorpasswordsolution","tag-microsoftlaps","tag-ms-mcs-admpwd","tag-ms-mcs-admpwdexpirationtime","tag-schemaupdate","tag-set-admpwdcomputerselfpermission","tag-set-admpwdreadpasswordpermission","tag-set-admpwdresetpasswordpermission","item-wrap"],"_links":{"self":[{"href":"https:\/\/adsecurity.org\/index.php?rest_route=\/wp\/v2\/posts\/1790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adsecurity.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adsecurity.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adsecurity.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/adsecurity.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1790"}],"version-history":[{"count":26,"href":"https:\/\/adsecurity.org\/index.php?rest_route=\/wp\/v2\/posts\/1790\/revisions"}],"predecessor-version":[{"id":3431,"href":"https:\/\/adsecurity.org\/index.php?rest_route=\/wp\/v2\/posts\/1790\/revisions\/3431"}],"wp:attachment":[{"href":"https:\/\/adsecurity.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adsecurity.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adsecurity.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}