张旭博,黄 河,廖章梁
(1.中国电子科技集团公司第三十研究所,四川 成都,610041; 2.中国人民解放军61660 部队,北京,10089;3.湖南省军区数据信息室,湖南 长沙,410011)
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 安全建议。
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 协议的安全性。
由于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 崩溃。
为了验证提出问题的脆弱性,搭建一个局域网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 年的虚假时间。
通过分析发现,在网络建设和维护过程中,应充分考虑NTP 及其同步安全问题,提出如下建议。
(1)在NTP.conf 限制查询时间的来源机器,NTP 客户端对NTP 服务器的身份进行验证,NTP 服务器对NTP 客户端的身份进行授权和验证。
(2)周期性地把NTP 客户端和服务器软件升级至最高版本,并关闭不需要的端口。
(3)由于NTP 是个与其他业务无相关性的服务,可单独完全隔离,或者利用IPSEC 等方式,对时间同步过程进行加密,降低风险。
(4)在客户端同步过程中,将硬件时间和同步时间进行比对,如不一致,进行多源查询,并通过hwclockw,将设置的时间写进硬件的时间中去。
NTP 的安全性是NTP 网络时间同步有效性、准确性的重要保障手段之一。本文对网络时间协议进行了脆弱性分析,基于NTP 的客户端/服务器模式,针对对称加密机制和非对称加密机制提出了NTP 的安全验证思路,下一步将对该技术进行深层次分析,拓展互联网分析思路,并进一步分析标准及协议的实现方法,寻找新的脆弱点,为NTP 安全增强提供支撑。