漏洞简介:

该漏洞为DNS 放大攻击,是 DDoS 攻击,攻击者利用 DNS 服务器中的漏洞将小查询转换为可能破坏目标服务器的更大负载。

在 NXNSAttack 的情况下,远程攻击者可以通过向易受攻击的解析器发送 DNS 查询来放大网络流量,而要查询的权威域名服务器由攻击者所控制。攻击者的服务器响应虚假域名服务器名称(NS记录)指向受害者 DNS 域,导致解析器生成对受害者 DNS 服务器的查询。攻击可导致放大系数超过 1620。

DNS解析过程:

假设从浏览器访问www.mircrosoft.com,需要去得到它的ip地址。首先是查看自己的浏览器缓存,再查看存根解析器(OS内)的缓存,如果有转发器,还会去查看转发器的缓存,再去查看递归解析器的缓存。①递归解析器向根域名服务器发出查询。②根域名服务器作出NS 响应,告诉.com域 的顶级域名服务器。③递归解析器接着向.com顶级域名服务器发出查询。④DNS顶级域名服务器 进行NS记录的响应,告诉microsoft.com 的权威域名服务器的地址。⑤DNS解析器向 权威域名服务器发出查询,权威域名服务器,作出A记录的响应。

具体解析过程,可看博客之前DNS的相关内容。

攻击原理:

1.攻击者作为客户端,向解析器发出查询rand123.sub.attacker.com 的ip地址

2.解析器向攻击者控制的权威域名服务器发出查询。

3.攻击者控制权威域名服务器,应答好多个rand x.vitcim.com 假冒的ns记录,指向受害者的域名。

4.解析器根据返回的ns记录向受害者权威域名服务器做出查询。大大占用受害者的资源,形成放大攻击,可造成DDOS攻击。

复现代码:

poc:https://github.com/sischkg/nxnsattack

防御措施:

在流量设备侧对DNS响应包中对满足如下条件的包进行拦截

  • 含有大量的NS转发查询请求
  • 复数指向同一服务器的二级/多级子域名请求

不响应非信任服务器的 DNS 查询结果

  • 同传统的防护策略采用流量黑白名单进行
本文参考NXNSAttack: Recursive DNS Inefficiencies and Vulnerabilities这篇论文,具体可去查看这篇论文。

参考链接:

论文地址

NXNSAttack漏洞简析的更多相关文章

  1. NETGEAR 系列路由器命令执行漏洞简析

    NETGEAR 系列路由器命令执行漏洞简析 2016年12月7日,国外网站exploit-db上爆出一个关于NETGEAR R7000路由器的命令注入漏洞.一时间,各路人马开始忙碌起来.厂商忙于声明和 ...

  2. XXE漏洞简析

    0x00.什么是XXE? XML外部实体注入(XML External Entity Injection) XML基础 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型. ...

  3. CSV文件注入漏洞简析

    “对于网络安全来说,一切的外部输入均是不可信的”.但是CSV文件注入漏洞确时常被疏忽,究其原因,可能是因为我们脑海里的第一印象是把CSV文件当作了普通的文本文件,未能引起警惕. 一.漏洞定义 攻击者通 ...

  4. 简析.NET Core 以及与 .NET Framework的关系

    简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...

  5. 简析 .NET Core 构成体系

    简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...

  6. RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  7. Java Android 注解(Annotation) 及几个常用开源项目注解原理简析

    不少开源库(ButterKnife.Retrofit.ActiveAndroid等等)都用到了注解的方式来简化代码提高开发效率. 本文简单介绍下 Annotation 示例.概念及作用.分类.自定义. ...

  8. PHP的错误报错级别设置原理简析

    原理简析 摘录php.ini文件的默认配置(php5.4): ; Common Values: ; E_ALL (Show all errors, warnings and notices inclu ...

  9. Android 启动过程简析

    首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...

随机推荐

  1. Word·去掉复制粘贴自动添加的空格

    阅文时长 | 0.05分钟 字数统计 | 145.6字符 主要内容 | 1.引言&背景 2.声明与参考资料 『Word·去掉复制粘贴自动添加的空格』 编写人 | SCscHero 编写时间 | ...

  2. too much recursion

    今天在火狐浏览器上调试swagger接口遇到一个浏览器报错: too much recursion 刚开始以为接口出问题了,但是调试之后发现,后台有数据返回,往下一拉,看到了差不多两千多条数据,一下子 ...

  3. docker 日志位置

    日志分两类,一类是 Docker 引擎日志:另一类是 容器日志. Docker 引擎日志 Docker 引擎日志 一般是交给了 Upstart(Ubuntu 14.04) 或者 systemd (Ce ...

  4. :整数 跳转到该行 Vim中常用的命令

    :set nu 显示行号 :set nonu 不显示行号 :命令 执行该命令 :整数 跳转到该行 :s/one/two 将当前光标所在行的第一个one替换成two :s/one/two/g 将当前光标 ...

  5. Linux服务之nginx服务篇二(搭建)

    一.简易搭建安装步骤 0.检查环境 1.配置yum源 使用yum list nginx 检查yum源中是否有nginx安装包 #官方网络源需要安装epel-* #或使用251的adv源(老师的yum源 ...

  6. Redis 哨兵模式配置

    搭建步骤 第一步: 在 redis.conf 配置文件目录下拷贝三份 sentinel.conf 文件 [root@node-01 redis-5.0.9]# cp sentinel.conf sen ...

  7. 【三】Kubernetes学习笔记-Pod 生命周期与 Init C 介绍

    一.容器生命周期 Init C(初始化容器)只是用于 Pod 初始化的,不会一直随着 Pod 生命周期存在,Init C 在初始化完成之后就会死亡. 一个 Pod 可以有多个 Init C,也可以不需 ...

  8. 也谈如何写一个Webserver(三)

    在上一篇里,我介绍了如何应用socket和epoll来组织和管理从客户端(如,浏览器)传入的连接,通过设置非阻塞连接让Webserver有更好的性能. 下面,我介绍一下在我写的Webserver Ma ...

  9. golang快速入门(五)初尝web服务

    提示:本系列文章适合对Go有持续冲动的读者 初探golang web服务 golang web开发是其一项重要且有竞争力的应用,本小结来看看再golang中怎么创建一个简单的web服务. 在不适用we ...

  10. 全卷积目标检测:FCOS

    全卷积目标检测:FCOS FCOS: Fully Convolutional One-Stage Object Detection 原文链接:https://arxiv.org/abs/1904.01 ...