Iodine – tunneling IP over DNS
github.com
github.com
Cool.
http://blog.rootshell.be/2007/03/22/dns2tcp-how-to-bypass-fi...
I kept missing the search term. It was "data exfiltration" not "dns tunneling."
It's extremely variable in performance, and can sometimes require a bit of tuning on the client side to work reliably; however, for the most part the auto-detection works well, and will upgrade to raw UDP on port 53 if it is possible.
- Although SMS messages may be free/bundled for the mobile subscriber, they probably wouldn't be free for the other end (unless you set up the other end yourself, using another mobile device)
- The latency for SMS seems to be high (at least in places where I've lived: UK and China). I'm not sure about in the US. If latency is an issue then maybe somehow increasing the 'MTU', i.e. sending lots of SMS at the same time, would make the throughput OK.
On the other hand, maybe application-level gateways (email-to-SMS, web-to-SMS) would work better, albeit at the cost of flexibility.
Example from sweden, I got around 200kbit after my 4G was supposed to block further internet due to unpaid bill. Hehe.
But maybe this is an example of a poor paywall.
Almost all captive portals simply use MAC addresses for auth, so in practice it's much easier to spoof a host's MAC/IP and piggyback their authed session. IP over DNS is more useful for things like mobile providers where it's harder to spoof hardware identifiers, or networks that allow outbound DNS or have a DNS recursing resolver.
Somebody mentioned something about assuming networks that have deep packet inspection (really, it's almost always just application proxies on common ports) might not allow outbound DNS. Don't ever assume that the person who set up the network was smart, or that they didn't leave a hole for backwards compatibility with some legacy application. Almost all consumer-oriented networks have some hole you can use to get out to the internet.
And yes, they probably should block excessive DNS traffic, but this is technically sophisticated to implement (now you're getting all stateful to determine what's excessive) and generally unnecessary.
A good system will allow DNS instead of poisoning the clients with thresholds to block DNS tunneling.
Second, what do you do when the client is configured to require DNSSEC responses?
I don't know why they serve full dns to unpaid users. Maybe to avoid os dns cache issues.
I've used iodine a few times in the past while traveling. Works like a charm.
It is possible to filter Iodine requests given that they use NULL records, which are inexistent in the real world. Some other well-known tools use TXT, which is a bit more common. TUNS (http://www.loria.fr/~lnussbau/tuns.html) uses CNAME and respects the DNS standard, which should have near-100% success. It's quite a bit slower though.
Iodine actually also uses TXT, SRV, MX, CNAME and A, in this order, if it detects that the better choices are blocked.
Iodine is cool. If you plan on using it soon remember to set up your DNS records beforehand cause it might take a bit to propagate. I literally spent a whole airplane flight sending DNS requests to see if it propagated yet.
I've used it to get free internet at universities and hotels, slow but gets the job done. ICMP usually isn't filtered by those kinds of firewalls and I've yet to find a place that blocked it.
[1] http://en.wikipedia.org/wiki/Covert_channel
[2] File Transfer OverDNS - https://news.ycombinator.com/item?id=7370917
I can imagine tunnelling your traffic through DNS to avoid a captive portal (i.e. actually paying for it) counts as circumventing a security measure, which is illegal in a lot of places including the country where I live in.