域名系统(DNS,Domain Name System),是域名和IP地址相互映射的一个分布式数据库,它能够使用户更方便地访问互联网,而不用去记住要访问的主机IP地址。通过主机名,最终得到该主机名对应的IP地址的过程叫作域名解析。
基于DNS的域名解析功能,DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为,攻击者将用户想要查询的域名对应的IP地址改成攻击者的IP地址,当用户访问这个域名时,访问到的其实是攻击者的IP地址,这样就达到了冒名顶替的效果。
1. DNS欺骗原理
DNS 欺骗攻击,是攻击者冒充域名服务器,把用户查询的域名地址更换成攻击者的 IP地址,然后攻击者将自己的主页取代用户的主页,这样访问用户主页的时候只会显示攻击者的主页,这就是DNS欺骗的原理。DNS欺骗并不是“黑掉”了真正的服务器的主页,而是替换成攻击者的主页,将真正的服务器主页隐藏起来无法访问而已。
DNS欺骗的实现,是利用了DNS协议设计时的一个安全缺陷。
在一个局域网内,攻击者首先使用ARP欺骗,使目标主机的所有网络流量都通过攻击者的主机。之后攻击者通过嗅探目标主机发出的DNS请求分组,分析数据分组的ID和端口号后,向目标主机发送攻击者构造好的 DNS 返回分组,目标主机收到 DNS 应答后,发现 ID和端口号全部正确,即把返回的数据分组中的域名和对应的IP地址保存进DNS缓存,而后到达的真实DNS应答分组则被丢弃。
目标主机一开始的DNS查询如下。
- >nslookup www.zjut.edu.cn
- Server: 192.168.31.1
- Address: 192.168.31.1
- DNS request timed out.
- Timeout was 2 seconds.
- Non-authoritative answer:
- Name: www.zjut.edu.cn
- Addresses: 61.153.0.5 60.191.28.6
之后,假设攻击者嗅探到目标主机发送的DNS请求分组,如图1所示。
图1 目标主机发送的DNS请求分组
攻击者通过伪造后的应答分组如图2所示。
图2 伪造应答分组
目标主机此时的DNS缓存表如下。>nslookup www.zjut.edu.cn
- Server: 192.168.31.1
- Address: 192.168.31.1
- DNS request timed out.
- Timeout was 2 seconds.
- Name: www.zjut.edu.cn
- Addresses: 192.168.31.113
通过DNS欺骗,www.zjut.edu.cn的地址就被指向了局域网内的192.168.31.113上。
2. DNS欺骗危害
DNS 欺骗带来的危害是比较严重的,其效果是对特定的网络不能反应或访问的是假网站,如果DNS解析之后IP地址被指向攻击者的挂马网站或是利用了针对特定系统和浏览器的漏洞,那么可能会给系统带来意想不到的破坏。如图3所示,DNS欺骗后访问主页被指向了一个恶意程序下载。
图3 DNS欺骗示例
因为攻击者将网站仿造得和真实网站一样,所以用户对下载的程序产生怀疑的可能性很小,如果用户下载了恶意程序并且运行起来,那么主机将被攻击者控制。
3. DNS欺骗防范
DNS欺骗本身并不是病毒或木马,由于它利用的是网络协议本身的薄弱环节,因此很难进行有效防御。被攻击者大多情况下都是在被攻击之后才会发现,对于避免 DNS 欺骗,可以有以下几个着手点。
(1)在DNS欺骗之前一般需要使用ARP攻击来配合实现,因此,首先可以做好对ARP欺骗的防御工作,如设置静态ARP映射、安装ARP防火墙等。
(2)使用代理服务器进行网络通信,本地主机对通过代理服务器的所有流量都可以加密,包括DNS信息。
(3)尽量访问带有https标识的站点,带有https标识的站点因为有SSL证书,难以伪造篡改,如果浏览器左上角的https为红色叉号,需要提高警惕,如图4所示。
图4 https警示标识
(4)使用DNSCrypt等工具,DNSCrypt是OpenDNS发布的加密DNS工具,可加密DNS流量,阻止常见的 DNS 攻击,如重放攻击、观察攻击、时序攻击、中间人攻击和解析伪造攻击。DNSCrypt支持Mac OS和Windows,是防止DNS污染的绝佳工具,如图5所示。DNSCrypt使用类似于SSL的加密连接向DNS服务器拉取解析,所以能够有效对抗DNS劫持、DNS污染以及中间人攻击。
图5 DNSCrypt
原文地址:https://mp.weixin.qq.com/s/4iYxzpSLWQoArXLks1dXrA