attacking-hardware-interfaces について
組み込み機器を対象とする、許可済みの物理セキュリティ評価向けスキルです。基板インターフェースの特定、ファームウェア取得やデバッグアクセス、安全起動とサブGHzリプレイの評価を扱います。
主な機能
- 01UART、JTAG/SWD、フラッシュの特定
- 02UARTやブートローダー経由のコンソールアクセス
- 03SPI/I2Cフラッシュからのファームウェア取得
- 04セキュアブートとヒューズ設定の評価
- 05サブGHzリプレイ可能性の調査
活用シーン
- 01物理アクセス可能な組み込み機器の監査
- 02デバッグポートからのファームウェア取得や制御の確認
- 03セキュアブート回避の可能性評価
- 04ラボでリモコンの固定コードとローリングコードを判別
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ trilwu/ secskills --skill attacking-hardware-interfacesインストール後、Claude Code で/attacking-hardware-interfacesを入力して読み込まれたか確認します。
詳細
ハードウェアインターフェースへの攻撃
物理的にアクセスできると状況は一変します。ベンダーが非公開だと考えていたデバッグポート、フラッシュチップ、ブートプロセスに、すべてアクセスできるようになります。基板上のインターフェースを見つけ、それを使ってシェルにアクセスするかファームウェアをダンプし、デバイスのセキュアブートやRF設計が実際に堅牢かどうかを判断します。ここでの作業のほとんどは、デバイスを手元に用意し、分解の許可を得ている必要があります。
使用する場面
- 組み込みデバイスやPCBに物理的にアクセスでき、デバッグ/シリアル/フラッシュのインターフェースを見つける必要がある場合
- UARTコンソールやrootシェルへのアクセス、ブートローダーの中断、JTAG/SWD経由でのCPU停止
- 分析用にSPI/I2Cフラッシュチップからファームウェアをダンプする場合
- セキュアブート/信頼の連鎖の設計について、バイパス可能性をトリアージする場合
- ラボでサブGHz RFリプレイの可能性(固定コードかローリングコードか)を調べる場合
使用しない場面
- すでにダンプしたファームウェアの分析 — 抽出、ファイルシステムのカービング、バイナリー分析には
analyzing-firmware-imagesを使います。このスキルはデバイスからバイト列を取り出し、そちらに引き渡します。 - Wi-Fi攻撃 —
attacking-wireless-networks。 - Bluetooth/BLEおよびNFC/RFIDに特化した攻撃 —
attacking-bluetooth-nfc。 - デバイスから取り出した特定のバイナリーのリバース —
analyzing-binaries。
インターフェースを見つける
基板には、ラベルのないテストパッドやヘッダーを通じて、必要以上のものが露出していることがあります。
- UART。 最も一般的な成果はシリアルコンソールで、多くの場合、ブートローダーのプロンプトかrootシェルです。マルチメーターとロジックアナライザーで4本のライン(TX、RX、GND、VCC)を特定し、USB-TTLアダプター(FTDI/CP2102)を接続して、
screen/minicom/picocomでコンソールを開きます。ボーレートが明らかでない場合は検出します(115200が一般的です)。 - JTAG / SWD。 完全なデバッグアクセスが可能になり、CPUの停止、メモリーやレジスターの読み書き、ファームウェアのダンプ、パッチ適用ができます。ピン配置を特定し(JTAGulatorで総当たりできます)、アダプター(Bus Pirate、J-Link、Black Magic Probe)とOpenOCDを使って接続します。
- SPI / I2Cフラッシュ。 ファームウェアが外部フラッシュチップに保存されていれば、直接読み取れます。SOIC8テストクリップを装着し、CH341AまたはBus Pirate経由でflashromを使って、基板に実装したまま、またはチップを取り外してダンプします。
- ロジックアナライザー(Saleae、または安価なハードウェアとsigrok/PulseViewの組み合わせ)を使うと、プロトコルやピン配置が不明な場合に、上記のいずれかを特定してデコードできます。
インターフェースをアクセス手段に変える
- UART → シェル。 多くのデバイスは、rootシェルまたは認証が必要なコンソールに直接移行します。そうでない場合は、ブートローダーを中断し(U-Bootではキー入力を受け付けることがよくあります)、カーネルコマンドラインを変更します。シングルユーザーモードでの起動やシェルの起動(
init=/bin/sh)は、頻繁に見られる影響の大きいバイパス方法です。 - JTAG → ファームウェアと制御。 フラッシュ/RAMを停止してダンプし、シークレットを読み取るか、チェックをパッチします。製品でJTAGが有効なままになっていると、デバイスのソフトウェア保護が完全に破られます。
- フラッシュダンプ → ファームウェア。 SPIダンプはそのままファームウェアイメージです。抽出と分析のために
analyzing-firmware-imagesに渡します。この方法ならUARTとJTAGがロックされていても機能します。
セキュアブートとフォールトインジェクション
信頼の連鎖が実際に維持されているかを判断します。
- 信頼の連鎖。 ROMがブートローダーを検証し、ブートローダーがカーネルを検証する、というように続きます。多くの場合、破綻の原因は未検証のリンクです。署名のないステージ、デバッグ経路、またはスキップ可能なチェックなどが該当します。
- ヒューズ/ロックビット。 製品版でJTAG無効化ヒューズやセキュアブートヒューズが実際に焼き切られているかは、見落とされがちな点です。ヒューズが焼き切られていなければ、デバッグポートが再び使えるようになります。
- フォールトインジェクション(グリッチング)。 電圧またはクロックのグリッチ(ChipWhispererクラスのツールを使用)によって、特定の命令で署名チェックや比較処理をスキップできる場合があります。これは高度な手法であり、正しく実装されたセキュアブートを突破する唯一の手段となることも少なくありません。確実な結果が得られるとは限らないため、実現可能性調査として範囲を定めてください。
RF リプレイの実現可能性(SDR)
サブGHz無線(315/433/868/915 MHzなどのISM帯を使用するリモコン、センサー、アラーム)の場合:
- RTL-SDR(受信専用)とUniversal Radio HackerまたはGNU Radioを使って受信・解析します。信号をキャプチャし、変調方式と符号化方式を特定します。
- **セキュリティ上の論点は、固定コードかローリングコードかです。**固定コードは簡単にリプレイできますが、ローリングコード(KeeLoq方式など)はボタンを押すたびに変化するため、単純なリプレイに耐性があります。対象機器がどちらを使用しているかを特定することが、調査結果となります。
- 送信(HackRFなどを使用する場合)には法規制が関わります。送信できるのはシールドボックス内/RF隔離実験室内に限られ、免許を受けていない周波数帯で電波を送信してはなりません。実際の送信を対象機器だけに限定することはできないため、アクティブなRF作業は実験室での実現可能性調査として位置付けてください。
対象範囲と許可
このスキルは、所有しているデバイス、または開封・改造する明示的な許可を得ているデバイスを対象とします。ハードウェアの開封は破壊を伴う可能性があり、所有者が重視する前提を損なうこともあるため、書面で対象範囲に含めてください。特に注意すべき点は2つあります。
- **RF送信は規制されています。**受信は一般に受動的ですが、免許が必要な帯域や安全上重要な帯域での送信は、法律上の問題であると同時に安全上の問題でもあります。アクティブなRF作業はシールドされた実験室内で行い、スペクトルに関する法律を交渉の余地のない制約として扱ってください。
- **物理的な改造によってデバイスが起動不能になる可能性があります。**チップオフ、グリッチング、ブートローダーの変更は、元に戻せない場合があります。作業を始める前に、所有者がその個体についてリスクを受け入れることを確認してください。
退けるべき合理化
- **「ラベル付きのデバッグヘッダーがないので、デバッグアクセスはできない。」**UARTやJTAGは、ラベルのないテストパッドに設けられていることがよくあります。インターフェースがないと結論付ける前に、マルチメーターとロジックアナライザーで調べてください。
- **「フラッシュが暗号化/ロックされているので、ファームウェアを取得できない。」**ほかの経路を試してください。UARTブートローダー、JTAGの有効化、あるいは未書き込みのヒューズがあれば、ロックされたフラッシュを完全に迂回できることがあります。
- **「セキュアブートが有効なので、チェーンに問題はない。」**有効であることと、完全であることは同じではありません。署名されていない段階、デバッグ経路、未書き込みのヒューズがないか、各段階を確認してください。また、グリッチングによってチェック自体を回避できる場合があります。
- **「リモコンをテストするために送信すればいい。」**電波の送信は規制されており、安全システムに影響を及ぼす可能性があります。アクティブなRF作業はシールドされた実験室内で行うか、評価を受信・解析にとどめてください。
- 「ローリングコードならリプレイは不可能。これで終わり。」本当にローリング方式で、正しく実装されていることを確認してください。固定コードかローリングコードかを特定すること自体が成果物であり、脆弱なローリングコード方式にも固有の問題があります。
参考資料
analyzing-firmware-images— デバイスからダンプしたファームウェアの解析attacking-bluetooth-nfc— BLEおよびNFC/RFIDのRF攻撃対象領域attacking-wireless-networks— Wi-Fianalyzing-binaries— デバイスから取得した特定のバイナリのリバースエンジニアリングmaintaining-engagement-state— 物理アクセスと元に戻せない変更の記録
コメント
Markdown 対応