浅谈拒绝服务攻击的原理与防御(5) | NTP反射攻击复现

0×01 故事起因

前两天以为freebuf上的网友stream(年龄、性别不详)私信我说他在阿里云上的服务器被NTP攻击了,流量超过10G,希望我帮忙一起分析一下,复现一下攻击。

我这当代雷锋当然非常乐意了,于是我就和stream联系(勾搭)上了,今天我就详细讲一下我们一起复现NTP反射攻击的过程。

0×02 分析攻击数据

stream大兄弟把当时抓到的包发给了我,数据包不大只有31.4M

当我打开数据包看了下时间才知道这数据包可不小啊!只有0.011秒就抓了67598个包,粗略计算一下67598*482/0.011=2 962 021 454字节,将近3G/s也就是24Gbps,对我来说这样的流量已经很大了。

借助whireshark查看了一下源IP的情况,并排列了一下每个IP的发包数量,但是whireshark居然没有统计IP地址个数的地方,也可能是我没找到。

于是我就另存为到一个txt文件中,查看行号计算数量,发现总共有3307个源IP(哈哈!这可都是宝贝啊!)

然后把这些IP地址都转换个格式存起来,留着下个阶段复现的时候用。

0×03 攻击复现

原本以为知道了IP了复现起来很简单呢,其实过程并不顺利(还是自己没经验)。

我先选了发包最多的那个IP测试一下,看看到底能不能返回monlist数据。

果然能返回monlist包,返回了大约100个482字节的包,我靠!这尼玛放大倍数非常让人兴奋啊!我还是too young啊,等我再次发包的时候就没有回应了。

孤零零的就一个包,后来我测试了好几个IP都是这种情况,有的甚至第一个包都不回,艹!这是怎么回事呢?于是我就去看了下NTP协议的报文格式。

看起来挺长,我其实也没看太懂,不过我们的目的是要发出monlist请求,所以我们只要清楚monlist的格式什么样就行了。后来我发现这个跟whireshark上的结构不太一样,后来我就直接去看whireshark上的注释了。

这就清晰多了,flags:

第一个bit是表示请求(0)还是应答(1)

第二个bit是是否闰秒,网上解释是有时由于地球潮汐等等的影响时间会差0.9秒,通过这个bit加上,这块对咱们没用

第三四五个bit时表示版本的,现在常用第二版,所以这里是010

剩下三个bit是模式,0未定义、1表示主动对等体模式、2表示被动对等体模式、3表示客户模式、4表示服务器模式、5表示广播模式或组播模式、6表示此报文为NTP控制报文、7预留给内部使用。这里我们要用的monlist是用的7

auth,sequence:

这字段的八个bit我没找到文献说明具体干嘛的,但是看样子是1bit奇偶校验,7bit序列号。

在下面那个implementation我就不知道是干嘛的了。。。。。惭愧惭愧。。

request code就是我们重点需要的monlist请求。

于是我对照着协议标准从新构造了一个请求报文发现跟我以前构造的一模一样。。。。。

str_monlist='\x17'+'\x00'+'\x03'+'\x2a'+20*'\x00'

这是怎么回事?我发的数据包没有错啊怎么就没回复呢?在这种情况下,就要借助一下已有的一些软件帮帮忙了,在这里我们可以使用ntpdc来帮忙。

我用的是kali,上面已经安装好了这个工具,这个工具的作用就是能发出想要的ntp报文,我用它发一个ntp monlist请求先看看情况,用 ntpdc -c monlist *.*.*.* 命令查看

看抓包情况

我发现我构造的数据包跟ntpdc的数据包就差了一堆00,于是我加上了180个00后整个世界都豁然开朗了。。。。

然后我修改了上次发的那个攻击脚本,把NTP的payload加了180个00,做了一下测试,攻击了一下stream的阿里云服务器

看看攻击效果

能打出2.2G的峰值,但是跟攻击者的10G 20G差很多,可能是我带宽的原因,当然也可能是攻击脚本不完美,日后还需要继续改进才行。

0×04 结语

首先感谢一下stream大兄弟的分享,让我能认识到我的不足,同时也分享出来让大家避免同样的错误,其次就是在网络攻击上或者其他事情上要大家要细心,一些看似没啥用的00就能影响结果。

还有就是希望大家遇到攻击或者有什么新的方法多分享出来,大伙一起学习一起进步,有问题可以私信我或者加我qq 2289988238,我不一定能帮到你,但是多一个人多一份力量,我有时间的情况下一定是有问必答的。各位朋友下期再见!

原文发布于微信公众号 - FreeBuf(freebuf)

原文发表时间:2017-03-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏芋道源码1024

Dubbo源码解析 —— Zookeeper 订阅

前言 上周写完了服务暴露总结之后发现遗漏了一个很重要的点,在dubbo源码解析-zookeeper连接中我们对面试高频题 dubbo中zookeeper做注册...

2997
来自专栏顶级程序员

开源巨献:Google最热门60款开源项目

作者:程序猿(微信号:imkuqin) 猿妹 链接:https://www.itcodemonkey.com/article/329.html(点击尾部阅读原...

6319
来自专栏牛客网

乐视 Java 后台工程师,一面,二面,HR面

2480
来自专栏鹅厂网事

走进腾讯公网传输系统

"鹅厂网事"由深圳市腾讯计算机系统有限公司技术工程事业群网络平台部运营,我们希望与业界各位志同道合的伙伴交流切磋最新的网络、服务器行业动态信息,同时分享腾讯在网...

3895
来自专栏Android相关

计算机组成

计算机完成的任务是一条一条指令完成的,而指令的执行在处理器中。而外部的输入的信息经过处理器后通过计算机表现。

673
来自专栏木子昭的博客

你的照片安全么?

照片元信息 我们平时拍摄的图片,不仅包含了可见的像素信息,还包含了我们看不到的隐藏信息(元信息),而这些元信息,往往会不经意间泄露我们的隐私. ---- ...

4047
来自专栏瓜大三哥

Sdram控制器(二)

2343
来自专栏程序人生

分布式系统中的监工:Overseer

最近从无趣的工作中发现了有趣的事情,工作和业余时间都扑了些精力上去,本待上周末最终的成果出来后再写文章的,无奈事情太多,代码还没写完,二月上旬已过,再不写文章春...

3247
来自专栏Coding01

我也来打造一个个人阅读追踪系统

国庆放假期间,偶然发现这篇文章《Serverless实战:打造个人阅读追踪系统》http://insights.thoughtworks.cn/serverle...

1092
来自专栏ATYUN订阅号

【科技】Google推出首个Android P开发者预览版

AiTechYun 编辑:nanan Google 昨日发布了首个Android P开发者预览版,现在可以在developer.android.com下载。预览...

3736

扫码关注云+社区