TeraStationファームのハック

Buffalo TS-XHTL/R6は他のNASとおなじようにacp_commanderを使用してハッキングすることが可能です。
以下ファームウェア1.41で確認しました。

たとえばこの機種はActiveDirectoryを一部サポートしていますが、ドメインのDNS名とNetBIOS名が異なる環境はサポートしていません。しかしsambaの設定を変えることによって可能にするということもできたりします。

もちろんファームアップデートのたびに行う必要がありますし、新しいファームでハックできるかどうかは分かりません。こんなことをするよりもActiveDirectoryを使うという前提ならWindows storage serverの載っているnasでも買ったほうが正しい選択でしょうね。

※これを個人的に行うのは勝手ですが、メーカーの補償やサポートを受けられませんので自己責任で行ってください。

以下のようになっていると仮定し手順を明記します。

  • 共有ディレクトリshareが存在する
  • 対象TeraStationは192.168.0.1

1.acp_commanderを手に入れる

Nas-centralからacp_commanderダウンロード

2.JAVA実行環境のインストール

JREなりJAVAの実行できる環境を設定します

コマンドプロンプトにてacp_commanderのあるディレクトリに移動

3.パスワードクリアスクリプトを手に入れる

Nas-centralからfreerootpw.sh(/etc/shadowのパスワードファイルのrootのパスワードをクリアして書き戻すスクリプト)を手に入れる。

freerootpw.shを共有ディレクトリshareにコピー

4.コマンド実行

ava -jar acp_commander.jar -pw "password" -t 192.168.0.1 -ip 192.168.0.1 -s

で「1回だけrootコマンドを発行」できるのでプロンプトが ‘>root’ となっていることを確認して

chmod 777 /mnt/array1/share/freerootpw.sh

を実行してctrl+cにて終了する(1回毎にacp_commanderのコマンドをやるたびに終了するというのが肝心なところ)

5.パスワードクリア

/mnt/array1/share/freerootpw.sh

を実行(/mnt/array1はRAIDのマウントポイントなので適時変更してください)

rootのパスワード消去されます。

6.telnet起動

java -jar acp_commander.jar -pw "password" -t 192.168.0.1 -ip 192.168.0.1 -o

でtelnetが立ち上がることを確認する。

このファームではこのコマンドでrootパスワードクリアしてくれない。1から6の手順を行うのはこのためです。

7.ログイン

telnetにteratermなどのtelnetクライアントでログイン(rootでパスワードなし)

passwordで再設定したほうが良い

8.サービス自動起動

telnetやsshのサービスが自動起動するようにします。

telnetデーモン起動の設定は、スーパーサーバの/etc/inetd.confを有効にする方法では起動に対応していない。telnetdはroot loginを拒否します。

/etc/init.d/rcSに

/usr/sbin/telnetd
/usr/local/sbin/sshd

などを追加する。

9.ハイテク

ハックは以上で完了ですが、sambaの設定などを修正する場合はテクニックが必要です。

このnasはブラウザ設定にていろんな設定が可能ですが、sambaの設定とかはこれで変更がなされるということを考えないといけません。

普通にLinuxでやるようにsamba.confとかを直に修正しても無駄無駄無駄無駄ぁーーー

勝手に書き戻されるのが落ちです。

ではどうするのかというと、まずブラウザ設定の書き出しの際にどういう動作になっているのかを理解する必要があります。

sambaの操作スクリプトであるsmb.shはこのようなコードになっています。

...
configure()
{
...
   # ブラウザ設定はそのまま吐き出させる
        /usr/local/sbin/nas_configgen -c samba
...
}
start()
{
  #この行の後にconfファイルの書き換えコマンドを挿入
   configure
   # ここの行
  if [ $USE_MSDFS -eq 1 ]; then
               echo -n "Setting up msdfs symbolic links..."
              setup_msdfs
         if [ $? -eq 0 ] ; then
                      echo " [Success]"
         else
                        echo " [Failed ]"
         fi
  fi

        # 書き換えた情報でデーモンが起動
  start_smbd
  RETVAL=$?

       start_nmbd
  RETVAL2=$?

      [ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch /var/lock/subsys/smb || \
        RETVAL=1
 touch $ACTIVE_FILE
  return $RETVAL
}

/usr/local/sbin/nas_configgenというのがありますが、こいつがブラウザ設定の保存を担っているわけで、設定値が埋め込まれているのでsmb.confを直接書き換えても元に戻されてしまいます。

かといってブラウザ設定を捨てるというわけにも行かないでしょう。なのでnas_configgenで設定するという過程はそのまま行わせます。

as_configgenはconfigure関数内で呼ばれているので、configureの後にsamba.confを書き換えを行うコードを埋め込みsmbd等のデーモン開始やリロードなどが動作するようにします。

そのために/etc/rc.d/extensions.dに優先度が後のほうで動作するようにS90hogeみたいなスクリプトをおきます。

S90hogeの内容はsmb.shに「configureというところを見つけてその行の直後に、samba.conf内の文字列をsedなどで変換したりするというスクリプトの行を加える」ということをすればよい。

ブラウザ設定行なわれる度に間接的に毎回samba.conf内の設定を変えてこの設定をデーモンが読むようにするわけです。

mb.shの構造が変わっちゃうと使えない技ですが…

10.再起動

TeraStationを再起動します。

カテゴリー: TIPS, ハードウェア タグ: , , ,

関連してるかも記事

コメント/トラックバックが 2件あります

  1. きざみそば says:
    非常に参考になりました。 でも、ファイアーウォールを切らないとコマンドが効かないのが どうしても判らなくて苦労しました。 別の記事を読んで、ファイアーウォールを切らないとダメ。 っという事が判明してコマンドが通るようになりました。 ただ、こちらでは、Windows7 Pro 64Bitからの操作で、 ターゲットはTS-2.0TGL/R5でした。 telnetの起動までは出来ましたが、TeraTermでどうしても Telnet接続が拒否されてしまい、それ以上進みません。 実は、TS-XHL4.0/R6やTS-XHL6.0/R6でも試したのですが、 ファイアーウォールを切るのが判らず、諦めてTS-2.0TGL/R5に レプリケーションして試みました。 (それだけの原因か不明です。時間があれば試みます) TeraTermでTelnet接続するにはどうすれば良いのでしょうか? 因みに、WindowsXPのWindows Telnetでも接続を試みましたが ダメでした。 知識不足な点(UNIXについては全く)で申し訳ございませんが、 何かヒントを頂けますと幸甚です。 以上、よろしくお願いいたします。
  2. 通りすがりの者 says:
    LinkStation、TeraStationのrootのPasswordは Uplvhbxb3115

この記事へのコメント

※コメントはスパム対策の為、承認制となっています。あらかじめご了承ください。

トラックバックURL