Least privilege security and application whitelisting are all about protecting systems from unwanted change, but are also critical when it comes to protecting users’ credentials and domain admin passwords. While preventing key logging software from getting onto your systems is the most evident way these defenses might stop account credentials from being compromised, there are some less obvious advantages too.
Passwords are not stored in clear text but as encrypted strings, otherwise known as hashes. When a user enters their password for authentication, it’s used to generate a hash and compared with the password hash stored for the user in the service or application’s security database. If the two hashes match then the user is successfully authenticated to the system. While the password isn’t revealed during this exchange, if a hacker obtains the hash, they can use it to log on as the user.
NT Lan Manager (NTLM) is a legacy authentication protocol developed by Microsoft and is still widely used, with the hash being exposed every time a user needs to authenticate to a service or resource. Kerberos authentication takes a more secure approach by only exposing the user’s password hash once every 8 hours to request a Ticket Granting Ticket (TGT) from the Authentication Service (AS). Thereafter, when the user needs to authenticate to a particular resource, a service ticket is generated by the Ticket Granting Service (TGS) using the TGT, and passed between the two systems instead of exposing password hashes. Kerberos is used for domain authentication duties in Windows 2000 and later, but despite being more secure than NTLMv2, it isn’t immune to password hash attacks.
Despite the less than ideal way Windows uses password hashes, an attacker would need administrative privileges to access hashes stored in memory or the local Security Accounts Manager (SAM) database, so standard user accounts give a greater level of assurance for secondary logons.
To help protect domain admin credentials from being compromised use them only when necessary and against a domain controller. You can designate specially secured PCs, which have no Internet connection and are not used for any other purpose, for managing domain controllers. To further protect credentials, reboot management PCs after each use to clear password hashes from memory; or if using a VM, reset it to a known base configuration.
NTLM can be disabled in Windows 7 and Windows Server 2008 R2 (and later) via Group Policy, but is usually impractical because there are so many legacy applications that still rely on it. However, there are Group Policy settings that allow you to enable NTLM auditing so you can understand how the protocol is being used on your network.
- Use passphrases instead of passwords (15 characters or longer) to ensure insecure LM hashes are not cached in memory.
- Avoid interactive logons, i.e. the desktop or runas command, when managing sensitive systems. Remote management tools, such as the Computer Management MMC, use network logons that don’t cache NT hashes in memory.