You will know this has worked when a wall of the NSA’s Utah Data Center bulges and bursts spilling bits and bytes all over the desert.
On Jul 4, 2014, at 9:56 AM, Eugen Leitl <[email protected]> wrote: > > http://blog.erratasec.com/2014/07/jamming-xkeyscore_4.html?m=1 > > Errata Security > > Advanced persistent cybersecurity > > Friday, July 04, 2014 > > Jamming XKeyScore > > Back in the day there was talk about "jamming echelon" by adding keywords to > email that the echelon system was supposedly looking for. We can do the same > thing for XKeyScore: jam the system with more information than it can handle. > (I enumerate the bugs I find in the code as "xks-00xx"). > > > For example, when sending emails, just send from the address > "[email protected]" and in the email body include: > > https://bridges.torproject.org/ > bridge = 0.0.0.1:443 > bridge = 0.0.0.2:443 > bridge = 0.0.0.3:443 > ... > > Continue this for megabytes worth of bridges (xks-0001), and it'll totally > mess up XKeyScore. It has no defense against getting flooded with information > like this, as far as I can see. > > > Note that the regex only cares about 1 to 3 digit numbers, that means the > following will be accepted by the system (xks-0002): > > bridge = 75.748.86.91:80 > > The port number matches on 2 to 4 digits ([0-9]{2,4}). Therefore, bridges > with port numbers below 10 and above 9999 will be safe. I don't know if this > code reflect a limitation in Tor, or but assuming high/low ports are > possible, this can be used to evade detection (xks-0011). > > Strangely, when the port number is parsed, it'll capture the first non-digit > character after the port number (xks-0012). This is normally whitespace, but > we could generate an email with 256 entries, trying every possible character. > A character like < or ' might cause various problems in rendering on an HTML > page or generating SQL queries. > > > You can also jam the system with too many Onion addresses (xks-0003), but > there are additional ways to screw with those. When looking for Onion > addresses, the code uses a regex that contains the following capture clause: > > ([a-z]+):\/\/) > > This is looking for a string like "http://" or "https://", but the regex has > no upper bounds (xks-0004) and there is no validation. Thus, you can include > "goscrewyourself://o987asgia7gsdfoi.onion:443/" in network traffic, and it'll > happily insert this into the database. But remember that "no upper bounds" > means just that: the prefix can be kilobytes long, megabytes long, or even > gigabytes long. You can open a TCP connection to a system you feel the NSA is > monitoring, send 5 gigabytes of lower-case letters, followed by the rest of > the Onion address, and see what happens. I mean, there is some practical > upper bound somewhere in the system,, and when you hit it, there's a good > chance bad things will happen. > > Likewise, the port number for Onion address is captured by the regex (d+), > meaning any number of digits (xks-0005). Thus, we could get numbers that > overflow 16-bits, 32-bits, 64-bits, or 982745987-bits. Very long strings of > digits (megabytes) at this point might cause bad things to happen within the > system. > > There is an extra-special thing that happens when the schema part of the > Onion address is exactly 16-bytes long (xks-0006). This will cause the > address and the scheme to reverse themselves when inserted into the database. > Thus, we can insert digits into the scheme field. This might foul up later > code that assumes schemes only contain letters, because only letters match in > the regex. > > > In some protocol fields, the regexes appear to be partial matches. The system > appears to match on HTTP servers with "mixminion" anywhere in the name. Thus, > we start causing lots of traffic to go to our domains, such as > "mixminion.robertgraham.com", that will cause their servers to fill up with > long term storage of sessions they don't care about (xks-0007) > > > Let's talk X.509, and the following code: > > fingerprint('anonymizer/tor/bridge/tls') = > ssl_x509_subject('bridges.torproject.org') or > ssl_dns_name('bridges.torproject.org'); > > Code that parses X.509 certificates is known to be flaky as all get out. The > simplest thing to do is find a data center you feel the NSA can monitor, and > then setup a hostile server that can do generic fuzzing of X.509 > certificates, trying to crash them. > > It's likely that whatever code is parsing X.509 certificates is not > validating them. Thus, anybody can put certificates on their servers claiming > to be 'bridges.torproject.org' (xks-0008). It's likely that the NSA is > parsing SSL on all ports, so just pick a random port on your server not being > used for anything else, create a self-signed CERT claiming to be > "bridges.torproject.org', then create incoming links to that port from other > places so at least search-engines will follow that link and generate traffic. > This will cause the NSA database of bridges to fill up with bad information > -- assuming it's not already full from people screwing with the emails as > noted above :). > > > <img src="http://www.google.com/?q=tails+usb" /> > > Putting the above code in a web page like this one will cause every visitor > to trigger a search for TAILS in the XKeyScore rules. The more people who do > this, the less useful it becomes to the NSA (xks-0009) in labeling people as > suspicious. Likewise, putting <title>tails.boum.org/<.title> in your webpages > will cause the same effect, even when CSS/JavaScript makes such a title > invisible. > > > In theory, the NSA should only be monitoring foreign traffic, and not traffic > originating from the United States (or, apparently, the other five-eyes). So > here is the fun thing (xks-0010): run your jamming tools from United States > IP addresses against those servers in Iran you know the NSA is monitoring. > Since the code should already be ignoring the traffic because it originates > from the United States, then they can't complain if you've filled up their > databases full of Tor Onion and bridge addresses. > > Robert Graham -- Liberationtech is public & archives are searchable on Google. Violations of list guidelines will get you moderated: https://mailman.stanford.edu/mailman/listinfo/liberationtech. Unsubscribe, change to digest, or change password by emailing moderator at [email protected].
