The Weekly Herald

scie and axsee's electronics weblog.
<< MACアドレス偽装で通信傍受! | main | PCBCARTから届いたよ。 >>
スポンサーサイト このエントリーを含むはてなブックマーク

一定期間更新がないため広告を表示しています

| 書いた人:スポンサードリンク | - | | - | -
MACアドレス書き換えで通信傍受! このエントリーを含むはてなブックマーク
この記事はコンピュータネットワークの通信のしくみについて、調べてみた記事です。情報は悪用しないでください。

昨日の実験ではうまくパケット傍受はできなかった。
では、MACアドレスをOSが偽装するのではなく、ハードウェアに書き込まれているMACアドレスを直接書き換えてしまえばどうなるのかと思い、再びscieに協力してもらって挑戦してみることにしました。
とりあえず、LANカードを取り外してみました。
実装されている目立った素子は数えられるほどしかありません。この中でMACアドレスを保存しておけそうな素子といえばEEPROMです。そこで、EEPROMの中身を解析してみようと思いました。

まずは、EEPROMの勉強。
EEPROMとは電気的に内容を書き換えることができるROMのことです。通信方式としてはシリアル、パラレルが存在しますが、今回のLANカードに使用されているEEPROMはシリアル方式でした。
シリアル通信にも、SPIやI2Cなど数種類の方式がありますが、LANカードに実装されているEEPROMの多くはMICROWIRE方式のデバイスが採用されています。
MICROWIREの話はのちほど詳しくUPします。

書き換えには秋月電子のH8/3664ボードを使用することにしました。
EEPROMライタ洗濯ばさみのようなものはICクリップで、EEPROMを基板に実装しなくても接続が可能です。LANカードに実装されているEEPROMを引き抜くのはaxseeにはかなり難しく、よくICの足が折れてしまいます。そのためソケットではなく、多少足が折れていても大丈夫なICクリップを採用しました。
さて、いよいよH8にEEPROMの中身を読み書きできるソフトを書き込み、実際にどんなデータが書き込まれているか調べてみました。EEPRONの中身を読み書きするソフトはscieが製作してくれました。結果を以下の表に示します。アドレス、データ共に16進数で表示しています。
ADDRESS DATA  ADDRESS DATA  ADDRESS DATA  ADDRESS DATA 
000
001
002
003
004
005
006
007
008
009

00A
00B
00C
00D
00E
00F
8129
10EC
8139
10EC
8139
4020
E512
E000
814C
3D56

8D10
F7C2
8801
43B9
B0F2
071A
010
011
012
013
014
015
016
017
018
019
01A
01B
01C
01D
01E
01F
DF43
8A36
DF43
8A36
43B9
B0F2
1111
1111
0000
0000
0000
0000
0000
0000
0000
0000
020
021
022
023
024
025
026
027
028
029
02A
02B
02C
02D
02E
02F
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
030
031
032
033
034
035
036
037
038
039
03A
03B
03C
03D
03E
03F
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
上のデータがEEPROMの中に書き込まれていたデータです。ちなみに、このEEPROMには16ビットのデータが64個入ります。18番地以降はずっと”0000”が書かれていました。
あらかじめLANカードをPCに挿してwindows上で調べておいたMACアドレスは
00-E0-4C-81-56-3D

です。
同じ数値列はどこにも書かれていませんでした。しかし、それらしき数値が7番地から9番地までの間に書かれていました。
きっとこれがMACアドレスだ!
ただし、よくみると上位バイトと下位バイトが逆さまになっていました。
その後、LANカードに実装されているEEPROMの仕様を調べたところ、イーサネットICのチップメーカーによってフォーマットが違うということがわかりました。
今回使用したLANカードのチップはRealtek(通称カニさん)のRTL8139です。

なぜ上位バイトと下位バイトが逆さまになっていたのかはとりあえず置いといて、次に、さっき読み込んだデータを新品のEEPROMにコピーすれば、ハードウェア的に同じMACアドレスを持つLANボードを作れると思い、やってみました。
LANLANカードに実装されているEEPROMを取り外し、書き換えた後、再び実装できるようにソケットをはんだ付けした。
余談ですが、LANボード等の製品に実装されている部品を取り外すのは予想以上に難しかった。ユニバーサル基板からDIP素子を取り外す時とは全然違う感じだった。
取り外すコツとしてはすぐにはんだ吸い取り機ではんだを取ろうとせず、最初にはんだをたっぷり付け足してから、はんだ吸い取り機で一気に取ればうまくとり外せるということがわかった。
新しいEEPROMに、LANカードについていたEEPROMのデータをコピーして書き込み、それを実装してPCに刺してみました。
左の写真はLANボードを刺したPCの画面です。
さっきのEEPROMと同じアドレスが確認できます。これで、同じMACアドレスを持つLANカードを2つ作ることができました。
さらにさっきのデータのMACアドレスっぽいの部分を別のデータにすれば、自由にMACアドレスを書き換えることが可能なのかと思い、やってみました。
ADDRESS DATA  ADDRESS DATA  ADDRESS DATA  ADDRESS DATA 
000
001
002
003
004
005
006
007
008
009

00A
00B
00C
00D
00E
00F
8129
10EC
8139
10EC
8139
4020
E512
E000
814C

3D56
8D10
F7C2
8801
43B9
B0F2
071A
010
011
012
013
014
015
016
017
018
019
01A
01B
01C
01D
01E
01F
DF43
8A36
DF43
8A36
43B9
B0F2
1111
1111
0000
0000
0000
0000
0000
0000
0000
0000
020
021
022
023
024
025
026
027
028
029
02A
02B
02C
02D
02E
02F
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
030
031
032
033
034
035
036
037
038
039
03A
03B
03C
03D
03E
03F
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
さっきのデータの9番地目のデータを3D56から3056に変更してみました。他の部分はまったく変更していません。
その結果が左図です。
EEPROMのMACアドレスの部分を書き換えただけで、簡単に変更することができました。どこかにパリティーなどがあり、チェックしているかと思ったのですが、以外に簡単に出来て驚きでした。これでMACアドレスを自由に書き換えることに成功しました。
MACアドレスの書き換えはだいたいわかってきました。ここで少し本題とは話がずれますが、先ほども話に出てきた――なぜEEPRONのMACアドレスの値は上位と下位が逆さまなのか?という部分。
もしかすると、使用したPCのCPUはintel製86系のため、リトルエンディアンが採用されている。
そのためなじゃないのか?と思い実験することにしてみました。

ちなみに、エンディアン (endian) とは、多バイトのデータをメモリ上に配置する方式の種類のことです。エンディアンネス 、バイトオーダ ともいいます。

0x1234ABCDという4バイトのデータをメモリに配置する場合
ビッグエンディアン ⇒ 12 34 AB CD
リトルエンディアン ⇒ CD AB 34 12

Intelのx86系CPUはリトルエンディアン
MotorolaのMC68000、PowerPC G5などはビッグエンディアン

H8やSH2などもビッグエンディアンです。
つまりH8で制御すればMACアドレスはそのまま配置されるのではないだろうか、と思いこの前使ったH8-LANボードのEEPROMのフォーマットを確認することにしました。
イーサーネットICは同じくRealtek製のRTL8019です。
IPLANボードを起動して、MES上でMACアドレスを調べてみることにしました。LANボードのMACアドレスが
00-02-CB-01-E3-BE
ということがわかりました。
次に、EEPROMの中身を確認することにしました。

EEPROMの中身は以下のようになっていました。
ADDRESS DATA  ADDRESS DATA  ADDRESS DATA  ADDRESS DATA 
000
001
002
003
004

005
006
007
008
009
00A
00B
00C
00D
00E
00F
0040
0010
0200
01CB
BEE3

0000
0000
0000
0000
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
010
011
012
013
014
015
016
017
018
019
01A
01B
01C
01D
01E
01F
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
020
021
022
023
024
025
026
027
028
029
02A
02B
02C
02D
02E
02F
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
030
031
032
033
034
035
036
037
038
039
03A
03B
03C
03D
03E
03F
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
FFFF
MACアドレスは2番地から4番地までに書かれていました。
ちなみに9番地以降が全部FFFFで埋め尽くされています。
さっきまでのEEPROMでは全部0000でしたが、素子によってはFFFFのものもあるみたいです。
しかし、今回もMACアドレスは逆さでメモリに配置されていました。結論としてはMACアドレスが逆さなのとエンディアンのタイプとの関連はなかったということになります。

ここで、LAN内にこのMAC書き換えPCを配置し、パケットを傍受できるかやってみました。

が…

今回も昨日と同じくパケットは傍受できませんでした。
やはりMACアドレスが同じでもそれだけでは傍受はできないようです。

と、ここで面白いツールを発見しました。
次の記事を見てください。
| 書いた人:axsee | Reckless Attempt | 14:53 | comments(6) | trackbacks(0)
スポンサーサイト このエントリーを含むはてなブックマーク
| 書いた人:スポンサードリンク | - | 14:53 | - | -
コメント
ソフトウェアの仕事をしているものです。
ハードをいじるのにも興味があるので以前なにかの検索のおり見つけたこちらのブログを見せていただいております。
MACアドレス書き換えの実験とは大胆な実験ですね。
LANカードのEEPROMを書き換えてしまうなんて驚きました。

傍受できない理由の一つにスイッチングハブを使っていると言うことはないでしょうか。
スイッチングハブはどのポートにどんなMACアドレスの利きkがつながっているかを学習して関係ないポートにはパケットを中継しないものです。通信のタイミングによってどちらかのポートにしかパケットは来ません。
最近は殆ど見かけないのですが、ダムハブというスイッチング機能のないハブを使用しないと実験が成立しないと思います。
また、対象PCと傍受用PCをダムハブでつないであればMACアドレスを偽装しなくてもEatherRealなどで対象PCからのパケットの出入りを監視することはできます。IPやUDPでやりとりするソフトを作っているのでデバッグのためにこういう方法を使います。
| miz | 2006/08/16 12:01 PM |

コメントありがとうございます。
ソフトウェアよりの方にもご覧いただて大変うれしいです。
実験環境では確かにスイッチングハブとルータがあり、それが何かしているのではないかというご指摘は正解だと思います。
ダムハブというハブの存在は知らなかったです。勉強になりました。
また、ハブを通信のデバッグに使っておられるとは驚きです。もし、入手できる機会があればダムハブでもう一度実験してみたいと思います。
| axsee | 2006/08/16 1:31 PM |

早々と新しい実験結果が上がっているので驚きました。

ダムハブというのはポートから入ってきたパケットを単純にすべてのポートに転送するような仕組みになっているハブのことです。
スイッチングと書いていないハブはダムハブだと思っていいです。世の中が100BASEに変わった頃から見かけないので古い10BASEの頃のハブを使ってみてください。中古屋やリサイクルショップなどに投げ売りされているような古いものは大抵これです。
| miz | 2006/08/16 2:10 PM |

企画の斬新さに恐縮ながら、苦笑してしまいました(^。^;)
結果はともかく、研究心は大事ですよね。
ちょっと脱線しますが、EEPROMの内容は、リセット後にLANコントローラが読み込んでいますが、初期化の段階でLANコントローラ(NE2000のNIC)のMACアドレスのレジスタをCPUから読み書きすることもできるんです。
LINUXやMESなら可能でしょうが、WINDOWSは難しいかもしれません。
NE2000のNICは3つか4つのバンクがあって、その中に幾つかのレジスタがありますね。
ではまた。
| P.IGMON | 2006/08/16 11:52 PM |

>mizさま
ダムハブはぜひ近いうちに探しに行きます。
組み込みを始めてから日本橋のジャンク屋やゴミ山から宝の山に見えてきました。きっとダムも売ってると思います。
情報ありがとうございました。
| axsee | 2006/08/16 11:58 PM |

>P.IGMONさま
なるほど。LANコントローラまで突っ込めばもっと面白いことができるかもしれませんね。
実はまだカニさん(RTL8019)をよく理解しないまま、実験しておりました。まだまだ勉強不足のaxseeですが、LANコントローラもぜひ使いこなせるようになりたいと思っております。
| axsee | 2006/08/17 12:09 AM |

コメントする
※コメント欄にHTMLタグを使用することはできません。
※コメント欄内のURLは、自動的にリンクへと変換されます。
※英数字のみのコメントは投稿できません。









この記事のトラックバックURL
http://herald.jugem.jp/trackback/64
トラックバック
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>


ブログ カウンター岩盤浴ゲルマニウム温浴