以DNS服务器逻辑性为突破口的安全威胁

所谓DNS,是一套将人类可读的域名转化为计算机可识别IP地址的命名系统。每当一条尚不存在于解析器缓存中的域名查询请求出现,这一转化过程就会在从根服务器到顶级域名(例如.com型域名)的整个DNS层级体系中走上一遍。接下来顶级域名(简称TLD)会把能够向我们提供所需IP地址的已授权域名服务器找到,并将相关信息提交回来。在我们从域名服务器获取到对应的域名信息之后,结果将带着一个特定的TTL值(即有效时间值)进入DNS解析程序缓存,最终在有效期结束时被清出。

有些时候,某个域会被认定为恶意对象并遭到清除。出现这种情况的原因可谓多种多样,例如恶意软件传播、钓鱼感染等。一般来说,防止用户对某个域发起访问的常见方式是将该域从TLD服务器中删除。然而这还不足以彻底消除安全隐患,因为域仍然能够再次由解析程序解析,并在下一次TTL过期之前始终处于可用状态。通常情况下这算不得什么大问题,因为TTL值生效时间本身就很短,所以攻击型域的存在时间可能只有数秒或者数分钟。

在本文中,我们将讨论近来存在于大多数DNS服务器中的DNS漏洞。此漏洞是由江坚、梁津津、李康、李军、段海心以及吴建平等多位研究人员共同发现的。点击此处可以查看他们的研究论文。

该漏洞的突破口在于某些DNS服务器中的缓存更新逻辑缺口。此漏洞允许缓存以特定方式被改写,进而导致某个特定域将在缓存中拥有源源不断的TTL授权数据,且TTL值不受有效时间所限。这样一来,即使该域被从TLD服务器中清出,也仍然会一直处于可解析状态。此种类型的域如今有了自己的名号:幽灵域名(即Ghost Domain Name)。

DNS基础知识

首先,让我们先来了解DNS解析工作是如何进行的。

比如说,用户打开浏览器并在地址栏中输入infosecinstitute.com内容。这时用户操作系统中的DNS解析程序就会运作起来,尝试为该域名找出对应的IP地址。解析程序首先会检查本地缓存,以确认该查询域名是否在缓存中存在记录。缓存中通常保存着最近一段时间内用户使用过的IP地址与主机名称映射,这样解析程序就不必重复再重复地为同一个域名多次获取IP地址。如果解析程序在缓存中无法找到对应的IP地址,那么接下来它就要向DNS服务器发送请求,检查是否存在该域名的记录。DNS服务器通常由我们的网络服务供应商(简称ISP)提供,当然大家也可以为自己进行手动选择。如果此时仍然查找不到记录,解析程序就会向不同的域名服务器发送循环DNS查询,以期找到所查域名。当IP地址被寻获时,解析程序会在将地址发回用户端的同时保存在缓存中,以方便今后的使用。

(责任编辑:)

分享到:

更多
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
  • 微笑/wx
  • 撇嘴/pz
  • 抓狂/zk
  • 流汗/lh
  • 大兵/db
  • 奋斗/fd
  • 疑问/yw
  • 晕/y
  • 偷笑/wx
  • 可爱/ka
  • 傲慢/am
  • 惊恐/jk
用户名: 验证码:点击我更换图片
资料下载专区
图文资讯

网络安全:互联网安全 如何防范木马及病毒

网络安全:互联网安全 如何防范木马及病毒的攻击

一、计算机中毒有哪些症状? 人生病了,会有各种各样的症状,同样,电脑中毒了也会有...[详细]

加强网站服务器安全维护的技巧

加强网站服务器安全维护的技巧

计算机系统服务器的维护工作十分重要,稍有不慎就会使整个网络陷入瘫痪。目前,网络经...[详细]

电脑离线就安全?这个软件一样能远程窃取数

电脑离线就安全?这个软件一样能远程窃取数据

以色列的一个研究团队已改良了窃取离线电脑数据的方法。人们一直认为这种离线电脑在面...[详细]

如何在Linux上最妥善地管理加密密钥?

如何在Linux上最妥善地管理加密密钥?

存储SSH加密密钥和牢记密码可能是一件让人很头痛的事儿。不过遗憾的是,在如今恶意黑...[详细]

如何在 Linux 上运行命令前临时清空 Bash

如何在 Linux 上运行命令前临时清空 Bash 环境变量

我是个 bash shell 用户。我想临时清空 bash shell 环境变量。但我不想删除或者 unset...[详细]

返回首页 返回顶部