DNS是网络连接中的重要一环,它与路由系统共同组成互联网上的寻址系统,如果DNS遭遇故障,“导航系统”失效,网络连接就会出现无法触达或到达错误地址的情况。由于的DNS重要作用及天生脆弱性,导致DNS自诞生之日起,就成为网络攻击的重点目标,其中DNS劫持是最常见危害最大的攻击方式。接下来,本文针对DNS劫持原理和应对方式做下简单介绍。
DNS劫持就是通过各种技术手段取得域名的解析控制权,进而修改域名的解析记录,将域名指向的服务器IP修改为受控制的IP地址,从而将用户引导至虚假网站,实现窃取用户信息,破坏正常服务的目的。
DNS劫持的危害是双向多面的。对于用户而言,它通过将用户引导至与原网站十分相似的网站,并诱导用户输入账号、密码、身份证等敏感信息,从而造成个人信息泄露、财产损失等风险。对于企业机构而言,它会让企业机构失去对域名的控制权,导致站点不能访问,正常流量流失,业务无法正常运行,进而对企业形象和经济利益造成影响。
DNS劫持示意图
(1)2009年巴西最大银行Bandesco巴西银行遭遇DNS劫持,1%的用户被钓鱼。受影响的用户被重定向到另一个虚假银行网站,该网站试图窃取用户密码并安装恶意软件。
(2)2010年1月12日,发生著名的“百度域名被劫持”事件,很多网民发现百度首页无法登录的异常情况。而根据百度域名的whois查询结果发现,该网站域名被劫持到雅虎下面的两个域名服务器,另有部分网民发现网站页面被篡改成黑色背景和伊朗国旗,对百度的安全形象和业务运行造成非常恶劣的影响。
(3)2012年,日本三井住友银行、三菱东京日联银行和日本邮储银行提供的网上银行服务都被钓鱼网站劫持,出现试图获取用户信息的虚假页面,当用户登录官网网站后,会弹出要求用户输入账号密码的页面,页面上还显示银行的标志,如果不仔细分辨,很难分清真假。
(4)2013年5月,发生史上最大规模的DNS钓鱼攻击事件,造成800用户被感染。
(5)2014年1月21日,全国出现大范围DNS故障,中国顶级域名根服务器发生故障,造成大部分网站受影响。
从上面这些案例中可以看出DNS劫持是一种范围波及大、影响深远的网络攻击手段,不但对用户的信息财产安全造成严重的威胁,也会对企业的品牌形象、线上流量以及业务开展产生巨大损失,因此了解DNS劫持原理并针对性地做好应对策略至关重要。
介绍DNS劫持原理,需要首先了解典型的DNS解析流程。当客户端发起域名请求时,本地递归服务器(大多数情况下为运营商DNS)或公共DNS会通过向根域名服务器、顶级域名服务器到权威域名服务器一级一级查询,并将最终查询结果返回给客户端。
除了这种典型解析流程外,由于DNS缓存的存在,当客户端发起请求时,浏览器缓存、hosts文件、本地递归服务器DNS缓存会先将本地储存的解析记录直接告知客户端,从而省去全球递归查询的步骤。
从上面DNS解析流程中可以看出,一次完整的DNS查询具备以下两个特点:
链路长,查询过程包含多次、多级网络通信;
参与角色多,查询过程涉及客户端(浏览器缓存、hosts文件)、递归解析服务器、权威解析服务器等角色。
在一次完整DNS查询链路的各个环节,都可以通过技术手段将域名解析记录进行篡改,将域名指向劫持到错误的IP地址上。下面会逐一介绍各类型的DNS劫持。
DNS解析流程图
1.本地DNS劫持
本地DNS劫持是指发生在客户端侧的各类DNS劫持,包括:
(1)通过木马或者恶意程序入侵客户端,篡改DNS缓存、hosts文件、DNS服务器地址等DNS相关配置;
(2)利用路由器漏洞入侵路由器,并针对路由器中的DNS缓存进行篡改。
2.DNS解析路径劫持
DNS解析路径劫持是指发生在客户端和DNS服务器网络通信间的DNS劫持方式。通过对DNS劫持报文在查询阶段的路径进行划分,又可将DNS劫持分为四类:
(1)DNS请求转发
通过中间盒子、软件等技术手段将用户发出的DNS请求重定向到由攻击者控制的流氓DNS服务器,从而将其重定向到恶意站点。
(2)DNS请求复制
将DNS查询复制到网络设备,并在用户发起请求时先于正常应答返回DNS劫持的结果,这种方式表现为一个DNS查询抓包返回两个不同的应答。
(3)DNS请求代答
通过利用网络设备或软件代替DNS服务器对DNS查询进行应答。
(4)DNS缓存感染
DNS缓存感染是指攻击者在递归解析服务器投入错误的缓存信息,当访问者发起解析请求时,递归服务器就会从DNS缓存中将错误的解析记录返回,从而将用户引导至错误的网站。
DNS缓存污染原理图
3.篡改DNS权威记录
篡改DNS权威记录是指攻击者非法入侵DNS权威记录管理平台账号,控制DNS解析设置权限,直接修改DNS解析记录的行为。通过这种方式可以将权威服务器下特定域名的解析指向恶意服务器以实现DNS劫持的目的。
(1)安装杀毒软件,可以有效防御木马病毒和恶意软件,并定期修改路由器管理账号密码和更新固件;
(2)企业端可以设置更小的TTL值,实现DNS缓存的短时间更新,用户端可以定期刷新DNS缓存,从而让用户发起请求时尽可能去请求权威服务器,降低DNS缓存被污染的可能;
(3)加强域名账户的安全等级,使用强度较高的密码,并定期更换密码;
(4)定期查看域名账户信息、域名whois信息以及域名解析生效状态,发现异常及时联系域名服务商;
(5)选择安全技术实力过硬的域名注册商,并且给自己的域名权威数据上锁,防止域名权威数据被篡改。
(6)在客户端和递归DNS服务器通信的最后阶段中使用DNS加密技术,如DNS-over-TLS,DNS-over-HTTPS等。