NTPベースのDDoS攻撃を理解する

http://blog.cloudflare.com/understanding-and-mitigating-ntp-based-ddos-attacks

1 comment | 1 point | by WazanovaNews 3年以上前


Jshiike 3年以上前 | ▲upvoteする | link

年初にLeague of Legends、EA.comのサーバがダウンする原因となったNTPベースのDDoS攻撃について、CoudFalreがエンジニアブログでまとめています。

DNS Reflection is so 2013

DNSベースのDDoS攻撃とNTPベースの攻撃は似ている。プロトコルの違いだけ。攻撃者が、被害者となる相手のIPアドレスを偽ってパケットを送付。事情を知らないサーバは、リクエストに応えて、被害者のIPアドレスにデータを返すという仕組み。実際の攻撃者のソースは隠されていて、トレースするのが難しい。もし大量のサーバが利用されると、相当のボリュームのパケットが、世界中から被害者を攻撃することになる。

この攻撃がパワフルなのは、増幅されるからである。[増幅攻撃の概念図] 攻撃者が少数のマシンから送る小さなパケットが、多くのサーバからの大量のリプライを被害者に返す。増幅効果を利用した攻撃で最近まで最も人気があったプロトコルはDNSであった。少数のDNSリクエストがドメイン名のIPアドレスを探し、大量のリプライを起こす。DNSの増幅の威力は8xであった。例えば、1Gbpsで10台のマシンをコントロール攻撃者は、80GbpsのDNS攻撃を起こすことができる。

過去にSNMPを利用した増幅攻撃は、650xを記録したことがある。幸い、オープンなSNMPサーバはインターネット上にほとんどなく、セキュリティはしっかりしてなかったが認証が通常は必要なので、ほとんど起きなかった。

Network Time Protocol attacks: as easy as (UDP port) 123

NTPとはNetwork Time Protocolのことで、時計を正確にセットするためにマシンがインターネットに接続するのに使われる。例えば、Macの時計設定にあるtime.euro.apple.comというアドレス [参考図] は、AppleのNTPサーバである。NTPはもちろんMacだけでなく、デスクトップ、サーバ、電話においても時間の同期に利用される。

残念ながら、シンプルなUDPベースのNTPプロトコルは、ソースIPアドレスをかたったパケットにリプライしてしまい、かつ短いリクエストに長いリプライをしてしまうので、増幅型の攻撃に弱い。DDoSツールとして理想的なのである。

NTPには、モニタリングのために使われるmonlist(時にはMON_GETLIST)というコマンドがある。NTPサーバが過去にやり取りした最大600件のアドレスを返してくる。どれだけ大きいか感覚を掴んでもらうため、インターネット上でランダムに選ばれたオープンNTPサーバにmonlistコマンドを送るntpdcコマンドを使ってみた。これが、Wiresharkでキャプチャーしたリクエスト & リスポンスパケットである。

ntpdc –c monlist 1xx.xxx.xxx.xx9

コマンドラインで、1xx.xxx.xxx.xx9のサーバにMON_GETLISTコマンドを送るようにタイプした。リクエストしたパケットは234 byteである。レスポンスは10件のパケットに分かれ、計4,460 byte。19x の増幅になっている。このNTPサーバの場合はアドレスが55件だけだったか、各レスポンスでパケットは6件のアドレスを持つ(最後は短いパケット)ので、最大600アドレスを返す忙しいサーバであれば、234 byteに対して、100パケットで計48Kにもなる。何と206xに増幅される。

オープンNTPサーバのリストをもった攻撃者は、簡単にDDoS攻撃を仕掛けることができる。しかもNTPサーバを見つけるのは難しいことではない。MetasploitやNMAPというツールには、monlistコマンドをサポートしていて、NTPサーバをみつけることができるモジュールがある。また、オープンNTPサーバを見つけて、パッチをするためのOpen NTP Projectもある。

Don't be part of the problem

もしサーバの時間をセットするのに通常のNTPプログラムを実行しているのなら、Team CymruのSecure NTP Templateを参照されたし。Cisco IOSやJuniper JUNOSのNTPクライアントや、Linuxのiptablesを使って安全に設定する方法を紹介している。

パブリックインターネットで設定する必要のあるntpdサーバを実行しているのであれば、少なくともバージョンを4.2.7p26(詳細はCVE-2013-5211) にアップグレードすること。ntpdではこの脆弱性はバグと分類(issue 1532)されている。

ntpdサーバを運用していて、monlistのようなものが必要であれば、nonce(UDPパケットにあるIPアドレスからきたコマンドだという証明)を必要とするmrulistというコマンド(issue 1531参照)を使うことができる。

ネットワークを運用している、もしくはサービスプロバイダであれば、BCP-38を実装することが必須。これと、BCP-84を採用すれば、DNS/NTP/SNMP等の全てのソースIP偽装系の攻撃を防ぐことができる。


DDoS攻撃対策その1


#セキュリティ

Back