1.6 IP Spoofing

IP Spoofingとは、IPアドレス偽装攻撃とも呼ばれ、基本的な手法の一つです。
これは、自IPアドレスを相手のIPアドレスに偽装し攻撃を仕掛けたり、 Firewallを突破するという方法です。
単独で利用する場合、相手のホストがIPアドレスで接続先を制限している場合や、 相手のホストに侵入したとき、logなどに自IPアドレスが残されると困る場合などに使用されました。
この手法が考え出されたときには、このような使用がなされていましたが、 現在ではDoS攻撃に使用するなど、 他の攻撃手法の中で応用されています。

IP Spoofingの一例

IP Spoofingの一例

IP Spoofingは、信頼と認証の関係において隙を突くものです。
ホストやネットワーク同士を接続するにあたり、相手が信頼できる場合は認証を緩め、 信頼できない場合は認証を高めるということが基本となります。

1.6.1 どのようにして偽装するのか

それでは、実際にIP Spoofingがどのようにして行われるのか、 その原理を説明します。

(1) rコマンドの危険性

一般に、UNIX等で実装されているr系コマンドと呼ばれるrsh,rlogin,rcpといったコマンドは危険であり、 これらが使用するポートは塞ぐという方法が推奨されています。

r系コマンドが危険であるという理由は、相手のIPアドレスで信頼できると判断してしまう点にあります。前述の、「相手が信頼できる場合は認証を緩める」という部分に該当するのです。

r系コマンドでは、/etc/hosts.equivや.rhostsが信頼しえるホストかどうかの判断に使用されます。これらのファイルに記述されたホストは信頼できるホストであると判断し、 以降の認証が行われません。
たとえば、/etc/hosts.equivに以下のようなデータが書かれていた場合を想定します。

host1.sample.com
host2.sample.com
host3.sample.com yamada

この例では、host1とhost2の全ユーザ、host3のユーザであるyamadaさんに関しては、 r系コマンドにおいてパスワードの認証は行われません。
ここで、IP SpoofingはIPアドレスを偽るものであるということを思い出してください。IPアドレスを偽るということはホスト名を偽ることに繋がります。許可されていないホストであっても、IPアドレスを偽ることによってhost1やhost2に簡単に入れてしまうのです。もちろんhost3においてもyamadaさんのユーザ名を使用している限りパスワードの認証も無く自由に入れるのです。

このように、IP Spoofingはr系コマンドに対しては重大な問題を引き起こすことになります。

(2)IP Spoofingの原理

では、実際にどのように偽装するのでしょうか。
まず、攻撃側はr系コマンドを使用する場合、 信頼されているホストを知る必要があります。r系コマンドを使用せず、他のホストになりすまし、 そこからの攻撃に見せかける場合はそのIPアドレスを知るだけで済みます。

ここで使用するホストは3つあります。

1つはIP Spoofingを使用して侵入しようとするホスト。

もう一つはIP Spoofingによって騙され侵入を許してしまう対象となるホスト。

そして、偽装に使用される(騙されるIPアドレスを実際に所有する)ホストの3つです。

攻撃側は、まず攻撃する対象となるホストに対してダミーの接続を行います。 これによって初期シーケンス番号を対象となるホストが返すため、攻撃側は初期シーケンス番号を知ることができます。

次に、偽装に使用されるホストが稼動しているかを調べます。ただし、必ずしも攻撃側からは確認できるとは限りません。もし稼動していた場合、これを止める必要があります。 なぜなら、攻撃する側が偽装しようとしているIPアドレスの本物のパケットが実際に流れると攻撃は成立しません。

IP Spoofing の原理

IP Spoofing の原理

攻撃側は、たとえばDoS攻撃等で偽装に使用されるホストを停止させることがあります。偽装に使用するホストが停止すると、 そのホストのIPアドレスを偽装して静かに攻撃を行うことができるのです。

ここから実際に侵入し、攻撃を始める手順になるのです。シーケンス番号を取得しているので、あとはIPアドレスを偽装するだけです。IPアドレスを偽装し新たに対象となるホストに対してコネクションを張ります。

しかし、このパケットに対する応答は攻撃側には届きません。なぜなら、対象となるホストのIPアドレスが設定され、シーケンス番号も正しく設定されているからです。よって、応答のパケットは偽装に使用されたホストの方に行きます。

応答のパケットが届かなくとも、攻撃側は次に送信すべきパケットは判っています。これで偽装が完了しました。対象となるホストに侵入し、攻撃側のホストに対して信頼するよう設定する等を行い、実際の攻撃を始めるわけです。
しかも、これらの操作は、対象となるホストのログには、偽装に使用されたホストが行った操作のように記録されているのです。

ログは全て正しい情報を記録しているとは限りません。パケットの情報を正しくロギングしていることには間違いありませんが、そのパケットが偽装されているかもしれないのです。

(3) シーケンス番号

ここで使った「シーケンス番号」とは何でしょうか。

これは、TCP/IPのパケットに一連の番号を割り振り、パケットの順序などを識別するために使用されます。パケットを受け取ったホストでは、エラーチェックを行い、正しく受け取った場合は送信元に対してどのシーケンス番号を受け取ったかの応答を行います。

応答を行う際、シーケンス番号に1を加えた値を設定し確認応答番号として送信元に返します。もし、IP Spoofingを行おうとするならば、いくつかの作業を伴うことになります。

まず、ソースアドレスと呼ばれる送信元のIPアドレスを偽装する作業です。そして、シーケンス番号を間違いなく設定する作業が発生します。ソースアドレスを書き換え偽装することは、そう難しいことではありません。問題はシーケンス番号を設定することにあります。IP Spoofingが発見された当時、 OSによってグローバルシーケンス番号と呼ばれるものを使用するものもありました。 これは、一秒間に128増加し、接続ごとに64増加していました。そして、新たに接続が行われるときは、 このシーケンス番号でポート確立を行っていたのです。

もし、シーケンス番号の推測に成功すれば、セッションを確立することができます。そして、攻撃する側のホストが信頼されることとなり、認証が緩くなるのです。この後に行うことは、たとえばhosts.equivや.rhostsを書き換えて次回の攻撃の準備を行うのです。

なお、シーケンス番号を使用する方法は、現在では古典的な方法であり、容易には行えません。原理の一つとして考えてください。

1.6.2 類似の手法

IP Spoofingのように発信元を偽装する手法はいくつかあります。
主なものを以下に示します。

Mail Spoofingは基本的な手法であり、悪意を持った場合だけでなく、 通常の運用でも使用されます。
たとえば、組織の窓口にあたるメールアドレスに問い合わせのメールが着た場合、 返信を行う人のメールアドレスで返信を行うのではなく、 たとえばsupport@ipa-sec.comといったメールアドレスで返信するものです。

これを悪意で行った場合、From:フィールドやEnvelopを攻撃対象のメールアドレスを設定し送信するということになります。この場合、メールの本文はメールアドレス本人の名誉を傷つけることや虚偽の情報を記述し多くの人に対して送信します。これがMail Spoofingです。


前へ ホームへ 次へ


    © 2002 Information-technology Promotion Agency, Japan. All rights reserved.