AgentSkillsCN

analyze-firmware

全面解析固件,从提取、识别、Ghidra 解析到生成报告,全程实现自动化。

SKILL.md
--- frontmatter
name: analyze-firmware
description: ファームウェアを完全に解析します。抽出→識別→Ghidra解析→レポート生成まで自動化。
allowed-tools: Read, Bash, Grep, Glob

ファームウェア解析スキル

ファームウェアファイルを完全に解析し、TAの抽出から詳細分析までを行います。

実行フロー

Phase 1: ファームウェア情報収集

bash
# ファイル基本情報
file <firmware_path>
ls -lh <firmware_path>

# バイナリ構造確認
binwalk <firmware_path>

Phase 2: TA抽出

bash
# ファームウェアからTA抽出
ta-inspector extract <firmware_path> --vendor <vendor> --model <model>

結果確認:

  • 抽出されたTAの数
  • 各TAのTEE種別
  • UUID(あれば)

Phase 3: 抽出結果の確認

bash
# 抽出されたTAの一覧
ta-inspector list --limit 20

# 統計情報
ta-inspector stats

Phase 4: TA詳細分析(Ghidra連携)

抽出されたTAをGhidraで解析:

  1. 基本情報取得

    • mcp__ghidra__list_exports - エントリポイント確認
    • mcp__ghidra__list_imports - TEE API使用状況
    • mcp__ghidra__list_strings - 興味深い文字列
  2. エントリポイント解析 OP-TEE TAの場合、以下の関数を探す:

    • TA_CreateEntryPoint
    • TA_OpenSessionEntryPoint
    • TA_InvokeCommandEntryPoint
    • TA_CloseSessionEntryPoint
    • TA_DestroyEntryPoint
  3. 暗号処理の特定

    • mcp__ghidra__search_functions_by_name で "Cipher", "Digest", "Key" 等を検索
    • TEE API呼び出しを追跡

Phase 5: レポート生成

以下の形式でレポートを作成:

markdown
# ファームウェア解析レポート

## 基本情報
- ファイル: <path>
- ベンダー: <vendor>
- モデル: <model>
- サイズ: <size>

## 抽出結果
- 抽出TA数: X個
- TEE種別内訳:
  - OP-TEE: X個
  - QSEE: Y個
  - Kinibi: Z個

## TA一覧
| # | TEE | UUID | 暗号化 | サイズ |
|---|-----|------|--------|--------|
| 1 | OP-TEE | xxxx-... | No | 32KB |

## 詳細分析(各TAについて)

### TA 1: <uuid>
- **エントリポイント**: 検出済み/未検出
- **TEE API使用**:
  - TEE_AllocateOperation (暗号処理)
  - TEE_OpenPersistentObject (セキュアストレージ)
- **主要機能**: <推定される機能>
- **セキュリティ懸念**: <あれば>

## 所見
<全体的な分析結果>

使用例

code
/analyze-firmware ./firmware/RT-AX88U_3.0.0.4.bin --vendor ASUS --model RT-AX88U

注意事項

  • 大きなファームウェアは展開に時間がかかる
  • Ghidra解析にはGhidraでファイルを開いている必要がある
  • 暗号化されたTAは詳細解析が制限される