DNS查询过程及缓存投毒原理

发布时间:2016-07-15 23:47:19 作者:Network 156次浏览

    对于绝大多数桌面系统来说,DNS的查询并不是由自己的机器完成的,DNS查询会提交给另一台DNS服务器(这台服务器通常是由 ISP或者公司提供),然后这台服务器再去进行真正的查询操作。这样做的好处是DNS的查询结果可以由这台机器给缓存下来,从而提高查询效率并降低由 DNS带来的流量开销。

    一台缓存DNS服务器(与权威DNS相对,这类系统提供的)下面的桌面系统可能有几百、几千、几万甚至几十万台桌面系统。传统的DNS缓存投毒攻击指的是更改了DNS服务器的DNS缓存中某项,这样缓存中与主机名相关的IP地址就不再指向正确的位置。例如,如果

    www.example.com映射到IP地址192.168.0.1DNS服务器的缓存中存在这个映射,则成功向这个服务器的DNS缓存投毒的攻击者就可以将www.example.com映射到10.0.0.1。在这种情况下,试图访问www.example.com的用户就可能与错误的Web服务器联络。

    当攻击者试图请求查询某站点的域名时,DNS服务器首先会检查自己的DNS缓存中是否存在该域名,如果存在则将该域名所对应的IP地址返回给请求者,如果不存在则向上一级DNS或者权威DNS查询。这就会给攻击者带来一定的困难,如果是大一点的站点的话,攻击者发起DNS查询时,DNS服务器直接从缓存应答了,根本不会去请求权威域名服务器。

    DNS查询过程如下:

    1)         客户端向首选缓存名字服务器发起查询www.example.com的请求。

    2)         首选缓存名字服务器检查本地资源记录,若存在则作授权回答;若不存在,则检查本地缓存,如存在则直接给客户端返回结果。若本地资源记录和缓存中都不存在,则向根名字服务器发起迭代查询。

    3)         在迭代查询中,直到得到www.example.com的授权回到,保存在首选服务器的缓存中,并返回客户端,才算完成。

    投毒原理如下:

    在首选缓存服务器未找到记录向上级服务器或权威服务器查找记录的过程中,攻击者可以通过伪造应答包,力争抢先完成应答包以污染首选服务器。对于传统的DNS缓存投毒,只要攻击者伪造的应答包与原查询包IP地址、端口和随机查询ID相匹配,就能够成功污染DNS缓存。

     


关键字词: DNS DNS查询 DNS缓存投毒