PR

 前回,Wiiのセキュリティで1点だけ気になる点があると書きました(前回の記事)。それは,Wiiが返信するパケットのIPフラグメントIDに規則性があることです。この規則性によって,Wiiを隠れ蓑にして,ほかのコンピュータのポート・スキャンができてしまいます。

 IPフラグメントとは,一度に送信することのできない大きなIPパケットをいくつかに分割して送信する仕組みのこと。そしてIPフラグメントIDとは,分割された各パケットを識別するためにパケットの送信元が割り当てる値(識別子:ID)です。IP(Version 4)ヘッダーに埋め込んで送信し,受信側はこのIDを基に断片化されたパケットを再構成します。


図1 Hping2でWiiのIPフラグメントIDの規則性を調べた
ときのログ

 この規則性を確認するために,有名なパケット生成ツールであるHping2を使って,実際にWiiのIPフラグメントIDを調べた様子が図1です。図1にはHping2を使ってICMP Echo RequestパケットをWiiに10回送信し,そのパケットに対してWiiが返信したパケットの情報が表示されています。「id=+1」と表示されていることから,IPフラグメントIDが連番になっていることが分かります。

 IPフラグメントIDが連番で何が問題なのかと思われるかもしれませんが,このようにIPフラグメントIDに規則性があると,IPフラグメントIDポート・スキャンに利用される恐れがあります。

実際の攻撃例


図2: IPフラグメントIDポート・スキャンの仕組み

 Wiiを利用したIPフラグメントIDポート・スキャンの仕組みについて,図2を使って解説します。WiiのIPアドレスを192.168.1.102,標的のIPアドレスを192.168.1.100とします。標的でTCPの139番ポートが開いている場合を考えます。

 まず攻撃者は受信端末であるWiiにICMP Echo Requestパケットを数回送信します(図2[1])。そして,Wiiが返信したICMP Echo ReplyパケットからIPフラグメントIDの生成について規則性を調査します(図2[2])。次に攻撃者は,WiiのIPアドレスを偽装して,標的にTCP(SYN)パケットを1回送信します(図2[3])。

 ここからは,標的のポートの開閉状況によって流れが異なります。標的のTCPポートが開いている場合,標的はWiiにTCP(SYN+ACK)パケットを送信します(図2[4a])。Wiiは実際にはTCP(SYN)は送っていませんから,TCP(SYN+ACK)パケットを受信すると,標的に対してコネクションを切るためのTCP(RST)パケットを返します(図2[5a])。TCP(RST)パケットはサイズが十分小さく分割されませんから,WiiはIPフラグメントIDを1回だけ割り当てます。


図3: 標的のTCPポートが開いている場合にWiiが返信するパケットのIPフラグメントIDの値

 この後,攻撃者は再びWiiにICMP Echo Requestパケットを1回送信します(図2[6a])。Wiiが攻撃者に返信したICMP Echo ReplyパケットのIPフラグメントIDが以前より2増加していれば,標的に1回パケットを送ったと考えられ,標的のTCPポートが開いていると判断できます(図2[7a])。図3は実際の攻撃者の画面を模擬したものです。図中,赤字になっている「id=」の数値を見ると,Hpingの返信パケットにあるIPフラグメントIDが,1561から1563に増えていることが分かります。


図4: 標的のTCPポートが閉じている場合にWiiが返信するパケットのIPフラグメントIDの値

 これに対してTCPポートが閉じている場合,標的はWiiのIPアドレスを偽装した攻撃者のパケットに対してTCP(RST+ACK)パケットを送信します(図2[4b])。コネクションを切断するためのパケットですから,Wiiは何も返信しません。ここで攻撃者がWiiにICMP Echo Requestパケットを1回送信しすると,Wiiが返信するパケットのIPフラグメントIDは1しか増えません。このことから,標的のTCPポートが閉じていると判断します(図2[6b])。図4は図3と同様,実際の攻撃者の画面を模擬したものです。IDは1しか増えていないことが分かります。

 以上がWiiを利用したIPフラグメントIDポート・スキャンの仕組みです。問題として考えられることは,IPフラグメントIDポート・スキャンを行った攻撃者の特定が困難ということです。可能性は低いと思いますが,もし学内や社内のローカル・ネットワークにWiiがある場合,誰かがWiiを利用したIPフラグメントIDポート・スキャンでサーバーなどにポート・スキャンを行うと,ポート・スキャン元のIPアドレスはWiiのIPアドレスになることから,誰が攻撃者なのか特定するのは困難になります。現時点ではIPフラグメントIDポート・スキャンを阻止するような設定がWiiにはありません。どうしてもWiiを利用したIPフラグメントIDポート・スキャンを阻止したい場合は,ファイアウオール製品でWiiを悪意のある通信から保護する必要があります。

Wiiは安全だが過度な安心は禁物

 Wii自体はネットワーク経由の能動的な攻撃に耐え得る安全な状態でインターネットに常時接続されますが,IPフラグメントIDポート・スキャンにWiiが利用される恐れのあることが分かりました。また,現時点ではUDPの68番ポートを使っているWiiのDHCPクライアントにぜい弱性は見つかっていませんが,そのうち誰かがぜい弱性を見付けるかもしれませんので,Wiiが今後も常に安全な状態であるとは言い切れないことに注意してください。

 他にもインターネットに接続可能な家庭用ゲーム機であるPlayStation3やXbox360などがあるので調べてみたいと思っていますが,残念ながら資金的な問題で手元に無いので調べることができていません。これらが手に入ることがありましたら,また今回のようにセキュリティについて書きたいと思っています。

■著者 プロフィール
Eiji James Yoshida
1999年から今までに数多くの企業や省庁のセキュリティ診断を担当。主にセキュリティ・ホールや侵入技術の研究を手掛け、その研究成果を基にセキュリティ診断や教育、執筆活動を行っている。「セキュリティ徒然草」では、セキュリティ診断やセキュリティ・ホールに関する話題の他にも、セキュリティに関するよしなしごとをおもいのままに書き綴る。「penetration technique research site」や「Eiji James Yoshidaの記録」でも情報提供中。