Aterm WG1800HP2のrootを取る

最終更新日:

ハードウェアでガチャガチャ遊びたくなった!!ので中古の安いwifiルーターでrootシェルを取ってファイルシステムを覗いてみる

攻略対象

ガワ調査

  • ルーターなのでLANポートがついている
    • ここから接続できる?
  • TCP/23でtelnetが動作中
    • Google検索したところパスワードは公開されていなさそうだった
    • とりあえず時間の無駄そうなので別の方法で攻略する
  • 基盤チェック

基板俯瞰

  • ルーターはUnix/Linuxで動いていることが多い
    • 組み込みのUnix/Linux
  • テスト用にUARTのポートがあることが多い
    • 見分け方
      • 4~5個のテストピンやテストパッドが基盤に実装されている

Tips: UARTについて

UART (Universal Asynchronous Receiver Transmitter)
最低3本の線でシリアル通信ができる通信規格
GNDなくても動くケースが多いが、ノイズ対策の観点から使うべき

  • Tx: 送信
  • Rx: 受信
  • GND: 基準電圧

クロックの指定が結線上に存在していないため、ボーレートをデバイス側で指定する必要がある

  • 基盤を眺めると怪しいテストポートがある

    • テストポートが5つの場合は以下のものが想定される
      • VCC (3.3V or 5V)
      • GND
      • Rx
      • Tx
      • 多目的使用 or N.C.
    • テスターを利用して探していく
  • 各ポートの調査のコツ

    • 最初にVCCとGNDを探す
      • テスターを利用して3.3V / 5Vを拾えたら残りをguessする
    • Txのポートは伝送時に電圧がHighになる
    • Rxのポートは大きく動かない
    • スペクトラムアナライザがあると便利
  • 調査の結果、こんな感じに

  • ポートにはんだ付け

    • GNDのはんだがあまりにも汚い
      • みんなはフラックスをちゃんと…使おうね!
  • BusPirateにTx, Rx, GNDを接続

    • 注意: Tx-Rx, Rx-Txとデバイス間でTx, Rxの接続は逆になる
    • なぜか手元のFTDIチップのシリアル変換ボードで動作しなかった
      • いまだに理由がわかってない
      • 家に転がってたBus Pirateで対応

シェルアクセス

  • ターミナルを開いていろいろ見ていく

  • シェルのログイン画面が見えるが、ID/パスワードがわからない

    • ブルートフォースは現実的ではない

root奪取

  • シングルユーザーモードで立ち上げる必要がある
    • ブートローダーであるUbootをどうにかする必要がある
    • ルーター起動中にCtrl-Cを連打することでシングルユーザーモードに入れる

ファイルシステム探訪

  • ルーターのWebアプリケーションして動作するCGIを発見

  • シングルユーザーモードなのでネットワーク環境がない

    • どうやって持ち帰るか

    • USBが生えているのでこいつでUSBをマウントできるか試す

    • USBメモリを刺すとマスストレージとして認識

      • マウントしたら使えそう
  • Mountコマンドがない

  • 使えそうなバイナリを調査

    • mount_ffs
    • mount_kernfs
    • mount_msdos
    • mount_procfs
    • mount_tinyfs
      • mount_msdos, mount_tinyfsが使えそう
  • USBを刺し、それをmsdosでフォーマット、mount_msdosでマウントする

  • あとはddとかで好き勝手ファイルをコピーしまくるだけ

    • お持ち帰りしたファイルを思う存分味わおう!

おわりに

この業界をひたすら走り続けている大破.net氏に大いなる経緯を表します
本記事の一部では大破氏の過去記事を参考にさせていただきました
また、分解したwifiルーターの使用については法的な部分から怪しくなるので廃棄済みです
そもそも古いwifiルーターをおもちゃとしてメルカリで超格安で買ったので問題ないな!ヨシ!
暇があればハードウェアネタも書いていこうと思います