浅谈DNS

浅谈DNS

0X00 什么是DNS

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
在整个互联网体系中,约定俗成的用于标识网络上设备的地址是IP,然而我们输入的是DNS,因为域名更方便人们记忆,不然那么多网站,人怎么可能记住所有的IP地址

简单来说,如果没有DNS,你访问网站就需要,记住网站的IP地址 【123.XXX.XXX.XXX】,进而通过IP地址来访问网站,我就问你能记住多少!浪费脑细 胞!

DNS协议运行在UDP协议之上,使用端口号53

0X01 DNS查询方式

  1. 递归查询: 一般客户机和首选DNS服务器(宽带连接是设置的默认DNS)之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终结果后转交给客户机
  2. 迭代查询(反复查询): 一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求

AjJq6H.png

0X02 DNS解析过程

  1. 浏览器缓存:浏览器会按照一定的频率缓存DNS记录。
  2. 操作系统缓存:如果浏览器缓存中找不到需要的DNS记录,那就去操作系统中找。  
  3. 路由缓存:路由器也有DNS缓存。
  4. ISP的DNS服务器:ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询请求。
  5. 根服务器:ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行递归查询(DNS服务器先问根域名服务器.com域名服务器的IP地址,然后再问.com域名服务器,依次类推)。

AjYGH1.png

0X03 DNS记录类型

  1. 主机记录(A记录)
    RFC 1035定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。过A记录,大家可以设置自己的不同域名转到不同的IP上去,如:
    1) www.dns.la 转到IP 116.255.202.1
    2) web.dns.la 转到IP 116.255.202.11
    3) mail.dns.la 转到IP 116.255.202.111
  2. 别名记录(CNAME记录)
    RFC 1035定义,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。对于CNAME的原理要注意和URL转发进行区分:
    1) url转发可以转发到某一个目录下,甚至某一个文件上
    2) 而cname是不可以,这就是url转发和cname的主要区别所在
  3. MX记录(Mail Exchange)
    邮件交换记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操作控制所有的邮箱设置。要注意的是邮箱DNS解析和HTTP DNS解析是独立的,如果你设置A记录
    是指向123.12.123.123,而MX记录你设置是指向222.22.222.222,那么你的DNS服务器接收到别人的邮件路 由请求时就将会将它的请求解释到222.22.222.222上去!而别人访问你的网页
    的时候仍然是访问123.12.123.123。
  4. NS(Name Server)
    域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析,可以把一个域名的不同二级域名分别指向到不同的DNS系统来解析
  5. IPv6主机语录(AAAA记录)
    RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
  6. 服务位置记录(SRV记录)
    RFC 2782定义,用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。
  7. NAPTR记录
    RFC 3403定义,它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。

0X04 DNS搜集信息工具

dnsrecon

  • 命令 dnsrecon -t std -d www.ichunqiu.com

    AjYHU0.png

    这里可以看出**使用了创宇盾,加速乐还有一条A记录

  • 域传送漏洞的验证

    命令 dnsrecon -t std -d www.ichunqiu.com -a

    AjtSbR.png

    dnswalk

    dnstracer

  1. 向指定域名服务器发送非递归域名请求。非递归请求的意思是,如果域名服务器知道,那么它会返回请求数据。如果域名服务器不知道,它会返回授权域的域名服务器或返回根域名服务器的地址。

  2. 参数含义-c: 不允许使用本地缓存,默认允许 -C: 启用否定缓存,默认禁用-o: 启用收到响应的概述,默认禁用-q : 设置请求的DNS查询记录类型, 默认为A记录-r : 请求重试次数, 默认为 3 次-s : 设置一个DNS服务器,默认为本地-t : 超时时间-v: 查看详细信息-S : 伪造一个源地址.

    AjNnlF.png

已投稿到安全师