「DoS攻撃について考える」

第8回 「DoS攻撃について考える」

2年ほど前になるが,アメリカのYahoo!やeBayなどが「DDoS攻撃」にさらされてアクセス不能になる事件があった。また,夏に流行した「Code Red」は,ホワイトハウスへDDoS攻撃を行うプログラムを仕込むウイルスであった。はたしてこの「DoS攻撃」とはいったいどのような攻撃なのだろうか

DoS攻撃(サービス拒否攻撃)とは

 インターネット上での攻撃で代表的なものとして,「DoS攻撃」(Denial Of Service:サービス拒否)というものがある。少し前の話ではあるが,米Yahoo!,eBay,amazon.com,そしてZDNetなどの大手サイトが,この攻撃の一種である「DDoS攻撃」によって,アクセス不能におちいった。

 たとえば,普段仕事で利用している電話回線に,ひっきりなしに悪戯電話がかかってくる状況を想像して頂きたい。取引先からの電話を受けようにも,イタズラ電話によって重要な電話はすべて遮断されてしまえば,仕事上,損害を被ることになるだろう。

 インターネット上でも同じような行為をおこなったらどうだろうか。これが前述したDoS攻撃と呼ばれるもので,標的するサイトに対し「負荷をかける」,「ダウン」させるなど,さまざまな種類の攻撃を行う。米Yahooなどに行われたDDoS攻撃とは,複数のコンピュータから一斉に標的のサイトを攻撃するものだ。つまり,悪戯電話が個人ではなく複数から一斉にかかってくる状況と考えるとわかりやすいだろう。このような攻撃が行われると,標的となったサイトに対し,一般ユーザは正常なアクセスが行えなくなり,結果としてそのサイトは莫大な被害を受けることとなるわけだ。

 数年前に流行ったDoS攻撃に,「WinNuke」,「Ping Of Death」というものがあった。これらは相手のマシンをダウンさせる攻撃で,ターゲットのIPアドレスさえあえば,ボタンひとつで誰でも攻撃することができたため,当時はこれらの攻撃を楽しんでるクラッカーがいたる所にいた。掲示板,チャットなど,ターゲットのグローバルIPアドレスさえ手に入れば,あとは気に入らない相手に向けてぶっ放す…といってもボタンを1つクリックするだけのことだが。

 現在ではDDoS攻撃といった驚異的な攻撃方法が登場してしまったが,あくまでも破壊行為であることに変わりはない。では代表的なDoS攻撃をいくつか紹介しよう。

代表的なDoS攻撃

●Smurf攻撃

 ネットワーク管理コマンドに「Ping」というものがある。これは目的のコンピュータが,TCP/IPのネットワークに接続されているかを確認する際に使用されるコマンドだ。調べたい相手に対し「ICMP Echo Request」というパケットを送り,それを受け取った相手は「ICMP Echo Relay」パケットで返事をする。Windowsであれば,MS-DOSプロンプトかコマンドプロンプトで,「ping <IPアドレス>」と入力すればよい(写真1)。

画面
写真1■調べたいIPアドレスを入力すれば実行できる

 1台のコンピュータに対しPingを実行すれば,その相手からのみ返答を受け取ることになるが,これが複数であれば,そのすべてから返答を受け取ることになる。

 Smurf攻撃は,送信元を偽造したICMP Echo Requestパケットを利用し,ICMP Echo Relayパケットを大量にターゲットに送り付ける攻撃だ(図1)。たとえば,ネットワークに与えられているアドレスが「192.168.1.0〜192.168.1.255」の範囲だとすると,「192.168.1.255」というIPアドレスに対し送信を行えば「192.168.1.1」や「192.168.1.5」など,そのネットワークに所属するホストすべてと通信を行うことができる。このアドレスは「ブロードキャストアドレス」と呼ばれ,ネットワーク上のすべてのコンピュータを表している。つまり,Pingコマンドをブロードキャストアドレスへ向けて実行すれば,そのネットワークに接続されているすべてのコンピュータからの返答を受けることになる。

 クラッカーはICMP Echo Requestパケットの送信元のIPアドレスを偽造し,応答パケットをターゲットのサイトのアドレスとするわけだ。ICMP Echo Requestを,あるサイトのブロードキャストアドレスに大量に送りつければ,それに対する応答は増幅された莫大な量のICMP Echo Relayパケットとなって,ターゲットのサイトを攻撃する。もちろん被害者はICMP Echo Requestを送られたサイト,そしてICMP Echo Relayパケットを受け取るサイトの2つになる。

図1■Smurf攻撃の概念図
図
クラッカーはICMP Echo Requestパケットの送信元のIPアドレスを偽造し,応答パケットをターゲットのサイトのアドレスとする。ICMP Echo Requestを,あるサイトのブロードキャストアドレスに大量に送りつければ,それに対する応答は増幅された莫大な量のICMP Echo Relayパケットとなって,ターゲットのサイトを攻撃する

 Smurfへの対策として考えられるのは,ブロードキャストアドレスに向けて送信されたICMP Echo Requestパケットをフィルタリングすることだ。これで自らが攻撃者(つまりICMP Echo Relayを送信してしまうサイト)になることは免れることができる。しかし,ICMP Echo Relayパケットを受ける側での対策を立てることは難しい。

●SYN FLOOD攻撃

 SYN FLOODはTCPサービスに対し,接続要求(SYNパケット)を大量に送りつけ,そのサービスの処理能力を消費させる攻撃だ(図2)。

 TCPはコネクション型のプロトコルであり,コネクションを確立するのに3ウェイハンドシェイク(3Way Handshake)というものが用いられる。サーバ側はListen(待ち受け状態)にあり,そこにクライアントは利用したいサービスのポートへSYNパケットを送信する。サーバ側はそれを受けACKパケットを送信,それと同時にSYNパケットも送信する。クライアントはそれを受けACKパケットを送信してコネクションが確立される。

 SYN FLOODはターゲットに対し大量のSYNパケットを高速に送信し,サーバ側を待ち受け状態に陥れる。その間,サーバ側は送られてきたSYNパケットに対してSYN/ACKパケットを返し,ACKパケットを待ち受けるが,送信されたSYNパケットはアドレスが偽造されたパケットであり,サーバ側がSYN/ACKパケットを返す宛先は架空のアドレスとなる。

 つまりいくら待ってもACKパケットは返ってこないわけだ(SYN_RCVDで止まってしまう)。その間システムはACKパケットを待ち受けるために,バッファメモリ上にその情報を確保する。そのためメモリを消費し,正常なアクセスを受けられなくなったり,システムクラッシュやサービスのダウンなど,さまざまな症状が現れる。

図2■SYN FLOOD攻撃の概念図
図
SYN FLOODはターゲットに対し大量のSYNパケットを高速に送信し,サーバ側を待ち受け状態に陥れる

 なお,今回紹介したSmurfやSYN FLOOD以外にも,Fraggle,Land,などさまざまなDoSアタックがある。こうした攻撃に対処するためには,OSにパッチを当てることや,最新版のOSを利用することが大切だ。またDoS攻撃に対応しているブロードバンドルータや,ソフトウェアファイヤーウォールを導入するのもよいだろう。

DDoS(Distributed Denial Of Service:分散型サービス拒否攻撃)とは

 DDoS攻撃は分散型の攻撃方法が取られるため,DoS攻撃の中では最も強力なものとなる。これは,複数台のコンピュータから,ターゲットとなるサイトに一斉に攻撃をしかけることで,正常なアクセスを妨害するものだ(図3)。

 たとえば,何百〜何千といった数の電話機から同時刻に同じ番号に電話をかけられたらどうなるだろうか?回線はパンクし,その間にかかってきた重要な電話は受けることができなくなるだろう。チケット予約やサポートセンターの回線など,よくある話である。

 DDoS攻撃を行うのにあたり,クラッカーはまず,インターネット上のいくつかの(脆弱な)コンピュータに侵入する。そして「マスター」(攻撃管理用ツール:ハンドラ)を埋め込む。マスター(ハンドラ)は「スレーブ」となるコンピュータ(エージェント)のクラッキングを行い,DDoS攻撃のためのトロイの木馬を埋め込んでいく。

 目的の数の攻撃用コンピュータが用意できたら,あとはクラッカーがマスター(ハンドラ)に攻撃命令を行うだけで,DDoS攻撃が開始される。スレーブとなるコンピュータはゾンビとも呼ばれ,リモート操作やタイマーなどでDDoS攻撃を実行するための歩兵となるわけだ。実際のDDoS攻撃は,これらゾンビが埋め込まれた複数のコンピュータから行われるため,それを行ったクラッカーを特定することは難しい。

図3■DDoS攻撃の概念図
図
まずクラッカーは,インターネット上の脆弱なコンピュータに侵入し,マスターを埋め込む。マスターはスレーブとなるコンピュータのクラッキングを行い,DDoS攻撃のためのトロイの木馬を埋め込んでいく。目的の数の攻撃用コンピュータが用意できたら,あとはクラッカーがマスターに攻撃命令を行うだけでDDoS攻撃が開始される

 攻撃内容は,前述したSYN FLOODやSmurfのほか,さまざまなものが用いられる。トロイの木馬をインターネット上のコンピュータへ大量に埋め込んでしまえば,あとは攻撃したいサイトを選択し,歩兵コンピュータたちへ攻撃命令を下すだけでよいからだ。攻撃を受けたサイトは,ネットワークの帯域を不必要に取られ,過負荷がかかり正常なアクセスを受けることが困難になる。

 DDoS攻撃を行うためのツールは「Trin00」,「TFN」,「TFN2K」,「stacheldraht」などがあるが,これらもいままで紹介してきたツール同様インターネットから簡単に手に入れることができてしまう。また,本文で何度か触れた一連のウェブサイト攻撃に使用された「TFN」(Tribe Flood Network)の作者であるMixerのインタビュー記事がZDNetに掲載されているので,興味があれば読んでみて頂きたい。

 DDoS攻撃を回避する有効な手段はいまのところないが,すでにいろいろなツールが開発されている。しかし,現実的に個人でできる対処方法は,アンチウイルスソフトなどのツールで,自分のマシンにトロイの木馬が潜んでいないかチェックをし,DDoS攻撃のエージェント(歩兵)にならないようにすることだろう。

■関連リンク
ZombieZapper:攻撃してきたスレーブ(エージェント)のアドレスにマスター(ハンドラ)を装い,攻撃停止命令を行うツール。また,すでにアタックツール(マスター・スレーブ)が埋め込まれている場合は,それを除去せずその機能を停止させる。再度攻撃命令があれば,攻撃元の追跡が可能になる。Trinoo, TFN, Stacheldraht.に対応している
分散型サービス拒否攻撃用プログラム発見ツール(トレンドマイクロ):Redhat Linux,SuSE,SPARC/Solaris用