ネットワークセキュリティ入門

攻撃方法から学ぶ、自己防衛の方針

last update 2000/9/3

簡易的な攻撃方法の分類

DoS(サービス不能攻撃)

 今までの章で解説した攻撃内容は、どちらかと言えば攻撃成功後、コンピュータを無断で使ったり、新たな攻撃のためのHQに利用したり、データを改竄、入手、消去するなどと言った、攻撃後の利用が主目的と言える。ここで紹介するのはこれとは異なり、攻撃対象を利用できなくする攻撃である。

 この攻撃をサービス不能攻撃(Denial of Servise attack)、略してDoS攻撃という。つまり、何らかの方法を使って、そのコンピュータが利用不能になることで攻撃が成立する。また、先にも述べたが、信頼されたコンピュータになりすますために、信頼されたコンピュータが作動しない状況に追い込む必要がある場合にも利用される攻撃である。

 この攻撃は、プログラムミスや、システムの諸条件を悪用するものである。まず、具体例を見ていきたい。

 最も有名なDoS攻撃は、あの世界最大のポータルサイト,www.yahoo.comを停止に追い込んだものだろう。厳密に言えば、これはDoS攻撃ではなく、DDoS攻撃と呼ばれている。しかし、DoS攻撃の性質を見るのには格好の例である。

 これは、以下の順序によって行われた、とされている。

 まず、できる限り多くのコンピュータに侵入し、あるプログラムを仕掛けておく。このプログラムは、攻撃者から命令を受けると、攻撃対象のコンピュータに大量の接続要求を出す、と言う機能を持つ。そして、準備が整ったところで、仕掛けたコンピュータに命令を送る。そうするとそれらが一斉に標的コンピュータに通信をし始める。当然通信量には限りがあるので標的は耐えられなくなる、と言うわけだ。大量にしかけるのでDDoS、分散型DoSという名前が付いている。

 また、コンピュータ1対1の通信においてもDoS攻撃は成立する。一番メジャーなものとしてSYNフラッド攻撃を紹介しよう。

 この攻撃は、TCPの3way-handshakeの仕組みを悪用することによって成立する。先にも述べたとおり、TCPの通信ではSYN、ACK/SYN、ACKの3種類のパケットを交換することで始まる。まず、攻撃者が対象コンピュータにSYNパケットを送信する。この時、攻撃者はIPアドレスを存在しないものに詐称している。対象コンピュータはSYN/ACKパケットを送信し、ACKパケットが帰ってくるのを待つ。

 ここで、IPアドレスが間違っている、と言う事が重要である。つまり、せっかく送ったACK/SYNパケットはどこにも届かないのである。そして、対象コンピュータは一定期間の間、ACKパケットがいつ届いても通信を開始できるように通信路を確保している。そして通信路は(OSにもよって量は異なるものの)有限である。

 さて、攻撃者はSYNパケットを1つ送るだけでは攻撃にならない。有限の通信路をすべて埋めてしまうだけのSYNパケットを送り続けるのである。そうなると、対象コンピュータは他のコンピュータと通信することができなくなる。つまり、役に立たないものとなってしまうのだ。これがSYNフラッド(溢れ)攻撃である。

 しかも、多くの場合、SYNパケットをひたすら送る必要すらないのだ。つまり、攻撃側は細い回線でもよい、と言うことになる。

 さて、これらの攻撃は、「根本的な解決策が難しい」と言う点で非常に厄介である。つまり、SYNフラッド攻撃を根本的に解決するためには通信路が無限個(もしくはそれに近い量)確保されていればよい。が、通信路1本につき、いくばくかのメモリーを消費するので、無限に確保することはできない。仮に確保したとしても、これらを処理するためにコンピュータのCPUはフル駆動しなければならないだろう。

 さらにファイアウォールで止めたくても、どのパケットが攻撃用で、どれが正常な通信要求か、調べる術がない。すべて止めてしまえば、何のためにネットワークに繋いでいるかわからなくなる。

 DoS攻撃の多くは「正常パケットか攻撃パケットか」判断しにくい、と言う点において非常に防御が難しいのだ。ただし、多くのOSがDoS攻撃に対して耐性を持つよう、様々な改良が施されている。つまり、ここでもバージョンアップは重要な防御方法、と言うことが言えるのだ。

 また、これ以外のDoS攻撃として、プログラムミスや設定ミスによって生じてしまうタイプのものがある。例えばDNS-DoS攻撃などがその例だろう。

 DNSとはコンピュータ名(例:www.hugahoge.com)をIPアドレス(例:123.101.111.10)に変換する機能である。この仕組みの一部に、DNSの再帰という仕様があるが、この仕様が有効となっている場合には、DNSサーバが偽情報をキャッシュ(仮に記憶しておくこと)してしまうのだ。

 例えば、攻撃者がwww.hugahoge.comというコンピュータを、存在しないアドレス(例:0.0.0.10)に割り当てた情報をキャッシュするように仕向ける。そうすると、ユーザがwww.hugahoge.comにアクセスしようとしたとき、DNSサーバは先のIPアドレス、0.0.0.10を出力し、ユーザ(のコンピュータ)は0.0.0.10にアクセス要求を出すことになる。が、そのようなコンピュータは存在しないため、応答はない。つまり、ユーザはwww.hugahoge.comに繋ぐことができないのだ。

 この結果、www.hugahoge.comは事実上、ネットワークが繋がっていない状態となってしまい、DoS攻撃が成立するのだ。

 こちらについても、DNSサーバプログラムのバージョンアップが対策となる。

 
前に戻る目次に戻る次に進む