15 ms·
Show HN: Use DNS TXT to share information
dig +short TXT youpay.govorenefekt.com @1.1.1.1 | fold -s
You can base64 encode an image, split to TXT records and send over Internet. Useful in certain circumstances. Like when one of the communicating parties is under severe censorship.
- candiddevmike 3y agoRelying on DNS is not recommended when under severe censorship
- danradunchev 3y agoThe quote used is from excellent article here: https://bgr.com/tech/the-internet-isnt-free-it-never-was-and-it-probably-never-will-be/ https://bgr.com/tech/the-internet-isnt-free-it-never-was-and...
- dormento 3y agoThanks for teaching me about `fold`. I've been a GNU/Linux user for 10 years and most days I can still learn something new.
- fanf2 3y agoHeh, I have been using `fmt` to do this job since the 1990s, I didn’t know POSIX specifies a different program for the same purpose https://man.freebsd.org/cgi/man.cgi?query=fmt https://man.freebsd.org/cgi/man.cgi?query=fmt https://pubs.opengroup.org/onlinepubs/9699919799/utilities/fold.html https://pubs.opengroup.org/onlinepubs/9699919799/utilities/f...
- fanf2 3y agoThere are a bunch of awkward limitations, tho: The order of records associated with a name is undefined, so if you spread your data across multiple records, you need to add ordering metadata. The total size of the records must be less than 64 KiB - they have to fit within a DNS message, which has a limited size. You can put all your 64K ish data into one TXT record, but it has to be split into strings of up to 255 bytes. You can invent your own record type to contain raw binary data without the sequence-of-strings requirement. You can use multiple names (eg, numbers) to get past the size limit and to be explicit about the correct order.
- hashstring 3y agoI think that a lot of offensive tools to tunnel IP over DNS actually overcame these limitations in real time, at the expensive of throughput [1]. It obviously does require agreeing on some sort of protocol on both sides though. [1] https://github.com/yarrick/iodine https://github.com/yarrick/iodine
- xabi 3y agoThis reminds me of a very curious way in the past of distributing small programs/scripts using finger, attaching it base64 encoded in the .plan % finger xabi Login: xabi Name: Directory: /home/xabi Shell: /usr/bin/zsh On since Mon Jul 17 11:20 (CEST) on pts/0 from xxx.xxx.xxx.xxx 1 second idle No mail. Plan: Latest version of my code (base64 encoded): -------- 8< ----------- 8< ----------------- SGVsbG8gd29ybGQK -------- 8< ----------- 8< -----------------
- Hnrobert42 3y agoThe iodine protocol allows bi-directional ipv4 traffic over DNS. https://github.com/yarrick/iodine https://github.com/yarrick/iodine
- c7DJTLrn 3y agoThis is pretty good for bypassing captive portals on public Wi-Fi access points. Sometimes you can use it to get Internet for free without paying. These days most are more clever and will block everything other than the default gateway until you sign on.
- ale42 3y agoFour years ago I managed to use it on a plane to read mails over SSH in a terminal. It was so slow I had the impression to be in a spaceship to another planet...
- c7DJTLrn 3y ago:) to be fair SSH doesn't cope well on high latency, high packet loss connections.
- michaelmior 3y agomosh[0] helps a lot in these scenarios. It doesn't actually make your connection any faster, but it does make things feel a lot more responsive. [0] https://mosh.org/ https://mosh.org/
- ale42 3y agoYes at that point I just wished I had the mosh client installed before boarding the plane ;-)
- contravariant 3y agoDon't most of them hijack any DNS traffic to send it to their own portal?
- mobilio 3y agoGet ready for iodine https://github.com/yarrick/iodine https://github.com/yarrick/iodine Or IP-over-DNS
- knagy 3y agoI have a vague memory about a security talk where they used TXT records to deliver a payload to a machine and they had to write such code that the rows returned in the TXT records could be run in any order because the order the TXT records are returned is not deterministic. I couldn't find the talk, but I found this nice article: https://unit42.paloaltonetworks.com/dns-tunneling-how-dns-can-be-abused-by-malicious-actors/ https://unit42.paloaltonetworks.com/dns-tunneling-how-dns-ca...
- ahachete 3y agoActually I turned DNS into a database ;) https://dyna53.io/ https://dyna53.io/
- 1vuio0pswjnm7 3y ago"Like when one of the parties is under severe censorship." What if the censor hijacks DNS queries. This is also done outside the realm of censorship, e.g., hotel wifi networks.
- laserlight 3y agoFor an overview of interesting uses of DNS, see the following FOSDEM talk [0] and its HN discussion [1]. [0] Bizarre and Unusual Uses of DNS. https://fosdem.org/2023/schedule/event/dns_bizarre_and_unusual_uses_of_dns/ https://fosdem.org/2023/schedule/event/dns_bizarre_and_unusu... [1] https://news.ycombinator.com/item?id=34939809 https://news.ycombinator.com/item?id=34939809
- madmax108 3y agoIt's always amusing to see DNS "hackery"[1] like this, and always makes me go back to DNS Toys (https://www.dns.toys/ https://www.dns.toys/), which generated a huge discussion on HN a year ago [2] --- [1] well, it's not really hackery if you're being pedantic, since it's doing what the spec allows it to do [2] DNS Toys (946 points): https://news.ycombinator.com/item?id=31704789 https://news.ycombinator.com/item?id=31704789
- breakingcups 3y agoDPI will make short work of your unencrypted DNS records..
- 8organicbits 3y agoAnd encryption wouldn't help much either if this approach became popular enough. It's pretty rare to request TXT records in "normal" end user traffic so it's reasonable to either fully block TXT lookups or flag them as suspicious.
- EnglishLFC 3y agoIt's always amusing when someone discovers DNS TXT records. ClamAV has been using them to announce the latest versions for more years than I care to remember. $ dig +short -t txt current.cvd.clamav.net "0.103.8:62:26972:1689593340:1:90:49192:334" For anyone interested, Freshclam interprets this as: Latest ClamAV version: 0.103.8 Latest Main DB version: 62 Latest Daily DB version: 26972 UNIX Timestamp 1689593340 ...and then some other version numbers and things I don't remember, one is probably a bytecode DB version 334, f-level 90 maybe. Anyway, nothing new, works as designed. You can do all kinds of neat tricks with it. DNS has a lot going on that most people don't (ab)use.
- hannob 3y agoThat is... interesting that they do not even use HTTPS or any type of signature for that info. So a man in the middle could prevent updates from happening, and freshclam wouldn't even throw a warning?
- mrweasel 3y agoWon't DNSSEC prevent MITM attacks in this case? From https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions https://en.wikipedia.org/wiki/Domain_Name_System_Security_Ex... - "DNSSEC can protect any data published in the DNS, including text records (TXT) and mail exchange records (MX)"
- deleted 3y ago[deleted]
- toast0 3y agoclamav.net, like most domains, doesn't enable DNSSEC. Further, as designed, local resolvers don't validate DNSSEC, they just ask the recursive resolver to; a MITM between the local and the recursive can lie. So when wikipedia says DNSSEC can protect, that's the permissive can. Like things can happen. But don't rely on it.
- 3y ago
- exabrial 3y agoIf only we could put TCP port numbers in DNS to avert an ipv4 availability crunch and effectively expand the address space to 48bits… one can dream. Apparently impossible.
- threesevenths 3y agoYou can they are called SRV records but browsers don’t really support lookups that way.
- CrLf 3y agoDo you mean SRV records? https://www.cloudflare.com/learning/dns/dns-records/dns-srv-record/ https://www.cloudflare.com/learning/dns/dns-records/dns-srv-...
- sgjohnson 3y agoIt doesn’t expand the IPv4 space in any way, shape or form.
- _8j50 3y agoOP, this is trivial to detect. DNS command and control is a thing malware/attackers use which among other things include TXT records,DoH, long A or AAAA records and many other creative ways, my fav right now being using a CNAME chain to encode information (no single request is too large or suspicious. In my experience, bypassing censorship does not mean doing unusual things like this but things like browser extenstions that stego your message in legitimate requests .
- RajT88 3y agoTimely. I've been noticing on flights that the in-flight wifi uses a squid proxy to block you until you pay - but most of the time, you'll get whatever data from the DNS Forwarder even if you haven't paid yet. I've been noodling on how to build a simple proxy off DNS to test on my next flight.
- tekknolagi 3y agoSearch for iodine
- deleted 3y ago[deleted]
- smashed 3y agoYou might be interested in iodine. https://github.com/yarrick/iodine https://github.com/yarrick/iodine
- Bender 3y agoA word of caution, don't try this in a corporate environment. Many corporate firewalls will generate security alerts on high DNS request rates. PaloAlto PAN's specifically have alerts for this. I believe Fortigate may as well. Most of the DLP appliances will detect this too. Splunk also has a module to detect this based on query logs. I don't have a horse in the race, just trying to save a few here from a paddlin'.
- xyx0826 3y agoNot a proxy but SoftEther VPN supports connection over DNS and/or ICMP. This is meant for circumventing firewalls. https://www.softether.org/1-features/1._Ultimate_Powerful_VPN_Connectivity#1.6._VPN_over_ICMP.2C_and_VPN_over_DNS_(Awesome https://www.softether.org/1-features/1._Ultimate_Powerful_VP...!)
- fruitreunion1 3y agoudp2raw also supports ICMP tunneling, as a simpler/leaner option that you could run WireGuard over. It's quite performant compared to DNS.
- nigamanth 3y agoHmm, isn't this how like GitHub / other services can check whether you own a domain. What are the advantages of this over other ways of sharing information like a TXT file or a database?
- runjake 3y agoIt was pretty common for orgs to use TXT and HINFO (“host info”) records up through the 1990s. I still use them at work to provide hints and more information but the current fleet of IT workers don’t really grok anything beyond A and PTR. You’re just using DNS as intended. :-P
- whartung 3y ago> the current fleet of IT workers don’t really grok anything beyond A and PTR. Part of this, though is also who is "in control" of the server. Most of the times, DNS is on the other side of the bastion, managed by Network Ops, and out of reach of Joe Developer. Perhaps a reasonable situation, fat finger DNS and Bad Things can happen. However, Joe Developer has carte blanche access to things like HTTP servers and with that they were allowed to go hog wild. So, the innovation in the HTTP space exploded as it was a safer place to dabble to the point that every solution was viewed through the lens of HTTP. In the end, devs don't know DNS because they don't need to know DNS, and even if they did, the Powers in NetOps weren't going to let them have their grubby fingers on it anyway.
- runjake 3y agoYep. I was speaking from a netops/sysadmin standpoint. My belief is that TXT and HINFO saw declining use within an org as Microsoft Windows DNS Server usage grew[1][2][3]. 1. Windows DNS Server hides those records behind a sub-menu item. 2. Windows DNS Server attracted noobs (a good thing, I suppose). Heck, these days, we give low/middle-tier IT workers DNS server access (via DnsAdmins group), which is crazy in my mind, but nonetheless common. 3. Crusty, old admins were better at typing yy in vi and changing the record type when creating new records in BIND (old DNS software).
- toomuchtodo 3y ago> when creating new records in BIND (old DNS software). Takes me back to rendering zone files using perl. The times they have changed.
- Eduard 3y ago
- AtNightWeCode 3y agoIf TXT-records are proof enough when ownership is to be provided for TLS certs. Then, why not just put the TLS-data into the "trusted" TXT-records and skip the multi-billion-dollar-BS-CA-biz all together?
- donselaar 3y agoMakes sense indeed. It exists and it's called DANE. https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Named_Entities https://en.wikipedia.org/wiki/DNS-based_Authentication_of_Na...
- hashstring 3y agoYes and then your government controls your “trusted” connection.
- AtNightWeCode 3y agoLike NSA did not controlled CA:s? Or are you one of those conspiracy nuts that think NSA cracked it?
- hashstring 3y agoThe way that we deal with CAs now developed so much after these issues were disclosed. It is actually adding to my argument. The NSA and any other government entities REALLY WANT to control these certificates. However, our interaction with CAs became much more secure now because we learned and developed things like CT logs. Major browsers are removing entire CAs from their trust store if shady stuff happens ASAP. You can’t do the same with TLDs. This argument is made frequently on here, why would you even want to propose to regress into stuff like DANE…? DNS servers are such a bad trust anchor, if you could even call it a trust anchor at all. If you want to discuss further, I ask you to stay on topic instead of name calling.
- thewataccount 3y agoI'm not sure I 100% understand your question. If you're asking "Why do we need CA's when they already control the DNS record for that domain" then the answer is that DNS doesn't natively even have any cryptography involved, your DNS server can serve any information it wants, and this is common practice in IT environments. Effectively speaking MITM'ing dns is relatively easy and common as it's the equivalent to HTTP. So you don't know that the answer you are receiving it actually from the owner of that domain. If they sent you a certificate you don't know if that's an attackers certificate or the owner's certificate. The CA system is a (very imperfect) method of verifying ownership by having a trusted third party do the ownership verification. This way the certificate the owner gives you is effectively "notarized" so to speak. tl;dr - DNS has no built-in signing or encryption, and is "MiTM'd" by design. It's common practice for your DNS server to be set to your company's DNS server, your ISP, etc. And those can send any response they want, and you have no way to authenticate if it's been modified or not.
- gunapologist99 3y agoYou could also securely hash a username and password together with something like argon2ID, and then authenticate users by seeing if the base64'ed TXT record exists. No need to hit an overloaded database, just dig and you'll even have the benefits of local caching with per-record TTL's! But should you do crazy things like this? Absolutely not! DNS is notoriously prone to MITM, injection, cache poisoning, DoS, etc. DANE and DNSSEC are horrible bodges that don't actually do anything useful or in a secure way. Even though it's the foundation of almost everything we try to do securely, including the basis for TLS DV certificate (totally fungible, regardless of a hundred or so certificate authorities, including many located in authoritarian regimes!) validation: DNS is absolutely and irredeemably broken forever, from a security perspective, and can never be fixed. As tempting (and easy) as it is to hack on it or treat it as an ultra-fast and extensible UDP remotely-accessible lookup database, just don't. (It just needs to die in a fire, probably along with SMTP.) Unfortunately, even if someone came up with some system that could credibly replace it, that system would inevitably have a LOT of privacy and censorship trade-offs, so DNS is what we're stuck with. Just stay very aware of the risks of encoding anything security-related inside DNS and try to minimize your reliance on it as best you can.
- blechinger 3y agoI agree with the idea that one should not trust DNS with any information one does not want public. I'm not totally convinced DNS is irreparably broken though. What are your thoughts on DNS over HTTPS?
- 8organicbits 3y agoDNS over HTTPS secures the connection between the client and their resolver. It doesn't improve anything else. It's still vulnerable to tampering at the still insecure connection between the resolver and the authoritative DNS server.
- 8organicbits 3y ago> DANE and DNSSEC are horrible bodges that don't actually do anything useful or in a secure way. Adoption is extremely poor, usability is horrible, and the approach used is quite dated, but I'm not sure DANE and DNSSEC are insecure. Did you have a reference on the latter?
- nathancahill 3y agoCan you make a version that's HTTP over DNS (rather than the more common DNS over HTTP) for use on gated internet that allows DNS but no web traffic?