[CODE BLUE 2019][U25]わたしはあなたが昨夜に何をしたかを知っている:最新のIoT Hubへの侵入手法[レポート] #codeblue_jp

CODE BLUE 2019「[U25]わたしはあなたが昨夜に何をしたかを知っている:最新のIoT Hubへの侵入手法」についての参加レポートです。非常に面白い内容とデモでした!
2019.10.29

こんにちは、臼田です。

『世界トップクラスのセキュリティ専門家による日本発の情報セキュリティ国際会議』でありますCODE BLUE 2019に参加していますのでレポートします。

このブログは下記セッションについてのレポートです。

[U25]わたしはあなたが昨夜に何をしたかを知っている:最新のIoT Hubへの侵入手法 Presented by ホンリョル・リム ジスブ・キム

モノのインターネットの略であるIoTの出現により、私たちの日常生活はかつてないほど便利になっている。IoT市場は日々継続的に成長している。大量のIoTデバイスを一度に管理するために、IoTデバイスを個別に操作するのではなく、すべてのIoTデバイスを簡単かつ便利に制御する方法に変わりつつある。IoTハブは接続されたIoTデバイスを制御できるため、攻撃者による悪意のある制御、プライバシー侵害、セキュリティ侵害による個人情報の漏洩などといった重大な損害のリスクが高くなっている。 本講演では、ルートシェルの取得から複数のIoTハブのファームウェアの分析まで、IoTハブ悪用の全体的なプロセスを示して、脆弱性の導出方法を示す。我々は、ネットワークパケット分析、ファームウェア分析、我々が定義したセキュリティ上の脅威、脆弱性の関係を整理したデータフロー図(DFD)を作成した。その後、最近商用化されたIoTハブで見つかった脆弱性についても説明し、脆弱性から派生する可能性のある致命的な脅威を紹介する。 最後に、「ドアを解錠する、パスワードを盗聴する、デバイスのマイクコントロールを介して盗聴する」など、スマートホームにおける一環の流れについての悪用シナリオのライブデモを行う。本講演を通じて、IoTハブに潜む脅威を認識し、IoTネットワークとスマートホームのセキュリティの向上に貢献できることを願う。

レポート

  • IoT Hubについて
    • 様々なIoT装置をつなぐもの
    • スマートホームネットワークを構築する
  • モチベーション
    • IoT市場が成長している
    • IoT機器を管理することになる
    • IoT Hubは機器が集約されるので、これを攻撃することにより接続されている機器を奪える
  • ベンダー選定
    • Amazonから3つと韓国で主要なものを3つ選定
  • 攻撃する手法
    • ファームウェアをwebサイトで公開されている場合に簡単に取得できる
    • プロビジョニング
      • サーバとHubの間でSSL Stripを実施
    • シリアルコミュニケーション
      • UARTで直接接続
      • カスタムシェルで命令を送る必要がある
  • 多くの機器はこのような手法が取れなかった
  • 2つの代案を用意
    • Desolderingとサイドチャネル
    • Desolderingはチップを外したりする
      • 非常に高度な基盤を扱う技術が必要になる
  • Desoldering: eMMC
    • eMMCとSDカードと同じように読めるのではないかと思ったがうまく行かなかった
    • 専用のソケットを買ったらうまくいった
  • Desoldering: NAND Flash
    • RasPiのGPIOを利用して接続してSPI抽出
    • FCBストリングを確認、正常に抽出できた
  • サイドチャネル
    • 各ベンダー毎にセキュリティ機能が実装されている
    • 個別に見ていくと効率的ではないので、よく使われるブートローダを分析することにした
    • 殆どはU-BootかCFEが使われている
    • U-Bootを分析
    • システム起動時のMain_loop()の最後で、autoboot_commandが呼ばれる
    • カーネルをロードする前にエラーが発生したらカスタムシェルを動かせる
    • CVE-2018-19916となった
  • 攻撃
    • IoT Hubの周りのデータフローをDFDで可視化
    • アタックライブラリを作成した
    • そこに発見できた0dayを紹介
  • 0day
    • いくつか紹介
  • Vender AのRCE
    • ログインのgoバイナリを解析
    • 多くの文字列をコピーするとオーバーフローする
    • Fiddreを利用してオーバーフローさせた
    • エクスプロイトコードを作ってシェルを獲得
  • Vender Aのパケットリレー
    • IoT Hubに命令を送るパケットを分析
    • MITMしてパケットを書き換えできた
  • Vender BのBackdoor
    • OSGIが使われていた
    • Webサーバが8877で動いていた
    • アクセスするとAccess Denied
    • シリアルの値を使った値を付ける必要があった
    • MACアドレスとシリアルキー
    • MACは不確定な値があった
    • ログインが5回以上失敗するとブロックされたので別アプローチ
    • 特殊なMACアドレスを変更するサービス(工場出荷時用)を利用することにした
    • これを使ってルートシェル獲得
  • 脆弱性を利用したシナリオ
    • スマートキーを開けることが可能
      • 実際に会場に持ってきているスマートキーを使う
      • 会場で発行したランダムな6桁の数字を利用
      • そのままで開かないことを確認
      • 攻撃後開くようになった事を確認
    • 盗聴
      • マイクがある機器から盗聴できるのではないか
      • サーバに音声データを転送するコードについて分析
      • コードを書き換えることにより実現
      • 実際にデモ
  • このような脆弱性を防止するためのレコメンド
    • バグバウンティがある場合は脆弱性を見つけるのは難しかった
    • 逆にバグバウンティがない製品が簡単に攻撃できた
    • 殆どのハッカーは面白さのために攻撃するのでバグバウンティはメリットになる
  • IoTのセキュリティは上がってきているがまだまだ安全ではない
  • ハッカーがより挑戦できるようにバグバウンティがあるといい

感想

IoTの、特にスマートホームのHubの攻撃というのは比較的新しい分野だと思いますが、より個人のプライバシーの深い部分がターゲットになるので怖いですね。

ぜひともバグバウンティプログラムを整備していってほしいです!w