dnsenum的目的是尽可能收集一个域的信息,它能够通过谷歌或者字典文件猜测可能存在的域名,以及对一个网段进行反向查询。它可以查询网站的主机地址信息、域名服务器、mx record(函件交换记录),在域名服务器上执行axfr请求,通过谷歌脚本得到扩展域名信息(google hacking),提取自域名并查询,计算C类地址并执行whois查询,执行反向查询,把地址段写入文件
dnsenum是一款比较老的收集DNS信息的工具,虽然上次更新是在5年之前,但是工具本身的能力依然健在。工具本身没有什么难的。要注意的还是参数以及罗列的信息是什么,你要在什么情况下使用这个工具,通过这个工具能得到你想要的什么信息才是你所关注的。下面的教程都是KaliLinux系统。
用法:dnsenum [选项] <域>
[菜单]:
注意:强制-f开关是强制性的。
常规选项:
--dnsserver <server>
将此DNS服务器用于A,NS和MX查询。
--enum Shortcut选项相当于--threads 5 -s 15 -w。
-h, - help打印此帮助信息。
--noreverse跳过反向查找操作。
--nocolor禁用ANSIColor输出。
--private在文件domain_ips.txt的末尾显示并保存私有ips。
--subfile <file>将所有有效的子域写入此文件。
-t, - timeout <value> tcp和udp超时值,以秒为单位(默认值:10秒)。
--threads <value>将执行不同查询的线程数。
-v, - verbose详细:显示所有进度和所有错误消息。
GOOGLE SCRAPING选项:
-p, - 页面<值>抓取名称时要处理的Google搜索页面数量,默认值为5页,必须指定-s开关。(这个就算了,实用性不大)
强制力量选择:
-f, - file <file>从此文件中读取子域以执行暴力破解。
-u, - update <a | g | r | z>
使用有效子域更新使用-f开关指定的文件。
参数解释:
使用所有结果进行(全部)更新。
g仅使用谷歌抓取结果进行更新。
r仅使用反向查找结果进行更新。
z仅使用zonetransfer结果进行更新。
-r, - delay在子域上递归,强制所有具有NS记录的已发现的子域。
WHOIS NETRANGE选项:
-d, - delay <value> whois查询之间等待的秒数的最大值,该值是随机定义的,默认值:3s。
-w, - whois在c类网络范围上执行whois查询。
**警告**:这会产生非常大的网络范围,并且执行反向查找会花费大量时间。
反向查看选项:
-e, - exclude <regexp>
排除与反向查找结果中的regexp表达式匹配的PTR记录,对无效主机名有用。
输出选项:
-o --output <file>以XML格式输出。也就是将你扫描的结果输出成为文件。
这个工具最常用的选项参数不多,我一一为大家解释。
(1)键入命令 dnsenum 域名
我用 qq.com做测试如下 : dnsenum qq.com
解释一下参数
可以看得出来qq.com有两个ip,大公司一般都是两个以上,另外一个作为备用,比如平时服务器升级或者运维的时候,就用备用的ip。
IN:INTERNET,表示资源都在Internet上
A记录代表"主机名称"与"IP"地址的对应关系, 作用是把名称转换成IP地址,意思是说该主机的IP对应之意!DNS使用A记录来回答"某主机名称所对应的IP地址是什么?"主机名必须使用A记录转译成IP地址,网络层才知道如何选择路由,并将数据包送到目的地.你要知道的是A就代表了将域名转换成ip,现在好多的工具都有这个功能。
A记录把主机名指定为IP地址,完整的主机名后应有一个点.每个主机至少应有一个A记录
NS:就是name server的缩写,即域名。NS后面接的一定是主机名,代表的意思是说:[这个zone(区域)的查询请求后面这部主机要求]的意思。所以你这个zone有两部以上的DNS服务器负责时,那就必须要写两个NS了!而NS后面的主机名必须要有IP的对应啊!因此就需要A这个标志了!
MX记录MX:就是Mail eXchanger(MX)的简写,格式[hostname] IN MX [顺序] [主机名]。注意了,这个MX与mail server有关,没有mail server的可以省略这个标志,但是如果你的区域内有mail server时,就必须设定这个MX才好。MX的用途是在于[邮件转递]或者是经由上层邮件主机备份的一个机制,后面设定的那个主机名通常是你上有邮件主机,另外MX后面接的数越小越优先,而接的主机名必须要具有A的标志才可以!如果你不知道如何设定,通常建议你直接设定成你的mail server主机名即可。
PTR
PTR记录代表"IP地址"与"主机名"的对应关系,作用刚好与A记录相反
DNS系统使用PTR记录来回答"某IP地址所对应的主机名是什么?"
上述的参数解释你可能起先看不懂,这些都是网络的一些知识,以后再配置服务器时会用到的,尽量多查查资料,多看几次,多加理解。
(2)读取子域,然后进行暴力破解,就是将这个域名下的所有子域给他跑出来。
键入命令:dnsenum qq.com -f dns.txt --noreverse
可以获取很多信息。
-f是加上字典的参数,后面跟字典的路径,--noreverse是跳过反向查找,以加快进度,节省时间。
这里需要字典,我这把那个dns.txt字典文件分享给大家吧里面还有其他的相关文件,
链接: https://pan.baidu.com/s/10q8p_-NfiMBuLWBYN8utGQ 提取码: tppn
下载后直接拖到虚拟机里面解压。一般情况下都用小字典跑,很快就可以得到你要的信息,大字典慢,但是跑出来的东西多。
你可能注意到CNAME:因为某些域名并没有对应的IP地址,而只是一个主机名的别名。
CNAME后面的就是主机的别名。CNAME记录代表别名与规范主机名称(canonical name)之间的对应关系
别名(CNAME): 用于将DNS域名的别名映射到另一个主要的或规范的名称 。意思就是通过CNAME将你访问的没有IP地址的域名间接的变成访问另外一个主机。比如你要访问上图的7.qq.com实际访问的时候,就变成了访问x2.tc.qq.com,它只是起到一个映射的功能。
别名资源记录有时也称为规范名称。这些记录允许使用多个名称指向单个主机,使得某些任务更容易执行。例如在同一台计算机上维护FTP服务器和WEB服务器,建议在下列情况中使用CNAME资源记录:在同一区域的A资源记录中指定的主机需要被重新命名时,当用于像WWW这样的已知服务器的通用名称需要解析一组提供相同服务的单独计算机(每个都有单独的A资源记录)时,例如一组冗余WEB服务器。
CNAME记录代表别名与规范主机名称(canonical name)之间的对应关系.
如管理员可能公告他们网站的主机名称为www.a.com, 但其实www.a.com只是一个指向serverb.com的CNAME记录而已。
而在serverb.com维护期间,可以临时将www.a.com指向serverb.com
这是他的c类地址:
可以看到很多信息,太多了我没有截取完。
这是他的ip块
由于根据ip反向查找特别费时间会卡在下面的这步
所以用指令 --noreverse 来跳过这个缓慢的过程。效果如下:
(3)加上参数-t 1 -v:
-v 详细显示所有进度和所有错误消息,加上-v会很慢,会动态的进行记录扫描,看起来很酷!
但是消息记录多,看情况自己添加。
-t 1主要是为了缩短等待时间,让他的超时时间为1秒
(4)--nocolor 其实就是去掉颜色(了解)
(5)将结果输出,因为每次的收集不可能全是截图,而且截图也不方便,如果是当前的目录的话就会存到当前目录下,你也可以指定位置
dnsenum qq.com -f ~/Desktop/attack/DNS/dns.txt -t 1 --noreverse -o
其他的参数没什么了,主要就是这几个。
我顺便测试了一下百度的:
关于这个工具的参数我觉得重要的就是这几个,大家也可以对别的参数试一下。
能用来进行域名信息收集的工具还有好几个,KaliLinux自带,之后我尽量详细的把每个工具都分享给大家!