123/udp - Pentesting NTP

Reading time: 10 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

基本信息

网络时间协议 (NTP) 确保计算机和网络设备在可变延迟网络中准确同步时钟。它对于维护 IT 操作、安全性和日志记录中的精确计时至关重要。由于时间在几乎每个身份验证、加密协议和取证过程中都被使用,能够影响 NTP 的攻击者通常可以绕过安全控制或使攻击更难以调查。

摘要与安全提示

  • 目的:在网络上同步设备时钟。
  • 重要性:对安全性、日志记录、加密协议和分布式系统至关重要。
  • 安全措施
  • 使用经过身份验证的可信 NTP 或 NTS(网络时间安全)源。
  • 限制可以查询/命令守护进程的用户(restrict default noquerykod 等)。
  • 禁用传统的 Mode-6/7 控制查询(monlistntpdc)或对其进行速率限制。
  • 监控同步漂移/闰秒状态以防篡改。
  • 保持守护进程更新(请参见下面的最新 CVE)。

默认端口

123/udp   NTP            (data + legacy control)
4460/tcp  NTS-KE (RFC 8915) – TLS key-establishment for NTP
PORT    STATE SERVICE REASON
123/udp open  ntp     udp-response

枚举

经典 ntpd / ntpq / ntpdc

bash
# Information & variables
ntpq -c rv <IP>
ntpq -c readvar <IP>
ntpq -c peers <IP>
ntpq -c associations <IP>

# Legacy mode-7 (often disabled >=4.2.8p9)
ntpdc -c monlist <IP>
ntpdc -c listpeers <IP>
ntpdc -c sysinfo  <IP>

chrony / chronyc (在大多数现代Linux发行版中)

cmdallow启用时,仅接受来自远程IP的少数监控命令:

bash
chronyc -a -n tracking   -h <IP>
chronyc -a -n sources -v -h <IP>
chronyc -a -n sourcestats -h <IP>

查看 chronyc 手册页以了解 M/S 标志和其他字段(层次、可达性、抖动等)的含义。

Nmap

bash
# Safe discovery & vuln detection
nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 <IP>

# Explicit monlist check
nmap -sU -p123 --script ntp-monlist <IP>

大规模/互联网扫描

bash
# Check if MONLIST is enabled (zgrab2 module)
zgrab2 ntp --monlist --timeout 3 --output-file monlist.json -f "zmap_results.csv"

检查配置文件

  • /etc/ntp.conf (ntpd)
  • /etc/chrony/chrony.conf (chrony)
  • /etc/systemd/timesyncd.conf (timesyncd – 仅客户端)

特别注意 restrict 行,kod (Kiss-o'-Death) 设置,disable monitor/includefile /etc/ntp/crypto 以及 NTS 是否启用 (nts enable)。


最近的漏洞 (2023-2025)

年份CVE组件影响
2023CVE-2023-26551→26555ntp 4.2.8p15 (libntp mstolfp, praecis_parse)多个越界写入可通过 ntpq 响应访问。补丁在 4.2.8p16 🡒 升级或回移修复。
2023CVE-2023-33192ntpd-rs (Rust 实现)格式错误的 NTS cookie 导致 v0.3.3 之前的远程 DoS – 即使在 NTS 禁用 时也影响 123 端口。
2024发行版更新chrony 4.4 / 4.5 – 多个安全加固和 NTS-KE 修复 (例如 SUSE-RU-2024:2022)
2024记录 DDoSCloudflare 报告 5.6 Tbps UDP 反射 攻击 (NTP 在使用的协议中)。保持 monitormonlist 在面向互联网的主机上禁用。

利用工具包:2023 年 ntpq OOB 写入系列的概念验证有效载荷在 GitHub 上可用(参见 Meinberg 的写作),并可用于针对系统管理员的客户端钓鱼攻击。


高级攻击

1. NTP 放大 / 反射

传统的 Mode-7 monlist 查询返回多达 600 个主机地址,并且仍然存在于数千个互联网主机上。由于回复(每条目 428-468 字节)是 8 字节请求的 ~ 200× 大,因此攻击者可以达到三位数的放大因子。缓解措施:

  • 升级到 ntp 4.2.8p15+ 并 添加 disable monitor
  • 在边缘对 UDP/123 进行速率限制或在 DDoS 设备上启用 sessions-required
  • 启用 BCP 38 出口过滤以阻止源欺骗。

请参阅 Cloudflare 的学习中心文章以获取逐步分解。

2. 时间偏移 / 延迟攻击 (Khronos / Chronos 研究)

即使有身份验证,路径上的攻击者也可以通过丢弃/延迟数据包静默地 移动客户端时钟。IETF Khronos(前身为 Chronos)草案 提议在后台查询多样化的服务器并对结果进行合理性检查,以检测偏移 > 𝚡 毫秒。现代 chrony (4.4+) 已经实现了类似的合理性过滤器 (maxdistance / maxjitter)。

3. NTS 滥用与 4460/tcp 暴露

NTS 将重型加密移动到单独的 TLS 1.3 通道在 4460/tcp (ntske/1)。不良实现(参见 CVE-2023-33192)在解析 cookies 时崩溃或允许弱密码。渗透测试人员应:

bash
# TLS reconnaissance
nmap -sV -p 4460 --script ssl-enum-ciphers,ssl-cert <IP>

# Grab banner & ALPN
openssl s_client -connect <IP>:4460 -alpn ntske/1 -tls1_3 -ign_eof

查找自签名或过期证书以及弱密码套件(非AEAD)。参考:RFC 8915 §4。


加固 / 最佳当前实践 (BCP-233 / RFC 8633)

操作员应:

  1. 使用 ≥ 4 个独立、多样的时间源(公共池、GPS、PTP-桥)以避免单一源污染。
  2. 启用 kodlimited/nomodify 限制,以便滥用客户端接收 Kiss-o'-Death 限速数据包,而不是完整响应。
  3. 监控守护进程日志以查找 panic 事件或步进调整 > 1000 s。(根据RFC 8633 §5.3的攻击特征。)
  4. 考虑 leap-smear 以避免闰秒中断,但确保 所有 下游客户端使用相同的涂抹窗口。
  5. 保持轮询 ≤24 小时,以免错过闰秒标志。

有关全面检查清单,请参见RFC 8633。


Shodan / Censys Dorks

port:123 "ntpd"          # Version banner
udp port:123 monlist:true # Censys tag for vulnerable servers
port:4460 "ntske"         # NTS-KE

有用的工具

工具目的示例
ntpwn脚本小子包装器,用于喷射 monlist 和 peers 查询python ntpwn.py --monlist targets.txt
zgrab2 ntp大规模扫描 / JSON 输出,包括 monlist 标志见上面的命令
chronydallow在渗透测试实验室运行恶意 NTP 服务器chronyd -q 'server 127.127.1.0 iburst'
BetterCap注入 NTP 数据包以进行 Wi-Fi 上的时间偏移 MITMset arp.spoof.targets <victim>; set ntp.time.delta 30s; arp.spoof on

HackTricks 自动命令

Protocol_Name: NTP
Port_Number: 123
Protocol_Description: Network Time Protocol

Entry_1:
Name: Notes
Description: Notes for NTP
Note: |
The Network Time Protocol (NTP) ensures computers and network devices across variable-latency networks sync their clocks accurately. It's vital for maintaining precise timekeeping in IT operations, security, and logging. NTP's accuracy is essential, but it also poses security risks if not properly managed.

https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-ntp.html

Entry_2:
Name: Nmap
Description: Enumerate NTP
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}

参考文献

  • RFC 8915 – 网络时间协议的网络时间安全 (端口 4460)
  • RFC 8633 – 网络时间协议 BCP
  • Cloudflare DDoS 报告 2024 Q4 (5.6 Tbps)
  • Cloudflare NTP 放大攻击 文章
  • NTP 4.2.8p15 CVE 系列 2023-04
  • NVD 条目 CVE-2023-26551–55, CVE-2023-33192
  • SUSE chrony 安全更新 2024 (chrony 4.5)
  • Khronos/Chronos 草案 (时间偏移缓解)
  • chronyc 手册/远程监控示例
  • zgrab2 ntp 模块文档

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks