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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
基本信息
网络时间协议 (NTP) 确保计算机和网络设备在可变延迟网络中准确同步时钟。它对于维护 IT 操作、安全性和日志记录中的精确计时至关重要。由于时间在几乎每个身份验证、加密协议和取证过程中都被使用,能够影响 NTP 的攻击者通常可以绕过安全控制或使攻击更难以调查。
摘要与安全提示
- 目的:在网络上同步设备时钟。
- 重要性:对安全性、日志记录、加密协议和分布式系统至关重要。
- 安全措施:
- 使用经过身份验证的可信 NTP 或 NTS(网络时间安全)源。
- 限制可以查询/命令守护进程的用户(
restrict default noquery
、kod
等)。 - 禁用传统的 Mode-6/7 控制查询(
monlist
、ntpdc
)或对其进行速率限制。 - 监控同步漂移/闰秒状态以防篡改。
- 保持守护进程更新(请参见下面的最新 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
# 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的少数监控命令:
chronyc -a -n tracking -h <IP>
chronyc -a -n sources -v -h <IP>
chronyc -a -n sourcestats -h <IP>
查看 chronyc 手册页以了解 M/S 标志和其他字段(层次、可达性、抖动等)的含义。
Nmap
# 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>
大规模/互联网扫描
# 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 | 组件 | 影响 |
---|---|---|---|
2023 | CVE-2023-26551→26555 | ntp 4.2.8p15 (libntp mstolfp, praecis_parse) | 多个越界写入可通过 ntpq 响应访问。补丁在 4.2.8p16 🡒 升级或回移修复。 |
2023 | CVE-2023-33192 | ntpd-rs (Rust 实现) | 格式错误的 NTS cookie 导致 v0.3.3 之前的远程 DoS – 即使在 NTS 禁用 时也影响 123 端口。 |
2024 | 发行版更新 | chrony 4.4 / 4.5 – 多个安全加固和 NTS-KE 修复 (例如 SUSE-RU-2024:2022) | |
2024 | 记录 DDoS | Cloudflare 报告 5.6 Tbps UDP 反射 攻击 (NTP 在使用的协议中)。保持 monitor 和 monlist 在面向互联网的主机上禁用。 |
利用工具包: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 时崩溃或允许弱密码。渗透测试人员应:
# 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)
操作员应:
- 使用 ≥ 4 个独立、多样的时间源(公共池、GPS、PTP-桥)以避免单一源污染。
- 启用
kod
和limited
/nomodify
限制,以便滥用客户端接收 Kiss-o'-Death 限速数据包,而不是完整响应。 - 监控守护进程日志以查找 panic 事件或步进调整 > 1000 s。(根据RFC 8633 §5.3的攻击特征。)
- 考虑 leap-smear 以避免闰秒中断,但确保 所有 下游客户端使用相同的涂抹窗口。
- 保持轮询 ≤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 标志 | 见上面的命令 |
chronyd 与 allow | 在渗透测试实验室运行恶意 NTP 服务器 | chronyd -q 'server 127.127.1.0 iburst' |
BetterCap | 注入 NTP 数据包以进行 Wi-Fi 上的时间偏移 MITM | set 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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。