ARP Spoofing

同一セグメント内のLANにおいて、パケットを盗聴するには、いくつかの方法がある*1

例えばリピーターハブは、受け取ったパケットを全ポートに送信するため、そのような環境では簡単に盗聴が可能である。通常は、自分宛てでないパケットはNICが破棄する仕組みであるが、プロミスキャスモードを使用することによって、自分宛てでないパケットを取り込むことができる。

下の図でいえば、Eveは、Aliceから送信されたBob宛てのパケットを、Etherealなどのツールで簡単に覗き見ることができる*2

f:id:GOLEM-XIV:20080127130201p:image

しかしながら、スイッチングハブを使用している環境では、簡単には盗聴できない。なぜならば、スイッチングハブは、各ポートに接続しているマシンのMACアドレスを管理しているからだ。つまり、パケットは、その宛先MACアドレスに対応するポートにのみ、送信されることとなる(下図)。Eveへはパケット自体が届かないため、盗聴はできない。

f:id:GOLEM-XIV:20080127130227p:image

このような、スイッチングハブを使用している環境で、パケットを盗聴する方法の1つがARP Spoofingだ。実は、各マシンは、IPアドレスとMACアドレスを対にしたARPテーブルというものを保持している。このテーブルを使用して、IPアドレスからMACアドレスを解決している。ARP Spoofingとは、盗聴したいマシンのARPテーブルを書き換えることによって、パケットの宛先を変えてしまう方法である。

例えば、AliceからBobへのパケットを盗聴したい場合、まず「192.168.0.2のMACアドレスは、CC:CCですよ」という(偽の)ARPパケットを送信する。すると、Aliceのマシンはこのパケットを受け取り、192.168.0.2に対するMACアドレスをCC:CCに書き換える。結果として、AliceからBobへのパケットは、Eveに送信されることとなる(下図)。

もちろん、このままだとBobへパケットが届かないので、不具合がおきてしまうだろう。そこで、盗聴したらそのパケットをBobへ転送してやる。また、同様にして、BobからAliceへのパケットを盗聴&転送してやることにより、Alice-Bob間のパケットを完全に盗聴することができる。

f:id:GOLEM-XIV:20080127125024p:image

また、Alice-Bob間のパケットが必ずEveを通過するので、盗聴だけでなく、パケットを書き換えることも可能である。これが、Man in the Middle Attackと呼ばれるものだ。

このMan in the Middle Attackを使用することによって、実に様々なことができる。例えば、社内やプロジェクト内のLANでよく使用されている、某有名メッセンジャーソフトの内容を盗聴することもできる。

このソフトは、通常、メッセージが暗号化されているため、ARP Spoofingを使用しただけでは盗聴できない。しかしながら、とある工夫をすることによって、盗聴することが可能になる。機会があれば、その概要を書いてみようと思う。

*1:実際に会社等の環境で、本記の行為を行うことは推奨しません。本記も、自宅の環境でテストした結果です。実際に何らかの法律に違反するのかどうかは不明ですが、このような行為を行った結果、解雇される危険性は当然あり得ます。(興味があったのでWebで調べたところ、LAN内であれば、盗聴行為自体は違法とはいえないように読めたのですが… どなたか詳しい方いらっしゃいましたら教えてください。)

*2:MACアドレスは省略して表記

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です