秒速でパケットは盗聴できる
以下の2つの手順で同一LAN内にある誰かのPCがどこと何を通信しているか(たとえばサイトURLとか)を知ることができます。丸見えになります。
- ARPスプーフィングする
- 自分のPCが通信するパケットを見る
どっちもメチャメチャ簡単なので秒速でできます。今どきポチポチクリックしていればできてしまいます。つまり小学生でも盗聴ができてしまうのです。ノートPCでもスマホでもタブレットでも盗聴されちゃいます。
ARPスプーフィングする
早速やっていきましょう。ためにならない解説は飛ばしてやり方を見てください。
ARPスプーフィングについて
しょぼい解説です。要らない方は飛ばしてやり方を見てください。
普段の通信
ターゲットを「弟」としましょう。弟はいつもこんな感じでニコニコ動画とかLOLとかやってるとします。灰色の矢印はパケットです。
なのでゲートウェイと「弟」の間に「俺」が割り込んじゃえばパケットを幾らでも見ることができます。パケットを「中継」するんですね。
ARPについて
ARPはMACアドレスとIPアドレスの対応表です。MACアドレスはそれぞれの機器に固有についている恒久的な名前です。
IPアドレスは基本的にしょっちゅう変わりますが、MACアドレスはハードウェアの製造時に名付けられ、変わることがありません(大抵)。それぞれのPCはARPを持っており、それを使ってIPアドレスからMACアドレスを探して通信します。
試しにコマンドプロンプト開いて「arp -a」と打ってみましょう。
ARPスプーフィングについて
ARPスプーフィング(ARP spoofing, ARP poisoning)はターゲット(今回は「弟のPC」)のARPを不正なものにすることです。
いつもは「弟のPC」の「ゲートウェイ」のIPに指定されたMACアドレスは当然「ゲートウェイ」のMACアドレスです。
しかしそれを「俺のPC」に差し替えることで「弟のPC」は「俺のPC」を「ゲートウェイ」だと思ってしまいます。
つまり本来「ゲートウェイ」に流れていくべきパケットが「俺のPC」に流れてくるようになるのです。
ARPスプーフィングのやり方
nighthawkをダウンロードしましょう。鷹です。
zipを解凍したらすぐ使えます。起動しましょう。
まず自分のPCが通信に使っているインターフェイスを選択し、Enable advanced modeをクリックしましょう。
次にScan networkで、LAN内につながっている機器を調べましょう。
少し経つとでてきました。
ゲートウェイの選択とターゲットの選択をしましょう。上の欄がターゲットを選択する場所で、下の欄がゲートウェイを選択する場所です。クリックして以下のような感じにしましょう。
さあ横にある「Start ARP spoofing」を押しましょう。
以下のようになったらspoofingなうってことです。
nighthawkは勝手にパケットの転送もやってくれます。これでとりあえず以下の図の状態になりました。
ARPスプーフィング完了!
「俺のPC」が通信するパケットを見る
あとはパケットを見るだけです。
今回はパケットを見るツールとしてWiresharkを使います。ド定番です。
Wiresharkをダウンロードして、インストールしましょう。
インストールしたら起動しましょう。
起動時の画面はこんな感じなので、通信に使っているインターフェイスを選択してStartをクリックしましょう。
すると「俺のPC」を流れるパケットが大量に出てきます。盗聴なうです。ありがとうございました。
以下は例として、表示するパケットを弟が送信したものだけに絞って見る方法です。Wiresharkの使い方はググればいくらでもできるので、好きなようにフィルタリングしましょう。
先ほどのように何も設定せずにスタートすると、人によってはパケットがありすぎてWiresharkがフリーズしてしまうかもしれません。もしそうなればタスクマネージャからプロセスを強制終了しましょう。
このままだと大量にパケットをキャプチャしてしまうので、フィルタリングしてキャプチャする量を減らしましょう。
Startを押す前にCapture Optionsを起動します。
フィルタを掛けましょう。Capture Filter: のところに「tcp port http && ip src host 192.168.0.5」と記入しました。「tcp port http」はポート80(80とか。httpに使うポート番号)を流れるパケットにしぼり、「ip src host 192.168.0.5」はiPhone(192.168.0.5)から送られたパケットに絞ることを意味します。
これでキャプチャするパケットの量を減らすことができました。Startをクリックしてキャプチャリングを始めましょう。
パケット表示時画面です。さっきはキャプチャするときに使うフィルタを設定しましたが、ここではキャプチャしたパケットを表示するときに使うフィルタを設定することができます。下ではhttp.requestとしています。
最後にURIを表示するヒントです。ProtocolがHTTPのパケットをクリックし、2番めの欄のHypertext Transfer Protocolを開、GETを開き、Full request URI....の上で右クリックしてAdd columnをクリックしましょう。
パケット一覧の情報にFull request URIというものが追加されたと思います。
おわりに
シンプルさを追求して書いてきましたが、このように簡単にパケットが盗聴できてしまいます。そのことを知っているのと知らないのとでは大きく違うと思います。
通常ARPは動的に書き換えられているので静的にエントリーを設定するなどして適切な対策を取りましょう。盗聴ダメ絶対。