2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

SwitchingHubの特性を利用して盗聴する!

2005年4月、個人情報保護法施行。
これを機に、個人及び企業の顧客情報及び個人情報の扱いが重要視されたことは俺がここで言うまでもない。顧客情報を扱う企業は、その管理体制の強化とその顧客本人の顧客情報の開示要求があった場合は開示の義務もある。さらには、個人情報の第三者間の受け渡し及び売買の禁止等も義務付けられているようだ。
こうなってくると、その個人の情報をゲットするにはいよいよ「盗む!」しか方法が無くなってくる。
話は少し変わるが、最近の犯罪でATM強盗を見ると大胆にもATMごと盗んでいく(;-_-;)。この犯罪を考えると、機密情報を盗むのは手っ取り早いのは会社のPCごと、はたまたサーバごと盗むのが一番手っ取り早い(笑)。既に、PCごと盗まれている企業は多いのではないだろうか?
その犯罪が外国人が多いとしたら、単に日本人は馬鹿なので馬鹿にされてるのである。最近個人的に思うのだが、「IT惚け」と言う言葉が現在の日本人にはふさわしい。何も考えずに、人が使ってる情報機器、情報端末を猿のように真似して使ってるだけである。
現代の若者ではない、現代の年寄りが中高年爺婆&俺たちが一番IT惚けなのである。むしろ若者は考えていると思う。おっと、個人的な主観が入った話になってしまった(笑)。話を元に戻す。


1.ネットワークで言う「盗聴」という行為

「ネットワークに流れるデータを盗聴する」という行為がある。盗聴と言っても当たり前の話だが音声信号ではない、データ信号を解読することである。ネットワーク上に流れるデータは、ご存じのように「パケット」と言う小包で行き来してる。そのパケットのヘッダー部さえ解れば解読は可能である。当然中の内容は「0」と「1」のオンパレードであるがテキスト文字は一種の文字コードになっているので、コードから文字に変換できればそのデータが読みとれてさらに意味も解るわけである。そんじゃ、盗聴する方法としては、ネットワークモニター装置というものを使う、ケーブルとケーブルの間にセットしてシリアルでリアルタイムに情報をゲットする。ダンプ画面では2進データを一バイトづつ16進で表示するのでとても都合がよい。

さて、ある特定のユーザのPC(クライアント)とサーバ間のデータのやりとりを盗聴するには、側でネットワークモニターを見ながら盗聴する間抜けは居ないと思う(笑)。少なくても同じHubを使うセグメントエリア内にいるだろうが離れたところでさらに隠れて盗聴するに違いない。
盗聴目的のユーザPCがあるところには必ずHubやRouterとかネットワークカードと言ったネットワーク機器が介在してる。つまり、悪人としてはこういったネットワーク機器を利用しない手は無いのである。この中でもHubと言う機器が一番制御させるには都合がよい機器である。
ここでは、このHubについてのセキュリティを考えてみたい。


2.馬鹿Hub(リピータハブ)

馬鹿Hubとは、「電気的に言うと入ってきたシリアル信号をバッファリングして、その波形を整形して増幅させてその信号の差出人ポート以外全てのポートに送出する機能を持つ分岐装置である。」これは、あくまでも俺流の定義である。写真1は、アライドの12ポート馬鹿Hubである。秋葉原の ネットワークショップ で100円でジャンク購入したのだが、運悪く電源が入らなかったのでばらして改造していたところを激写した(笑)。
何故に馬鹿Hubと言うかというと入力信号をそのまま全てのポートに出力する相手を特定する機能が付いてないから、「馬鹿」と言うようである。
ここまで話すと、セキュリティ的に見るとデータを加工することもしてないし無分別に全ての相手へデータを流しているのでデータを盗み出すのは簡単であることは解ると思う。

写真1

3.SwitchingHub(スイッチングハブ)

スイッチングHubは、馬鹿Hubとはちと違う。「入ってきたシリアル信号をバッファリングして、宛先のMACアドレスを確認する。そして、そのMACアドレスがあるネットワーク機器が繋がっているポートへシリアル信号を転送する。スイッチングHubは、自分に繋がっているネットワーク機器のMACアドレスを予めarpというプロトコルを使った通信でゲットして自己にデータベースを作成してメモる。そのデータベースのMACアドレスを参照して必要な相手先のみと通信する。」
ここで、MACテーブルに目的のアドレスが無い場合はarp(MACアドレスを取得するための専用プロトコル)を使って全てのポートにMACアドレスを問いかける。それの返事でMACアドレスをテーブルに改めて追加する方法をとる。写真2は、プラネックスの20ポートのスイッチングHubである。
必要な相手のみと通信するため、セキュリティ的に考えると馬鹿Hubよりはセキュアーだと言うことが解る。

前後してしまったが、MACアドレスとは「ネットワーク機器全てにふられている固有の番号である。この番号は、基本的に同じ番号は存在しない。」という定義である。
世の中の人の中には、「TCP/IP通信はIPアドレスのみで通信している。」と思ってる人って多いのではないだろうか?こんな考えを持ってる人が居たら考えを改めて欲しい。TCP/IP通信のレイヤーの低いところ(データリンク層)にはMACアドレスという固有の番号が存在していて全てのネットワーク機器の番号が管理されてるのである。何故、IPアドレスがあるのにMACアドレスが必要なのかというと馬鹿HubとかにはIPアドレスがふれないのである。したがって、MACアドレスでデバイスを特定する考え方を設けた。

写真2

まあ写真2のように、PCI(プラネックス)は良く知られているネットワーク機器メーカだけど、下の写真3はHitachiCableとか言うHitachiの系列会社だろうけど、マイナーなメーカのHUB。これは、秋葉原の某ネットワークショップの入り口のキャビネに200円でほとんど捨ててあった状態の物をゲット(手提げ袋にも入れてもらえない売り物)。いわゆるジャンク扱いなので文句無しの品物だけど、幸い全ポート生きている、まさに完動品の10/100Auto切り替え式24ポートSwitchingHUBである。24ポートのSwitchingHUBが中古とはいえ200円で買えるのはやはり1000BASEが主流になったからだろうか。

写真3

4.Hubを利用した盗聴方法色々

スイッチングHubの通信なら、ある程度は安全だがデータを盗聴できる方法はある。
スイッチングHubの盗聴方法の多くは、MACアドレスを取得するための機能を逆利用した方法である。
次に多いのは、スイッチングHubのMACアドレステーブルをオーバーフローさせて盗聴する方法。物理的な方法では、スイッチングHubの間に馬鹿Hubを故意に挿入してバイパスさせてデータをゲットする方法などである。


5.Main in the Middle( MiM )

ターゲットユーザのセグメント内のスイッチングHubにPCを繋げてデータを盗聴する方法。
この方法を説明する前に、同じスイッチングHubに接続されたPCの通信手順を簡単に説明してみたい。ホスト1とサーバ1が通信すると仮定する。

1)ホスト1は自身が保持してるIPアドレスとMACアドレスの対応テーブルを確認。
2)サーバ1のエントリが有ったら、そのMACアドレス宛にパケットを送信する。
3)エントリが無ければ、arpで「サーバ1のIPアドレスに対するMACアドレスを教えてくれよ」パケットをブロードキャストする。
4)サーバ1からのMACアドレスの問い合わせの返事は一つの宛先に送るユニキャストする。
5)IPとMACアドレスを受け取ったホスト1は自分のarpテーブルにキャッシングする。
6)そして、サーバ1のMACアドレスへパケットを送信する。

さて、この手順からMiMで盗聴する方法を説明する。盗聴する悪いマシンをホスト2とする。
1)ホスト1は自身が保持してるIPアドレスとMACアドレスの対応テーブルを確認。
2)サーバ1のエントリーがないそのため、arpで「サーバ1のIPアドレスに対するMACアドレスを教えてくれよ」パケットをブロードキャストする。
3)ホスト2が矢継ぎ早に自身のMACアドレスを入れたパケットをユニキャストでホスト1へ返信する。
4)サーバ1が返事をホスト1へユニキャストで返信するが、時間差でホスト2の返信がホスト1に採用される。
5)したがって、ホスト1のarpキャッシュにはホスト2のMACアドレスが入る。
6)MACアドレスが解ったホスト1は、サーバ1へデータパケットを送るが実際はMACアドレスがホスト2でIPアドレスがサーバ1になっていると言う混乱する状態になっている。
7)これを受け取ったスイッチングHubは、当然MACアドレスのみを確認するのでホスト2へパケットを転送してしまう。
8)これを受け取ったホスト2の悪い奴はデータパケットを盗聴した後、何もなかったようにサーバ1へ転送する。
9)これを受け取ったサーバ1は、返信パケットをこのデータの差出人MACアドレスを確認してホスト2へ送信する。

このように、何食わぬ顔でホスト2はホスト1とサーバ1の間に割り込んで通信を傍受してリピータしてるのである。
つまり、ホスト1から見るとサーバ1との通信であり、サーバ1から見ればホスト1との通信だと思ってるのでホスト2の存在は完全に隠蔽されているのである。
ましてや、スイッチングHubはMACアドレスが全てであるため自分のテーブルのアドレスとパケットのMACアドレスをチェックして宛先へパケットの転送をするだけである。
MACアドレスでの通信の性質を旨く利用した盗聴方法である。


6.MACFlooding

スイッチングHubのMACアドレステーブルをオーバーフローさせて盗聴する方法。

スイッチングハブの説明は3項で話した。スイッチングHubは、自分の持ってる分岐ポートに繋がったネットワーク機器のマックアドレスをメモりその対応したテーブルエントリにて切り替えながら通信を行う。

MACFloodingは、悪いマシンから送信される差出人に実際には存在しないMACアドレスの入ったarp要求パケットを連打してスイッチングハブの機能を不能にさせる。つまり、差出人のMACアドレスを順次変えたパケットを送信することにより、スイッチングHubはMACアドレステーブルにポートのエントリをどんどん追加していく。これを、続けていくと当然メモリはオーバーフローを起こし、本来のスイッチングHubの機能であるMACアドレスのテーブリングが不能になる。つまり、馬鹿Hub化してしまうのである。したがって、以降悪人はそのセグメント内のマシン間での通信に対して盗聴がやりやすくなると言うことになる。


7.馬鹿Hubを挿入してバイパスして盗聴する方法

これは、馬鹿Hubを使ってスイッチングHubとターゲットホストの間に割り込んで馬鹿Hubで通信を盗聴する方法

これは、下準備の必要な方法でホスト1とサーバ1が同じスイッチングHubに繋がっていてホスト2・ホスト3がその通信を盗聴すると仮定する。予め、ホスト1とスイッチングHubの間に馬鹿Hub1をおく。サーバ1とスイッチングHubの間に馬鹿Hub2を解らないように仕掛けておく。そして、ホスト2・ホスト3はそれぞれ馬鹿Hub1・馬鹿Hbu2へ接続して盗聴する。しごく当たり前の盗聴である。つまり、馬鹿Hubが入ることにより通信内容が自由にゲットできる訳。


8.では、盗聴を未然に防ぐ対策は

1)外部からの侵入者の防御
外部からの侵入者防止が一番の対策かと思う。有線LAN配下での盗聴は事実上侵入して準備をするのが通常であるため。

2)内部の不心得者の防御
外部ばかりでなく内部の存在も考える必要有り。同じ会社の社員でも悪人は居るでしょ。
俺だったら、以下のような事するかも、

■ IDSでツールで不正パケットを監視する
■ 何らかのツールでLAN内のarpパケットの通信状態を監視する(攻撃による連打とか)
■ LAN内にプロミスキャスモードのクライアントがあったら解除する
クライアントがプロミスキャスモード(ネットワーク上のパケットを自分宛以外のものも受け取ってしまうお構いなしモード)になっていないか確かめる。このモードになっていると、Sniffer等のネットワークモニタで通信の傍受をされている恐れがあるので気をつける。プロミスキャスモードは、tcpdumpコマンドするとプロミスキャスモードに移行する。したがって、tcpdumpコマンドを使った後はプロミスキャスモードの解除を忘れずに!
ちなみに、プロミスキャスモードへのセット・リセットは以下のようにする。

① プロミスキャスモードセット

# ifconfig eth0 promisc

# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:90:CC:A0:24:49
inet addr:192.168.255.103 Bcast:192.168.255.255 Mask:255.255.255.0
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:47264 errors:0 dropped:0 overruns:0 frame:0
TX packets:21126 errors:0 dropped:0 overruns:0 carrier:0
collisions:3254 txqueuelen:1000
RX bytes:32903744 (31.3 MiB) TX bytes:2549719 (2.4 MiB)
Interrupt:10 Base address:0xe000

以下省略

② プロミスキャスモードリセット(解除)

# ifconfig eth0 -promisc

# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:90:CC:A0:24:49
inet addr:192.168.255.103 Bcast:192.168.255.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:47289 errors:0 dropped:0 overruns:0 frame:0
TX packets:21137 errors:0 dropped:0 overruns:0 carrier:0
collisions:3254 txqueuelen:1000
RX bytes:32905812 (31.3 MiB) TX bytes:2551653 (2.4 MiB)
Interrupt:10 Base address:0xe000

以下省略

■ どうしても盗聴されたくなかったらなんと言っても暗号化通信
VPNでIPsec通信とかSSL通信でも良いかな。とにかくパケット自体を暗号化する必要がある。

以上

コメント