博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[科普]DNS相关的攻击介绍
阅读量:4941 次
发布时间:2019-06-11

本文共 3154 字,大约阅读时间需要 10 分钟。

一  什么是DNS

DNS 是 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个,能够使人更方便的访问,而不用去记住能够被机器直接读取的IP数串。

DNS 域名结构

通常 Internet 主机域名的一般结构为:主机名.三级域名.二级域名.顶级域名。 Internet 的顶级域名由 Internet网络协会域名注册查询负责网络地址分配的委员会进行登记和管理,它还为 Internet的每一台主机分配唯一的 IP 地址。全世界现有三个大的网络信息中心: 位于美国的 Inter-NIC,负责美国及其他地区; 位于荷兰的RIPE-NIC,负责欧洲地区;位于日本的APNIC ,负责亚太地区。

DNS查询报文

DNS应答报文

DNS 的解析流程

全世界有很多的域名需要解析,这些不可能都在一台服务器上解析,那就太慢了。dns解析采用了树形结构的解析流程。

在上面的解析流程的前面其实还有一步的,系统在发出dns解析之前会先看看本地是否保存了相关域名的解析,如果有的话会节省会多的时间。该文件保存在

C:\Windows\System32\drivers\etc\hosts,文件保存了本地dns解析的相关内容,如下:

# Copyright (c) 1993-2009 Microsoft Corp.## This is a sample HOSTS file used by Microsoft TCP/IP for Windows.## This file contains the mappings of IP addresses to host names. Each# entry should be kept on an individual line. The IP address should# be placed in the first column followed by the corresponding host name.# The IP address and the host name should be separated by at least one# space.## Additionally, comments (such as these) may be inserted on individual# lines or following the machine name denoted by a '#' symbol.## For example:## 102.54.94.97 rhino.acme.com # source server# 38.25.63.10 x.acme.com # x client host# localhost name resolution is handled within DNS itself.# 127.0.0.1 localhost# ::1 localhost

 

二  DNS相关的攻击类型

1 针对DNS服务器的DDOS攻击
第一类 基于主机耗尽型的dns查询拒绝服务攻击

这类攻击就是向受害者DNS服务器发送大量的dns解析请求包,由于DNs服务器美妙查询的次数有限,使得它忙不过来造成拒绝服务攻击。

第二类 基于宽带耗尽型的DNS反弹式拒绝服务攻击(DNS reflector attacks,又称DNS amplification attacks)

原理:大量主机伪造受害者ip向互联网上的大量开放式递归DNS服务器发送NDS查询请求包。由于开放递归DNS服务器并不对请求包进行地质真实性验证,因此都会进行应答,这样受害着将同时接收到大量的DNS请求应答包,堵塞受害DNS服务器的网络,最终形成拒绝服务攻击。
什么是开放递归DNS服务器?
开放递归服务器是指支持递归查询,同时对发起递归查询请求的客户端不进行身份验证的DNS服务器。
如下图:

2  针对用户的DNS劫持

简单的说什么是dns劫持呢?

就是本来你想访问携程的网站www.ctrip.com,结果输入域名后返回给你的是百度的服务器ip,那么自然显示在浏览器中的也就是百度的页面。

那么我可以根据上面介绍的dns解析流程来看看哪些地方会导致返回给你的ip是错误的。

a 首先是dns服务器地址被劫持

比如你的路由器中的dns服务器地址被修改为恶意的dns服务器。那就一切都完蛋了,你访问的任何域名都被解析成其他的地址。

但是这种情况一般是不会发生的, 因为恶意人员登录不了的路由器修改不了dns服务器地址,就更修改不了你本机的dns设置。不过当几个小的漏洞结合在一起的时候就成为了大的漏洞。比如之前出现过的路由器劫持事件:

漏洞本身依赖3个部分:

  1. tp-link路由器发现存在csrf漏洞。

  2. 有些用户的路由器没有更改用户名和密码,使用了默认的用户名和密码;或者浏览器记录了路由器的登录状态。

  3. firefox和chrome等浏览器支持Http Authentication。

这些结合在一起就导致了这么一个攻击流程:

  1. 恶意人员构造了一个恶意的web页面,如www.foo.com/text.html,页面的功能是自动登录路由器并修改dns地址。

  2. 恶意人员构造一个url发送给被害者,当被害者点击这个链接的时候就访问了恶意页面,就修改了路由器的dns地址。

接下来就简单了,恶意人员可以将你想要访问的网站域名如www.ctrip.com解析到任意其他的地址如1.1.1.1等。(当然他不会解析到这里,要有经济利益,或者广告或者ctrip推广联盟url等。)

下面附上tplink的小demo:

//修改dns //登录

b hosts文件被修改

根据解析流程来看,如果要解析www.ctrip.com的ip,系统会首先访问hosts文件,看看有没有相关的绑定:

如果有如下记录:

1.1.1.1  www.ctrip.com

你们系统就不会将www.ctrip.com发送给dns服务器去解析,直接就将它解析为1.1.1.1。

c DNS服务器缓存中的映射关系被修改,又称缓存投毒攻击

系统检测到hosts文件中没有响应的域名的解析的时候就会发送给本地dns服务器进行解析,解析之前会先查看缓存中是否存在,如果没有,再将解析请求发送给下一个dns服务器。结果返回后将该域名的解析结果保存到缓存中,方便下一次的解析。

针对缓存中的解析的攻击有2种:

传统的DNS缓存投毒攻击:恶意人员向受害DNS服务器发送域名的解析请求,然后抢在权威服务器应答前伪造应答包发送给受害服务器。这样错误的解析记录就保存到了缓存中,那么接下来缓存时间内所有该域名的解析就都是错误了。这种攻击伪造的是回答资源记录,攻击时间很短,效率低。

kaminsky缓存投毒攻击:恶意人员发送类似这种的查询请求www24385.ctrip.com到dns服务器,抢在权威应答前伪造应答包发送给dns服务器。它修改的是授权资源记录,可以大量的尝试。

上面就是简单的介绍下缓存投毒攻击,有兴趣的同事可以参考下面的文档

d 入侵dns服务器,修改其中的数据库记录。
这种就是比较直接暴力的方法了,当然也是最困难的。

PS:本文为科普文,没有什么高深的技术,只是让更多对安全感兴趣的人能够了解DNS攻击相关原理,欢迎大牛们指正。

转自:http://www.freebuf.com/articles/network/17150.html

转载于:https://www.cnblogs.com/dhsx/p/5014824.html

你可能感兴趣的文章
笔记四:python乱码深度剖析二
查看>>
《PHP程序员面试笔试宝典》——如何回答技术性的问题?
查看>>
【转载】Amit’s A star Page 中译文
查看>>
注册谷歌账号并验证时显示号码无法用于验证的问题
查看>>
Hive 变量和属性
查看>>
Python安装第三方库 xlrd 和 xlwt 。处理Excel表格
查看>>
课后作业-阅读任务-阅读提问-3
查看>>
Asp.Net Core 中利用QuartzHostedService 实现 Quartz 注入依赖 (DI)
查看>>
细说sqlserver索引及SQL性能优化原则
查看>>
一般数据库增量数据处理和数据仓库增量数据处理的几种策略
查看>>
centos6.5适用的国内yum源:网易、搜狐
查看>>
视频直播技术(三):低延时直播经验总结
查看>>
Application failed to start because it could not find or load the QT platform plugin “windows”
查看>>
python合并多表或两表数据
查看>>
第一个python作业题目以及代码
查看>>
Windows Azure 社区新闻综述(#71 版)
查看>>
Windows XP 的最高版本 .net framework 安装
查看>>
本机不装Oracle,使用plsql连接远程Oracle的方法
查看>>
先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。...
查看>>
mysql中间件研究(Atlas,cobar,TDDL)
查看>>