euniclus先日のARPポイズニングの記事を書きました。ARPポイズニング(ARPスプーフィング)を検証する対象にARPパケットを送りARPテーブルを書き換えるというものでした。今回はひと手間加えてマシンとマシンの間に入り通信を傍受してみたいと思います。今回は通信を覗き見るだけですが、これを少し発展させると中間者攻撃などの攻撃が実現できます。ARPスプーフィングでネットワークを掌握できるということです。最後に実装の前に先日のARPポイズニングで対象マシンのARPテーブルを更新することにより通信先を制御することができました。書き換えるだけだと、対象マシンの通信を遮断するという効果しか得られません。ここで対象マシンの通信を監視したい場合、対象マシンの通信相手のARPテーブルも更新する必要があります。ルーターのARPテーブルを書き換えることができれば、マシンの外部との通信を監視することができます。無線ネットワークだとプロミスキャスモードにしてもデータリンクにパケットが流れてきませんよね。(有線のリピータハブとかだったら流れてくるようですが。)物理層ではじかれたりしてるんですかね。そこでARPポイズニングを使いルーティングを制御すればパケットの監視ができると思いました。今回ARPテーブルを更新する対象はネットワーク内のマシン一台(マシンA)とルーターです。マシンAのARPテーブルにある、ルーターのIPアドレスに紐づくMACアドレスを中間者(自分)のものに書き換えるルーターのARPテーブルにある、マシンAのIPアドレスに紐づくMACアドレスを中間者(自分)のものに書き換える二つのマシンが送信したパケットの宛先アドレスと送信元アドレスを書き換え通信を維持させる1と2に関しては前回作成したプログラムを使えばすぐいけます。前回のプログラムは一プロセスにつき一つのマシンに対してしか更新をかけることができない作りになってました。ターミナルを2つ開いてそれぞれアドレスを指定して実行する必要があります。3に関してもそんなに難しいことではございません。1と2を実行した後、通信を待ち受けてパケットを受信したら宛先MACアドレスと送信元MACアドレスを書き換え、また送信するだけです。今回もプログラムを作成していきます。賢いやり方があるかと思いますが、とりあえずこんな感じです。{対象マシン2のMACアドレス}最後にこれでパケットの監視ができるようになりました。外部との通信といってもほとんどwebだと思います。現在ほとんどの通信はsslによって保護されており監視できても何をやり取りしているかはわかりません。この記事を書いてみて、いつかrsaの中間者攻撃などやってみたいなと思いました。