I see a lot of documentation out there blaming PtH on Windows operating systems to the unsalted nature of LM/NT hashes.

Isn't this conjecture wrong? Introducing salting (if the salt is deterministic / e.g. username + domain + password) would only minimize the issue of offline password cracking and not solve the issue of PtH.

Am I right in this thinking? Why are all these companies and people saying the problem is rooted due to the unsalted nature of the hash?

  • Could you give some examples? – Tom K. Nov 21 '17 at 8:05
  • "This can be done because NT password hashes are created using an unsalted MD4 algorithm, so they are identical on each computer. This allows the attacker to match the username and password hash required on network logons." – Jack R. Nov 21 '17 at 8:07

Not salting is fairly minor. The issue becomes credential reuse - i.e. someone using the same password on multiple accounts. This becomes even more of an issue when administrators reuse the same password on a local machine administrator account to their domain account.

Pass the Hash is an issue common to all Challenge Response algorithms that require a shared secret available in the same form at both ends (in this case the hash). Both ends require the secret to respond/verify challenges. Windows chose this approach because it allows communication to occur in plaintext over the wire. There are two alternatives I am aware of -

  • Traditional password authentication. I.e. the password is sent to the server and verified against the stored hash there. However you require an encrypted connection or risk Man in the Middle attacks.
  • Public/Private key verification. The server stores the users public key and the client proves themselves with the private key. The main drawback here is that remembering a private key is substantially more difficult for the client than remembering a password. This can be avoided by deriving the private key from a password (using the password+salt as a seed for a random number generator which is used to generate the private key).
|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.