SKILL.md
ファームウェア解析スキル
ファームウェアファイルを完全に解析し、TAの抽出から詳細分析までを行います。
実行フロー
Phase 1: ファームウェア情報収集
# ファイル基本情報
file <firmware_path>
ls -lh <firmware_path>
# バイナリ構造確認
binwalk <firmware_path>
Phase 2: TA抽出
# ファームウェアからTA抽出
ta-inspector extract <firmware_path> --vendor <vendor> --model <model>
結果確認:
- 抽出されたTAの数
- 各TAのTEE種別
- UUID(あれば)
Phase 3: 抽出結果の確認
# 抽出されたTAの一覧
ta-inspector list --limit 20
# 統計情報
ta-inspector stats
Phase 4: TA詳細分析(Ghidra連携)
抽出されたTAをGhidraで解析:
- 基本情報取得
- mcpghidralistexports - エントリポイント確認 - mcpghidralistimports - TEE API使用状況 - mcpghidralist_strings - 興味深い文字列
- エントリポイント解析
OP-TEE TAの場合、以下の関数を探す: - TACreateEntryPoint - TAOpenSessionEntryPoint - TAInvokeCommandEntryPoint - TACloseSessionEntryPoint - TA_DestroyEntryPoint
- 暗号処理の特定
- mcpghidrasearchfunctionsby_name で "Cipher", "Digest", "Key" 等を検索 - TEE API呼び出しを追跡
Phase 5: レポート生成
以下の形式でレポートを作成:
# ファームウェア解析レポート
## 基本情報
- ファイル: <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 (セキュアストレージ)
- **主要機能**: <推定される機能>
- **セキュリティ懸念**: <あれば>
## 所見
<全体的な分析結果>
使用例
/analyze-firmware ./firmware/RT-AX88U_3.0.0.4.bin --vendor ASUS --model RT-AX88U
注意事項
- 大きなファームウェアは展開に時間がかかる
- Ghidra解析にはGhidraでファイルを開いている必要がある
- 暗号化されたTAは詳細解析が制限される