Unfortunately cases like that, you have only two choices: 1) Don't use such services for anything sensitive
and/or 2) Change the passwords for those services much more frequently than you do your other passwords, something on the order of 15 days or less | -----Original Message----- | From: Aditya Lalit Deshmukh [mailto:[EMAIL PROTECTED]] | Sent: Friday, July 05, 2002 22:53 | To: 'John Forristel'; 'Richard Conlan'; [EMAIL PROTECTED] | Cc: 'Chris Berry'; [EMAIL PROTECTED] | Subject: Password Strength III (?) | | | We all know about how the password should have a numbers, upper case, | lower case and puncuation marks for more security ( ie to | prevent brute | forcing ) | | But how does one make passwords for things like hotmail | Where the choice is just numbers, uppercase and lower case without | puncuation marks plus the password length is limited to 16 char ( or | less ) | | Any one got good suggestions for this one | | Ps hotmail is just taken as a example! | | Aditya | | | > -----Original Message----- | > From: John Forristel [mailto:[EMAIL PROTECTED]] | > Sent: Thursday, July 04, 2002 9:42 AM | > To: Richard Conlan; [EMAIL PROTECTED] | > Cc: Chris Berry; [EMAIL PROTECTED] | > Subject: Re: Password Strength II | > | > | > Here is an OLD article on LANMAN hash's (from 1997). Mudge | > wrote it on l0pht Crack 1.5 and how weak MS made the | > passwords and why: | > | > If the "charts" get screwed up, here is the link: | > http://www.insecure.org/sploits/l0phtcrack.lanman.problems.html | > | > Now, let's rip apart why it is so trivial to go through the | > LM hash on the network. And then talk about why the NT hash | > doesn't matter. | > | > -------------------------- ----------------------------- | > | 16byte LM hash | | 16byte NT hash (md4) | | > -------------------------- ----------------------------- | > | > We already know that you only have to go through 7 characters | > to retrieve passwords (up to 14 chars in length) in the LM | > hash, and that since there is no salting being done, | > constants show up all over the place giving away too much | > information and speeding up attacks tremendously. | > | > ------------------------------------------------- | > | 1st 8bytes of LMhash | second 8bytes of LMhash | | > ------------------------------------------------- | > | > 1st 8 bytes are derived from the first seven characters of | > the password and the second 8 bytes are derived from the 8th | > through 14th characters of the password. If the password is | > less than 7 characters then the second half will always be: | > 0xAAD3B435B51404EE. | > | > Let's assume for this example that the users password has a | > LM hash of 0xC23413A8A1E7665fAAD3B435B51404EE (which I'll | > save everyone the nanosecond it would have taken for them to | > plug this into L0phtcrack and have it tell them the password | > is "WELCOME"). | > | > Here's what happens to this hash on the network: | > | > -------- -------- | > | A | <______________| B | | > | | | | | > -------- -------- | > | > B sends an 8 byte challenge to A. (assume 0x0001020304050607) | > | > Machine A takes the hash of 0xC23413A8A1E7665fAAD3B435B51404EE | > and adds 5 nulls to it, thus becoming | > 0xC23413A8A1E7665fAAD3B435B51404EE0000000000. | > | > The string 0xC23413A8A1E7665fAAD3B435B51404EE0000000000 is | > broken into three groups of 7: | > | > C23413A8A1E766 5fAAD3B435B514 04EE0000000000 | > | > The 7 byte strings are str_to_key'd (if you will) into 8 byte | > odd parity des keys. | > | > Now we have : | > | > | 8byteDeskey1 | | 8byteDeskey2 | | 8 byteDeskey3 | | > | > 8byteDeskey1 is used to encrypt the challenge | > 0x0001020304050607. Let's assume the result is 0xAAAAAAAAAAAAAAAA. | > | > 8byteDeskey2 is used to encrypt the challenge | > 0x0001020304050607. Let's assume the result is 0xBBBBBBBBBBBBBBBB. | > | > 8byteDeskey3 is used to encrypt the challenge | > 0x0001020304050607. Let's assume the result is 0xCCCCCCCCCCCCCCCC. | > | > The three 8byte values are concatenated (!dumb!), and the 24 | > byte response of 0xAAAAAAAABBBBBBBBCCCCCCCC is returned to | > the server. The server does the same thing to the hash on | > it's end and compares the result to the 24 byte response. If | > they match, it was the correct original hash. | > | > Why this is boneheaded: | > ---------------------- | > | > 7 char or less passwords. | > | > -------------------- -------------------- | -------------------- | > | C23413A8A1E766 || 5fAAD3B435B514 || | 04EE0000000000 | | > -------------------- -------------------- | -------------------- | > | > The first thing we check is to see if the users password is | > less than 8 characters in length. We do this by taking the 7 | > byte value of 0x04EE0000000000, turning it into an 8 byte odd | > parity DES key, and encrypting it against the 8 byte | > challenge of 0x0001020304050607. If we get the result of | > 0xCCCCCCCCCCCCCCCC then we are pretty sure it's < 8 chars in length. | > | > In order to be sure we can run through 0x??AAD3B435B514 (ie | > 256 possible | > combinations) to see that 5f shows us the result is | > 0xBBBBBBBBBBBBBBBB, proving that the password is less than 7 | > characters and also giving us the last byte of the first half | > of the LM hash. | > | > >>From this point, even assuming we're just joyriding and | not worried | > >>about | > optimizing the way this is done (believe me, there are much | > more effective ways to do this that reduce the amount of time | > needed even further... this whole this is just showing that | > even a simplistic attack works against this implementation), | > it's no different than how a tool like L0phtcrack attacks the | > hashes in the registry. | > | > 8 char or greater passwords. | > | > -------------------- -------------------- | -------------------- | > | C23413A8A1E766 || AC435F2DD90417 || | CCD60000000000 | | > -------------------- -------------------- | -------------------- | > | > The first thing to check is whether the password is less than | > 8 characters in length. Deriving the 8 byte odd parity des | > key from 0x04EE0000000000 and encrypting against | > 0x0001020304050607 does not, in this case, give us | > 0xCCCCCCCCCCCCCCCC, so we know that the password is 8 | > characters or greater. | > | > It takes us, in a worst case scenario, 65535 checks to figure | > out that the 2bytes that are used in the last third are | > 0xCCD6. Even approaching this in a completely brain-dead | > fashion (hey, turn-about is fair play), you can go through | > your 7 digit combinations of characters for the first third | > the same way you would the LM hash from the registry. This | > will yield not only the first third of the response, but also | > the first byte of the second third. Keep in mind that you | > already have the last two bytes that made up the third third. | > | > You could approach the middle third in the same fashion. | > | > (note: this whole method that MS is doing screams for a | > precompute table lookup attack - which given the small enough | > potential values is not impossible by any means) | > | > Thus, the challenge response is completely brute-forcable for | > the LM-hash. | > | > MS made the "oversight" of still sending the LM-hash response | > along with the NT response even when SP3 was installed. Thus | > it was a moot point as to how tough or well done the NT hash | > might or might not be. | > | > Since installing the LM-fix precludes continued use of | > windows 95 machines in regards to talking to NT machines, it | > is still a moot point as to how tough or well done the NT | > hash might or might not be. | > | > The LM hash is incredibly weak and your more secure NT hash | > is brought down to the lowest common denominator. | > | > Thus, the challenge response is completely brute-forcable for | > the LM-hash. | > | > MS made the "oversight" of still sending the LM-hash response | > along with the NT response even when SP3 was installed. Thus | > it was a moot point as to how tough or well done the NT hash | > might or might not be. | > | > Since installing the LM-fix precludes continued use of | > windows 95 machines in regards to talking to NT machines, it | > is still a moot point as to how tough or well done the NT | > hash might or might not be. | > | > The LM hash is incredibly weak and your more secure NT hash | > is brought down to the lowest common denominator. | > | > | > ----- Original Message ----- | > From: "Richard Conlan" <[EMAIL PROTECTED]> | > To: <[EMAIL PROTECTED]> | > Cc: "Chris Berry" <[EMAIL PROTECTED]>; | > <[EMAIL PROTECTED]> | > Sent: Tuesday, July 02, 2002 8:23 AM | > Subject: Re: Password Strength II | > | > | > > Where did you get that NT4 only encrypts the first eight | > characters? | > > It was my understanding that it used the first fourteen | to come up | > > with the LANMAN hash, but that regardless it stored the entire | > > password in some "secure" format. Is this untrue, or are | > you mistaken | > > in your statement? | > > | > > On Sun, 30 Jun 2002 [EMAIL PROTECTED] wrote: | > > | > > > | > > > | > > > I would say 2 things, to be confirmed by some expert : | > > > | > > > 1) In systems like NT4, only the 8 first digits are | > encrypted, the | > > > rest | > of | > > > the password is stored in the clear. In your case | > "VX.97tf" is then | > > > much secured than "theusgot" (68^7 compared to (8digits words | > > > number) + | > (7digits | > > > word number + 68) + (6digits word number * 2 digits word | > number) + | > > > (6 digits word number * 68^2)...) | > > > | > > > (note that the number of solutions using brute force is easy to | > calculate, | > > > but not the one in dictionnary-based attacks, | especially when the | > > > number | > of | > > > digits is knew, and especially if some semantic rules are used) | > > > | > > > More simply one can suppose that "theusgot" can be guessed more | > > > easily | > by a | > > > cracker soft than "VX.97tf", don't you think so ? | > > > | > > > 2) If the number of encrypted digits is more than 8, | obviously the | > strength | > > > of your password has something ("something", not | > "everything" !) to | > > > see with its length. So in your case, you should compare the | > > > strength of " theusgotbeatbygermany" to "kjdASFD234$&%$#sfsCS>". | > > > | > > > | > > > To summarize: | > > > there are rules that you forgot in how to measure the | strength of | > > > the password (for example the length of it, how many | > characters are | > encrypted, | > > > and others I don't know), | > > > | > > > and | > > > | > > > when you compare 2 things, take the same rules to | compare them (I | > > > can guarantee you that the password | > "theusgotbeatbygermany" is more | > > > secure | > than | > > > the randomly generated password ";". I just forgot the | length has | > > > its | > > > importance) | > > > | > > > my 2 cents, not explaining the whole thing, but bringing some | > > > ideas... | > > > | > > > seb | > > > | > > > | > > > | > > > | > > > | > > > Chris Berry | > > > <compjma@hotmail. To: | > [EMAIL PROTECTED] | > > > com> cc: | > > > Subject: | Password | > Strength II | > > > 2002/06/28 08:48 | > > > | > > > | > > > | > > > | > > > | > > > | > > > | > > > | > > > I've gotten quite a few responses saying no because the | > passwords I | > asked | > > > about previously (theusgotbeatbygermany vs. VX.97tf) had | > dictionary | > words | > > > in it, which is what I've always told my users in the | > past, however | > > > I | > was | > > > doing some math and it makes it look different, maybe | > someone here | > > > can point out my error. | > > > | > > > In a brute force attack the longer password will always | > be better, | > > > we're all agreed on that, however hackers are smarter | > than that and | > > > will try dictionary and hybrid attacks first. So this | is what I | > > > think the odds | > are | > > > approximately: | > > > | > > > VX.97tf has to be brute forced so 68^7=6x10^12 certainly a big | > > > number | > and | > > > good to go in my book. | > > > | > > > theusgotbeatbygermany doesn't have to be brute forced, and is | > susceptible | > > > to a dictionary attack so instead of letters the | > possiblity is based | > > > on individual words which is 6, the LC4 program standard | > dictionary | > > > has | > 29000 | > > > entries (approximately) so we're looking at | > 29000^6=5x10^26 A BIGGER | > > > NUMBER! (not to mention making it impossible to store in | > a LM hash) | > > > | > > > Am I missing something? | > > > | > > > | > > > | > > > | > > > | > | |