使用 DiG 进行 DNS 枚举

问题描述

我试图用 dig 枚举子域,但我找不到子域名称。主域名无法访问,但肯定在 DNS 记录中。

如果我对主域 example.com 运行 dig:

$ dig example.com

; <<>> DiG 9.11.5-P4-5.1+b1-Debian <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY,status: NOERROR,id: 54795
;; flags: qr rd ra; QUERY: 1,ANSWER: 0,AUTHORITY: 1,ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0,flags:; udp: 4096
;; QUESTION SECTION:
;example.com.       IN  A

;; AUTHORITY SECTION:
example.com.    300 IN  SOA ns-1536.awsdns-00.co.uk. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400

;; Query time: 2 msec
;; SERVER: 10.84.0.2#53(10.84.0.2)
;; WHEN: Sat Jan 02 22:03:37 UTC 2021
;; MSG SIZE  rcvd: 136

我还尝试针对 10.84.0.2 进行区域传输:

$ dig example.com @10.84.0.2 axfr

; <<>> DiG 9.11.5-P4-5.1+b1-Debian <<>> example.com @10.84.0.2 axfr
;; global options: +cmd
; Transfer failed.

有没有办法枚举子域?区域转移似乎不起作用,那么还有其他方法吗?

解决方法

我试图用 dig 枚举子域

你可以在这里停下来,因为你不能提前知道名字。

我还尝试针对 10.84.0.2 进行区域传输:

区域传输几乎总是由于技术原因(没有人认为区域所有者真的需要它,这意味着网络流量大)或隐私原因(有些人认为 DNS 数据部分是私有的,因此只在需要知道的基础,而不是批量)。

如果我对主域 example.com 运行 dig:

$ dig example.com

不,你没有。像这样使用 dig 意味着您实际上查询的是 A 记录。任何给定的名称,包括顶点,都不能保证有 A 记录。您得到的回复称为“NODATA”,意思是“NOERROR”(名称正常且存在)但也没有答案(无 ANSWER 部分),因为此名称没有 A 记录(您要求的),但是有其他记录类型(因为它是顶点,它至少有 NSSOA 记录)。

因此,基于此 dig 查询,您得出的“主域名无法访问”的结论是错误的。

有没有办法枚举子域?

有多种启发式方法,但没有保证的解决方案。由于你没有解释你需要做什么,而且在这个阶段这不是一个真正的编程问题,任何进一步的冒险在这里都是无关紧要的。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...