NTP 协议安全分析*

2020-11-20 03:13张旭博廖章梁
通信技术 2020年11期
关键词:报文时钟客户端

张旭博,黄 河,廖章梁

(1.中国电子科技集团公司第三十研究所,四川 成都,610041; 2.中国人民解放军61660 部队,北京,10089;3.湖南省军区数据信息室,湖南 长沙,410011)

0 引言

NTP 时间同步协议(Network Time Protocol)是通过交换包将两台计算机的时钟同步的网络协议,使用UDP 123 端口。NTP 一般由时间服务器(GPS授时、中科院国家授时中心等,世界各地大概有230 个时间主服务器)、通信网络和计算机上的NTP 客户端组成。协议的最新版本为NTPv4,最新稳定版为NTP 4.2.8p15,在1992 年NTP 3 版本中增加了加密认证,使用md5 来验证远程配置请求,2003 年提出了Autokey 模型的发布,NTP 的安全性得到了增强。Autokey 规范了公钥认证机制,可用于自动分发,且由于Autokey 不是生产规范,其具备的形态已经不能满足需求,即使在2007 年,开始研究新型NTP 安全提案,仍无法避免存在安全漏洞。通过对NTP 软件漏洞的利用,可实现对主用时间源中间人攻击或者注入,拦截并替换信息或者消耗网络资源,因此,有必要对其安全性进行分析,增强NTP 协议的可用性和有效性,并提供NTP 安全建议。

1 NTP 协议原理

NTP 采用的标准是RFC 5905,使用层次化分布模型,当前有5 个版本,v0/v1/v2/v3/v4,使用较多的版本是v4 和v3,NTP 用于分布式时间服务器和客户端之间进行时间同步,它是一个跨越广域网或局域网的复杂时间同步协议,通常可进行毫秒级同步。

NTP 可使用无线时钟、时间服务器、局域网等方式进行同步。无线时钟方式是服务器系统通过串口连接一个无线时钟,无线时钟接收GPS 的卫星发射的信号来决定当前时间;时间服务器使用网络中的NTP 时间服务器进行;局域网同步是使用局域网中的一个节点的时钟作为“权威的”时间源。然后其它的节点就只需要与这个时间源进行时间同步即可,如图1 所示。

(1)Device A 发送一个NTP 报文给 Device B,该报文带有它离开 Device A 时的时间戳,该时间戳为 10:00:00 AM (T1)。

(2)当此 NTP 报文到达 Device B 时,Device B加上自己的时间戳,该时间戳为 11:00:01 AM (T2)。

(3)当此 NTP 报文离开 Device B 时,Device B加上自己的时间戳,该时间戳为 11:00:02 AM (T3)。

(4)当 Device A 接收到该响应报文时,Device A 的本地时间为 10:00:03 AM (T4)。

至此,Device A 已经拥有足够的信息来计算两个重要的参数:

NTP 报文的往返时延 Delay=(T4-T1) -(T3-T2)=2s。

Device A 相对 Device B 的时间差 Offset=((T2-T1)+(T3-T4))/2=1h。

这样,Device A 就能够根据这些信息来设定自己的时钟,使之与 Device B 的时钟同步。

设备可以通过三种NTP 工作模式进行时间同步,分别是:客户端/服务器模式,对称模式,广播模式或组播模式。其中使用较广泛的是客户端/服务器模式。

在实际应用中,广播和组播模式针对的是NTP服务器IP 地址未知,或者需同步的设备数量大的场景;客户端/服务器和对等体模式则主要用于客户端从特定的NTP 服务器或者主动对等体处通过报文交互,获得时间同步,该工作模式多用于对时钟的精度要求较高的场景。

在客户端/服务器模式中,如图2 所示,客户端向服务器发送时钟同步报文,通过对报文中的Mode 字段设置为3,代表其为客户模式,然后,服务器收到该报文后会处于服务器工作模式,报文的模式随之设为4,客户端收到应答报文后,将同步服务器时间。

图2 客户端/服务器模式

在NTP 网络中,NTP 有两类报文:时钟同步报文和控制报文。NTP 服务器和客户端之间通信数据带有32 位的时间戳,其中前面16 位是整数,后面16 位是小数,NTP 的技术精度可达到20ps,而时间信息是从NTP 客户端从时间戳中获取到的基本信息,如图3 所示。

图3 NTP 时钟同步报文格式

Mode 代表工作模式,001 代表主动对称模式,002 代表被动对称模式,003 代表客户端模式,004代表服务器模式,005 代表广播或组播模式,006代表NTP 控制报文。

NTP 采用的是分层结构主机进行时钟同步,这可解决同步报文时延大的问题,NTP 客户端通过不断向服务器发送同步请求,根据时间差调整自身的本地时钟,即可自动并持续地调节时钟。NTP 同步精度可达到毫米级别。

NTP 协议在应用时为了简单,可以屏蔽认证机制,在这种情况下,NTP 报文的长度为90 字节,对客户端和服务器的身份无法验证,客户端获取的时间精度则无法确保准确性,且这种情况极易受到中间人欺骗和伪造时间源等方式攻击。

NTP 的认证机制主要有两类:对称加密认证、非对称加密认证(Autokey),对称加密认证使用对称密钥加解密,而非对称加密认证则使用公钥进行加密,使用私钥进行解密,这种方式可大幅提升NTP 协议的安全性。

2 存在的安全隐患

由于NTP 协议的漏洞和实现的漏洞,可被利用进行系统时间攻击,主要的方式是利用协议漏洞、中间人和数据包注入。

(1)可利用密钥管理环节存在的隐患,伪造NTP 服务器进行攻击。

由于NTP 服务器不记录客户端的信息,同时,服务器也不会保留NTP 客户端的cookie 值,服务器也不会对客户端的请求频率计数和是否是重复报文进行过滤。

攻击者以NTP 客户端的身份,获取服务器的NTP.keys,并利用中间人欺骗、报文注入等方式,获取NTP 客户端和服务器之间的同步报文,分析获得key ID 值,再查找NTP keys,获取key 值,即可通过构造报文,进行计算,发送给客户端,使得客户端认可该报文并通过验证。针对对称加密认证的情况,如图4 所示,需要通过ARP 欺骗,将客户端的同步请求转发至伪造的服务器,由伪造服务器进行响应,这样,客户端就会接收响应报文并同步至伪造的服务器[1]。

(2)进行NTP 同步时延脆弱性验证。

对带有对称加密认证的NTP 协议进行分析[2],NTP 客户端和服务器的NTP 报文是比较固定的,没有扩展域,且时间同步报文的长度为110 个字节。截获客户端和服务器端之间的时间同步报文,并对请求报文或者响应报文进行单项延迟,或者利用中间人(通过ARP 欺骗,将攻击端的网卡设置为混杂模式,对捕捉来的时间同步请求报文进行修改,发给NTP 服务器报文的IP 头部目的地址信息为该攻击端,并将NTP 服务器发送的同步响应报文的IP 头部的IP 源地址改为攻击端,其他信息进行同步修改后,重新计算校验和,发送给客户端,客户端验证通过后会同步伪造服务器时间)进行数据包时延篡改,如图5 所示,即可造成客户端和服务器之间的时间差不准确,会造成客户端获取的时间不精确。

图4 加密认证下的NTP 伪造服务器验证基本流程

图5 NTP 同步时延脆弱性验证流程

(3)拒绝服务。

NTP 客户端得到服务器签名的公钥,在随后的交换过程中,用于保护扩展域的完整性和源认证,但计算签名需要复杂的计算,可通过重放旧的消息或者发送伪造信息阻塞客户端或者服务器,消耗其处理器资源。以伪造大量NTP 客户端向NTP 服务器请求cookie 值[3],将会大量消耗NTP 服务器资源,造成服务器无法正常运行和响应客户端的时间同步请求。若时间间隔仅是1μs 时,NTP 服务器端则无法响应NTP 客户端的请求。

利用恶意节点时间协议发送报文,会导致整个网络通信受限或者无法提供有效服务;也可伪造主时间服务器操控主时间选择过程,例如操控最佳主时钟选择算法;也可利用中间人或者注入方式,将数据提交给主时钟,触发复杂加密算法执行,而影响其效能。

(4)NTP 存在缓冲区溢出等漏洞,可能被控制服务器权限。

仅在2020 年9 月前,NTP-4.2.8p12 或p13 有一个未认证的时间源[4,5],可被攻击者用来攻击,可延迟用户的下一次轮询,或者通过触发空指针引用,导致NTPd 崩溃。

3 实验验证

为了验证提出问题的脆弱性,搭建一个局域网NTP 环境,该环境基于NTP 客户端/服务器模式,NTP 采用NTP -4.2.6p5,运行于Ubuntu 14.06,通过在服务器端在public servers 节下添加127.127.1.0为其自身,在access 节下新增加一个restrict 段,可以接收服务的网段设为192.168.123.0,设置后重新启动NTP 服务,如图6 所示。设置本机的防火墙规则,允许UDP 123 端口如图7 所示。

图6 伪造服务器实验验证环境

图7 启动服务

在客户端(基于Federal 16)上设置NTP 服务器为server 节点,设置完成后,通过NTP 服务同步服务端时间,如图8 所示。

图8 客户端同步虚假时间

同步后的NTP 客户端的时间与伪造服务器的一致,为2010 年的虚假时间。

4 安全建议

通过分析发现,在网络建设和维护过程中,应充分考虑NTP 及其同步安全问题,提出如下建议。

(1)在NTP.conf 限制查询时间的来源机器,NTP 客户端对NTP 服务器的身份进行验证,NTP 服务器对NTP 客户端的身份进行授权和验证。

(2)周期性地把NTP 客户端和服务器软件升级至最高版本,并关闭不需要的端口。

(3)由于NTP 是个与其他业务无相关性的服务,可单独完全隔离,或者利用IPSEC 等方式,对时间同步过程进行加密,降低风险。

(4)在客户端同步过程中,将硬件时间和同步时间进行比对,如不一致,进行多源查询,并通过hwclockw,将设置的时间写进硬件的时间中去。

5 结语

NTP 的安全性是NTP 网络时间同步有效性、准确性的重要保障手段之一。本文对网络时间协议进行了脆弱性分析,基于NTP 的客户端/服务器模式,针对对称加密机制和非对称加密机制提出了NTP 的安全验证思路,下一步将对该技术进行深层次分析,拓展互联网分析思路,并进一步分析标准及协议的实现方法,寻找新的脆弱点,为NTP 安全增强提供支撑。

猜你喜欢
报文时钟客户端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
基于J1939 协议多包报文的时序研究及应用
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
别样的“时钟”
低轨星座短报文通信中的扩频信号二维快捕优化与实现
古代的时钟
CTCS-2级报文数据管理需求分析和实现
浅析反驳类报文要点
有趣的时钟