昭和48年7月 - Geological Survey of Japan / AIST · 北半球の部分には海は少恋くあってもそれらは孤立 していてつなカミっていない.もっとも大きいものは
Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ-...
Transcript of Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ-...
![Page 1: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/1.jpg)
A story of Research by: Josh”m0nk” Thomas / @m0nk_dot
PacSec 2013
Deeper than Ever Before �Exploring, Subverting, Breaking and Pivoting with NAND Flash Memory...
![Page 2: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/2.jpg)
./whoami�
✤ 設立パートナーおよびチーフ「破壊」オフィサー@ Atredis Partners (www.atredis.com)
✤ ハードウェアリバースエンジニアでセキュリティ�研究者
✤ モバイル/スマートフォーン /組み込みシステム
✤ メッシュネットワークファン
✤ AI、暗号技術とルートキット元開発者
✤ カーネルドライバとハードウェアの境界を好む
[email protected] / @m0nk_dot on twitter
![Page 3: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/3.jpg)
✤ 特定の分野に特化したセキュリティ企業
✤ 高度なハードウェアおよびソフトウェアアセスメントが専門
✤ モバイルと組み込みシステム
✤ 社会的なインフラ
✤ ブラックボックス
✤ 高度なマルウェアおよびルートキットの分析
✤ 職人的な高度な技術とオーダーメードなリサーチ
whois atredis.com�
![Page 4: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/4.jpg)
story arc�
✤ NANDフラッシュの紹介とその防御の考え方について ✤ ハードウェアとソフトウェア視点からのNANDの動作方法 ✤ プロジェクト NandX: 隠ぺいと破壊
✤ 攻撃面の選択 ✤ プロジェクトとソースコードの紹介 ✤ NANDフラッシュにおける防御の考え方とフォレンジック ✤ 隠ぺいからその先へ
✤ プロジェクトBurner: プラットフォームの完全なコントロール ✤ Thank you / Q&A
![Page 5: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/5.jpg)
NANDと �その防御 �
![Page 6: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/6.jpg)
NANDにおける防御の考え方
✤ このプレゼンテーションでは、NANDフラッシュハードウェアの機能上の側面を取り上げる
✤ バグや欠陥ではなく、純粋にハードウェアの機能について
✤ エレガントでコントロールされた故障メカニズムの再利用
✤ このハードウェアの攻撃面を保護できるのは、リエンジニアリングと高度なフォレンジックツールしかない
✤ よりよいツールが必要
![Page 7: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/7.jpg)
NANDの動作 �
![Page 8: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/8.jpg)
注意:�科学は難しい�
![Page 9: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/9.jpg)
NANDの動作: �ハードウェアの概要
✤ バケツ- 技術用語ではないかもしれない
✤ ページ- 通常は512バイト、2048バイト、もしくは 4096バイト
✤ ブロック – 通常は16キロバイトから 512キロバイト
✤ 初期値は1にセットされる (0xFF)
✤ 0にシフトするのは簡単
✤ 1にシフトするのは難しい
![Page 10: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/10.jpg)
NANDの動作: �罠�
✤ 電子の配置は容易
✤ 1個の電子をつかむのは非常に困難
![Page 11: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/11.jpg)
NANDの動作: �データの作成
✤ NANDにデータを書き込むには、配置されている電子を取り除けばよい
✤ 本質的には、0xFFからデータ部分を切り抜く
✤ ファイルを保存する場合は、差分を切り抜くもしくは新しいバージョンを生成すべきかを調べる
✤ このため、フォレンジックは困難に
![Page 12: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/12.jpg)
NANDの動作: �エレガントで�
コントロールされた故障 ✤ ゲートの作成は困難で、しかも壊れやすい
✤ 通常10,000回から100,000回の書き込みで壊れ始める
✤ 摩耗が進むため、摩耗を表面全体に分散させるウェアレべリングを実施する
✤ ウェアレベリングが残すごみによってフォレンジックは困難になる
![Page 13: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/13.jpg)
NANDの動作: �NANDフラッシュの種類
✤ ローNANDフラッシュ
✤ コントローラはすべてソフトウェアによるコントローラ
✤ ハードウェアは単純なストレージにすぎない
✤ マネージドNANDフラッシュ
✤ コントローラはハードウェアに組み込まれている
✤ 組み込みチューリングコントローラ
![Page 14: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/14.jpg)
NANDの動作: �マネージドNANDフラッシュ
![Page 15: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/15.jpg)
NANDの動作: �ソフトウェアとAndroidカーネル
✤ ローNAND = ドライバは複雑に
✤ MMC/eMMC = ドライバはシンプルに
✤ 通常はプロプライエタリ な(非公開の)ウェアレベリングアルゴリズムはハードウェアに組み込まれている
✤ ドライバと無関係に、ハードウェアはシステムとやり取りし、故障メカニズムを明らかにしなければならない
![Page 16: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/16.jpg)
NANDの動作: �MTDメタドライバ
✤ MSM / MTD(Memory Technology Devices) サブシステム
✤ メタドライバのようなもの
✤ Androidのブートパーティションで多用される
✤ 製品によってはすべてのNAND管理に使用
![Page 17: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/17.jpg)
NANDの動作: �システムの構築
![Page 18: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/18.jpg)
NANDの動作: �コントロールされた失敗の�
おさらい ✤ ハードウェアが故障すると、NANDはフラグを立てるだけのレイジーイレースをおこなう
✤ コントローラには読み書き不良の閾値がある
✤ 障害に対応する実装には、誤り訂正符号と 前方誤り訂正による実装がある
![Page 19: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/19.jpg)
NANDの動作: �避けられない失敗
✤ 不良ブロックが検出されると、そのNANDブロックは アウトオブバンドエリア(OOB)と不良ブロックテーブル (BBT)に記録される
✤ そのブロックはアドレス指定システムから消える
✤ 消えてしまったブロックを読めるツールは存在しない
✤ 不良ブロックをもとに戻すツールも存在しない
![Page 20: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/20.jpg)
NANDの動作: �When things go wrong�
✤ システムによっては、BBTを完全にカーネルメモリで管理している (リブート中に「マスタ」としてディスクに書き込まれる)
✤ デュアルページのOOBマーカーをBBTとECCに使うシステムもある (Sony!)
✤ 最初もしくは最後のブロックを全体のBBTとECCに使うシステムもある (アドレス-10と考えてよい)
![Page 21: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/21.jpg)
NANDの動作: �攻撃面の露出
✤ YAFFSなどのファイルシステム
✤ ドライバレベルのMTD
✤ Android / Linuxカーネル
✤ フラッシュトランジション�レイヤー
✤ ハードウェアの組み込みコン�トローラをリバースエンジニ�アリング
✤ ユーザランドにおける不適切なコーディング
![Page 22: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/22.jpg)
プロジェクト NandX: �隠ぺい�
![Page 23: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/23.jpg)
プロジェクト NandX�
✤ 目標:
✤ 問題が発生していない任意のブロックを不良としてマーク(アドレスシステムからそのブロックは削除される)
✤ その不良ブロックに任意のデータを読み書き
✤ Androidカーネルとdd(1)を含む他のツールが読み書きできないことを確認
✤ 予測:
✤ 膨大なハードウェアのリバースエンジニアリングと組み込みコントローラファームウェアのアセスメント
![Page 24: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/24.jpg)
プロジェクトNandX:�第1ステージの現実
✤ 30以上の機種を購入、テスト、返品
✤ ローNANDを探す
✤ オープンソースカーネル
![Page 25: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/25.jpg)
プロジェクトNandX:�すべての携帯を調査
![Page 26: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/26.jpg)
![Page 27: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/27.jpg)
プロジェクトNandX:�Sony Xperia Arc S!�
![Page 28: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/28.jpg)
プロジェクトNandX:�MTDサブシステム
![Page 29: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/29.jpg)
プロジェクトNandX:�APIを変更
✤ 実施するのはAPIを正しくない順序で叩くだけ
✤ 例外はBBTのOOB書き込みだけ
✤ ステップ:
✤ ブロックを1つ選択し、内容を消去
✤ ブロック全体に0xDEADBEEFを書き込む
✤ そのブロックを不良としてマーク ( ソニーの場合、OOBに0x00)
✤ 任意のデータを読み書き
✤ カーネルがクラッシュしリブート
![Page 30: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/30.jpg)
プロジェクトNandX:�デモ
http://youtu.be/AE_oUkKKaBY
![Page 31: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/31.jpg)
プロジェクトNandX:�A disappearing act�
✤ ブロック37が消える
✤ 0xDEADBEEFが書きこまれる
✤ もともとその場所にはAndroidのSettings.app (com.android.settings)があった
✤ ハードウェアでダブルフリーが発生し、�リブートする
![Page 32: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/32.jpg)
証明にはソースコードが欠かせない�
![Page 33: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/33.jpg)
プロジェクトNandX:�主要部分のコード
![Page 34: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/34.jpg)
プロジェクトNandX:�不良ブロックをマークする�
第1ステージ
![Page 35: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/35.jpg)
プロジェクトNandX:�不良ブロックをマークする�
第2ステージ
![Page 36: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/36.jpg)
プロジェクトNandX:�ログの概要
![Page 37: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/37.jpg)
プロジェクトNandX:�詳細なログ
![Page 38: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/38.jpg)
プロジェクトNandX:�最後に
✤ ブロックが不良としてマークされると、現時点でそのブロックを回収できるツールは存在しない
✤ 工場出荷時の設定に戻しても回収できない
✤ 別のROMをフラッシュしても回収できない
✤ dd(1)でもそのブロックはコピーできない
✤ 0xDEADBEEFは完全に永続的な状態で隠ぺい
![Page 39: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/39.jpg)
プロジェクトNandX:�ツールを武器に �
![Page 40: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/40.jpg)
プロジェクトNandX:�隠ぺいにとどまらない可能性
✤ 思考その1:
✤ 目的のデータを削除し、IT部門がデータを消去して廃棄するのを待って、物理的にデータを外部に持ち出す
✤ 思考その 2:
✤ 不良ブロックとしてマークするというのはシステムから完全に削除されるということ...
![Page 41: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/41.jpg)
プロジェクトNandX:�究極の武器
✤ リモートからカーネルモジュールをロードし、物理的なNANDフラッシュのブロックがなくなるまで1ブロックづつ削除
✤ 修復は不可能でリプレースが必須
✤ 携帯電話に限らず、ほぼすべての組み込み機器でNANDが使用されている
✤ SCADA
![Page 42: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/42.jpg)
プロジェクトNandX:�この発表の続きについて
✤ 機会があれば、リサーチ内容をオープンソースに
✤ ベンダの企業秘密や知的財産が含まれるため、常に可能というわけではない
✤ このプロジェクトは100%オープンソースのツールで成り立っているため、このリサーチはリリースが可能だった
✤ すべては次のURLに (かなり長いホワイトペーパーも含む):
✤ https://github.com/monk-dot/NandX
![Page 43: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/43.jpg)
プロジェクトBurner:�隠ぺいの向こうへ �
![Page 44: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/44.jpg)
プロジェクトBurner:�概要
✤ 仮説:
✤ Androidフォーンのカーネルを完全に管理下におくと、電源と電圧を内蔵バッテリからコントロールし、物理的に内蔵ハードウェアを操作できる。そのプロセスをコントロールし、それぞれのコンポーネントをターゲットを想定外の電圧によって運動学的破壊に至らしめることも可能になる
✤ 結果:
✤ 仮説は正しい
![Page 45: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/45.jpg)
プロジェクトBurner:�Androidの電源ハードウェア
✤ バッテリーは生の電力を供給する
✤ USBスタックもシステムに電源を供給する
✤ パワーマネージメントIC(PMIC)が配線上の電圧を配分する
✤ カーネルがPMICを直接管理する
✤ 配線は必ずしもコンデンサや抵抗で保護されているわけでない
![Page 46: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/46.jpg)
プロジェクトBurner:�Androidにおける電圧制御
✤ ドキュメントの場所:
✤ <kernel_source>/Documentation/power/regulator/overview.txt
✤ ドライバをのぞくと、10個以下のCソースおよびヘッダで基板上の電圧フローを管理している
✤ 基盤の種類と無関係に注目すべきは*_regulator.cファイル
![Page 47: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/47.jpg)
プロジェクトBurner:�ターゲット
✤ プロジェクトBurnerがターゲットにしたプラットフォームはSony Xperia Z (yuga)
✤ Qualcommの Snapdragonリファレンスプラットフォームがベースに
✤ NANDコントローラはSDカードコントローラにつながっている
✤ Qualcomm MSM 7X00A SDCCはNANDおよびSDカードの配線をコントロールしている
![Page 48: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/48.jpg)
プロジェクトBurner:�NANDの電圧を上昇させる
project kernel/sony/apq8064/ diff −−git a/arch/arm/mach−msm/board−sony_yuga−regulator.cb/arch/arm/mach−msm/board−sony_yuga−regulator.c
−− RPM_LDO(L5, 0, 1, 0, 2950000, 2950000, NULL, 0, 0),++ RPM_LDO(L5, 0, 1, 0, 5900000, 5900000, NULL, 0, 0), −− RPM_LDO(L6, 0, 1, 0, 2950000, 2950000, NULL, 0, 0), ++ RPM_LDO(L6, 0, 1, 0, 5900000, 5900000, NULL, 0, 0),
![Page 49: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/49.jpg)
プロジェクトBurner:� NANDの電圧を上昇させる
✤ 高電圧によって:
✤ NANDの読み込みは転送過程で破壊
✤ NANDの書き込みはNANDハードウェアを破壊
✤ PMICの値は保持されたままなので、デバイスをリブートするとブートローダがカーネルを読み込む際にNANDすべてを破壊
![Page 50: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/50.jpg)
プロジェクトBurner:�NANDの電圧を下げる
project kernel/sony/apq8064/ diff −−git a/arch/arm/mach−msm/board−sony_yuga−regulator.cb/arch/arm/mach−msm/board−sony_yuga−regulator.c
−− RPM_LDO(L5, 0, 1, 0, 2950000, 2950000, NULL, 0, 0),++ RPM_LDO(L5, 0, 1, 0, 1250000, 1250000, NULL, 0, 0), −− RPM_LDO(L6, 0, 1, 0, 2950000, 2950000, NULL, 0, 0), ++ RPM_LDO(L6, 0, 1, 0, 1250000, 1250000, NULL, 0, 0),
![Page 51: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/51.jpg)
プロジェクトBurner:�NANDの電圧を下げる
✤ 低い電圧によって:
✤ ほとんどのNAND読み込みは転送過程でデータが破壊
✤ NAND書き込みはハードウェアレベルで失敗
✤ このテクニックでは携帯電話をただちにフリーズさせ、NANDへの書き込みもすべて失敗に終わり、二度と起動しなくなる
![Page 52: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/52.jpg)
プロジェクトBurner:�温度管理�
![Page 53: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/53.jpg)
プロジェクトBurner:�温度管理
✤ 想定外の電圧をかける場合、温度管理デーモンのthermaldに注意が必要
✤ このデーモンを停止すべきではなく、単純に無効化する必要がある
✤ これについては別のプレゼンテーションで
![Page 54: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/54.jpg)
最後に�
![Page 55: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/55.jpg)
余談: マルウェアとルートキット
✤ マルウェアはつまらなく、資本主義的な目的で作られていると思われがち
✤ 非常に高度かつ高価なツールに目を向けると、こうした見方は一変する
✤ この分野における高度な研究をさらに推進し、拡大するよう訴えたい。オープンな手法で研究する研究者の数はまだ少ない
✤ オープンソース化した理由は、このリサーチ結果を武器として使えないようにするのが目的
![Page 56: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/56.jpg)
ご質問は?�
![Page 57: Deeper than Ever Before - PacSec · nandの動作: ハードウェアの概要 バケツ- 技術用語ではないかもしれ ない ページ- 通常は512バイト、2048バ イト、もしくは](https://reader033.fdocuments.net/reader033/viewer/2022041510/5e2761059d707a1b6b2970cd/html5/thumbnails/57.jpg)
Thank You - @m0nk_dot�