◆刘旭东
基于NTP的DDoS攻击方法与防御研究
◆刘旭东
(国际关系学院信息科技学院 北京 100091)
分布式拒绝服务攻击(Distributed Denial of Service attack,DDoS)是一种原理简单,攻击方法多样,攻击效果显著的计算机网络攻击方法。由于其攻击机制一直针对最主流的网络协议所设计,故DDoS攻击在计算机网络攻击手段的发展中一直保留了下来,是长期以来威胁主机正常通信的一种攻击手段之一。本文将重点探究当前分布式拒绝式服务攻击的最新研究方法,就目前利用NTP反射攻击最为突出,结合wireshark抓包获取相关的流量信息,分析相关的特征,提取关键的NTP协议中的monlist请求、响应数据包信息,探究发起隐秘性高、流量巨大的放大型(亦称放射性)的DDoS攻击,并对防御测试提出代码上的监测研究方案。
分布式拒绝服务攻击(DDoS);网络时间协议(NTP);协议分析;网络攻防
近年来,安全新闻的头条被一起DDoS事件所占据,其中最醒目的莫过于高达400Gbps的瞬时流量,称安全服务提供商CloudFlare遭到了该数量级流浪的NTP 反射攻击,据CloudFlare的首席执行官报道,基于NTP反射的DDoS成为最大的攻击来源,正在迅速取代DNS反射攻击。有分析称这起攻击事件中利用了网络时间协议(Network Time Protocol,以下简称NTP)服务器monlist指令的特性,发送大量精心编写的请求(request)数据包,使得被攻击的主机接受到更多倍数的数据包,导致主机端口入口流量爆发,阻塞出口流量,最终达到拒绝服务的效果。
安全服务提供商、美国跨国公司CloudFlare透漏,该公司的客户服务器遭受到了流量400Gbps的NTP反射攻击,在整个DDoS的攻击历史上达到了一个流量峰值。分析NTP反射攻击的过程得知,NTP工作于应用层,其承载协议为UDP,具有无连接性,不同于TCP/IP协议,不需要对通信进行验证,即可强行施加流量负载。但这不是最关键的,巧妙之处在于,黑客利用NTP的monlist这一不安全的检查机制,寻找攻击资源,包括攻击对象以及存在问题的旧版本NTP服务器,或者自行搭建,然后通过使用原始套接字编程发送伪造的数据请求包。
网络时间协议(NTP)是一种通过因特网服务于计算机时钟的同步时间协议。它提供了一种同步时间机制,能在庞大而复杂多样因特网中用光速调整时间分配。NTP 包含如下三种特征,具体如图1所示,这三种特征与指定参考时钟都是相关联的。
图1 NTP协议三种特征
对于大多数主机时间服务器而言,都是通过其他对等时间以达到服务器同步,所以这三种每一种特征都由两部分组成:其一是对等决定的部分,这部分是相对于原始标准时间的参考来源而言;其二是由主机衡量的部分,这部分主要是相对于对等而言。NTP 源于时间协议和 ICMP 时间标志消息,但其设计更强调精确度和充足性两个方面,即使是用于网络路径上包括多路网关、延迟差量及不可靠网络。
图2 NTP协议结构
对大量文献和文档研究,为了便于研讨NTP的特性,将NTP的工作主要分为两个阶段,第一阶段是获取时间,第二阶段是同步时间。其中,含有反射作用的monlist请求指令是在时间同步阶段中发生的,所以如果是对服务器发起一次获取时间的请求,抓取到的数据包长度通常为90(如图2),获得的数据包也可能是对等的,并没有发生失衡的现象。
第二阶段需要使用NTP包含的monlist指令,NTP服务器在接收到monlist请求后,其服务器会响应并返回与其进行过时间同步的最近600个请求端的IP地址,同时按照每6个IP进行分割,从理论上分析,查看这种恶意导向的攻击流量可以扩大到伪造查询流量的100倍,其放大效果十分显著。如图3,使用以下命令进行monlist查询:
ntpdc -n -c monlist
图3 响应monlist查询信息
通过协议分析即可获得其数据长度为234字节,如图4所示,由于反射服务器可能已经修复该monlist的漏洞,因此获得的返回数据一一对应,从攻击者的角度来说,这是需要去避免的。具体分析该请求数据包的数据内容。
可以看出NTP服务器由于是偏向网络基础设施建设的一个服务器类型(统一时间的作用),故它的端口也是固定的123端口,这使得在NTP的服务器池(server pool)可以轻松地在本时区的服务器列表内找到可以同步的稳定服务器,这里的同步可以比较简单地认为是进行monlist请求,这种负载对于NTP服务器来说是可以的接受的,因为monlist的请求频率比较低,也不需要大量的monlist的请求。
下面是一次成功更新了时间所返回的数据包,如图5所示,其数据长度仅为90字节。其协议报文很显然与发出monlist请求的字段(field)不相同,起更重要的是请求时间的主机得到了某一特定时区下的时间,同步完成了。
图4 数据信息内容
图5 更新时间返回数据包
网络编程库中有大量可以使用原始套接字的库,这次攻击测试以Python语言和Scapy库作为主要的工具,因为简单且易于理解,代码清晰以至于可以重点关注于攻击的本身形态。以下为实验环境的一些软件参数指标:
OS:GNU/Linux Debian 8
开发工具:Python 2.7.6 Scapy 2.3.1
Scapy库中内置了NTP的基本格式,由NTP协议分析可得,发出请求的代码为MON_GETLIST_1(42),经查询该请求发出前模式为7模式,即mode=7。根据Scapy的文档可以将我们需要构造的NTP请求数据包定义如下:
NTP(version=3, mode=7, stratum=0, poll=3, precision=42)
根据NTP函数的构造释义、结合数据包、软件信息,定义了version、stratum、poll参数。一般地,在适应本机的程序上来说是基本不会改变的,实际的攻击中首先通过协议分析确定新的参数,比如在之前测试中分析到的数据包中有version=3和4的数据包,这时就要注意更改其版本,否则有可能无法响应请求。Scapy中的发包函数是send函数,用于向网络上发送一个数据包,除此之外,还需定义NTP协议承载协议,即UDP的端口信息。
send(
IP(dst = ntp_serv, src = ddos_targ)
/(UDP(sport = 52828)
/NTP(version = 3, mode = 7, stratum = 0, poll = 3, precision = 42)
))
由于Scapy较好的封装性,相对较为容易写出攻击关键函数,剩下的只需定义保留的两个变量即可开始一次测试,这里称为测试是因为一次函数调用只发送一个monlist查询请求,而不是洪泛(flood)地发送请求。ntp_serv为我们找到的有反射特性的NTP服务器,ddos_targ是计划攻击的IP地址。
运行后,可以得到如上分析的数据包。但是要实现真正意义上的攻击,已有的测试工作还不够,从时间上说,需要一个循环的发送过程,其次为了提高发送性能,还需要引入多线程的技术,在Python下设计多线程的程序也不是难事,攻击核心已经封装成定义的模块,只需要引入时间和线程模块,就可以把线程调度起来,达到高性能发包的目的,此时就真真正正地有了一定的攻击能力。
(1)方法一:丢弃相关端口数据包或关闭监听端口
防御的目的旨在解决遭遇的NTP反射攻击,通过协议分析得知,如果在上述监测端口处检测到大量数据流量时,可以确定正在遭受NTP反射攻击。当攻击发生的时候,只要报警及时,就可以采取措施对数据包进行过滤。一个简单的方法是在攻击进行时,通过网络设备(路由器)的ACL丢弃123端口的数据包,或者将NTP服务器监听端口暂时关闭。
由于monlist查询请求是NTP设计时的一个缺陷,不易更改,所以只能从访问的配置出发去解决这个问题,鉴于NTP的反射效果,官方已经做出了提示,并用更改ntp.conf文件的方式完成了更新。将系统中的NTP服务升级,服务默认是关闭monlist查询功能的,防止服务器被利用。
(2)方法二:关闭相关查询指令功能
另外一种防御方法,通过手动关闭monlist查询服务功能,以防止黑客的恶意利用,首先检查主机的REQ_MON_GETLIST和REQ_MON_GETLIST_1的状态,并检查请求是否可用,可以通过相关的NTP命令监测到主机的状态:
ntpq -c rv
ntpdc -c sysinfo
ntpdc -n -c monlist
通过阅读NTP的官方文档,研究得到有用的权限设置,均在ntp.conf下修改。
restrict default kod nomodify notrap nopeer noquery
其作用是“允许普通的请求者进行时间同步,但是不允许查询NTP服务信息”、“允许发起时间同步的IP,与本服务器进行时间同步,但是不允许修改NTP服务信息,也不允许查询monlist在内的服务器的状态信息”。在实践中,配置限制访问命令也是可以防止被恶意嗅探和利用的方法之一。
restrict default noquery
由上述的测试程序不难发现,最不可确定的参数就是ntp_serv。从表1的数据可以得到,公用的按洲际划分的NTP服务器数量稀少,而且其服务器工作时间受到时差的影响,因此获得一台低版本存在monlist漏洞的NTP服务器非常困难。
一方面从进攻方的来说,想要长期地维护一份可以利用的NTP服务器并非易事,在分析使用上述的命令查找服务器时,基本都返回了Timeout信息,表示不可用或者是服务器做了保护,说明公用的NTP服务器越来越安全。所以想要利用这样的服务器还是手工搭建的比较理想。
表1 全球NTP活跃服务器数量
作为一个防守方,如果NTP服务器变得安全了,那么这类反射攻击会逐步消失,这对与一些大型的黑客组织来说只能回归到原始的僵尸网络的DDoS模式中去,这将消耗更多的资源和财力,防御的强度和难度都有所下降。
尽可能通过NTP的服务器池管理模式去寻找一台新的漏网之鱼,但在研究过程中的带有漏洞的服务器全部被合理修复。如图6所示,在测试中给出我们嗅探这类服务器的代码和范例。
图6 嗅探NTP服务器
本文所研究的基于NTP反射的DDoS的攻击方法,破坏力强,危害性大,从其流量规模上来说,可以将其定性为网络战争的武器。以自动化较高的NTP反射攻击武器为研究重点,旨为更好掌握攻击的来龙去脉,让研究攻击的思维模式逐渐地固定下来。坚定地防御、封堵,而非主动攻击一些非法的数据传输信道,坚信合理地使用网络防御技术可以有力回击非法的网络攻击行为,比如组织交换恐怖袭击的数据,控制犯罪分子的网络信道等等。随着我国网络用户日益庞大,使得树立网络主权的观念是必要的,因此,只有使得互联网攻技术得到健康发展,才能让世界网络更加安全。
[1]张锦辉,张文秀.网络设备参与的DDoS防御系统的构建与仿真[J].信息技术与网络安全,2019,38(01):1-6.
[2]Radware.DDoS防护措施是确保应用、站点及数据可用性的基础[J].网络安全和信息化,2019(03):26-27.
[3]金大刚.智能自动化DDoS防御[J].网络安全和信息化,2018(12):20-21.
[4]张宇.应用层DDoS攻击检测研究[D].南京邮电大学,2018.
[5]刘东.基于改进的Adaboost算法在应用层DDoS攻击检测中的应用[A].中国计算机用户协会网络应用分会.中国计算机用户协会网络应用分会2018年第二十二届网络新技术与应用年会论文集[C].中国计算机用户协会网络应用分会:北京联合大学北京市信息服务工程重点实验室,2018:4.
[6]金磊.基于大数据分析的DDOS检测系统的设计与实现[J].自动化与仪器仪表,2018(11):121-124.
[7]Hafiz Husnain Raza Sherazi,Razi Iqbal,Farooq Ahmad,Zuhaib Ashfaq Khan,Muhammad Hasanain Chaudary. DDoS attack detection: A key enabler for sustainable communication in internet of vehicles[J]. Sustainable Computing: Informatics and Systems,2019,23.
[8]Rojalina Priyadarshini,Rabindra Kumar Barik. A deep learning based intelligent framework to mitigate DDoS attack in fog environment[J]. Journal of King Saud University - Computer and Information Sciences,2019.