NTPリフレクション攻撃とは?IP・UDP・ICMPからパケットの中身まで図解
PC・スイッチ・ルーターの通信経路、MAC・ARP・サブネット・NAPTを操作するラボ、OSI参照モデルとTCP/IPのレイヤ構造、カプセル化とEthernet・IP・UDP・NTPの実バイト構成、IP・UDP・TCP・ICMPの基礎からNTPの時刻同期、IPスプーフィングと反射・増幅、パケット例、計算デモ、直接DoSや時刻改ざんとの違い、BCP 38まで一つの記事で図解します。
THE BIG PICTURE
攻撃者は、標的へ直接大きなデータを送らない
攻撃者は、要求の「差出人」を標的に偽装して別のサーバーへ送ります。要求を受けたサーバーが、差出人だと思い込んだ標的へ大きな返事を送ってしまう。これが反射(Reflection)と増幅(Amplification)の組合せです。
攻撃者
差出人を偽装して小さく送る
NTPサーバー
要求に従い大きく応答
標的
要求していない応答が集中
図は仕組みの概要です。以下ではIPとUDPの役割から順番に説明します。
通信は何層にも分かれる:OSI参照モデルとTCP/IPモデル
プロトコル(通信規約)は、通信する機器同士が守る約束です。ネットワークの仕組みを理解するには、「その約束がどの層の仕事か」を先に押さえるのが近道です。層を分けると、時刻同期を担当するNTP、データを運ぶUDP、宛先へ届けるIPの役割を混同しなくなります。
OSI参照モデルは通信の機能を7層に整理した概念モデルです。一方、TCP/IPモデルは実際のインターネットで使われるプロトコル群を4層程度にまとめた考え方です。両者の区分は完全に1対1ではありませんが、学習するときは次の対応が役立ちます。
第7層 アプリケーション層
第6層 表現層 / 第5層 セッション層も一般にここへまとめる
時刻を合わせる、名前を解決する、Webのデータをやり取りするなど、アプリケーションの処理を定める。
ポート番号でアプリケーションを区別。TCPは順序制御や再送などを提供し、UDPは小さな単位でデータを送る。
IPはアドレスと経路選択を扱う。ICMPはIPのエラー通知・診断を担う。ICMPはTCPやUDPと同じ第4層ではなく、IPと密接な第3層の制御プロトコル。
第1層 物理層
同じリンク上でフレームを運び、実際の媒体を使ってビットを伝える。MACアドレスは第2層で使う識別子。
※ OSIの第5〜7層はTCP/IPモデルのアプリケーション層にまとめて示しました。また、TCP/IPモデルを5層で説明してリンク層を「データリンク層/物理層」に分ける教材もあります。ICMPをUDP・TCPと同列のトランスポート層として覚えないことが重要です。
実際の通信は、上の層のデータを下の層が包み込む
NTPの要求がPCから送信されるとき、上位のデータに順番にヘッダが付きます。これをカプセル化(encapsulation)といいます。受信側は逆順にヘッダを読み、対応する層の処理へ渡します。
第7層|アプリケーション層
NTPメッセージ
時刻要求:何を問い合わせるか(NTPのデータ)
↓ UDPヘッダを付ける
第4層|トランスポート層
UDPデータグラム
UDPヘッダ + NTPデータ(宛先ポート123など)
↓ IPヘッダを付ける
第3層|ネットワーク層
IPパケット
IPヘッダ + UDPヘッダ + NTPデータ(送信元・宛先IP)
↓ Ethernetなどのヘッダと末尾情報を付ける
第2・1層|リンクと物理媒体
フレーム → 信号
Ethernetヘッダ + IPパケット + FCS(誤り検出)→ ケーブルや電波で伝送
バイト列として見る:本当に入れ子になっているのか
レイヤは機能の分担を説明する論理的な分類であり、パケットの中に「第3層」というラベルが存在するわけではありません。実際には、各プロトコルのヘッダ(制御情報)がデータの前に、Ethernetの場合はFCSが末尾に付加され、連続するバイト列になります。これがカプセル化の実体です。
この計算は、IPv4オプションなし・VLANタグなし・NTP拡張フィールドなし・標準Ethernet IIフレームを仮定しています。48バイトはNTP基本ヘッダのサイズです。Ethernetのプリアンブル(8 B)やフレーム間ギャップ(12 B)は94 Bに含めません。各色の横幅は説明用で、正確なバイト数比ではありません。
具体的なフィールド:どこに何が書かれる?
| 場所 | フィールド例 | 何のためか |
|---|---|---|
| Ethernet | EtherType = 0x0800 | 中身はIPv4パケット |
| IPv4 | Source = 203.0.113.20 | 攻撃で偽装される送信元IP |
| IPv4 | Protocol = 17 | ペイロードがUDPであることを示す |
| UDP | Destination port = 123 | NTPサービスの受信ポート |
| NTP | Mode = 3 | 通常のクライアント要求の例 |
IPv4の Protocol フィールドは、次に解析するプロトコルを表します。17ならUDP、6ならTCP、1ならICMPです。ICMP EchoはIPv4の中にICMPメッセージが直接入り、通常はUDPヘッダを持ちません。
NTPの通信
Ethernet → IPv4 (17) → UDP (123) → NTP
アプリケーションの時刻同期メッセージをUDPで運ぶ。
pingの通信
Ethernet → IPv4 (1) → ICMP Echo
IPの診断メッセージ。UDPポート123を使用しない。
ルーターを通ると、どこまで包み直す?
Ethernetの宛先MACアドレスは、最終目的地ではなくそのリンク上の次の転送先を示します。ルーターは受信フレームのEthernet情報を取り外し、宛先IPで経路を決め、次のリンク用に新しいフレームを作ります。通常、送信元・宛先IPは変えずに転送しますが、IPv4のTTLは減り、ヘッダチェックサムも更新されます。NATなどを使う場合はIPやポートも変更され得ます。
リンクA:PC → ルーター
Ethernet: PC → Router-A
IPv4: PC → NTPサーバー
UDP: クライアント → 123
リンクB:ルーター → 次の機器
Ethernet: Router-B → Next-hop
IPv4: PC → NTPサーバー
UDP: クライアント → 123
MACアドレスは区間ごとに変わり得ますが、宛先IPは原則として最終的な通信相手を示します。したがってIPアドレスとMACアドレスを同じ「宛先」として扱わないことが重要です。
この攻撃で偽装されるのは第3層のIPヘッダにある送信元IPアドレスです。大きな応答を生み出すのは第7層のNTPの古い管理機能であり、その応答を運ぶのが第4層のUDPです。攻撃を理解するときも、どの層で何が起きたかを分けて考えます。
ping が使うICMP Echo Request/Replyは第3層側の制御メッセージです。UDPポート123へ送るNTP要求ではありません。
MACアドレスは主に同じリンク内の第2層で使い、IPアドレスはネットワークをまたぐ第3層の通信先を示します。ルーターを通るとEthernetの宛先MACは通常次の区間に合わせて変わります。
スマホ・PCからインターネットへ:Wi-Fi・MAC・ルーターを一から理解する
NTPのパケットを解説する前に、そもそも端末が外部サーバーへ通信を届ける仕組みを確認します。「ルーターが送る」「MACが変わる」を暗記する必要はありません。PCの判断とヘッダの変化を順に追えば理由が分かります。
IPアドレスはRFC 5737で定められた文書用の例。現実のネットワークアドレスとは異なります。家庭用のWi-Fiルーターはアクセスポイント・L2スイッチ・L3ルーター・NAPT・DHCPなどを1台にまとめていることがあります。
WIRELESS LAN FUNDAMENTALS
スマホだけでも分かる:Wi-Fiルーターの中では何が起きる?
LANケーブルを使ったことがなくても大丈夫です。普段スマートフォンでWi-Fiマークを見ているなら、そこがネットワークを理解する入口になります。
📱 スマートフォン
Wi-Fi電波で接続
📶 家庭用Wi-Fiルーター
無線LANを家庭内LANへ橋渡し
IPの経路選択・TTL更新
IP変換や設定の配布
🌐 外部サーバー
NTPの時刻情報を提供
APが電波を受けた瞬間に外部インターネットへ直接送るのではありません。LAN内で橋渡しする役割と、外部へIPパケットを転送するルーターの役割を分けて考えると理解できます。
スマホでWi-Fiを選んでからNTPへ通信するまで
SSIDを選ぶ
例:HomeLab。SSIDはWi-Fiの名前であって、IPアドレスではありません。
APと接続・認証する
APのBSSIDなどを使う無線区間。WPA2/WPA3などの方式で接続を保護します。
IP設定を受け取る
DHCPなどにより192.168.10.20/24、ゲートウェイ192.168.10.1などを設定します。
NTP要求を送る
宛先198.51.100.123は外部。まずゲートウェイへ802.11フレームで送り、APがLANへ橋渡しします。
Wi-Fiと有線LANでは「入れ物」が違う
Wi-Fiの無線区間:802.11フレーム
受信機・送信機・宛先などのアドレス欄
無線区間のヘッダではAPのBSSIDなども関係します。一般的な802.11データフレームはEthernetとアドレス欄の構成が異なります。
有線LANの区間:Ethernetフレーム
送信元・宛先MAC
リンク層のフレーム形式は違っても、その内側のIPパケット・UDPヘッダ・NTPメッセージは共通して使えます。
Wi-Fiでよく出てくる用語
無線LAN/Wi-Fi
LANケーブルの代わりに電波を使って端末とアクセスポイントをつなぐ仕組み。Wi-FiはIEEE 802.11系の無線LAN技術を利用します。インターネットそのものとは異なります。
アクセスポイント(AP)
スマートフォンなどの無線端末をLANにつなぐ中継役。家庭用Wi-FiルーターにはAP機能が一体化されていることが多く、APとしての橋渡しとルーターとしてのIP転送は別の仕事です。
SSID
Wi-Fiネットワークを識別する名前。端末の接続画面に表示される「HomeLab」のような文字列。SSIDはMACアドレスでもIPアドレスでもありません。
BSSID
通常のインフラストラクチャ型Wi-Fiで、端末が接続しているAPの無線側の識別子。一般にMACアドレス形式です。同じSSIDを複数のAPが提供する場合でも、BSSIDは区別されます。
2.4GHz/5GHz/6GHz
Wi-Fiで使う周波数帯の例。家の壁による減衰や混雑、利用可能なチャネルが異なります。周波数帯はIPアドレスやポート番号とは無関係です。
WPA2/WPA3
Wi-Fi接続の認証・保護に関係する方式。主に無線リンクを保護します。HTTPS/TLSのアプリケーション間の暗号化や、IPのルーティングとは別の役割です。
DHCP
スマートフォンにIPアドレス・サブネット・デフォルトゲートウェイ・DNS設定などを自動で配る仕組み。Wi-Fiに接続した後、IPの設定が必要になることがあります。
送信前にPCが判断すること
宛先は同じネットワークにいる?
PCは 192.168.10.20/24 と宛先 198.51.100.123 を比べます。同じ /24 ではないため、NTPサーバーへ直接送るのではなく、ゲートウェイ 192.168.10.1 に預けます。
ルーターのMACアドレスを調べる(ARP)
IPv4の宛先はNTPサーバーのままです。一方、LAN内で送るEthernetフレームの宛先MACはルーターのものにする必要があります。ARPで『192.168.10.1は誰?』と問い合わせ、得られたMACを宛先に書きます。
スイッチがEthernetフレームを運ぶ
L2スイッチは宛先MACに対応するポートへ転送します。単純な転送のためにIP宛先を書き換えることはありません。
ルーターが次のネットワークへ包み直す
ルーターは宛先IPに基づいて経路を選び、TTLを減らし、次のリンク用のL2ヘッダを作ります。境界でNAPTを使う場合は送信元IPとポートも変わります。
ARPのやりとりをパケット単位で見る
Who has 192.168.10.1? Tell 192.168.10.20
192.168.10.1 is at 02:00:00:00:10:01
ARP自身はUDPの上で動くわけではありません。EthernetではIPv4とは別のEtherType(ARP: 0x0806)で運ばれます。IPv6では同じ仕組みをそのまま使わず、ICMPv6の近隣探索(NDP)を使います。
INTERACTIVE NODE TOPOLOGY
ARPをノードと矢印で追う:誰に届き、誰が返すのか
ノード図を切り替え、ARP Request・Reply・その後のNTP通信を追跡できます。通信はブラウザー内の模式表現で、実際のパケットは送信しません。
STEP 1 / 4
最終宛先はNTPサーバー。でも最初に渡す相手はルーター
スマホは 198.51.100.123 が自分のLAN(192.168.10.0/24)の外にあると判断します。そこでゲートウェイ 192.168.10.1 のMACアドレスを探します。
IPv4 destination = 198.51.100.123 / next-hop = 192.168.10.1スマホのARPキャッシュ
(empty)
キャッシュに対応関係があり、有効期限内なら通常ARPを再送せずNTP通信へ進めます。実際の保持時間はOSにより異なります。
ARP Request / Reply
リンク上で運ぶ独立したARPメッセージ。EthernetではEtherType 0x0806。IPやUDPヘッダは付きません。
MAC解決後のNTP
Wi-Fiの802.11フレームでIPv4 → UDP → NTPを運びます。IPの宛先はNTPサーバー、LAN内の次ホップはルーターです。
IPアドレスとMACアドレスは説明用です。Wi-Fiの802.11フレームはEthernetと同じヘッダ形式ではなく、通常インフラストラクチャモードではAPのBSSIDなどを含む複数のアドレス欄が関わります。図の矢印は論理的な転送方向を示し、802.11の各アドレス欄そのものではありません。IPv6ではARPではなくNDPを使います。
頻出するネットワーク用語を、この例で確認する
NIC(ネットワークインターフェース)
L1〜L2PCを有線LANやWi-Fiにつなぐ通信機能。EthernetならリンクごとにMACアドレスを使ってフレームを送受信します。
MACアドレス
L2Ethernetなどで使われるリンク上の識別子。通常48ビット(6バイト)で、例は 02:00:00:00:10:20。IPアドレスと違い、次のリンクの転送相手を指定します。
スイッチ(L2スイッチ)
L2フレームの送信元MACを学習し、宛先MACに対応するポートへ転送する機器。通常、IPの経路選択やTTL減算は行いません。
IPアドレス
L3異なるネットワークの先にある宛先を表す論理アドレス。IPv4は32ビット。ルーターは主に宛先IPを使って転送先を決めます。
サブネット/CIDR
L3IPアドレスをネットワークの範囲に区切る考え方。192.168.10.20/24なら、先頭24ビットがネットワーク部で、同一サブネットは通常192.168.10.0〜255です。
デフォルトゲートウェイ
L3送信先が自分のサブネットにいないとき、最初にIPパケットを預けるルーターのIPアドレス。PCはそのMACをARPで調べます。
ARP
L2/L3の連携IPv4の次ホップIPに対応するMACアドレスを、同じリンクで問い合わせる仕組み。『192.168.10.1を持つ機器はMACを教えて』とブロードキャストします。
ルーター
L3宛先IPと経路表から次ホップ・出力インターフェースを選ぶ機器。Ethernetをいったん外し、TTLを減らして次のリンク用に包み直します。
NAT/NAPT
主にL3・L4境界でIPアドレス、NAPTではさらにTCP/UDPポートなどを変換する仕組み。IPv4の家庭用ルーターで複数の端末が一つの公開IPを共有する際に一般的です。
TTL(Time To Live)
L3IPv4ヘッダの値。ルーターで転送するたび通常1以上減り、0になると破棄されます。パケットが経路を無限に循環することを防ぎます。
ポート番号
L4同じIPの中でどの通信・サービスかを識別する番号。UDP/123はNTP、TCP/443はHTTPSで一般的です。
DNS/DHCP
アプリケーション層DNSは名前からIPなどを調べる仕組み。DHCPはIP・サブネット・ゲートウェイ・DNSサーバーなどの設定を端末へ配布する仕組み。
PACKET JOURNEY · VISUAL LAB
パケットと一緒にネットワークを進もう
上のノード図と下のヘッダが、同じ段階に連動します。ネットワークへの送信は行いません。
② 通信の進行:1 / 4
STEP 1
PCがNTPパケットを作る
まず最終宛先IPを決める
宛先198.51.100.123は家庭内LANの外。PCはデフォルトゲートウェイ192.168.10.1へ渡します。ゲートウェイのMACはARPで取得済みとします。
③ 今、パケットの中身はどうなっている?
Ethernet:送信元=PC、宛先=GW
192.168.10.20 → 198.51.100.123
TTL:64
53000 → 123
見てほしいポイント:L3の最終宛先と、L2の次の転送相手は別物です。
教育用の簡略モデル。IPはRFC 5737の文書用範囲、MACは説明用。実環境のWANリンクはEthernetとは限らず、TTLは通過したルーター数に依存します。
MACは変わる。IPは常に変わらない?
いいえ。通常のIPルーティングでは送信元・宛先IPを維持しますが、NAPTがあると送信元IPやポートが変わります。VPN・トンネルではIPパケットを別のIPパケットで包むこともあります。「MACだけ変わる」は単純なEthernet間ルーティングの説明として覚えてください。
1. まず「通信の荷物」を理解する:IP・UDP・ポート番号
インターネットの通信は、データを小さな単位に分けて運びます。ここでは郵便に例えて理解しましょう。IPアドレスは届け先の住所、ポート番号は届け先のサービス窓口です。IPとUDPは担当する仕事が違います。
IPヘッダ:どの機器から、どの機器へ?
送信元IPアドレス / 宛先IPアドレス / 上位プロトコル番号など
UDPヘッダ:どのサービスへ?
送信元ポート / 宛先ポート / 長さ / チェックサム(8バイト)
外側のIPヘッダでコンピューター間の届け先が決まり、その内側のUDPヘッダでサービスの宛先が決まります。NTPの時刻情報はさらに内側です。
IPアドレスとIPスプーフィング
IPアドレスはネットワーク上の通信元・通信先を表します。送信元を示す IP.src と宛先を示す IP.dst があり、宛先IPに基づいてルーターがパケットを転送します。IPスプーフィング(IP spoofing)は、送信元欄を別の機器のアドレスに書き換えることです。
正常な差出人
IP.src = 192.0.2.10
IP.dst = 198.51.100.10192.0.2.10 の機器が送信したパケット
偽装した差出人
実際の送信者 = 192.0.2.10
IP.src = 203.0.113.20 ← 偽装
IP.dst = 198.51.100.10サーバーには送信元が203.0.113.20に見える
ただし、偽装したパケットが必ず通るわけではありません。通信事業者やネットワークの出口で送信元検証が行われていれば、不正な送信元アドレスは破棄できます。また、IPアドレスだけでは「誰が本当に送信したか」の認証にはなりません。
UDPは何をする?
UDP(User Datagram Protocol)は、アプリケーションのデータを短いデータグラムとして送る通信方式です。TCPと異なり、通信開始前に3ウェイハンドシェイクを行わず、UDP自身は到達確認・自動再送・順序保証を提供しません。その分、ヘッダが小さく、単発の問い合わせにも使いやすい方式です。
UDPヘッダの構造:全部で8バイト
送信元ポート
16ビット
宛先ポート
16ビット
長さ
16ビット
チェックサム
16ビット
16ビットは2バイトなので、4フィールド合計8バイト。長さにはUDPヘッダとデータが含まれます。チェックサムは転送中の破損検出用で、送信者本人を認証する仕組みではありません。
TCP・UDP・ICMPは同じものではない
Transmission Control Protocol
接続を確立して、確認応答・再送・順序制御を行う。
例:WebのHTTPS通信など
User Datagram Protocol
接続確立を前提とせず、データグラムを送る。UDP自身は再送・順序保証をしない。
例:NTP、DNSの一般的な問い合わせなど
Internet Control Message Protocol
IP通信の到達性診断やエラー通知に使う。TCP・UDPのポート番号は使わない。
例:pingのEcho Request/Replyなど
通信開始の見え方
- 1. SYN → 接続要求
- 2. ← SYN + ACK
- 3. ACK → 接続確立
- 4. データの送受信
- 1. データを送信 →
- 2. 必要なら相手が応答 ←
- ※ UDPには接続確立の3段階がない
TCPでも攻撃は起こります。ここで重要なのは、UDPの単発の要求では、TCPの接続確立のような往復処理なしでサーバーが応答を送れる場合がある、という違いです。
2. NTPはどうやって時計を合わせるのか
NTP(Network Time Protocol)はコンピューターの時計を時刻源と同期するプロトコルです。多くの環境でUDPのポート123番を使います。ポートとは、コンピューター上のどのプログラム・サービスにデータを渡すかを識別する番号です。
クライアント
時計を合わせたいPCやサーバー
時刻要求 →
← 時刻応答
NTPサーバー
UDP/123で時刻を提供
通常は「自分が問い合わせ、自分に返事が返る」。攻撃との違いを考える際の基準になります。
NTPが使う4つの時刻
ネットワークの遅延を考慮するため、NTPでは時刻を4つ使って計算します。時刻源の時計を単にコピーするわけではありません。
クライアントから要求を送信
クライアント時計で記録
サーバーが要求を受信
サーバー時計で記録
サーバーが応答を送信
サーバー時計で記録
クライアントが応答を受信
クライアント時計で記録
時刻差 θ = [(t2 − t1) + (t3 − t4)] / 2
対称に近い通信遅延などを仮定した基本的な算出式です。実際のNTPにはサンプルの選択・統計処理などもあります。
パケットの中身を見る
正常なNTP通信のイメージ(概念ログ・実測ではない)
# クライアントから時刻問い合わせ
IP: 192.0.2.10 → 198.51.100.10
UDP: 49152 → 123
NTP: mode=3 (client), transmit_timestamp=t1
# サーバーから返事
IP: 198.51.100.10 → 192.0.2.10
UDP: 123 → 49152
NTP: mode=4 (server), origin=t1, receive=t2, transmit=t3ここではクライアント側の一時的な送信元ポートを49152と仮定しました。実際の送信元ポートは環境によって異なります。基本のNTPヘッダは48バイトで、タイムスタンプなどのフィールドを持ちます。
公式資料・実物を見るRFC 5905 — NTPv4の実際のパケット構造ヘッダの図・動作モード・時刻同期の計算方法が載っています。3. NTPリフレクション攻撃では何が変わる?
攻撃者はNTPサーバーに対し、標的のIPアドレスを送信元と偽装した要求を送ります。NTPサーバーが送信元を信じて応答すると、返事は攻撃者ではなく標的に届きます。第三者のサーバーにトラフィックを反射させる仕組みです。
PACKET WALKTHROUGH
攻撃者 A
192.0.2.10
NTPサーバー N
198.51.100.10
標的 V
203.0.113.20
A が N に偽装要求
パケットの差出人欄がVに書き換えられている
IP.src = V IP.dst = N UDP.dst = 123N が V に応答
Nから見るとVが要求者なので、返事の宛先もV
IP.src = N IP.dst = V UDP.src = 123多くのNがVへ応答
複数のNTPサーバーの応答が標的の回線に集中
N1 → V N2 → V N3 → V …IPアドレスはRFC 5737の文書用アドレスです。外部サーバーへ送る実行コマンドではありません。
DoS(Denial of Service)はサービスを利用できなくする攻撃の総称で、DDoS(Distributed DoS)は多数の送信元などに分散した攻撃です。反射器を多数利用する形はDRDoS(分散反射型DoS)と呼ばれます。どの言葉も「同じ攻撃の別名」ではなく、着目する特徴が違います。
反射
標的でない第三者のサーバーが標的へ応答すること
増幅
要求よりも大きな応答が返ること
分散
多数の送信元・反射器に通信が分かれていること
4. なぜ小さな要求が大きな攻撃になるのか
古い一部の ntpd(NTPサーバー用ソフトウェア)には、最近通信したクライアントの一覧を返すmonlistという管理機能がありました。少量の管理要求から、多数の記録を含む応答パケットが発生するため、悪用されました。
少数の要求バイト
複数のパケットに分かれた一覧
例:200 B の要求 → 4,000 B の応答
4,000 ÷ 200 = 20 倍
この数値は計算説明用の仮定値です。実際の倍率は実装・要求・応答の内容・計測単位によって変わります。
REFLECTION · NETWORK TOPOLOGY LAB
3つの機器で反射を追う
左から順にノードをたどり、要求と応答がどこへ向かうかを確認します。通信は一切送信しません。
攻撃者が偽装した要求を作る
送信元IPに標的のIPアドレスを書いた小さな要求が作られます。重要なのは、返信先が攻撃者自身ではないことです。
IPv4 src=標的IP / dst=NTPサーバーIP UDP dst=123 / 小さな要求
ここに注目:IPヘッダの送信元が偽装されています。
増幅の量を変えてみる
標的へ届く応答の合計(モデル上の値)
2 MB
100 B × 20 倍 × 1,000 件 = 2,000,000 B
このラボは安全な概念シミュレーションです。古いmonlistのような応答が大きい機能を持つ実装を想定しており、現行のすべてのNTPサーバーに該当するものではありません。
現在のNTPサーバーの標準機能だと思わないこと
このmonlistの問題は、歴史的な実装の脆弱性 CVE-2013-5211 に関係します。NTPプロジェクトの告知によると、4.2.7p26以前のntpdに影響があり、修正版で解消されています。「NTPを使う=誰でもmonlistによる増幅ができる」という意味ではありません。
5. 似た攻撃や用語の違いも、通信の流れで理解する
次の3つは、NTPリフレクションと混同しやすい技術です。いずれも「どこが標的か」「どんなプロトコルで何が返るか」を確認すると違いが見えます。
COMPARISON 01
NTPサーバーへの大量問い合わせ
直接的なDoS:攻撃を受けるのはNTPサーバーそのもの
送信元
通信の起点
標的NTPサーバー
通信の受け手
NTPサーバーへ大量の時刻問い合わせを送ると、処理能力や通信帯域を圧迫できます。しかし、これはサーバー自身に要求が集中する攻撃。第三者のサーバーに要求を送り、その返事を別の標的へ向ける反射攻撃とは構造が異なります。
違い:標的に届くのが「要求」なのか、第三者からの「応答」なのか。
COMPARISON 02
NTPの時刻情報の改ざん
可用性ではなく、時計の正確性・信頼性を狙う
偽の時刻情報
通信の起点
時刻同期クライアント
通信の受け手
NTPが返す時刻の信頼性が損なわれると、コンピューターの時計がずれる場合があります。これにより、ログの時系列分析や時刻を利用するセキュリティ機構に影響が出ることがあります。
こちらは時刻という情報の正しさが焦点です。NTPリフレクションでは時刻を改ざんする必要はなく、狙いは応答トラフィックの集中です。
COMPARISON 03
ICMP Echo RequestとIPスプーフィング
送信元を偽装する点は似ていても、使うプロトコルが違う
ping送信元
通信の起点
受信ホスト
通信の受け手
送信元IPを偽装したICMP要求を送ると、別の宛先に返信が向く場合もあります。ただし、ICMP Echo RequestはNTPの管理要求とはまったく別のメッセージです。NTPのmonlistによる大きな応答は引き出せません。
ICMP Echo
IPの診断メッセージ。UDPポートは使わない
NTP問い合わせ
UDPでNTPサービスへ送る時刻・管理メッセージ
6. ログではどのように見える?
標的側がNTPを使っていないのに、UDPの送信元ポート123番から大量のパケットを受け取っていたら、調査の手掛かりになります。ただし、UDP/123だけで攻撃と断定はできません。送信量、宛先、正常な時刻同期との違い、ネットワーク全体の状況を合わせて確認します。
受信フローログ(すべて説明用の架空データ)
time=12:00:01 src=198.51.100.11:123 dst=203.0.113.20:49152 proto=UDP bytes=6000
time=12:00:01 src=198.51.100.12:123 dst=203.0.113.20:49152 proto=UDP bytes=5800
time=12:00:01 src=198.51.100.13:123 dst=203.0.113.20:49152 proto=UDP bytes=6200この例では、複数の送信元から同じ標的のUDPポートへ通信が集中しています。src は送信元、dst は宛先、bytes は計測対象のバイト数です。パケットの個別長さなのか集計区間の通信量なのかは、実際のログ形式で確認する必要があります。
パケット解析ツールでの観察項目
送信元IP / 宛先IP
どのサーバーから誰に届いたか。複数の送信元IPへの分散に注目
送信元・宛先ポート
NTP由来のUDP/123が関わっているか。役割によって送信元・宛先は変わる
通信量とパケット数
1つの要求に対する応答の総サイズ、大量の応答が短時間に集中していないか
NTPのメッセージ種別
通常の時刻同期と、古い実装の管理メッセージを混同していないか
7. 防ぐにはどこを守ればよい?
送信元IPの偽装をネットワーク出口で止める(BCP 38)
BCPはBest Current Practice(推奨される運用上の実践方法)の略です。BCP 38/RFC 2827は、ネットワークから出るパケットの送信元IPが、そのネットワークで正当に使える範囲かを検証する方法を推奨しています。偽装要求が外へ出られなければ、この方式の反射攻撃を大幅に抑えられます。
NTPサーバーの古い管理機能を公開しない
脆弱な古いntpdを更新し、不要な問い合わせを拒否します。過去のntpdには disable monitor や noquery といった設定上の緩和策がありますが、適用可否は実装・バージョンで判断してください。
被害側はネットワークの上流で緩和する
通信が回線を埋めるほど増えた場合、アプリケーションやサーバーだけで防ぐのは困難です。ISP(インターネット接続事業者)やDDoS緩和サービスと連携し、上流側で不要なトラフィックを制限します。
BCP 38の動作例
ある会社に割り当てられた送信元アドレスが 192.0.2.0/24 だとします(文書用の仮想例)。出口ルーターはこの範囲の送信元なら通し、それ以外の送信元を名乗るパケットを拒否します。/24 はIPv4アドレスの先頭24ビットがネットワーク部であることを示すCIDR表記です。
通過
IP.src = 192.0.2.10拒否
IP.src = 203.0.113.208. 自分で理解を確認する
Q1. 攻撃者が書き換えるのはIPヘッダのどの項目?答えを見る ↓
送信元IPアドレス(IP.src)です。NTPサーバーが応答する宛先を、攻撃者自身から標的へすり替えます。
Q2. 要求が200 B、応答の合計が10,000 Bなら増幅倍率は?答えを見る ↓
10,000 ÷ 200 = 50倍です。実際の通信量を評価するときは、パケットヘッダなど何をバイト数に含めるかも揃えて比較します。
Q3. ICMP Echo RequestをNTPサーバーへ送ると、NTPのmonlist応答になる?答えを見る ↓
なりません。ICMPのEchoとUDPを利用したNTPの管理要求はプロトコルが違います。
Q4. BCP 38は反射攻撃のどの部分を阻止する?答えを見る ↓
攻撃者側ネットワークから、不正な送信元IPを名乗るパケットが流出する部分です。正規の送信元からのDoSを全て止めるものではありません。
まとめ
IPは相手先、UDPはサービスへの配送、NTPは時刻情報。その役割の違いが攻撃の理解につながる。
NTPリフレクション攻撃は、送信元IPアドレスの偽装、第三者サーバーによる応答の反射、場合によっては大きな応答による増幅が組み合わさった攻撃です。正常な時刻同期・直接的なDoS・時刻改ざん・ICMP Echoとの違いも、通信の宛先とメッセージの種類から区別できます。
技術資料・一次情報
本文中で必要な仕組みは説明しました。以下は仕様や実装の原典を確認したい場合の資料です。
- NTP BUG 1532: DRDoS/Amplification Attack using ntpdc monlist command ↗— Network Time Foundation
- RFC 1122: Requirements for Internet Hosts — Communication Layers ↗— IETF
- RFC 826: Address Resolution Protocol (ARP) ↗— IETF
- RFC 1812: Requirements for IPv4 Routers ↗— IETF
- RFC 3022: Traditional IP Network Address Translator ↗— IETF
- RFC 768: User Datagram Protocol ↗— IETF
- RFC 792: Internet Control Message Protocol ↗— IETF
- RFC 5905: Network Time Protocol Version 4 ↗— IETF
- BCP 38 / RFC 2827: Network Ingress Filtering ↗— IETF
- Technical Details Behind a 400Gbps NTP Amplification DDoS Attack ↗— Cloudflare
- NTP Amplification DDoS Attack ↗— Cloudflare