Get a Pentest and security assessment of your IT network.

Cyber Security

Windows Hashes: Are They Secure?

TL;DR

No, Windows hashes (like those used for password storage) aren’t typically encrypted in transit. They are protected using strong hashing algorithms and salting, but this isn’t the same as encryption. This means if someone intercepts the hash data while it’s being sent around your network, they could potentially try to crack them offline.

Understanding the Problem

When you log into Windows, your password doesn’t get stored directly. Instead, a one-way function called a ‘hash’ is created from it. This hash is what Windows actually stores and uses for verification. Salts are added to make cracking harder.

The question is about whether this hash data is protected when it’s being moved around – for example, when you authenticate to a network share or use Remote Desktop Protocol (RDP).

Solution: Protecting Windows Hashes

  1. Understand the Risks
    • Man-in-the-Middle Attacks: If someone intercepts network traffic, they could potentially steal hashes.
    • Offline Cracking: Stolen hashes can be cracked using tools and techniques like rainbow tables or brute-force attacks.
  2. Enable Network Level Authentication (NLA) for RDP

    NLA encrypts the entire RDP session, including authentication credentials *before* they are sent across the network. This is a crucial first step.

    • Open System Properties (search for ‘system properties’ in Windows).
    • Click Remote Settings.
    • Ensure Allow connections only from computers running Remote Desktop with Network Level Authentication is checked.
  3. Use SMB Encryption

    Server Message Block (SMB) is the protocol used for file sharing on Windows networks. Enabling SMB encryption protects hashes when accessing network shares.

    • PowerShell Command: To check current SMB encryption status:
      Get-SmbServerConfiguration | Select EnableSecuritySignature, RequireSecuritySignature
    • PowerShell Command: To enable SMB encryption (requires a server restart):
      Set-SmbServerConfiguration -EnableSecuritySignature $true -RequireSecuritySignature $true
  4. Implement Transport Layer Security (TLS) for other Services

    If you’re using other services that transmit hashes, ensure they are configured to use TLS. This encrypts the data in transit.

    • Check service documentation for specific TLS configuration instructions.
    • For example, configure IIS (Internet Information Services) to use HTTPS instead of HTTP.
  5. Monitor Network Traffic

    Use network monitoring tools to detect suspicious activity and potential hash theft attempts.

    • Wireshark: A popular packet analyser for capturing and inspecting network traffic.
    • Intrusion Detection Systems (IDS): Can alert you to unusual patterns that might indicate an attack.
  6. Regularly Audit Accounts

    Review user accounts and passwords regularly to identify weak or compromised credentials.

Important Considerations

  • Hashing vs. Encryption: Remember, hashing is one-way. Encryption is two-way (you can decrypt it). Hashing protects the stored password; encryption protects data in transit.
  • Key Length and Algorithm Strength: Ensure you’re using strong hashing algorithms like SHA-256 or better. Older algorithms like MD5 are easily cracked.
  • Salt Uniqueness: Each password must have a unique salt to prevent rainbow table attacks. Windows handles this automatically, but it’s good to be aware of.
Related posts
Cyber Security

Zip Codes & PII: Are They Personal Data?

Cyber Security

Zero-Day Vulnerabilities: User Defence Guide

Cyber Security

Zero Knowledge Voting with Trusted Server

Cyber Security

ZeroNet: 51% Attack Risks & Mitigation