無線LANブロードバンドルータのサブSSIDからプロバイダ接続IDを取得する(あるいはlogitecgameuserの憂鬱)

前回の日記(http://d.hatena.ne.jp/ozuma/20130629/1372477017)で、ロジテック無線LANルータとSSID[logitecgameuser]について書いたのだが、そちらにハイポーラさんから頂いたコメントが興味深かったのでさらに続きを書いてみる。

マルチSSIDでは、初期設定の暗号化キーが同一

いただいたコメントは、「メインのSSIDである[logitecuser](WPA2)と、サブのSSIDである[logitecgameuser](WEP)の初期暗号キーが同一」ということだ。実際に手元のルータを工場出荷時設定に初期化して試してみたらまさにその通りで、ルータに貼ってあるパスワードが両方に設定されていた。なんてこと。

つまり無線まわりが初期設定のままの場合、以下のように攻撃をすることで、このルータではWPA2-PSK(AES)を使っていても簡単に侵入が可能となる。

  1. [logitecgameuser]へ、aircrack-ng等でクラックをおこないWEPキーを入手する。
  2. 取得したWEPキーを用いて、[logitecuser]へWPA2-PSK(AES)で接続をおこなう。

さて、このようにメインのSSIDである[logitecuser]に侵入されると……当然、次は、ルータの管理画面 http://192.168.2.1/ にアクセスしたくなる。ここへのアタックについても少し考察する。

ルータ管理画面(Web)へのアタック

ルータの管理画面は、最近はWebベースでブラウザで操作するものが多い。BASIC認証がかけてあるから無線LANの暗号化キーが漏れただけでもまだ安心……と思いたいが、BASIC認証は大量アクセスが可能なため、ブルートフォースアタックや辞書攻撃の格好の餌食である。

実際に、我が家のルータの管理画面に、THC-Hydraを用いて秒間何アタックくらい可能かを調べてみた。

OS Mac OS X 10.6.8 (MacBook)
crackツール THC-Hydra
辞書ファイル [http://download.openwall.net/pub/wordlists/passwords/password.gz

アタックに用いる辞書ファイルは、John the Ripperで有名なOpenwallが配布している「よく使われるパスワードリスト」。3500行ほどの辞書だ。IDについては、ロジテックの製品なら "admin" なのでこれは既知として、パスワードへ辞書攻撃を行うことにする。

ルータを初期設定にして(つまり、id:admin / pass:admin)、実際にアタックを行うと、以下のように17分30秒ほどで終了した。このルータは、1分間に200アタックほどできるようだ。

$ time hydra -l admin -P password.txt 192.168.2.1 http-get /
Hydra v5.4 (c) 2006 by van Hauser / THC - use allowed only for legal purposes.
Hydra (http://www.thc.org) starting at 2013-07-13 02:57:39
[DATA] 16 tasks, 1 servers, 3557 login tries (l:1/p:3557), ~222 tries per task
[DATA] attacking service http-get on port 80
[STATUS] 209.00 tries/min, 209 tries in 00:01h, 3348 todo in 00:17h
[STATUS] 203.67 tries/min, 611 tries in 00:03h, 2946 todo in 00:15h
[STATUS] 202.71 tries/min, 1419 tries in 00:07h, 2138 todo in 00:11h
[STATUS] 203.00 tries/min, 2436 tries in 00:12h, 1121 todo in 00:06h
Unusual return code: 3 for admin:admin
[STATUS] 203.12 tries/min, 3453 tries in 00:17h, 104 todo in 00:01h
[STATUS] attack finished for 192.168.2.1 (waiting for childs to finish)
Hydra (http://www.thc.org) finished at 2013-07-13 03:15:14

real	17m34.708s
user	0m0.300s
sys	0m1.532s

"Unusual return code: 3 for admin:admin" というのが出ているが、このルータは以下のように、ログイン成功時にHTTPステータス 302を発行してindex.aspにリダイレクトするからである。

http://192.168.2.1/

GET / HTTP/1.1
Host: 192.168.2.1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: Val=0
Connection: keep-alive
Authorization: Basic YWRtaW46YWRtaW4=

HTTP/1.0 302 Redirect
Server: GoAhead-Webs
Date: Sat Jul 13 09:52:39 2013
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
Location: http://192.168.2.1/index.asp

hydraは認証後に200 OKが返ることを前提としているらしく(?)、300系が返ると "Unusual return code" と言うらしい。まぁ結果は分かるから問題は無い。

Web画面へのアタックの検知

こうして自分で攻撃中に、他の端末からインターネットアクセスを試してみたが、ネットへのアクセス動作が遅くなるなどの徴候は感じられなかった。また、このルータはWeb画面へのアクセスログ・エラーログは取得できないので、ログから攻撃を検知することもできなかった。

というわけで、第三者が管理画面にアタックしていても気が付くことはたぶんムリ。という結論に……。

接続IDおよびパスワードの取得

ルータの管理画面には、PPPoE設定画面(wanpppoe.asp)がある。

つまり、Webの管理画面のパスワードが分かれば、さらにここからプロバイダへの接続IDとパスワードを盗み出すことが可能だ。PPPoE設定画面は、HTMLソースを見てみるとパスワードがそのまま丸見えである。

赤枠でくくったのがプロバイダへの接続パスワードで、その上のpppUserNameが接続IDである。

こうして、前提設定に多少ズルがあるかもしれないけど、サブSSID[logitecgameuser]のWEPキーを破る(これは慣れた人なら5分でできる)ところから、プロバイダの接続IDとパスワードを取得できることが分かった。

まとめと対策

ここではロジテックをdisるみたいな記事になっちゃったけど、単に私の手元にある無線ルータがロジテック製だっただけで、そういう意図ではないです。

現に、たとえばIOデータの無線ブロードバンドルータのマニュアルを見ていたら、そちらもマルチSSID機能の初期パスワードはメイン・サブSSIDともに同じ暗号化キーだった。つまり、ここに書いていることと同じ問題が存在しそうである(検証してないから断言はできない)。

今回何が問題だったかと言うと、マルチSSID機能を搭載している無線ブロードバンドルータで、以下の条件が共にYesである機器は要注意だということ。

  • マルチSSID機能を搭載しており、デフォルトで有効になっている。
  • マルチSSIDの各暗号化キー(パスワード)が、同一のものとなっている。
対策

最後に、これだけはやっておけという対策をまとめておく。

  • 無線LANルータのマルチSSID機能は、「ニンテンドーDSなどの古いゲーム機をネット接続したい」等の理由が無ければ、使う必要が無いはずである。そのためルータのマルチSSID機能を無効にしておく。(デフォルトで有効になっているものが多いので、必ず無効設定をする)
  • マルチSSIDを利用する場合は、メインのSSIDとサブのSSIDで違う暗号化キーを設定する。(初期パスワードでは同一の製品が多いのでそのまま使わない)
  • Webの管理画面のアクセスパスワードは、長いランダム文字列のものに変更する。(ブルートフォースアタックや辞書攻撃への対策は、長いランダム文字列こそが最も有効)

なお、無線LANルータのアクセスログは貧弱なものが多いので、攻撃を検知するのはたぶんムリである。という結論です。