IP spoofingを詳しく、分かりやすくまとめる

SECURITY

IP spoofingとは何か?

IPアドレスの送信元を偽装する不正アクセスの手法で、主にDoS攻撃の際の発信元偽装に使用されます。

hping2などのツールで簡単にできるらしい(絶対に悪用しないで下さいね)。また、有名なポートスキャンツールであるnmapにもIPアドレス偽装の機能がある。

何が問題か

spoofの意味は「だます」・「からかう」。ただ、spoofing自体は正当な用途でも用いられるもので、例えば、送信元メールアドレスをno-reply@… にする時が身近な例。

問題になるのは、IPアドレスによるアクセス制御を突破できてしまうという、不正アクセスが可能となること。通常、外部から内部ネットワークへのアクセス制御はファイアウォールなどでIPアドレス単位(とポート番号)で行います。が、これを無力化できます。
※但し、送信元が偽装されているため宛先からの応答は返ってきません。

現在は主にDoS攻撃の際の発信元偽装として用いられるようです。大量アクセスをIPアドレス単位でブロックしたとしても、送信元IPアドレスを変えられてしまうのでブロックができなくなる。

さらに、送信元IPアドレスを攻撃対象となるサーバーのIPアドレスとし、他の多数のサーバーに送り付けることで、攻撃対象のサーバーに大量のデータを受信させパンクさせるという攻撃も存在します(DDoS攻撃: 分散型サービス妨害攻撃)。

IP spoofingを用いて攻撃されると、アクセスログにも偽装された送信元IPアドレスが記録されるため、実際の発信元の特定が困難になる。

補足:
現在では困難ですが、昔は、IPアドレスでアクセス制限を行うサービス(rloginとrsh)に対する不正アクセスが可能だったようです。上位プロトコルであるTCPのシーケンス番号の予測が比較的容易であるために可能で、現在は対策としてRFC1948で勧告されている実装が普及し、シーケンス番号の予測は困難であるため、このような攻撃はあまりない。
※これに関してはケビン・ミトニックの下村努に対するクラッキングが有名な事件らしい(1994年)

原理

TCP/IPプロトコルでは送信データはインターネット層(OSI基本参照モデルではネットワーク層)でパケット(packet)単位に分割され、個々のパケットのヘッダ部に送信先IPアドレスが記載されます。ルータやサーバなどのホストはこの送信先IPアドレスで送信先を判断する。送信元IPアドレスはパケットの返信先として用いる。

偽装は容易で、このパケットの送信元IPアドレスを書き換えることで行います。

パケット構造を図で示すと、以下の通り。

https://tools.ietf.org/html/rfc791

赤字で示した箇所(Source Address)が送信元IPアドレスの部分。
その次に来るのが宛先IPアドレス(Destination Address)。

送信元アドレスが攻撃者以外のIPアドレスになるため、偽装をした場合、当然、攻撃者へは応答は到着しない。

対処法

DoS攻撃での送信元詐称に対しては、対策が困難。
ただ、DoS攻撃ではIPSやIDSが有効な対策となり得ます。

内部ネットワークへの不正アクセスを試みるIP spoofingの場合、パケットフィルタリングが有効。外部から来たパケットで送信元アドレスが内部ネットワークのアドレスになっているものがもしあれば詐称の可能性が高く、IP spoofingが疑われるので、破棄する。

同様に、外部ネットワーク宛のパケットの送信元IPアドレスが内部ネットワークのものではない阿合、上の場合と同様、IPアドレスを偽造している可能性が高く、破棄する方法も有効。

参考サイト