Translated ['src/network-services-pentesting/pentesting-ntp.md'] to ja

This commit is contained in:
Translator 2025-07-10 09:32:58 +00:00
parent 9f2bf3f90f
commit f69f479b7e

View File

@ -4,59 +4,154 @@
## 基本情報
**ネットワーク時間プロトコル (NTP)** は、可変遅延ネットワーク上のコンピュータやネットワークデバイスが時計を正確に同期させることを保証します。これは、IT運用、セキュリティ、およびログ記録において正確な時間管理を維持するために重要です。NTPの正確性は不可欠ですが、適切に管理されない場合はセキュリティリスクも伴います。
**ネットワーク時間プロトコル (NTP)** は、可変遅延ネットワーク上のコンピュータやネットワークデバイスが時計を正確に同期させることを保証します。これは、IT運用、セキュリティ、ログ記録において正確な時間管理を維持するために重要です。時間はほぼすべての認証、暗号プロトコル、法医学プロセスで使用されるため、**NTPに影響を与えることができる攻撃者は、しばしばセキュリティ制御を回避したり、攻撃の調査を困難にすることができます。**
### 概要とセキュリティのヒント:
### 概要とセキュリティのヒント
- **目的**: ネットワークを介してデバイスの時計を同期させる。
- **重要性**: セキュリティ、ログ記録、および運用にとって重要。
- **目的**: ネットワーク上でデバイスの時計を同期させる。
- **重要性**: セキュリティ、ログ記録、暗号プロトコル、分散システムにとって重要。
- **セキュリティ対策**:
- 認証付きの信頼できるNTPソースを使用する。
- 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
```
**デフォルトポート:** 123/udp
```
PORT STATE SERVICE REASON
123/udp open ntp udp-response
```
---
## 列挙
```bash
ntpq -c readlist <IP_ADDRESS>
ntpq -c readvar <IP_ADDRESS>
ntpq -c peers <IP_ADDRESS>
ntpq -c associations <IP_ADDRESS>
ntpdc -c monlist <IP_ADDRESS>
ntpdc -c listpeers <IP_ADDRESS>
ntpdc -c sysinfo <IP_ADDRESS>
```
### クラシック ntpd / ntpq / ntpdc
```bash
nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 <IP>
# 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>
```
**M/S** フラグやその他のフィールドストラタム、リーチ、ジッターなどの意味については、chronycのマニュアルページを参照してください。
### 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"
```
---
## 設定ファイルの確認
- ntp.conf
- ``/etc/ntp.conf`` (ntpd)
- ``/etc/chrony/chrony.conf`` (chrony)
- ``/etc/systemd/timesyncd.conf`` (timesyncd クライアントのみ)
## NTP増幅攻撃
``restrict`` 行、``kod`` (Kiss-o'-Death) 設定、``disable monitor``/``includefile /etc/ntp/crypto``、および *NTS* が有効かどうか (``nts enable``) に特に注意してください。
[**NTP DDoS攻撃の仕組み**](https://resources.infosecinstitute.com/network-time-protocol-ntp-threats-countermeasures/#gref)
---
## 最近の脆弱性 (2023-2025)
**NTPプロトコル**は、UDPを使用しており、TCPとは異なり、ハンドシェイク手順なしで動作することができます。この特性は、**NTP DDoS増幅攻撃**で悪用されます。ここでは、攻撃者が偽のソースIPを持つパケットを作成し、攻撃リクエストが被害者から来ているように見せかけます。これらのパケットは最初は小さいですが、NTPサーバーははるかに大きなデータ量で応答し、攻撃を増幅させます。
| 年 | CVE | コンポーネント | 影響 |
|------|-----|-----------|--------|
| 2023 | **CVE-2023-26551→26555** | ntp 4.2.8p15 (libntp *mstolfp*, *praecis_parse*) | **ntpq** 応答を介して到達可能な複数のバッファオーバーフロー書き込み。**4.2.8p16** でパッチ 🡒 アップグレードまたはバックポート修正。 citeturn1search1turn1search2turn1search0|
| 2023 | **CVE-2023-33192** | **ntpd-rs** (Rust 実装) | 形式が不正な **NTS** クッキーがリモート **DoS** を引き起こす v0.3.3 前 NTS **無効** の場合でもポート 123 に影響。 citeturn4view0|
| 2024 | ディストリビューションの更新 | **chrony 4.4 / 4.5** 複数のセキュリティ強化 & NTS-KE 修正 (例: SUSE-RU-2024:2022) citeturn2search2|
| 2024 | DDoS 記録 | Cloudflare が **5.6 Tbps UDP リフレクション** 攻撃を報告 (使用されたプロトコルの中に NTP が含まれる)。インターネットに面したホストでは *monitor* & *monlist* を無効にしておく。 citeturn5search0|
_**MONLIST**_コマンドは、使用頻度は低いものの、NTPサービスに接続した最後の600クライアントを報告することができます。このコマンド自体は単純ですが、その悪用は重大なセキュリティ脆弱性を浮き彫りにします。
> **エクスプロイトキット**: 2023 ntpq OOB 書き込みシリーズの概念実証ペイロードが GitHub にあり (Meinberg の記事を参照)、システム管理者のクライアントサイドフィッシングに武器化可能。 citeturn1search4
---
## 高度な攻撃
### 1. NTP 増幅 / リフレクション
レガシー Mode-7 ``monlist`` クエリは最大 **600 ホストアドレス** を返し、数千のインターネットホストにまだ存在します。応答 (428-468 バイト/エントリ) は 8 バイトのリクエストの *~ 200×* 大きいため、攻撃者は三桁の増幅係数に達することができます。緩和策:
- ntp 4.2.8p15+ にアップグレードし、``disable monitor`` を **追加** します。
- エッジで UDP/123 のレート制限を行うか、DDoS アプライアンスで *sessions-required* を有効にします。
- ソーススプーフィングをブロックするために *BCP 38* 出口フィルタリングを有効にします。
Cloudflare の学習センターの記事を参照して、ステップバイステップの内訳を確認してください。 citeturn5search1
### 2. 時間シフト / 遅延攻撃 (Khronos / Chronos 研究)
認証があっても、経路上の攻撃者はパケットをドロップまたは遅延させることでクライアントの時計を静かに **シフト** させることができます。IETF **Khronos (以前の Chronos) ドラフト** は、バックグラウンドで多様なサーバーにクエリを行い、シフト > 𝚡 ms を検出するために結果をサニティチェックすることを提案しています。最新の chrony (4.4+) はすでに類似のサニティフィルター (``maxdistance`` / ``maxjitter``) を実装しています。 citeturn9search1
### 3. NTS 悪用 & 4460/tcp 露出
NTS は重い暗号処理を別の **TLS 1.3 チャンネル 4460/tcp** (``ntske/1``) に移動します。実装が不十分な場合 (CVE-2023-33192 を参照) は、クッキーの解析時にクラッシュするか、弱い暗号を許可します。ペンテスターは:
```bash
ntpdc -n -c monlist <IP>
# 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
```
## Shodan
自己署名または期限切れの証明書と弱い暗号スイート非AEADを探します。参照: RFC 8915 §4. citeturn11search0
- `ntp`
---
## ハードニング / ベスト・カレント・プラクティス (BCP-233 / RFC 8633)
*オペレーターは次のことを推奨します:*
1. **≥ 4** の独立した多様な時間ソース公共プール、GPS、PTPブリッジを使用して、単一ソースの汚染を避けること。
2. ``kod`` および ``limited``/``nomodify`` 制限を有効にして、悪用するクライアントが完全な応答の代わりに **Kiss-o'-Death** レート制限パケットを受け取るようにすること。
3. デーモンログを監視して **panic** イベントやステップ調整 > 1000 s を確認すること。RFC 8633 §5.3 による攻撃の兆候。)
4. リープ秒の停止を避けるために **leap-smear** を検討するが、*すべての* 下流クライアントが同じスミアウィンドウを使用することを確認すること。
5. リープ秒フラグを見逃さないように、ポーリングを ≤24 h に保つこと。
包括的なチェックリストについては RFC 8633 を参照してください。 citeturn8search0turn8search1
---
## 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 #Protocol Abbreviation if there is one.
Port_Number: 123 #Comma separated if there is more than one.
Protocol_Description: Network Time Protocol #Protocol Abbreviation Spelled out
Protocol_Name: NTP
Port_Number: 123
Protocol_Description: Network Time Protocol
Entry_1:
Name: Notes
@ -71,6 +166,17 @@ Name: Nmap
Description: Enumerate NTP
Command: nmap -sU -sV --script "ntp* and (discovery or vuln) and not (dos or brute)" -p 123 {IP}
```
---
## 参考文献
{{#include ../banners/hacktricks-training.md}}
- RFC 8915 *Network Time Security for the Network Time Protocol* (port 4460) citeturn11search0
- RFC 8633 *Network Time Protocol BCP* citeturn8search0
- Cloudflare DDoS report 2024 Q4 (5.6 Tbps) citeturn5search0
- Cloudflare *NTP Amplification Attack* article citeturn5search1
- NTP 4.2.8p15 CVE series 2023-04 citeturn1search4
- NVD entries **CVE-2023-2655155**, **CVE-2023-33192** citeturn1search1turn1search2turn1search0turn4view0
- SUSE chrony security update 2024 (chrony 4.5) citeturn2search2
- Khronos/Chronos draft (time-shift mitigation) citeturn9search1
- chronyc manual/examples for remote monitoring citeturn3search0turn10search1
- zgrab2 ntp module docs citeturn7search0
{{#include /banners/hacktricks-training.md}}