123/udp - Pentesting NTP
Reading time: 11 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グループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
基本情報
ネットワーク時間プロトコル (NTP) は、可変遅延ネットワーク上のコンピュータやネットワークデバイスが正確に時計を同期させることを保証します。これは、IT運用、セキュリティ、ログ記録において正確な時間管理を維持するために重要です。時間はほぼすべての認証、暗号プロトコル、法医学プロセスで使用されるため、NTPに影響を与えることができる攻撃者は、しばしばセキュリティ制御を回避したり、攻撃の調査を困難にすることができます。
概要とセキュリティのヒント
- 目的: ネットワーク上でデバイスの時計を同期させる。
- 重要性: セキュリティ、ログ記録、暗号プロトコル、分散システムにとって重要。
- セキュリティ対策:
- 認証付きの信頼できるNTPまたはNTS(ネットワーク時間セキュリティ)ソースを使用する。
- デーモンにクエリ/コマンドを送信できるユーザーを制限する(
restrict default noquery
,kod
など)。 - レガシーのモード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>
M/S フラグや他のフィールド(ストラタム、リーチ、ジッターなど)の意味については、chronycのマニュアルページを参照してください。
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 クッキーがリモート DoS を引き起こす v0.3.3 より前 – 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) ドラフト は、バックグラウンドで多様なサーバーにクエリを行い、シフト > 𝚡 ms を検出するために結果をサニティチェックすることを提案しています。最新の chrony (4.4+) はすでに類似のサニティフィルター (maxdistance
/ maxjitter
) を実装しています。
3. NTS 悪用 & 4460/tcp 露出
NTS は重い暗号処理を別の TLS 1.3 チャンネル 4460/tcp (ntske/1
) に移動します。実装が不十分な場合 (CVE-2023-33192 を参照) は、クッキーの解析時にクラッシュするか、弱い暗号を許可します。ペンテスターは:
# 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ブリッジ)を使用して、単一ソースの汚染を避ける。
- 悪用するクライアントが完全な応答の代わりにKiss-o'-Deathレート制限パケットを受け取るように、
kod
およびlimited
/nomodify
制限を有効にする。 - 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 | 大規模スキャン / monlist フラグを含む JSON 出力 | 上記のコマンドを参照 |
chronyd with allow | ペンテストラボでの悪意のある NTP サーバーの実行 | chronyd -q 'server 127.127.1.0 iburst' |
BetterCap | Wi-Fi 上での時間シフト MITM のために NTP パケットを注入 | 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グループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。