NTPリフレクション攻撃とは?

2014年ごろから聞かれるようになってきた脆弱性の一つが,NTPリフレクション攻撃というものです。

NTPリフレクション攻撃とは,DDoS攻撃の一種で,大量のトラフィックをターゲットサーバーに送り付けることで,サービスを提供できなくすることを目的としています。

NTPサーバーを使い,トラフィックをリフレクション(反射)させて相手を攻撃する方法なので,NTPリフレクション攻撃と呼ばれています。

NTPサーバーをどうやって悪用するのか

NTPサーバーには,NTPデーモン(ntpd)の動作状況を確認するためのコマンドが備わっています。

これは,monlistというコマンドで,ntpdが直近でやりとりした最大600ホストのアドレスを応答として返すというコマンドです。

例えば,Linuxサーバーから以下のコマンドを叩いてみるとその挙動が確認できます。

ntpdc -nc monlist [NTP ServerのIP]

すると,最近,時刻同期をリクエストしてきたホストのIPアドレスがずらりと数百行にわたって返ってきます。

大量のレコードが応答として返ってくる

大量のレコードが応答として返ってくる


この大量の応答を,自分にではなく,ターゲットとなるサーバーに対して送り付けることで,帯域を占有してしまおうというのが,NTPリフレクション攻撃の仕組みです。

普通は自分に応答が返ってくるものですが,自分のIPアドレスを改ざんして,ターゲットサーバーのIPアドレスに成りすますことにより,応答をターゲットに送り付けることができます。

なぜNTPサーバーを使うのか

なぜNTPサーバーを使うのかということですが,リクエストに対するレスポンスのサイズが非常に大きいという点が悪用されやすいポイントです。

DNSサーバーを使った同じ原理の攻撃として,DNSリフレクション攻撃というものが存在しますが,リクエストに対するレスポンスのサイズ比率は,1:70ほどです。

しかし,上述のNTPのmonlistを使うと,そのサイズ比率は1:200にもなります。

つまり,1Gbpsの帯域で攻撃すると,それが200Gbpsに増幅されてターゲットにトラフィックを送り付けることができるという計算になります。

そういう理由で,攻撃者にとってNTPサーバーは悪用しやすいのです。

それで,世界中にある脆弱なNTPサーバーのリストを集めておき,それらに対して一斉に問い合わせを送ってリフレクションさせると,ターゲットサーバーはサービス停止状態に追い込まれてしまいます。

NTPリフレクション攻撃に利用されないようにするために

NTPサーバーに対して使用されるmode 6と呼ばれるタイプのクエリを受け付けないように設定します。受け付けるとしても,信頼できるIPアドレスからのみ受け付けるように制限する必要があります。

以上,NTPリフレクション攻撃についての説明と対処法でした。

コメント