NTT 光ルータに undocumented api があった

ここに書いてあったのを分割した。NTT 西日本のフレッツ光ルータでスマホを内線に登録した - まにっき

apk を取得してデコンパイル

この AGEphone の設定してたときにマニュアルを読んでみても、内線を登録するためのパスワードをどうやってルータ側から自動的に取得しているのか分からない。ルータのパスワードを変更して使っていれば設定画面の項目は取得できるわけないよね?
ワンタッチでできてお手軽!とか AGEphone 楽チンとかどこかに書いてあったので、web 設定画面にログインするための user/password セットの初期値はそのまま "user"/"password" なので、みんな初期値のまま使っていて、それを元に web 画面から抽出してるのかな???

気になって仕方ないし、純粋な研究目的なのでデコンパイルしてみました。

com/ageet/AGEphone/NTT/Provisioning/NttProvisioningHttpClient.java

によるとルータの IP アドレスは 192.168.1.1 に固定されている。
このコンストラクタを呼び出してるところ箇所からゲートウェイで上書きされてるところは、生成された java ソース検索してみた限りでは見当たらなかった。
こちらの自宅ではひかり回線に移行する前のネットワーク構成を維持するために、ルータを別のアドレスに変更して運用しているので、ここで取得に失敗していた様子。

結論としては

http://192.168.1.1/cas_tel_list/
http://192.168.1.1/cas_tel_conf/

というリソースに管理パスワードなしでアクセスしてパスワードなどを取得していた。

wget で 取得してみる。ntt.setup というドメインはルータそのものを指していて、ルータを DNS サーバとして利用しているときのみ使うことができる。


wget --no-proxy "http://ntt.setup/cas_tel_list/"

取得できる内容はこんな感じ。

ResultCode=0000
ConfList=5,6,7

ConfList には、未接続の内線番号が入ってくるみたい。


wget --no-proxy --header "Content-Type: application/x-www-form-urlencoded" "http://ntt.setup/cas_tel_conf/" --post-data="id=***MAC アドレス***&ip_tel_num=5&term_type=1"

ip_tel_num は ConfList に載っている一つ目の番号を書いてみる。
MAC アドレスに入れる値は内線番号一覧に登録済みの MAC アドレスのうち、最初の一つ目じゃないと拒否されるように見える。
で、パスワード諸々が取得できる。

ResultCode=0000
ip_tel_num=5
username=0005
password=*********
rtpport1=
rtpport2=
dscp=46
sipsv_addr=***********
sipsv_port=5060
regsv_addr=***********
regsv_port=5060
sip_domain=***********

↑これ、パスワードって呼び名よりは PSK (Pre Shared Key) と思えるもので web 画面でもマスクされてないから、端末に直接アクセスできる人にとっては機密情報ではないという認識なのかもしれない。だけど、この情報があれば外線も発信できてしまうわけで、そうなるとちょっと前にニュースになってた海外に勝手に電話をかけられて高額請求されたとかいう話も思い浮かんでくる。

http://www9.nhk.or.jp/kabun-blog/220644.html

こういう仕様があるのを見てしまうと、他にも今のご時勢で考えれば微妙なバックドアが仕込まれているんじゃないかと疑ってしまう。

この隠れたリソースについてはかなり昔からあって、変わっていないみたい。この記事によると 2007 年ぐらいの NTT 提供の製品にはついていたようだ。
実際は中の人達や関係者であればこのことを知っていたのだろう。

パーソナルフォン(WI-100HC) 無線LAN電話器 - rabbit51

こんなに昔からあるものなら、今さら個人のブログで公開しても問題ないよね。

その後

AGEphone の導入マニュアル、後から読んでみたら P4 の下の方に書いてあった。

http://flets-w.com/wi-fi/scene/and.pdf

③ホームゲートウェイIPアドレスを「192.168.1.1」以外で設定している場合
→ホームゲートウェイIPアドレスを192.168.1.1」に変更し、再度実施
※ 「192.168.1.1」 以外では内線番号を自動で取得することが出来ません。

ははは。一通り設定が終わって色々動いてるんだ、簡単に言いなさんな。
プライベートアドレスはおまえらの所有物じゃないんだよ。
こういうところにも NTT の仕事の流儀を感じてしまう。