世界を動かす技術を、日本語で。

HDDファームウェアハッキング

概要

  • Xbox 360向けエクスプロイト開発の一環としてHDDファームウェア改造を試みた記録
  • Western DigitalやSamsungなど複数ブランドのファームウェア解析・書き換え手法
  • ファームウェアダンプ、IDAによる解析、独自ローダーやデコード関数の実装
  • HDD/SSDの改造難易度やリバースエンジニアリングの課題整理
  • 今回はAI未使用、次回以降AI活用事例を紹介予定

Xbox 360エクスプロイト開発とHDDファームウェア改造

  • Xbox 360エクスプロイト開発過程 でHDDのファームウェア改造が必要になった経緯
  • レースコンディション脆弱性 の発動タイミング調整のため、特定セクタ読み込み時に数百msの遅延をファームウェア側で挿入する発想
  • HDD/SSDのファームウェア改造に関する過去記事やフォーラム情報の調査実施
    • Western Digital(WD)やHitachi、Samsungなど、Xbox 360でよく使われるモデルを中心に選定
  • Western Digitalドライブは ベンダーバックドアコマンド による低レベルアクセスが可能
  • Samsung SSDはLenovo公式サイトからファームウェアアップデートユーティリティを入手

ファームウェア取得と解析手順

  • ファームウェアダンプの収集
    • HDD GuruフォーラムやPC-3000(業務用データ復旧ツール)経由でダンプ入手
    • Samsung HM020GIはTwitter経由で協力者からダンプ取得
    • Samsung PM871aはLenovoサイトのアップデートユーティリティからファームウェアと書き込みコマンド情報を抽出
  • IDAでのファームウェア解析
    • WDドライブ:ファームウェアイメージはセクションヘッダー+データブロック構成、各部に8bitチェックサム
    • 独自IDAローダープラグインを作成し、圧縮済みセクションの展開に対応
      • 圧縮アルゴリズムはLZHUFベースだが、N定数やランレングス計算に独自変更あり
    • ARMコア1基のみ搭載で解析容易
  • Samsung PM871aのファームウェアデコード
    • ファームウェアはビット操作による独自オブフスケーション
    • アップデートユーティリティからデコード関数をリバースエンジニアリングし、ファームウェア全体の可読化に成功
    • ファイル先頭に暗号署名らしきデータあり、他バージョンとの比較で強力な公開鍵署名ではないと推測

ファームウェア改造・書き戻しの課題

  • 改造工程の流れ
    • ファームウェアダンプ取得
    • 圧縮・暗号化解除しIDAでロード&解析
    • 読み込みコマンド(DMA READ EXTなど)のハンドラ特定
    • 特定セクタ読み込み時の遅延パッチ作成
    • 改造ファームウェアの書き戻し(専用コマンドやフラッシュROM書き換え)
  • 失敗要因や注意点
    • 書き戻し手段がなければ解析の時点でストップ
    • HDD/SSDごとに構造や保護機構が大きく異なり、情報の断片化も顕著
    • 一部モデルは圧縮・暗号化・署名など複数の障壁あり

HDD/SSDファームウェア改造の面白さと難しさ

  • 攻撃者やペンテスター視点での興味深さ
    • ファームウェア改造は高難度だが、成功すれば攻撃面や検証面で大きなインパクト
  • 組み込み機器リバースエンジニアリングの時間的コスト
    • 内部構造の複雑さ・情報不足・独自実装の多さが大きな障壁
  • 今後の展望
    • 今回はAI未使用、次回以降はAIによる未知ISAの解析やデバッグ支援事例も紹介予定

次回以降の内容やAI活用方法については、別記事で整理予定。

Hackerたちの意見

このアーティクルは、面接のために「変な」ハードドライブを送ってくるあの会社(Red Balloon)でインタビューを受ける人には役立つかもね。今もそのドライブが家にあるけど、試験シーズンに届いたから、あんまり見てないんだよね。でも、わざわざドライブとSATA-USBアダプタを送ってきたってことは、何か意味があるはず。もしお金持ちがいたら、そのままデータ復旧ラボに送って、プラッタを未改造モデルに交換してもらって、生データのイメージを取ってもらうのも面白いかも。(もしかしたら、鍵はドライブのファームウェアチップの中に隠れてるのかも?)

(無関係な)シェアありがとう!ドライブ復旧のアイデアについてはコメントしないけど、この記事の基本的な内容はハードドライブチャレンジに関係してるよ。ただ、実際のCTFのマルチステップ解法はかなり違うんだ。ハードドライブをハッキングするのに興味があるなら、リバースエンジニアやセキュリティリサーチャーを募集中だよ!詳細はwhoishiringの投稿やキャリアページをチェックしてね: - https://news.ycombinator.com/item?id=47977643 - https://redballoonsecurity.com/careers/ 申し込むときはHacker Newsのことも言ってね。

俺もまだ持ってるよ!マイクロコントローラーと話してファームウェアをダンプできたけど、壊さずにコードを自由に実行する方法がわからなかったんだ。

HDDのファームウェアをハッキングすることについての、すごく良い記事シリーズもあるよ。/etc/shadowのハッシュ化されたパスワードの修正についてね: https://spritesmods.com/?art=hddhack

おめでとう、OP!NSAで働けるかもね: * https://www.cbc.ca/news/science/nsa-hid-spying-software-in-h... * https://www.wired.com/2015/02/nsa-firmware-hacking/ :)

それ、罰みたいだね。超過剰に警戒する仕事文化で、外部の人たちからも信頼されてない感じ。

関連で、誰かがSamsungの840 EVO SSDのファームウェアを逆コンパイルしたんだよね。その後、Samsungはそれを暗号化し始めたけど: http://www2.futureware.at/~philipp/ssd/TheMissingManual.pdf いろんなSamsungドライブがクソファームウェアのせいで悪い状態になってるのをどうにかしようとして見つけたんだ。元々、eBayでのベンダーブランドのSamsungドライブについて警告した塩辛い投稿はここにあるよ: https://news.ycombinator.com/item?id=37165189

これは独立したブログ記事とHNの投稿に値するね。SSDの価格が2倍から4倍になったから、今は中古を買う人が増えて、痛い目に遭うかもしれない。ちなみに、これを取り上げてくれてありがとう!

サムスンは、数年前に持ってた信頼性をすっかり失っちゃったね。他の製品もゴミみたいなもんだし(冷蔵庫、洗濯機…)、カスタマーサービスも最悪だよ(彼らは僕のMP3プレーヤーとスマホを「修理」したけど、返ってきたときにはもっと壊れてたし、サムスンが買収したスタートアップで働いてた時に、内部の様子も見たことがある)。サムスンの冷蔵庫が数年で壊れたり、冷媒が足りなくて動いてるときに大きな音を立てたり、「持ち方が悪い」とか言われたりする人もたくさん知ってる。こういう経験から、サムスン製品は絶対に買わないようにしてる。

この状況でドライブがあるかどうか、どうやって確認すればいいの?

これはxb360だからIDEじゃなくてSATAなんだけど、似たような感じで、リアルシステムで敵対的なHDDコントローラーをいじるためにPicoIDEが楽しみなんだ。

SATA_IDEブリッジの後ろにpicoideを置くこともできるよ。

ハードウェアベンダーがやってる難読化って、ほんとに些細なことだよね。なんでわざわざやるんだろう?今のベンダーの一つは、Linux用のSSDファームウェアアップデートユーティリティを提供してて、ライブUSBでファームウェアを解読して、ディスクに書き出してからアップロードするんだ。だから、seccompを使ってrmdirシステムコールを失敗させれば、アップデータや解読コードを逆アセンブルしなくても解読版が手に入る。SSDメーカーがlvfs/fwupdに参加しないせいで、ドライブがファームウェアアップデートなしでブリックするリスクが高いって愚痴った自分のコメントを削除したよ。

なんでわざわざやるんだろう だから、彼らのコードを公開し始めると、DMCAで訴えられるんだよ。

2026年になっても、ベンダーがトリビアルな難読化のファームウェアを出荷してるのは驚きだね。データ復旧ショップがどれだけこれを逆アセンブルしてるのか、でも公表してないんだろうな。

公開しないのが、彼らが{{{暗号化}}}する理由なんだよね。公開し始めたら、すぐにDMCA通知が来る可能性が高いよ。

デバイスのファームウェアをアップデートするのが好きなんだ。うまく動いてるのにリスクを冒すのはあまり勧められないけど、ちょっとした速度向上を想像するのが楽しいんだよね。金曜日にやるのが好きで、「ファームウェアフライデー」って呼んでる。掃除機、ハードドライブ、マザーボード、IPカメラ、Apple IIGSの拡張カード、Bluetoothスケール、などなど。

「うまくいってるなら、わざわざリスクを冒す必要はないってよく言われるけど、もし予想以上の混乱が欲しいなら…」

これをどうやって二回アップボートできるの?

研究に関わっている人なら、HDDやSSD、ハードウェアやソフトウェアのハッキングに興味がなくても大丈夫。ここに大事なことが書いてあるよ: 「最初のアイデアの一つは、特定のセクターをドライブから読み取るときに数百ミリ秒の遅延を導入するためにHDDのファームウェアを改造することだった。これで、エクスプロイトが成功するための十分な時間が得られるはずだった。」 でも、後になって、レースコンディション攻撃を調整する他の方法を見つけて、結局HDDのファームウェアを改造する必要がなかったんだ。その結果、素晴らしいマイルストーンを記録した論文ができたけど、最初は全く意図していなかったし、テーマも初めの目標とは全然関係ないものだった。もしあなたの研究リーダーや技術がこんな冒険を許さないなら、別の道を探した方がいいかもね。