3 ms·
Haha, I had the same idea. The since (valid) transactions are passed freely to all nodes in the Bitcoin network, one can just use the network as a signed messag
by verroq 12y ago
Haha, I had the same idea.
The since (valid) transactions are passed freely to all nodes in the Bitcoin network, one can just use the network as a signed messaging platform.
You don't need to query blockchain.info, all you need is a Bitcoin client that listens for incoming transactions.
I've been writing an implementation on and off for a while now.
The general idea is as follows:
The botnet client connects to "n" Bitcoin nodes. If the same transaction is relayed by ceil(n/2) nodes, then we say that transaction is "confirmed" and examines the transaction to see if it's sent from botmaster's address (in fact we don't even have to use the botmaster's address, with BIP-0032 (https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki https://github.com/bitcoin/bips/blob/master/bip-0032.mediawi...), we can use related public keys)
You don't even have to use transactions ("tx" messages), you can use the block messages if you are willing to tolerate an (on average) 10 minute delay, this would drastically reduce the network traffic sent/received by the botnet client.
But these guys forced my hand, so I suppose I'll have to release what I have so far.
The current botcoin client (c++11 with boost::asio) connects to the network, and gets transactions.
Data extraction from transactions is unfinished.
The current problem I'm working on is making sure that people cannot easily scan the Blockchain to look for c&c transactions. This can easily be done by encrypting the messages with a client specific key.
However, I would like to have perfect forward secrecy, that is, suppose a sample client was obtained by researchers, past c&c messages should not be able to be decrypted (otherwise the blockchain contains a log of all of your C&C messages).
[link redacted]
- deleted 12y ago[deleted]
- towelguy 12y ago> You don't even have to use transactions ("tx" messages), you can use the block messages if you are willing to tolerate an (on average) 10 minute delay Does this mean you can send messages without transfering bitcoin from one account to another?
- Buge 12y agoI think the meaning is that you still post messages in transactions, but the difference is how the bots listen. Instead of listening for individual transactions (which would be a huge amount of traffic) only listen when a new block is found, every 10 minutes. The block will contain the transaction.
- deleted 12y ago[deleted]
- RemoteWorker 12y agoThe term is "address". There are no accounts in the Bitcoin network.
- needmoney90 12y agoI'm not surprised that someone else had the idea. Honestly, the fact that it wasn't in the wild yet surprised me. Great code, I'll be looking over it in my free time! (I'm one of the authors of the paper)
- hedgehog 12y agoAre you aware of Dave Dittrich's work at University of Washington? He wrote a nice overview on secured P2P C&C networks in Storm and Nugache that you might find interesting: http://staff.washington.edu/dittrich/writing.html http://staff.washington.edu/dittrich/writing.html
- needmoney90 12y agoI cited one of his papers actually, I didn't know that site with all his works existed though. Thanks for the link, I'll read some more of his writings.
- verroq 12y agoIt seems that even DHT based botnets need to hard code initial peers. Using the Bitcoin network eliminates this completely (now you need just need Bitcoin's bootstrap nodes).