I was just reading yesterday about one way this can be done. If you are using DNSSEC, the server, in order to sign a negative result, will use an NSEC record type which will contain some similar record to the missing record since it can’t sign an empty record. see below where I dig for MacBook.mylocal which doesn’t exist on my home domain and it returns a couple of NSEC records with appletv-livingroom.mylocall, jj-soundbar.mylocal., and macbookpro-20.mylocal. The solution to this is NSEC3 where the host names are hashed (https://bind9.readthedocs.io/en/v9_18_9/dnssec-guide.html#nsec3). Not sure if that answers how others are doing it, but was something I read about yesterday that has been exploited in the past to learn details about a zone.
$ dig macbook.mylocal IN A @192.168.40.42 +dnssec ; <<>> DiG 9.16.33-Debian <<>> macbook.mylocal IN A @192.168.40.42 +dnssec ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 18808 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 6, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 1232 ; COOKIE: 498ba75e90a524ad0100000063a44d72b4b9adb0b61ef5de (good) ;; QUESTION SECTION: ;macbook.mylocal. IN A ;; AUTHORITY SECTION: mylocal. 7200 IN SOA ns1.mylocal. hostmaster.mylocal. 64133 43200 900 1814400 7200 mylocal. 7200 IN RRSIG SOA 13 1 86399 20230105095806 20221222085806 2295 mylocal. 0AaPYQf2zVZuTshZ/yaVoQfgtQdwp2WigXypDEXp/NVdz6jH8pQKDB8j 3NDB7Xw1lr/o2OeJeK9NjuVIr3dZiA== mylocal. 7200 IN RRSIG NSEC 13 1 7200 20221228002743 20221213235040 2295 mylocal. SLA3LiYg8s80GlEFIgK0thf83k7z927lJJvGGUTF6mBzbrpC2kkDFfvw hx3cwjHU+zMlKoy1MdyDUJajBfn7hg== mylocal. 7200 IN NSEC appletv-livingroom.mylocal. NS SOA RRSIG NSEC DNSKEY CDS CDNSKEY TYPE65534 jj-soundbar.mylocal. 7200 IN RRSIG NSEC 13 2 7200 20221228203849 20221221200203 2295 mylocal. bczZ0RfYzVaoLoJC6qV8RJHaXJhyxVtkExQ/S1NB0iPQeb26jZghZfMK umFNNcsMlGo4o5eiryxJGeC+yMfReA== jj-soundbar.mylocal. 7200 IN NSEC macbookpro-20.mylocal. A RRSIG NSEC DHCID ;; Query time: 0 msec ;; SERVER: 192.168.40.42#53(192.168.40.42) ;; WHEN: Thu Dec 22 07:28:34 EST 2022 ;; MSG SIZE rcvd: 576 > On Dec 22, 2022, at 12:19 AM, Michael De Roover <i...@nixmagic.com> wrote: > > Hello, > > I have been running BIND 9 on my external and internal networks for a > few years now -- as such I have a basic understanding of the most > common RR types and activities such as zone transfers. However, I have > been seeing something that's been baffling me for quite a while now. > Somehow there are services like c99.nl [1] and Criminal IP [2], which > can enumerate various subdomains on a given target domain. I am > confused as to how they can enumerate this information. > > As far as I know, a NS record returns the name servers authoritative > for a domain. Alright, now you've got authoritative information when > querying these domains. No useful information about the zone data they > are responsible for though. > > Then there is an A record, which returns an IPv4 address of a server > responsible for a domain. Alright, now you can talk to a server. Maybe > that would be a webserver, and now you may perform a HTTP exchange to > that server (GET /whatever, with a given Host header). You still have > to guess what the Host: header would have to be. > > Maybe it would be an MX record. Brilliant, now you could talk to a mail > server. Its EHLO message (sometimes called a "banner" in security > circles) would contain a domain, alright. It would also only be one of > them -- AFAICT only one domain that the organization wants to actually > primarily send from. > > Another interesting record would be the CNAME record. As far as I know, > this is used to redirect to another domain from within the DNS, with > its own bespoke entries (bringing us back to A records). Getting from a > CNAME to an A record seems easy enough, but what about getting these > CNAME records in the first place? > > This is what I am thinking of so far, but it may well be that I've been > talking crap in all of the above and know nothing about the DNS. That's > fine, and in that case please correct me where necessary. Either way, > I'm very confused on how these services can actually enumerate these > subdomains, and find most -- if not all -- reliably. This seems a bit > concerning to me with regards to unwanted information disclosure, hence > my curiosity. If it is at all possible to mitigate, I would of course > also appreciate discourse on this matter. Thank you! > > [1] https://subdomainfinder.c99.nl > [2] https://criminalip.io/domain > > Best regards, > Michael > > -- > Visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe from > this list > > ISC funds the development of this software with paid support subscriptions. > Contact us at https://www.isc.org/contact/ for more information. > > > bind-users mailing list > bind-users@lists.isc.org > https://lists.isc.org/mailman/listinfo/bind-users
-- Visit https://lists.isc.org/mailman/listinfo/bind-users to unsubscribe from this list ISC funds the development of this software with paid support subscriptions. Contact us at https://www.isc.org/contact/ for more information. bind-users mailing list bind-users@lists.isc.org https://lists.isc.org/mailman/listinfo/bind-users