組込機器の診断を紹介 1/2

こんにちは。

株式会社サイバーディフェンス研究所 技術部 手島と申します。

日頃は、Webサイトや組込機器に対して

セキュリティ診断やペネトレーションテストを担当しています。

弊社の課題として

かねてから、社外のお客様や取引先より

組込機器のセキュリティ診断について以下のような疑問を頂戴していました。

  • そもそも組込機器のセキュリティ診断って何?
  • どんなことするの?
  • どんなことが分かるの?

そこで、今回は診断そのものをイメージしやすくすることを目的として

実際の診断に近い環境を用意し、用語やツールと共に紹介します。

この記事は主にエンジニアを対象にしているため、

用語やツールの解説はかなり省いています。

■そもそも組込機器の診断って何?

みなさんの身の回りには、様々な組込機器が存在します。

身近な例を挙げると・・・

  • 道路の信号
  • 鉄道の制御システム
  • エアコンの制御機
  • 無線ルータ
  • 警備システム
  • 家庭用蓄電池システム
  • 気象観測機器

・・・などです。

組込機器といっても、明確なジャンルがある訳ではありません。

(これ以外にも挙げきれないほどいっぱいありますよ!)

道路の信号を例に取りましょう。

悪意を持ったテロリストが、全ての信号を青にしてしまったらどうなりますか?

たちまち交通は大混乱!大事故に繋がりますね。

そんなことができるわけがない?

いいえ。

確かに日本で聞いたことはないですが

アメリカでは、ミシガン州立大学の研究者が

"恐ろしいほど簡単(terrifyingly easy)" と発表しています。

外部サイト: ars technica

http://arstechnica.com/security/2014/08/researchers-find-its-terrifyingly-easy-to-hack-traffic-lights/

信号ほどクリティカルではありませんが

悪用されると困る機械はたくさんあります。

弊社では、このような組込機器を対象に

脆弱性の有無を調査・診断するサービスを提供しています。

■今回診断するターゲット

私の自宅で使用していた機器を更新するため不要になり、

今回のターゲットとして選定しました。

今回のターゲットは全国の様々な小売店で購入できるものですが

攻撃方法を公開すること、悪用された場合の影響を鑑みて

機種名は非公開とさせてください。

■開封

まずはターゲットを開封しました。

使われていたのは少し特殊なヘックスローブネジ(通称・トルクスネジ)ですが

ホームセンターで誰でも購入可能です。

f:id:cdi-teshima:20160428164506j:plain

※注意 ターゲット選定について

  公共のものを勝手に分解してはいけません。

  分解するのは自分で購入したものにしましょう。

  また、機器によっては内部に高電圧が印加されている場合もあります。

  本記事の内容を真似する場合は、必ず感電防止手袋などをし、

  自己責任で行ってください。

  弊社では一切の責任を負えません。

※電波について

  今回のターゲットは電波を発射する機能がありますので

  分解に際して 50Ωのダミーロードを装着しています。

今回のターゲットには存在しませんでしたが、機器の用途によっては、

耐タンパを目的として開封検知機能が付いていることがあります。

開封検知機能の例:

  機械的機構 その1

    警報が鳴り響く。

    銀行のATMとかこんな機能がついてますね。

  機械的機構 その2

    爪が外れると内蔵フラッシュメモリ全消去する。

    一部のクレジットカード読取機は

    分解されていると判断したら、自壊させるようになっているそうです。

  機械的機構 その3

    機械が分解されたよ、とイベントが管理サーバへ通知される。

    警備システム等、関係者以外に開封されると困る機器にはこんな機能があります。

  セキュリティシール

    開封されると跡が残る。

    一般家庭向け機器にも採用例があります。

    機器を分解すると、製品に付与されているメーカー保証が適用外となっていました。

引用:

  LB-SL1, セキュリティシール, サンワサプライ株式会社

  http://www.sanwa.co.jp/product/syohin.asp?code=LB-SL1

f:id:cdi-teshima:20160422103518j:plain

組込機器診断では、弊社のエンジニアは

様々な耐タンパ機構を迂回できないかずっと考えています。

■搭載されているチップを調べる

基板上を眺めて搭載されているチップを調べ、

インターネット上からデータシートの入手を試みます。

経験上、大抵はチップベンダからデータシートが開示されていますが

データシートを開示していない、もしくは開示してもらえない場合もあります。

チップを調べるついでに、明らかに怪しい端子もアタリをつけます。

この5ピンはデバッグ用でしょうか。怪しいので、後ほど調べましょう。

f:id:cdi-teshima:20160428164542j:plain

裏面

f:id:cdi-teshima:20160428164553j:plain

データシートを調べることで、以下のことが分かります。

  • アーキテクチャ
  • 各端子の用途
  • チップに備わっている機能
  • バスでの通信方式
  • コマンド

・・・etc。

診断に使える時間は限られていますので

スムーズに診断を行うため、データシートが欠かせません。

データシートを使ってできることの例を挙げます。

例えば、もし複数のチップに暗号化する機能がついていれば

チップ間でやり取りされるデータは暗号化されているかもしれません。

ここから以下のような推測が可能です。

  • 盗聴しても、暗号化されているので時間の無駄となる?
  • 暗号化方式は?
  • 鍵は何ビット?総当たりは無理?
  • どうやって鍵を共有する?プロトコルに穴は無いか?
  • 鍵は取り出せる?取り出せない?

■信号探索について

基板上には様々な端子があり、コマンドやデータがやりとりされています。

その端子から、我々は信号を拾い、ユーザIDやパスワード、鍵情報を盗めないか試行します。

また、製品開発時はデバッグログを収集しながらコーディングやテストをしていると思われます。

もしデバッグ用インタフェースが残っていると、こんな影響があります。

  • 攻撃に有効なログが出力される?
  • IDや認証情報が流れている?
  • ひょっとしてコンソールからコマンドを打てる?
  • メモリダンプやメモリ書込できるコマンドもある?
  • つまりは、任意のコード実行=マルウェアが仕込まれたも同義?!

家庭用の機器はまだしも、産業用組込機器においては

デバッグ用インタフェースは残っていないことが望ましいです。

・・・前置きが長くなりました。

信号探索をしていく流れ、使うツールを紹介します。

探索の流れ:

  • テスタで電圧とGNDピンを確認
  • オシロスコープで信号の有無を探す
  • ロジック・アナライザで信号の内容を解析
  • 通信モジュールを接続

まずは電圧を確認します。

後ほど用いるオシロスコープやロジック・アナライザを接続して良いか確かめるためです。

ついでにピンアサインを確認し、ひとまずGNDピンだけでも見つけます。

f:id:cdi-teshima:20160428164717j:plain

オシロスコープを当てます。

先ほど怪しいと睨んでいた5ピンから、何らかの通信が見つかりました。

f:id:cdi-teshima:20160428164734j:plain

Saleae社のロジック・アナライザを接続したところ。

f:id:cdi-teshima:20160428164800p:plain

拡大していくと、読める文字列が見つかりました!

このため、このピンからはデバッグログが出てることが分かりました。

他にも、ロジック・アナライザでは通信速度や通信方式も解析できます。

f:id:cdi-teshima:20160428164824p:plain

そこで、 秋月電子で購入した通信モジュールを接続してみると・・・

秋月電子通商 FT232RL USBシリアル変換モジュール

http://akizukidenshi.com/catalog/g/gK-01977/

f:id:cdi-teshima:20160428164839p:plain

ログが取得できました!

更にシリアルコンソールを眺めていると・・・

f:id:cdi-teshima:20160428164851p:plain

ログインするためのプロンプトが出てきました。

試しに root/password を入力してみましたが、間違っているようです。

簡単な辞書攻撃をしてみましたが、うまくいきません。

・・・うーむ。

ハッシュ化されている可能性もありますが、正しいパスワード

または認証情報は、間違いなくこの機器の中に保存されているはずですよね。

そこで、次はフラッシュメモリを吸い出します。

■フラッシュメモリの吸い出し

通常の診断ではROMライタを使用しますが、

今回は技術研究を兼ねて Bus Pirateを使って吸い出します。

f:id:cdi-teshima:20160422171315j:plain

フラッシュメモリを剥がします。

温度調節機能付きのはんだごてを使うと、

基板のプリントパターンを傷つけることなく綺麗にはんだを取れます。

はんだ吸い取り線のヤニで茶色くなっていますが、

イソプロピルアルコールで拭うと綺麗に落ちます。(=病院の消毒液)

f:id:cdi-teshima:20160428165039j:plain

データシートから ピンアサインを確認します。

f:id:cdi-teshima:20160428165051j:plain

Bus Piratesと接続します。

f:id:cdi-teshima:20160428165102j:plain
f:id:cdi-teshima:20160428165119j:plain

データシートを見ると、読み出しコマンドは 0x03 です。

読み出しコマンド 0x03 を送った後に

アドレスを 24ビット分送って指定するようなので

先頭の 0x000000 を指定しました。

SPI>{ 0x03 0 0 0

/CS ENABLED

WRITE: 0x03 READ: 0x00

WRITE: 0x00 READ: 0x00

WRITE: 0x00 READ: 0x00

WRITE: 0x00 READ: 0x00

まずは 32KB 読むことに成功!

SPI>r:32768

READ: 0x10 0x00 0x01 0x03 0x24 0x1A 0x00 0x00 0x10 0x00 0x02.....

以後、フラッシュメモリの中身をずっと読み、

バイナリに固めたのがこちら!

f:id:cdi-teshima:20160428165212j:plain

吸い出したフラッシュメモリの解析は次の記事に記載します。

BusPiratesでの読み取り時、データが稀にビット反転を起こしているため

後ほど、この吸い出したイメージは壊れていることが分かりました・・・。

今回は社内での実験とノウハウ蓄積を兼ねているため BusPiratesを使用しましたが

実際の診断では ROMライタを使用し、読み出した情報が正確かどうか確認しています。

今回見つかった情報のまとめ

今回のターゲットは産業用機器では無いため、堅牢なつくりではありません。

見つかった情報からは、以下のような攻撃が可能と思われます。

デバッグログが取得可能

全て開示することはできませんでしたが、起動時には様々なログが出力されました。

中には、フラッシュメモリのパーティションやファイルシステムに関わる情報も存在しました。

攻撃者にとっては有利となります。

フラッシュメモリの内容が暗号化されていない

内容やパーティションがはっきりと分かりました。

改ざんしたファームウェアを書きこむことで、攻撃者は任意のコードを実行させることが可能です。

ログインプロンプトが存在

IDとパスワードさえ判明していれば、機器を制御可能になります。

また、認証に際して失敗可能な回数が制限されていませんでした。

総当たり攻撃を試すことが可能です。

次回の記事の紹介をします

・吸い出したフラッシュメモリの解析

・公式サイトで配布されているFWの解析

・JTAGデバッガを繋いでみる

・工具の紹介

つづく!

株式会社サイバーディフェンス研究所 技術部 手島

© 2016 - 2024 DARK MATTER / Built with Hugo / テーマ StackJimmy によって設計されています。