Using Google To Crack MD5 Passwords 232
stern writes "A security researcher at Cambridge was trying to figure out the password used by somebody who had hacked his Web site. He tried running a dictionary through the encryption hash function; no dice. Then he pasted the hacker's encrypted password into Google, and voila — there was his answer. Conclusion? Use no password that any other human being has ever used, or is ever likely to use, for any purpose. I think."
Salt (Score:5, Informative)
Re:Salt (Score:5, Funny)
Re:Salt (Score:5, Funny)
Re:RTFA (Score:5, Funny)
Re:Salt (Score:4, Interesting)
The guy posting was posting from the perspective of the user, not the author of the system. The conclusion from the summary is still accurate since you can't make the assumption that salt is always used. The next best defense is a crazy fucking password.
Re:Salt (Score:5, Insightful)
This is why my passwords are themselves salted hashes. The likelihood of someone else using my passwords is the same as a regular hash collision, I get to use a separate password for each place one is required, and the hashing mechanism and salt are simple enough for me to keep in my head. End result: infinite number of easily generatable and retrievable passwords that look just like a hashed password when decoded.
Phsaw (Score:2)
This is why I all MY passwords are salted hashes that I then re-hash and re-salt. To Taste.
Re: (Score:2)
Re: (Score:2)
But, increase the security factor by 10x by adding some spittle to the mix. Add a few strands of hair, an ocular scan, about 2 cubic meters of flatulence as an enhancer, and 3 toenails. Mix well, and syringe feed into the password encryption-generator. Then, put on your jade loin ring. Shoot your transmission and remove your bio-matter from the solid-state password encrypter device. Your password is now secure.
Re:Salt (Score:4, Funny)
Re: (Score:3, Insightful)
Re: (Score:3, Insightful)
Re:Salt (Score:4, Informative)
Re: (Score:3, Insightful)
Re:Salt.. .so then develop (Score:5, Funny)
Crazy fucking luser. Crazy fucking assword. Crazy fuckin' whirled up world.
The above is the 1.0 tourettes pack, silver. Stainless-fucking-steel adds an additional language pack...
Re:Salt (Score:4, Informative)
That adds a "local salt" but... courtesy of possible hash collisions there is another password that may work equally well.
by having the login function add the salt a straight rainbow lookup is defeated (unless you pre-computed a rainbow with the salt). As admin he could still enter the salted MD5, find a suitable password without salt, disable salting, get in enable salting, change the password. BUT a "normal" hacker without access to the DB tools and salting function of the app, but in possession of the hash table (and even the salt to some extent) would be defeated. if the attacker had the salt and hash table then with enough time the will break you login through rainbow tables, but not before.
-nB
Re: (Score:2)
Re:Salt (Score:4, Informative)
http://passwordmaker.sourceforge.net/passwordmaker.html [sourceforge.net]
One password for all sites, but a unqiue, "fscking crazy" password for all of them. You're welcome.
Re: (Score:2)
shoot...I love a lil' salt and pepper with my steak.
Re:Salt (Score:5, Insightful)
Precomupted dictionaries? Salting breaks it.
Brute force and compare against the whole pw list? Salting breaks it.
Salting is your friend. Long salts don't cost much, but make many attacks completely infeasible. Unix has been using salted passwords since forever. Yet nthash *still* doesn't include a salt.
Re:Salt (Score:5, Funny)
Re:Salt (Score:5, Funny)
Need something else to put on those fries? Salt it!
Need to make your friend's drink taste awful? Salt is the way to go.
(Somewhere along the line we left the analogy department
Re: (Score:2, Insightful)
Re:Salt (Score:5, Funny)
Re:Salt (Score:5, Funny)
Before the cream sits out too long, you must salt it.
When something's going wrong, you must salt it.
Now salt it! Salt it good!
Re: (Score:3, Funny)
Re: (Score:3, Interesting)
There are only 4096 different combinations in the salting algorithm in crypt() will use which a brute forcer can easily iterate. [regardless of encryption technique md5 or des]
Salting a known algorithm is almost pointless because as I just described salted passwords can be just as easily defeated if you know the mechanism, this is why NT doesn't include salt. Also salt was used on UNIX only because when shadow
Re:Salt (Score:5, Informative)
Salting doesn't make breaking hashes infeasible, but it makes the attacker work harder, and makes certain highly efficient attacks infeasible.
There are only 4096 different combinations in the salting algorithm in crypt() will use which a brute forcer can easily iterate.
And I completely agree that 12 bits of salt is insufficient in a modern world. Which is why MacOS 10.4 and up uses 32 bits of salt, most Linux implementations use 48 bits of salt, and OpenBSD uses (a rather paranoid) 128 bits. Since it doesn't require any more effort from the user, and only a tiny amount of resources, there's no reason not to use a large salt.
Salting a known algorithm is almost pointless because as I just described salted passwords can be just as easily defeated if you know the mechanism
If you have the password hashes they you have the salt too. Either way, brute forcing one password is no harder. But it means you have to work harder to do a whole list of passwords, because each password has to be attacked individually.
Salting also makes precomputation (pre-built dictionaries and rainbow tables) infeasible. Every bit of salt in essence doubles the amount of storage for your precomputation attack. This is (partly) why a fairly effective set of rainbow tables for LANMAN hashes take only 500ish MB, NTLM hashes take 8.5 GB, but even for the old Unix crypt() it would take at least 2 TB. And don't even think about trying any precomputation attacks against OpenBSD; even if the user was stupid and restricted themselves to 5 digit alphanumeric passwords, your rainbow table would consume more storage than exists. Salting makes you attack each password individually, and keeps you from doing any work ahead of time.
this is why NT doesn't include salt.
NTLM doesn't include a salt because (1) MS is trying to maintain a semblance of backwards compatibility with some ill-designed challenge response authentication mechanisms, and (2) they haven't learned the lesson that salting is a valuable strategy to make attacking hashes more difficult.
Also salt was used on UNIX only because when shadow passwords didn't exist the system had to be protected against users that had the same password and could easily read the password file to compare.
That is one reason why salts were used for old Unix crypt(). The other was to make precomputed dictionary attacks harder, which is still a valid use. Today, the best reason to use a salted hash is to avoid rainbow tables.
Really, the modern reason to use a salt is to prevent the type of attack the original poster used, and to prevent rainbow table attacks. Both of these are good attack techniques, and salting completely moots them.
Re: (Score:2)
Re: (Score:2)
If he wants to break YOUR password, then salting, at least the common public method, doesn't break any of those. It does break the Google attack though.
Re:Salt (Score:4, Informative)
It *does* breaks the Google attack, a precomputed dictionary, and rainbow tables, *even* if the attacker just wants *your* password.
Of these, rainbow tables is by far the most effective. Nobody computes their own rainbow tables. If I want to attack your hashed password, I'll download or buy a set of rainbow tables. Salting prevents this, because every salt value needs its own set of rainbow tables (or you have to include the salt rainbow table entries, which is approximately the same). Either way, using a 32-bit salt implies that to be equally effective, the total set of tables has to be 4 billion times larger. A 128 bit salt; well, you just can't create a set of rainbow tables for that. It just demolishes their effectiveness.
As you imply, there is a variant on salting which even makes plain brute forcing harder: don't store all of the salt. Of course this is (1) not widely deployed, and (2) imposes a high cost for legitimate use. Anyway, using repeated hash iterations is better, since you can't parallelize it.
Re: (Score:2)
Re: (Score:2)
Rainbow tables? Salting breaks it. Precomupted dictionaries? Salting breaks it. Brute force and compare against the whole pw list? Salting breaks it.
Salting adds some fixed number of bits of difficulty, it doesn't make anything impossible. In practice, the salt can be made SO large that the multiplier becomes insane (imagine a 12 character password with 1024 characters of cryptographically random salt added to it). But as far as theory goes, salt just makes brute force more work, it doesn't eliminate it
How about "don't use your first name As your PW"? (Score:4, Insightful)
Keep in mind that this was a hash of a userid (not a password) that was captured in a google index, and it's highly unlikely that someone will choose a userid on a google-indexed site that just-so-happens to be your 10+ character password that has mixed-case and special characters. I think the same "good password advice" still applies, even in a google-world.
MD5 Lookup Site & Names (Score:5, Informative)
He could have discovered this if he had used a database complete with names, something I don't think would have been too difficult for him.
This Google search idea is kind of moot if the user uses some very basic password construction such as what I've commented on before [slashdot.org]. Also, as the blog mentions, this discussion is worthless if WordPress used salting [wikipedia.org] which is related to nonces used in security engineering [wikipedia.org]. I think that stuff has been around for, what about five years now? Wake up WordPress!
5 years? (Score:5, Informative)
Re: (Score:2)
Re:MD5 Lookup Site & Names (Score:4, Funny)
Re: (Score:2)
You could put all the security researchers in the world together and they still couldn't tell you all the vulnerabilities that exist in currently deployed software. Perfection is not required to be considered an expert. Now, if this had gone on for a long time, or happened repeatedly, you might have a point.
Re:MD5 Lookup Site & Names (Score:5, Insightful)
I doubt Bruce Schneier himself audited the entire Movable Type codebase, which he uses for his blog. Does that make Schneier "not much of a security researcher"?
Re: (Score:2)
Was his WordPress installation up to date when he was "hacked"?
If it was not, that would not make him much of a security researcher
Re: (Score:2, Funny)
> Do0d+H!$p@SsW0rD!$t0ta1y$eCuRe
Re: (Score:2, Funny)
Another reverse md5 hash lookup [benramsey.com]
I have to agree with everyone else so far, pass the Salt.
Re:MD5 Lookup Site & Names (Score:5, Funny)
Security through obscurity (Score:3, Funny)
Re: (Score:2)
Step 2: download the source code
Step 3: come up with a decent password pattern (e.g. x3-4/x3-4/*/* which means two pseudo-words and two of any characters arranged in any order).
Step 4: Run the program a few times and pick a password you'll remember.
Step 5: Profit?
Re: (Score:3, Informative)
Obligatory (Score:5, Funny)
Re:Obligatory (Score:5, Funny)
My uneducated respose would be: (Score:4, Funny)
Re: (Score:2)
Re: (Score:2)
I was going to post what is probably the most common hash ever.....
5f4dcc3b5aa765d61d8327deb882cf99 = password
Re: (Score:3, Funny)
Re: (Score:2)
I wouldn't be too alarmed. (Score:5, Informative)
Re: (Score:2)
Re:I wouldn't be too alarmed. (Score:5, Funny)
Re:I wouldn't be too alarmed. (Score:5, Interesting)
Re: (Score:3, Insightful)
Re: (Score:2)
What's far more scary is the number of sites that want your email address as a user login. Imagine how many people use the same password across sites, including their email account...
Re:I wouldn't be too alarmed. (Score:5, Interesting)
Oh it's even better than that. It stores your md5 password in a plain text cookie, and if it receives such a cookie, sets an $already_md5 flag to true that's then passed to wp_login() which then just compares it literally against the unsalted md5 entry.
<guinness>Brilliant!</guinness>
Re: (Score:3, Funny)
Wouldn't a Strong Password prevent this as well? (Score:2)
"Not quite right" to parent and grandparent (Score:3, Informative)
Admittedly, both salting and complex passwords increase the size of the database involved. However, there's no reason one couldn't generate those databases as well. In fact, one of the Google results is for an on-line Password hash database [64.233.169.104]. So, all a group of hackers has to do is put the thing online in some manner of distributed storage, and wait for Google to index all the pages for 'em.
Fortunately, the problem grows exponentially with the number of allowable characters. Unfortunately, so does Google
Re: (Score:2)
On the other hand, solar power would be cheap, efficient. cooling would be easy, just hide behind the solar array.
Ping times to earth would suck though...
Re:Wouldn't a Strong Password prevent this as well (Score:2)
Dark Helmet (Score:5, Funny)
Re: (Score:2)
For the record, this is much funnier than it's been given credit for so far...
Let me guess (Score:5, Funny)
Re:Let me guess (Score:5, Funny)
In itself nothing new (Score:5, Insightful)
I am already doing this for telephone calls I cannot place. If it's an institution or a person that is calling because of profession, the chances that the telephone is listed somewhere on a (search engine) accessible web page is *very* large.
Re: (Score:3, Insightful)
just look for "cf99" (Score:3, Funny)
search enough systems and you're bound to see some doosh has used it.
Re:french bitch (Score:4, Insightful)
Been there. Done that. (Score:4, Informative)
I have personally been using Google this way for a while. This is the first thing I do when I encounter a passwd hash during a pentest. This is a technique that works very well especially for hashes produced by random apps that you have no idea what hashing algorithm they use. It works well not because the public passwd hash databases indexed by Google are large (they are not), but because they are very diverse, both in term of number of algorithms (MD5(), MD5(uppercase()), SHA1(), etc) and in terms of number of hash formats (hexadecimal value, decimal value, base64, etc).
And above all, it only takes 2 sec to perform the Google search.
Re: (Score:2)
Do you then let your clients know that you've sent sensitive company information to a commercial third party using insecure channels?
Re: (Score:2)
on a related note... (Score:5, Interesting)
* and, since collisions are possible, it would provide a nice corpus to study collisions, etc. in the real world.
** this isn't an entirely original idea. Linux distros have been posting checksums for years as a way to let users verify that their downloads were not corrupted; as a bonus, I (and I'm sure some others) have done searches of those values to find sites hosting that particular release.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
An MD5 hash is a pseudo-unique identifier of a piece of data based on its contents. Everything you've said is exactly the entire PURPOSE of a hash function. Boil down a piece of data to some fixed size code, and use this to index things. MD5, on top of being a hash, is a SECURE hash (well, relative term).
I don't want any credit**, just implement it and let me know when it's up and running!
Thank God you don't want credit, because nobody is going to give you any for coming up with something [wikipedia.org] that's been
Man, I need to change my password NOW. (Score:5, Funny)
Google Hash (Score:2)
Credibility? (Score:3, Informative)
And for his sake I really hope that he knew about rainbow tables and just decided for some indecipherable reason not to mention that they are far more effective for password cracking than Google searches.
And who submitted this story to Slashdot with the sensational summary about "any password used by anybody, ever" being vulnerable to Google searches? That's an easy enough claim to completely debunk by taking MD5 hashes of several passwords and sampling which ones come back. Let's see:
92259762923b4e79d2073ecb03217462 (hash for 'july2007') - Nothing
6e933f3054f533c63dd59479ca9f4b6f (hash for 'hello_world') - Nothing
2c6c8ab6ba8b9c98a1939450eb4089ed (hash for 'abc123') - Google found this one as an md5 example
6a51f1fe97bdebece7652842a0e2351e (hash for 'pickles') - Nothing
5eaaf94141c371ce96675aa6445003c4 (hash for 'happy') - Nothing
So basically not even common words get picked up by Google, much less "any password used by anybody else, ever".
Re: (Score:2, Funny)
Re:Credibility? (Score:4, Informative)
echo -n happy | md5sum
most password fields don't accept newlines, so trying without them:
3e652df0f1332cfc9df779d49667defc - still nothing
99b1ff8f11781541f7f89f9bd41c4a17 - still nothing
e99a18c428cb38d5f260853678922e03 - abc123
fd03204cfdc557b0f0d134773ae6fff5 - obscure, it finds a flash app on a site called pickles and things
56ab24c15b72a457069c5ea42fcfc640 - happy
So it is still not that much of a problem, but at least happy is on the list.
I wonder if negative outlook words are more or less secure?
Re: (Score:3)
If he'd written his own software, you might have half a point (though only half of one; perfectly secure apps, especially perfectly secure web apps, are always a pipe dream).
If he'd been a victim of the same exploit several times in a row, then you might have a full point.
You can't blame a person for being a victim of a zero-day exploit in someone else's software, especially if the software is as complex as a blogging/CMS platform
Re: (Score:2)
Re: (Score:2)
Re:Credibility? (Score:5, Funny)
No worse than Subversion (Score:4, Insightful)
Do not *EVER* allow a Subversion system to use the same passwords as the user system, and if you have access to the user's accounts, run a check of their stored Subversion passwords to make sure they didn't use their same password somewhere else as for their local user account.
Re: (Score:2)
new worm spreading (Score:2, Interesting)
But seriously, as fun as it is to look up all your hashed responses on google, I'm going back to por... work
You might also want to check out http://utilitymill.com/utility/Goog_Your_Hash [utilitymill.com] to see if your password is 'safe'.
No, it means that as the attacker... (Score:2)
Consider that with the
Hash DBs have been around for years. (Score:2, Informative)
Finding your hashes on google (Score:2)
I like to search for a part of my password on my computer every once in a while to see if programs store in plain text.
If my password would be "zxcvbbn.34#$" then I would search for "vbbn".
So for google; you can search for a part of your hash but still be secure.
HMAC (Score:3)
PHP5 has a function built-in and I'm sure most other languages have comparable implementations available. It's not fool proof by any stretch, but if you use a randomly generated fixed "key," it at least prevents someone from using Google to discover the cleartext.
Better still: Use a unique value for the account + a randomly generated key. For example:
Key = "c,.rcph203p9h"
UserID = 12
HMAC_KEY = "c,.rcph203p9h::12"
That will make it computationally difficult to crack, as each password must be brute-forced individually.
Re: (Score:2, Informative)
Re: (Score:2)
$1$PPTAgWE3$lZtEc7k971.seo6XpSW7N1
Re: (Score:2)