域名系统(DNS,DomainNameSystem)是一种将域名和IP地址相互映射的分布式数据库。它使用户可以更方便地访问Internet,而不必记住要访问的HostIP地址。通过主机名最终得到主机名对应的IP地址的过程称为域名解析。DNS欺骗是一种基于DNS域名解析功能的攻击者冒充域名服务器的欺诈行为。攻击者将用户要查询的域名对应的IP地址更改为攻击者的IP地址。其实就是攻击者的IP地址,达到了冒充的效果。1、DNS欺骗的原理DNS欺骗攻击是攻击者伪装成域名服务器,将用户查询的域名地址替换为攻击者的IP地址,然后攻击者将用户的主页替换为自己的主页,这样在访问用户的主页时,只会显示攻击者的主页,这就是DNS欺骗的原理。DNS欺骗并不是“破解”真实服务器的主页,而是将其替换为攻击者的主页,隐藏真实服务器的主页,使其无法访问。DNS欺骗的实施利用了DNS协议设计中的安全漏洞。在局域网中,攻击者首先利用ARP欺骗,使目标主机的所有网络流量都经过攻击者主机。随后,攻击者嗅探目标主机发送的DNS请求报文,分析数据包的ID和端口号,将攻击者构造的DNS返回包发送给目标主机。攻击者收到DNS响应后,发现ID和端口号都是正确的,即返回的数据包中的域名和对应的IP地址都保存在DNS缓存中,真正到达的DNS响应包后来被丢弃。目标主机的初始DNS查询如下。>nslookupwww.zjut.edu.cnServer:192.168.31.1Address:192.168.31.1DNSrequesttimedout.Timeoutwas2seconds.Non-authoritativeanswer:Name:www.zjut.edu.cnAddresses:61.153.0.560.191.28.6后,假设攻击者嗅探了DNS目标主机发送的DNS请求包如图1所示。图1是目标主机发送的DNS请求包,图2是攻击者伪造的响应包。图2此时伪造响应包的目标主机的DNS缓存表如下。>nslookupwww.zjut.edu.cnServer:192.168.31.1Address:192.168.31.1DNSrequesttimedout.Timeoutwas2seconds.Name:www.zjut.edu.cnAddresses:192.168.31.113通过DNS欺骗,www.zjut.edu.cn的地址是它指向局域网中的192.168.31.113。2、DNS欺骗危害DNS欺骗比较严重。它的作用是无法响应特定网络或访问虚假网站。如果该IP地址指向攻击者的木马网站或使用了针对特定系统和浏览器的漏洞,可能会给系统带来意想不到的损害。如图3所示,DNS欺骗后访问的首页被引导下载恶意程序。图3DNS欺骗示例由于攻击者伪造网站与真实网站相同,因此用户不太可能对下载的程序产生怀疑。如果用户下载恶意程序并运行,主机就会被攻击者控制。3、DNS欺骗防范DNS欺骗本身不是病毒或木马,因为它利用了网络协议本身的薄弱环节,所以很难有效防御。在大多数情况下,受害者只有在受到攻击后才会发现。要避免DNS欺骗,有几个起点。(1)在DNS欺骗之前,一般需要使用ARP攻击来配合。因此,首先可以做好ARP欺骗的防御,比如设置静态ARP映射,安装ARP防火墙等。(2)使用代理服务器进行网络通信,本地主机可以对所有流量进行加密通过代理服务器,包括DNS信息。(3)尽量访问标有https的站点。标有https的站点很难伪造和篡改,因为它们有SSL证书。如果浏览器左上角的https是红叉,则需要提高警惕,如图4所示。图4https警告标志(4)使用DNSCrypt等工具。DNSCrypt是OpenDNS发布的一款加密DNS工具,可以对DNS流量进行加密,防止常见的DNS攻击,如重放攻击、观察攻击、定时攻击、中间人攻击、解析伪造攻击等。DNSCrypt支持MacOS和Windows,是防止DNS污染的优秀工具,如图5所示。DNSCrypt使用类似于SSL的加密连接从DNS服务器拉取解析,因此可以有效对抗DNS劫持、DNS污染、和中间人攻击。图5DNSCrypt
