前言
近期,小编所在的项目组为了提高产品的安全性,强化基础服务请求防DNS劫持的能力,故重新对DNS解析和劫持相关知识点进行梳理总结。
什么是DNS解析
域名系统(DomainName System, DNS)是一个将域名和IP地址进行互相映射的分布式数据库。域名系统(DNS)用于将人类可读的主机名解析为机器可读的IP地址。它还提供有关域名的其他有用信息,例如邮件服务。 简言之,DNS就像是互联网的电话簿。如果您知道一个人的姓名但不知道他们的电话号码,您只需在电话簿中查找即可。DNS就是提供相同的服务。
什么是DNS劫持/重定向攻击
域名服务器(DNS)劫持(也称为DNS重定向)是一种DNS攻击,对DNS查询进行错误解析,返回错误的域名-IP地址映射关系,以便将用户重定向到恶意站点。
DNS正确解析示意图
DNS遭受劫持示意图 DNS劫持可用于DNS域欺骗(Pharming,攻击者通常目的是为了显示不需要的广告以产生收入)或用于网络钓鱼(fishing,攻击者目的是为了让用户访问虚网站并窃取用户的数据和凭据)。 互联网服务提供商(ISP)也可能通过DNS劫持,以接管用户的DNS请求,收集统计数据并在用户访问未知域名时返回广告或者屏蔽对特定网站的访问。
DNS劫持攻击类型有哪些?
DNS劫持攻击可分为四种基本类型:
- 本地DNS劫持
攻击者会在用户的电脑上安装木马,更改本地DNS设置来将用户重定向到恶意站点。
- 路由器DNS劫持
大部分路由器都有默认密码或固件漏洞,而大部分用户由于安全意识薄弱的问题从未修改过账号和密码。攻击者可以直接登录和管理路由器并篡改DNS设置,从而影响所有连接到该路由器的用户。
- 中间人DNS攻击(MITM)
攻击者通过拦截用户和DNS服务器之间的通信,并向用户提供指向恶意站点的IP地址。
- 流氓DNS服务器(Rogue DNS Server)
攻击者直接对DNS服务器进行攻击,并更改DNS记录以将DNS请求重定向到恶意站点。这种攻击方式技术难度相对较高,同时成功时影响范围也是最大的。
如何查看是否被DNS劫持?
方法一:通过客户端查看DNS是否被劫持 STEP 1:打开控制面板 -> 网络和共享中心; STEP 2:查看网络状态; STEP 3:查看属性 -> Internet版本协议4(TCP/IPv4); STEP 4:查看属性的DNS地址是否和之前一致,如果有出入则说明被劫持; 方法二:通过nslookup查看DNS解析结果 STEP 1:通过nslookup解析一个正常的网站,例如“m.sogou.com”,应该返回正常地址; STEP 2:通过nslookup解析一个不存在的网站,例如“test.com.cn”,返回结果应该是超时,如果返回IP地址,则说明DNS被劫持; 方法三:通过登录路由器管理后台查看路由器是否遭受DNS劫持 STEP 1:登录路由器后台管理页面; STEP 2:进入网络参数 -> “WAN口”设置; STEP 3:进入PPPoE高级设置界面; STEP 4:查看设置的DNS地址是否和之前一致,如果有出入则说明被劫持;
如何预防DNS劫持?
- 修改路由器密码
修改路由器密码,避免攻击者可直接登录,自由的进行任何操作,有助于提高攻击者DNS劫持攻击的难度和成本,减少DNS劫持的可能;
- 使用加密的V**通道
通过加密的V**上网可以有效地避免DNS的劫持问题;
- 手动更换DNS服务器为公共DNS
用户若想避免互联网服务提供商对DNS进行劫持的可能,可以手动将DNS 服务器更换为公共DNS。国内用户可以选择腾讯DNS、阿里DNS等评分较好的公共DNS服务器;国外用户可以选择Google等DNS服务器;
结束语
关于DNS解析和劫持的相关原理,小编今天就介绍到这里,希望能给大家带来帮助。 在测试DNS劫持过程,可以使用dnsmasq来模拟DNS劫持。具体方法之后再一步地总结分享。