Live data from Hacker News

How to steal Bitcoins that are protected by weak passphrases

palkeo.com

81–90 of 97 posts

Re: How to steal Bitcoins that are protected by weak passphrases

#81
post #21

Earlier quoted context omitted.

"correct horse battery staple" is a reference to xkcd [0]. Its not meant to be "random" and not meant to be used by anyone. I assume that people who send funds to that address are fully aware that anyone can access them. [0] http://xkcd.com/936/

It would be an interesting way to launder the block chain.

It's been done.

About a year ago, I generated the Bitcoin addresses derived from single-word passphrases in the English language. I then came across a "top 1000 passwords" list from a large site hack, and added those as well.

Finally, I set up a script that watched Blockchain.info's Websockets endpoint and checked every destination address against the list.

I quickly noticed that there were a large number of ~0.05 BTC transactions to these addresses, and a network analysis showed that many of them ended up in the same handful of addresses. Those addresses were tagged on Blockchain.info as being the destination for coins used to buy off the writer of the ransomware that was making the rounds at the time.

None of the money sat at those addresses for more than a couple of minutes. I'm fairly sure that the coins aren't being stolen from those addresses, but merely quickly run through in a feeble attempt to launder coins.

ETA: I suppose I should add that I didn't take any balances. I was merely satisfying my own curiosity.

Re: How to steal Bitcoins that are protected by weak passphrases

#82

So, I've always had a bad feeling about brain wallets. They make me uncomfortable. The fact that some folks consider them more secure than a random private key is even more worrisome. There is the fear of an exploit of your computer, which is valid. It's very, very common. But, if your computer is exploited the exploiter could still obtain your brain wallet if you use it on that computer. Cold storage of your private…

Brainwallets are secure, but need to be more than just words.

"foo bar baz" is a terribly passphrase, for instance. "foo bar baz lyndsy@lyndsysimon.com" is a much better passphrase - it's trivial to use a bit of personal information as a salt, thereby providing substantial protection against non-targeted attacks.

Re: How to steal Bitcoins that are protected by weak passphrases

#83
post #26

Directory.io first of all does not contain all private keys - it's more of a joke. Anyway, if a brain wallet has a weak password, you have quite a good chance of cracking it easily. But you have to know that it's a brain wallet. But using a brain wallet is just silly. Also, don't forget cracking private keys using weak signatures, although good luck finding someone who has a wallet and a weak signature... http://www.…

Of course directory.io is a joke :) A private key IS a number : https://en.bitcoin.it/wiki/Private_key The one you shown was just encoded in base58 !

To be really precise, it's encoded base58check.

Re: How to steal Bitcoins that are protected by weak passphrases

#84
post #29

Conspiracy theory : Is directory.io phishing ? It is possible that people would try to find their private key on directory.io for fun. You can do that by jumping to the relevant page. Meanwhile, the servers at directory.io would cache the GET requests and blast through the handful of keys on that page. The site is likely generating the pages on the fly. You can type directory.io/ x : 904625697166532776746648320380374…

Author here. Somebody did set up a website somewhere that allowed users to see if their private key was in the "database". It would jump them to the correct page, and, steal their private key in the process. I didn't like them potentially stealing my revenue, so I implemented this feature myself. The pluses beside the private key are permalinks. For example: http://directory.io/warning:understand-how-this-works!/5HpH…

Thanks for clarifying. Even though you may not have bad intentions, there are several points of failures e.g. server logs falling into wrong hands, man-in-the-middle-attack (using http) etc.

Maybe put a big disclaimer in red on top of every page.

Re: How to steal Bitcoins that are protected by weak passphrases

#85
post #38

Earlier quoted context omitted.

For some, P(losing key) > P(key theft)

P(key theft) is rather hard to calculate, given the entire universe is up against you and you have no visibility. There are plenty of ways of avoiding losing a key, or generating pneumonics from secure keys.

Unless this has something to do with the lungs, you mean "mnemonics" :)

Re: How to steal Bitcoins that are protected by weak passphrases

#89
post #4

Or: why not to use brainwallets.

What about a high entropy set of 4 words for the passphrase? This should give you fairly decent security.

Use the name of made-up music band -you haven't heard of anywhere- and attach the current age of someone in your family: Merrytallica27

Simply enough to remember and harder to crack than most passwords in the world.

Re: How to steal Bitcoins that are protected by weak passphrases

#90
Perhaps this comment will start a good discussion, or maybe people won't like it because I'm one of the thieves mentioned. I'm the owner of the 1brain7kAZxPagLt2HRLxqyc3VgGSa1GR address.

First, for those curious, the passphrases of the wallets taken from so far:

19JsLFDRxuTsAjapE79FgoVNdNdB2hNU5M - "alfanumerico" (0.36875 BTC)

1PQiixL1SyytXoUGFBGA5ptW9uTjsBrdhX - "emergency" (0.00085 BTC)

1CqRJYoztkWifUYadFg13MHdmECx6uEdy7 - "butterfly" (0.00025 BTC)

16ga2uqnF1NqpAuQeeg7sTCAdtDUwDyJav - "password" (0.00085 BTC)

1HZwkjkeaoZfTSaJxDw6aKkxp45agDiEzN - "" (0.474972 BTC)

1HoSFymoqteYrmmr7s3jDDqmggoxacbk37 - "hello" (0.000555 BTC)

1C7zdTfnkzmr13HfA2vNm5SJYRK6nEKyq8 - "correct horse battery staple" (0.243762 BTC)

1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T - "correct horse battery staple" (0.000079 BTC)

The implementation isn't particularly exciting. I have a PostgreSQL database containing a single `address' table storing (address, privKey, passphrase). Of course, the passphrase doesn't actually need to be stored, but I kept it around to satisfy my own curiosity. I run a modified bitcoind client that checks each transaction it hears about (in CTxMemPool::accept) to see if any of the outputs are in my database. If they are, a transaction is created, signed and broadcast to send the same number of BTC (minus fees) to 1brain7kAZxPagLt2HRLxqyc3VgGSa1GR.

I just wanted to point out that, when I started this, it was not for financial gain. I simply saw it as a fun and interesting exercise about the Bitcoin protocol. I wanted to see if I was capable to "winning the race" -- trust me when I say there are loads of people out there "mining" brainwallets, and whosever transaction is included in a block first tends to win and get the Bitcoin. I never expected to gain over 1 BTC, I think I got rather lucky. My database contains 19,412,020 passphrases (mostly single passwords, actually) which all came from various wordlists I found online. I consider this to be a fairly small dictionary, based on what I've read about other people doing the same thing. I originally had plans to make the database much bigger, however I've since moved onto other projects.

I'm happy to answer questions if people have any. There's a signed version of this comment at http://pastebin.com/s29kk2bb, which you can verify (rather ironically) at http://brainwallet.org/#verify.

Post reply on HN