NTP 是否容易受到 DNS 中毒或欺骗攻击?

信息安全 网络 dns ntp
2021-09-06 15:22:26

设想:

  1. 攻击者以某种方式破坏了受害者(Web 应用程序)使用的 NTP 服务器的 DNS 查找
  2. 受害者向例如 ntp.pool.org 发送 DNS 请求,攻击者响应该请求以将受害者引导到其控制下的另一台计算机
  3. 攻击者通过 NTP 发出错误的时间信息
  4. 攻击者对受害者进行攻击,这取决于受害者对当前时间不正确的了解

这可能吗?如果是这样,应该采取什么措施来减轻它?还有其他类似的攻击吗?

我想到了一个有趣的想法:如果产生的时间变化很小,这可能很难与正确的NTP 响应区分开来

4个回答

我意识到这是几天前问过的;这个答案可能会在这里的底部停滞不前。但是,有一些简单的“系统管理员”提示需要提及。

是的,DNS 劫持和中间人攻击确实对 NTP 有效,因为它现在通常部署。NTP 经常/最常在 Internet 上使用,无需加密 (SSL),也无需身份验证。

许多公司在准确计时方面的投资不足。许多身份验证协议(例如 Kerberos)都需要准确的时间保持,但不仅如此,精确的时间对于 fx 攻击后取证至关重要。

也就是说,在实践中,NTP 并不是一种常见的攻击媒介。如果您不同意,请发布链接。:-)

我想到了一个有趣的想法:如果产生的时间变化很小,这可能很难与正确的 NTP 响应区分开来。

假设a)您遵循最佳实践并拥有多个上游 NTP 服务器,并且b)您的大多数上游 NTP 服务器没有被劫持,那么这真的不难。众所周知,OpenNTPd 使用简单的错误提示检测(幻灯片 20+)AFAIK OpenNTPd 执行以下操作:

  1. 计算所有 NTP 响应的中值
  2. 找出离群值,即与中值有很大偏差的 NTP 服务器。无视这些。
  3. 仅使用剩余的 NTP 服务器响应,计算平均值,并将此值用作最终结果。

据说参考 NTPd比 OpenNTPd 具有更复杂/更完整的错误检测。

NTP 配置因许多因素而变得复杂,现有的 NTP 身份验证机制增加了很多额外的复杂性。今天,我怀疑绝大多数使用 NTP 的主机都没有使用任何身份验证,因此,正如您所建议的,它们的时间很容易受到操纵,可能与实际时间有任意偏移。此外,即使在 NTP 中使用身份验证,拒绝服务攻击也会阻止客户端同步。因此,如果可能,请不要使用依赖于知道正确时间的身份验证协议- 有关更多信息,请参阅 DW 的答案。

请注意,在某种意义上,许多身份验证机制依赖于时间(例如密钥的到期日期)。另一方面,如果时间过长,您可能会注意到其他会出错的事情。因此,根据您的威胁环境,您可能不想为此付出太多努力。如果这样做,您可以配置身份验证或使用 GPS。

对于使用 Microsoft Active Directory(基于 Kerberos)的组织,请参阅Microsoft NTP Time Synchronization Spoof Weakness

有关NTP 安全性异常严格要求的讨论,请参见自动密钥安全架构、协议和算法:

认证机制和时间同步机制的运行是密不可分的。可靠的时间同步需要仅在指定时间间隔内有效的加密密钥;但是,只有当参与的服务器和客户端可靠地同步到 UTC 时,才能强制执行时间间隔。此外,NTP 子网本质上是分层的,因此时间和信任从根的主服务器通过辅助服务器流向叶子的客户端。

我的回答是针对 NTP 协议而不是该协议的特定实现。

这可能吗?

是的,但是 NTP(协议,而不是实现)自第 2 版(1989 年)起就支持身份验证。身份验证是 NTP 协议的一个可选功能,我不确定它的使用范围有多广。NTP 有五种操作模式。我认为问题中隐含的模式是模式三(客户端)和模式四(服务器)。在此配置中,客户端发送同步请求,服务器以同步响应回复客户端。根据客户端和服务器之间的网络,即使使用身份验证,攻击者也有可能干扰客户端的时间同步。但是,攻击者很难显着修改客户端的时间感(超过几分钟)。

如果是这样,应该采取什么措施来减轻它?

编辑:

我最初说过,轻微的时移漏洞不值得缓解。DW 不同意 Kerberos 需要分钟分辨率时间同步。由于我确实相信这种类型的攻击可能会以分钟为单位扭曲客户的时间感,所以我正在改变我的答案。

值得注意的是,Active Directory 依赖于 Kerberos 的实现,因此如果您使用 Active Directory 进行身份验证,这与您有关。

让我们将问题建模为一个四系统网络:时间服务器、身份验证服务器、身份验证客户端和攻击者。对于这种情况,我们假设攻击不能直接危及任何节点的安全,但她/他可以读取、修改或阻止任何网络流量。

认证服务器向时间服务器请求时间数据。

攻击者可以拦截来自认证服务器的请求,并在延迟一段时间后将请求重新发送到时间服务器。

当时间服务器响应时,攻击者可以截获响应并在延迟一段时间后将其重新传输到认证服务器。

身份验证客户端可以从身份验证服务器或时间服务器或两者中获取其时间。在这种情况下,这无关紧要,因为攻击者可以在身份验证客户端和时间服务器之间或身份验证客户端和身份验证服务器之间执行相同的消息延迟。因此,攻击者可以有效地延迟身份验证客户端、身份验证服务器或两者的时间同步消息。

注意:Kerberos 是一个复杂的协议,示例不是代表或真实的 Kerberos 事务。

对于 kerberos,当客户端发出票证请求或服务请求时,客户端会在请求中放入时间戳。接收请求的服务器将请求中的时间与它的时间进行比较。如果两次之间的差异大于可配置的值(默认为 5 分钟),则请求被拒绝。攻击者可以通过将时间数据延迟到身份验证客户端、身份验证服务器或两者来创建超过 5 分钟的时间差(大多数人使用默认值)。然而,鉴于攻击者可以操纵网络上的数据,她/他可以简单地延迟从身份验证客户端到身份验证服务器的请求。

我最初考虑的一种攻击是使具有有效期的当前凭证无效。假设时间数据未经身份验证,攻击者可以冒充时间服务器并导致客户端时间值移动到遥远的未来。如果时间值超出凭证的有效期,则凭证无效。相反,如果攻击者获得了过期的凭证,然后使客户端的时间值进入证书有效期,则给攻击者一个有效的凭证。

在时间数据被认证的场景中,如果攻击者截获时间服务器数据,并以较慢的速率重新传输到时间客户端,攻击者将建立时间数据的积压。在某些时候,攻击者可能会加速时间数据的重放,导致时间客户端感知到快速向前移动。但是,在这种情况下,攻击者永远无法将客户端时间值移动到实际时间之前。

NTP 的缓解措施

  • 使用 NTP 身份验证(通用密钥或 Autokey)(nealmcb 获得信用)
  • 为部分或全部系统使用本地时间源(DW 和 nealmcb 都提出此建议)
  • 使用质询响应协议(即“不要使用依赖于知道正确时间的身份验证协议”DW,另外由 nealmcb 建议)
  • 某种类型的时间审计,您可以在其中检查系统时间值(最好使用受信任的时间源)

Kerberos 的缓解措施

  • 减少时钟偏差值(计算机时钟同步的最大容差)
  • 缓存使用的验证器(只接受验证器一次)
  • 使用服务票证中的网络地址
  • 向请求添加加密哈希
  • 减少票证寿命

对于 Windows Server 2003 计算机时钟同步的最大容差

还有其他类似的攻击吗?

基于客户时间价值的攻击?

是的,首先想到的是通过倒计时使过期的凭证或证书有效。

基于客户端服务器干扰的攻击?

是的,攻击者可以通过向客户端或服务器伪造 NAK 来进行拒绝服务。用尽网络上的所有 DHCP 租约就是一个例子。

服务器模拟攻击?

是的,有一个整洁的涉及SIP 电话未正确验证服务器的问题

是的,你是对的。这确实是一个漏洞。通常部署的 NTP 协议本质上容易受到主动攻击,例如中间人攻击或 DNS 欺骗攻击。因此,本身在正确时间需要的安全协议(例如 Kerberos)本身在此威胁模型中很容易受到攻击。

最基本的缓解措施是:不要使用依赖于知道正确时间的安全协议。例如,避免使用 Kerberos 和其他使用时间戳进行重放保护的协议。最好使用挑战-响应和随机随机数。

另一种缓解方法是使用可信时间源。GPS 外围设备是获得可信时间源的一种方法,尽管每个工作站的成本约为 100 美元,因此它远非便宜。