General, Info Sec 21-October-2017 .NetRussell 21 comments

Locating Monero Users via Transaction Broadcasts

 

Synopsis

I have shown that using a very simple script, we can start to locate people transmitting (this could be a node rebroadcasting or someone using their wallet to send a transaction) on the Monero peer to peer network. Being able to obtain the IP of users currently transmitting on the network not only exposes them to federal governments wishing to oppress crypto currency and track users, but also opens up these Monero users to attack by hackers.

This doesn’t mean that you can see what is contained inside the TX data However, you can see someone transmitting on the network. Being able to locate these users, unequivocally, hurts this coins anonymity.

Many people say “This is how the internet works!” Exactly, and that’s why we turn to privacy technology to circumvent this. Monero is marketed as an anonymous coin. Then why aren’t I anonymous when I use it by default?

This is by no means a new discovery. The Monero dev team has said for a while that this is a problem and that they’re fixing it in a coming release. I built this very simple PoC to demonstrate how it could be abused.

 

Defining “Anonymous”

I have seen two main arguments in the crypto world in regards to anonymous transactions. More often than not, less informed users tend to confuse them only adding to the muddiness of the topic. I’m going to define them both here so that we can be clear in this article which I’m speaking about.

Untraceable Transactions
– The ability to send a transaction and not link the transaction to whom sent it or see where it’s going. You can have an untraceable transaction being transmitted from a known person though. It would be like me saying something to a crowd in a secret language that only you and I understood. Everyone can see who is saying it, but they have no idea what is being said or to whom.

Anonymous Transactions – The ability to broadcast a transaction to the network and the network cannot tell whom sent the transaction. This is the case with coins that transmit over Tor and I2P because the network only sees exit node ips and not the origin user’s ip. This technology allows you to transmit transactions to the network and no one will know who you are.

Most arguments that I see tend to confuse these two points. The reality is, you want both untraceable transactions and anonymous transactions.


The Vulnerability

So now that we understand the differences I highlighted above, let’s discuss what the vulnerability is in Monero currently.

When you start your wallet, and it starts the Monero daemon, you register yourself on the peer to peer network. This network allows you to receive connections from not just other nodes rebroadcasting transactions, but other user’s wallets broadcasting transactions as well. This is how the decentralized network works. If the users that are transmitting on the network aren’t transmitting over Tor, I2p or a VPN (which the wallet doesn’t do by default) then you will see an incoming connection from their IP address on port 18080.

Now I’ve recently heard the argument that these are just server nodes but the fact of the matter is you can easily determine who is and who isn’t a server node by just doing a whois on the ip. Most server nodes are not running on Century Link, Comcast and Time Warner private residential IPs.

Being able to positively say, someone at a specific IP is using a Monero wallet is very risky. I’ll highlight why more below in the perspective section because this has multiple angles of risk.

 

The Script

You can download the script from my github page https://github.com/DotNetRussell/MoneroUserScraper
Without all of the fluff, the meat of the script is this command

netstat -ant | awk '{ print $5 }' | cut -d: -f1,2 | sort -u | grep 18080 | cut -d ':' -f1

 

What this command does is calls netstat, searches for connections on port 18080 and then cuts out the IP address. By itself it doesn’t remove server nodes. During my research however, I noticed that there were a few IPs that were ALWAYS connected. I assumed that these were the server nodes and I whitelisted them.


whitelist = ["213.114.82.127","82.161.134.181","73.150.225.122","41.193.192.187","95.148.54.164",
"86.180.40.59","5.196.251.161","81.169.150.217","164.132.166.19","185.2.82.98",
"37.59.97.72","51.15.58.213","73.75.254.224","138.197.182.111","184.18.173.96",
"163.172.18.143"]

 

All connections that are posted to the twitter bot in the script are connections that come in for a very brief moment and then disconnect. This suggests to me that they are peers sending a transaction.

 

Perspectives

So I hope this section doesn’t come off condescending but we need to be as clear as possible because most users of these coins have no idea what it means to have your IP leak to the network. I’ve taken a moment to write up different perspectives of this vulnerability.

 

The hacker perspective
So from a hacker’s perspective this is a gold mine. If I were an attacker bent on stealing some cash from non-suspecting users, I would definitely be listening to the network for transmission IPs. Armed only with the knowledge of your IP and knowing that you’re doing something that involves Monero, you instantly go to the top of the list of targets. Most users don’t patch their machines constantly. Most users CERTAINLY don’t patch their access points. One Nmap scan later and an attacker might have all they need to start penetrating your network. Would you be comfortable telling hackers what machine you keep your Monero wallet on? Probably not. This is one very simple example of how attackers could come after you. Never mind social engineer, phishing emails, etc. etc.

The government perspective
So in the United States (for now at least) the only thing we’re really stressed about is the IRS. That is unless you’re doing something that the other alphabet orgs would be interested in. For this conversation let’s just say we’re attempting to insulate ourselves from nosy tax people.

I would be SHOCKED if the feds weren’t already scraping IP’s of Monero users. Absolutely shocked. We know from a recent article that the IRS has been using software to track bitcoin since 2013. Do you really think they would pass up an opportunity to link an “anonymous” currency back to a residence? Normal people don’t have the ability to translate an IP into a physical home address but you sure as hell better bet the feds do. It may not be long before you get a letter in the mail requiring you to declare your Monero wallet and all your transactions on the network explained.

 

White collar crimes are small potatoes though to people in countries where breaking the law might cost you your life. The entire point of sending crypto anonymously is that you can have money that you can use safely without someone else knowing about it. If I’m in a country that has outlawed crypto currency or that is attempting to intentionally keep the population poor, how long do you think it would take them to come knocking at your door? I prefer to keep my hands attached to my arms. Not getting them hacked off by some fed with a machete because I sent or received some satoshis.

You think your transactions are safe from the government, right until they know where you live, and have enough cause to take your machine. Then they’ll see exactly how many transactions you made, to whom and for how much. Good luck with that.


How to Fix this Issue

Anyone that follows my work or that has heard me speak knows that I don’t bitch for the sake of bitching. If I identify a problem I will almost certainly always provide a fix to the issue.

So to fix the issue it’s straight forward I think. Use Tor, a VPN or I2p as a backbone for your crypto. If you’re sending “anonymous” transactions over the Clearnet you’re only fooling yourself. Either use one of these services for your Monero transactions or switch to a coin that has it built in. They exist.

 

Further Research

So I wanted to talk a little about the research moving forward. Some of the problems with the above method are that you may be collecting a rebroadcast of a transaction and not the origin broadcast. I believe I have discovered a way to identify almost certainly though whom sent the transaction using a mesh of scrapers positioned around the world. In the next couple weeks I will be doing a closed research project that will be attempting to proof this. Please follow me on twitter and reach out to me if you’d like to be part of the study.

 

DISCLOSURES:

So I attempted to write this article as a non-bias infosec researcher and not as an investor trying to tear down another coin. That said, I have a vested interest in a direct competitor to Monero (which I won’t name to attempt to keep integrity) 

This all said, even if I didn’t have a vested interest in a competitor I would have still done this research and written this article. Users need to understand the dangers of IP leakage when they’re expecting something to provide anonymity. 

21 thoughts on “Locating Monero Users via Transaction Broadcasts

  1. Disclosure: I’m a Monero contributor and own only XMR and Bitcoin/Bitcoin Cash.

    “So I attempted to write this article as a non-bias infosec researcher and not as an investor trying to tear down another coin. That said, I have a vested interest in a direct competitor to Monero (which I won’t name to attempt to keep integrity) ”

    In order to evaluate how prominent bias may have played you should disclose what said coin is so we know what to evaluate against to determine if your piece has more bias than not and provide constructive critique. It seems intellectually dishonest to say full disclosure, but not fully disclose.

    “Anonymous Transactions – The ability to broadcast a transaction to the network and the network cannot tell whom sent the transaction”

    This is not a strong enough definition, as people who use VPN/I2P/Tor broadcasts for Bitcoin tx can attest (see: various CoinBase stories about account shutdowns, etc) and generally when Bitcoin is referred to as psuedoanonymous it has more to do with ledger analysis than lack of baked in Tor/I2P the latter of which can be easily remedied on the client end, but not the former. The biggest counterpoint would be the BitCoin tx being traceable and linkable enough for law enforcement to get financial warrants to freeze the assets of Cazes of AlphaBay of despite using tumblers and Tor. Anon tx must also be cryptographically unlikely to be traced or linked as highlighted by the case of Cazes.

    “Monero is marketed as an anonymous coin.” “This is by no means a new discovery. The Monero dev team has said for a while that this is a problem and that they’re fixing it in a coming release. I built this very simple PoC to demonstrate how it could be abused.”

    Looking at getmonero.org, I don’t see any references to anonymity on the front page. Untraceable yes, anonymous, no. The byline has been ‘secure, private, untraceable’ for a good while. So can you provide a source where a prominent contributor is specifically marketing Monero as ‘anonymous’?

    Just for kicks and giggles by comparison the Verge website (I picked Verge since this article seems to have gained the most traction with Verge users on your Twitter link) says “Verge is a secure and anonymous cryptocurrency, built with a focus on privacy.” Given that network masking alone does not make a tx anonymous as highlighted above I’m curious as to your thoughts on Verge marketing on the first line of their website themselves as being anonymous despite this being an arguably blatant lie.

    In short, I recommend you cite sources, strength your definitions of anonymity here and in your future work, and actually fully disclose what other coin you have a hold in.

    That being said, I look forward to what results your future work will bring and wish you the best of luck.

    1. Hi there. Thank you so much for reaching out and being polite. Other users can take a ton of lessons from your input here. Totally refutes what I say but respectfully. Much appreciated.

      That all said, I’m on my phone so give me a day to read over your input and consume it properly.

      Thanks again.

      1. Well sadly it looks like I found out how much bias you have. While unfortunately I didn’t grab a screenshot of the comments made by ‘Indigo’ while the conversation was happening because I thought the comments the person made were reasonable and not actually ban worthy… the fact that *you* banned them goes to show how much bias you have towards even the most benign criticism of your coin, Verge.

        For the context for others, ‘Indigo’ politely responded to ‘Black’ to the effect of saying that siacoin was doing well because it was relatively unique as it was the only decent coin out in the actual wild that does what it does while Verge wasn’t doing as well because Verge had hyped Wraith for several months and failed to deliver ledger privacy in the initial Wraith release while several other coins offer ledger privacy (which Indigo didn’t name) and can rest on top of clients like Tor, and VPNs that provide network privacy.

        Conversation source, taken from Verge Discord’s main channel: https://imgur.com/a/fHDEW

        The irony of people like CryptoKaku telling people to chillax over alleged ‘FUD’ while ‘a non-bias infosec researcher’ gets emotional and bans + censors over the lightest of indirect criticisms reflects rather poorly of the leadership within Verge and highlights the bias that inevitably shaped the way things like anonymity were defined in this post. You even purged the criticism by aonimal (https://github.com/DotNetRussell/MoneroUserScraper/issues/1+&cd=1&hl=uk&ct=clnk&gl=ua) Thankfully the web never forgets (https://imgur.com/a/ILtr9).

        Since I am a regular DEFCON attendee and given censorship tendency’s over the most benign of comments, I am concerned such bias might be reflected in a potential future DEFCON talk, so I have screenshoted the comments here should it have value in warding off such future biased talks during the review process.

        1. Shocking that there’s no screen shots of what the person banned was saying…. Hmmm What an interesting missing piece of the puzzle lol.

          I wasn’t even part of that conversation for one. The person I banned was clearly pumping another coin so they got das boot.

          As always thanks for the comments and see you at Defcon next year!

Leave a Reply

Your email address will not be published. Required fields are marked *