[分享]什么是NTP/SSDP反射攻击?
NTP 反射攻击:时间服务器的"回声走廊"
网络时间协议(NTP,Network Time Protocol)是互联网基础设施中一个低调但关键的组成部分——它的工作就是帮所有设备对表。服务器、路由器、交易系统,都需要通过 NTP 服务器获取精确的时间,以确保日志一致、证书有效、交易顺序正确。
大多数 NTP 服务器是"乐于助人"的:只要有人问时间,它们就会回复。这种"乐于助人"在 2014 年前后,成了一场大规模 DDoS 攻击的催化剂。
NTP 反射攻击,利用的是 NTP 协议中一个名为 monlist(或 MON_GETLIST)的调试命令。攻击者向 NTP 服务器发送一个很小的 monlist 请求,伪造源 IP 为受害者地址,服务器则会返回一份与该服务器通信过的所有客户端的 IP 列表——这份列表的大小可以达到请求的 200 倍以上。
monlist:一个调试接口如何成为攻击武器
什么是 monlist
monlist 是 NTP 协议中用于监控和调试的一个功能。当管理员向 NTP 服务器发送 monlist 请求时,服务器会返回一份最近与它通信过的客户端 IP 地址列表,包括每个客户端最后一次通信的时间戳。
这个功能的设计初衷是帮助管理员了解 NTP 服务器的负载情况、识别异常客户端。但它的"副作用"是:返回的数据量远大于请求本身。
- 一个
monlist请求的大小约为 80 字节。 - 如果一台 NTP 服务器最近与数百上千个客户端通信过,响应数据包可能达到 16,000 字节甚至更多。
- 放大倍数:200 倍以上。
攻击原理
NTP 反射攻击的技术链路与 DNS 放大如出一辙:
- 攻击者扫描互联网上开放的 NTP 服务器(默认端口 123)。
- 向这些服务器发送伪造源 IP 的
monlist请求(源 IP = 受害者地址)。 - 服务器将庞大的
monlist响应数据发向受害者。 - 成千上万台 NTP 服务器的响应同时涌来,受害者的带宽被瞬间撑爆。
由于 UDP 不验证源 IP,服务器全程不知道自己在参与一场攻击。
为何效果比 DNS 放大更猛
在 NTP 反射攻击的高峰期(2014-2015 年),它的"流行度"甚至一度超过 DNS 放大,原因在于:
- 放大的效率更高:DNS 放大的典型倍数是 10-60 倍,而 NTP
monlist可以稳定达到 200 倍以上。 - 对服务器的"知名度"要求低:
monlist返回的是服务器自身记录的访问者列表,不需要查询特定域名的庞大记录集,任何运行 NTP 服务的服务器都可以被利用。 - 协议简单、实现统一:大多数 NTP 服务器基于相同的参考实现,可利用的服务器数量巨大。
2014 年的峰值数据:互联网上可被利用的开放 NTP 服务器超过 40 万台。攻击者只需控制一个 1 Gbps 的僵尸网络,就能通过 NTP 反射打出超过 200 Gbps 的攻击流量。
后续演进:NTP 协议的安全加固
monlist 被禁用
2014 年底,NTP 官方在 4.2.7p26 版本中默认禁用了 monlist 命令。该功能被替换为更安全的 mrulist,后者支持更精细的访问控制和速率限制。
但问题在于:大量老旧 NTP 服务器至今未升级。尤其是嵌入式设备(路由器、工业控制设备、摄像头等)中的 NTP 服务,其软件版本停留在数年前,monlist 仍然对外开放。
社区应对
NTP 社区提出了一系列缓解措施:
- 限制
monlist只对本地管理员开放。 - 在 NTP 服务器上配置响应速率限制(Response Rate Limiting)。
- 关闭递归查询或限制查询来源 IP 范围。
NTP 的教训:一个本为"帮助管理员"而设计的调试功能,在被滥用后,最终被默认关闭。安全社区在功能设计与安全控制之间的权衡,经过了深刻反思。
SSDP 反射攻击:智能家居的"广播风暴"
SSDP 协议简介
SSDP(Simple Service Discovery Protocol,简单服务发现协议)是 UPnP(通用即插即用) 框架中的核心协议。它被用于设备在局域网中自动发现彼此——比如当你把一台智能电视接入网络,它可以通过 SSDP 发现同一网络里的媒体服务器、打印机或音箱。
SSDP 的工作方式是:新设备加入网络后,向组播地址 239.255.255.250:1900 发送一个 M-SEARCH 请求,广播询问:"网络里有哪些可用的服务?"所有支持 UPnP 的设备都会回复,报告自己的服务类型和 URL。
这个协议的设计初衷是让家庭和小型办公网络中的设备即插即用。但当攻击者把这个机制搬到公网上时,同样的问题再次出现。
攻击原理
SSDP 反射攻击的技术路径与 NTP 完全相同:
- 攻击者扫描互联网上开放了 SSDP 服务(UDP 端口 1900)的设备。
- 向这些设备发送伪造源 IP 的 M-SEARCH 请求。
- 设备返回包含自身服务列表的响应数据。
放大倍数:一个 M-SEARCH 请求通常小于 100 字节。一个 UPnP 设备的服务描述响应通常在 500 到 1500 字节之间,放大倍数约为 5-30 倍。
虽然 SSDP 的放大倍数不如 NTP,但它的独特优势在于攻击面极其广泛:
- 智能电视、路由器、打印机、网络摄像头、智能音箱、游戏主机……几乎所有支持 UPnP 的设备都暴露了 SSDP 端口。
- 这些设备的固件更新缓慢,且大多数用户不知道如何关闭 UPnP。
- 一些设备不仅响应,还会在响应中携带大量的服务描述 XML 数据,进一步增加了响应大小。
现实中的规模
2016 年,安全研究人员发现了超过 150 万个暴露在公网上的 SSDP 服务。利用其中一小部分,就能制造出 Gbps 级别的攻击流量。虽然 SSDP 的单次放大倍数有限,但它胜在"设备数量多、分布广"。
为什么 NTP/SSDP 反射攻击仍然存在?
与 DNS 放大一样,NTP 和 SSDP 反射攻击的持久性来源于几个现实问题:
- 老版本 NTP 服务器依然大量运行:许多网络设备中的 NTP 服务长期不更新,
monlist命令仍然可用。企业内部的 NTP 服务器如果对外开放,同样可能被利用。 - UPnP 是默认开启的:绝大多数消费级路由器、智能设备默认启用 UPnP,用户没有能力或意愿关闭它。
- 源 IP 伪造仍然是常态:ISP 层面的入口过滤(BCP 38)执行率仍然不足,攻击者可以继续伪造源 IP。
- 攻击的门槛极低:开源工具(如
ntp-amplification、ssdp-scanner)加上公开的扫描列表,任何人都可以在几分钟内发起攻击。
防御之道:从关闭到过滤
作为受害者——依赖上游清洗
与 DNS 放大一样,本地机房的带宽无法硬抗反射攻击。唯一现实的手段是云防护厂商的流量清洗服务:
- 流量牵引到高防机房,清洗中心识别并丢弃 NTP/SSDP 反射流量。
- 利用 Anycast 网络分散攻击压力。
作为潜在放大者——关闭和限制(最根本的全球责任)
NTP 服务器管理员:
- 升级到 NTP 4.2.7p26 或更高版本,默认禁用
monlist。 - 如果必须保留
monlist,在配置文件中限制访问来源 IP:其中1
2restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1noquery禁止了外部对monlist等状态查询接口的访问。 - 使用
mrulist替代monlist,并启用速率限制。
UPnP 设备用户/管理员:
- 在路由器上全局禁用 UPnP。对于大多数家庭用户,UPnP 提供的便利性远小于其带来的安全风险。
- 在防火墙上阻止外部对 UDP 1900 端口的访问。SSDP 本应只在局域网内工作,公网上的 1900 端口暴露几乎总是配置错误。
- 对物联网设备进行网络隔离:将智能设备放在独立的 VLAN 中,避免它们直接暴露在公网。
作为网络运营商——实施 BCP 38
ISP 层面的入口过滤(Ingress Filtering)是让伪造源 IP 失效的根本手段。如果从攻击者所在 ISP 发出的每一个伪造 IP 包都被丢弃,整个反射攻击链的"第一块多米诺骨牌"就倒不了。
BCP 38 的实施进展缓慢,但它是唯一能从源头上杜绝反射攻击的方案。
NTP vs. SSDP vs. DNS:反射攻击的三种形态
| 维度 | DNS 反射 | NTP 反射 | SSDP 反射 |
|---|---|---|---|
| 利用协议 | DNS(53) | NTP(123) | SSDP/UPnP(1900) |
| 请求类型 | ANY 查询 | monlist | M-SEARCH |
| 典型放大倍数 | 10-60 倍 | 100-200 倍 | 5-30 倍 |
| 可被利用的服务器数量 | 数百万(开放解析器) | 数十万(NTP 服务器) | 数百万(UPnP 设备) |
| 现状 | 仍然常见 | 大幅减少但未消失 | 持续存在,缓慢下降 |
| 根本缓解方式 | 关闭开放解析器 + BCP 38 | 升级 NTP 版本 + BCP 38 | 关闭 UPnP + BCP 38 |
总结
NTP 反射攻击和 SSDP 反射攻击,是"协议功能被滥用"的典型案例。它们利用的不是协议本身的漏洞,而是协议中为"便利"和"调试"而设计的功能,在网络规模从学术网扩展到全球互联网的过程中,这些功能的安全风险被严重低估。
- NTP 的
monlist原本是管理员排查问题的帮手,结果成了 DDoS 的放大器。 - SSDP 的 M-SEARCH 原本是让智能设备即插即用,结果成了物联网"被征用"的通道。
这些攻击的防御路径已经清晰:升级协议版本、默认关闭高风险功能、限制响应范围、运营商实施入口过滤。每一个环节的落实,都需要管理员、厂商和运营商共同承担责任。
NTP 的教训被安全社区反复讨论后,催生了一个新的"默认行为"趋势:任何调试接口、状态查询功能、列表返回接口,在设计之初就应考虑"是否默认关闭、是否需要认证、是否限制响应大小"。一个开放给管理员的便利功能,可能被全世界的攻击者利用。便利和安全的平衡,需要在设计阶段就开始权衡,而不是被攻击后才追悔。






![[分享]什么是NTP/SSDP反射攻击?](/../blogimage/260726/260726.webp)
![[分享]什么是DNS放大攻击?](/../blogimage/260725/260725_3.webp)
![[分享]什么是DHCP耗尽攻击?](/../blogimage/260725/260725_2.webp)