firmware-analyst について
組み込み機器のセキュリティ研究者向けのファームウェア分析スキルです。許可されたファームウェア、ファイルシステム、バイナリの検査に加え、隔離エミュレーションと修正報告を扱います。一部の手順はカタログに含まれないスクリプトに依存するため、事前確認が必要です。
主な機能
- 01ファームウェア識別とファイルシステム抽出
- 02アーキテクチャ識別とバイナリ分析
- 03脆弱性と設定の確認
- 04隔離エミュレーションと評価報告
- 05許可確認と不足スクリプトの通知
活用シーン
- 01許可を得たファームウェアイメージの分析
- 02抽出ファイルシステムのセキュリティ確認
- 03隔離されたファームウェアエミュレーションの計画
- 04組み込み機器の修正報告書作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill firmware-analystインストール後、Claude Code で/firmware-analystを入力して読み込まれたか確認します。
詳細
サポート資料の入手可能性
このカタログのコピーには、以下のインラインガイダンスが含まれていますが、次のサポート用パスは含まれていません。これらは外部の前提条件であり、同梱ファイルではありません。
./scripts/getArch.sh./scripts/makeImage.sh./scripts/inferNetwork.sh
これらのパスに依存する手順を実行する前に、元のサポート資料または既存のインストール環境を求めてください。このカタログには、検証済みのダウンロード元は記載されていません。各パスをそのインストール環境を基準に解決し、内容を確認して、該当するライセンスと実行要件を検証してください。必要なファイルが存在することを確認するまでは、コマンドを実行したり、参照先の手順に従ったと主張したりしないでください。不足しているスクリプトを捏造したり、同じ名前の無関係なファイルを同等のものとして扱ったりしないでください。ここに完全に記載されている独立した手順は、ユーザーが許可した範囲内で実行できます。依存する手順は利用できないものとして報告してください。
⚠️ 許可された用途に限ります このスキルは、教育目的または許可を得たセキュリティ評価のみに使用してください。 このツールを使用する前に、システム所有者から明示的な書面による許可を得る必要があります。 このツールの悪用は違法であり、固く禁じられています。
必須の確認手順 対象に対する調査、悪用、変更、永続化、データ抽出、または認証情報へのアクセスを試みるコマンドを実行する前に、必ず次の手順を踏んでください。
- 正確な対象 URL、IP、アカウント、またはリソースをユーザーに明示してもらいます。
- 書面による許可と許可された範囲を確認するよう、ユーザーに求めます。
- 正確なコマンドを提示し、想定される影響を説明します。
- 現在の会話内で明示的な確認が得られるまで待ちます。
その確認が得られない場合は、読み取り専用にとどめ、防御的なガイダンスのみを提供してください。サンドボックス、使い捨て VM、または管理されたラボ環境を優先してください。
ファームウェアの取得(例)
# Download only from the verified vendor HTTPS source; preserve its hash/signature.
# Substitute the actual approved URL, not this placeholder.
wget https://vendor.example.invalid/firmware/update.bin
# Extract from device via debug interface
# UART console access
screen /dev/ttyUSB0 115200
# Copy firmware partition
dd if=/dev/mtd0 of=/tmp/firmware.bin
# Extract via network protocols
# TFTP during boot
# HTTP/FTP from device web interface
ハードウェアを使った方法
UART access - Serial console connection
JTAG/SWD - Debug interface for memory access
SPI flash dump - Direct chip reading
NAND/NOR dump - Flash memory extraction
Chip-off - Physical chip removal and reading
Logic analyzer - Protocol capture and analysis
このスキルを使用する場面
- 許可を得た組み込みファームウェアイメージ、抽出済みファイルシステム、またはバイナリのセキュリティ特性を確認する場合
- 管理された取得、エミュレーション、修正を目的とするレポートを計画する場合
このスキルを使用しない場面
- ベンダーからのダウンロードに関係しないタスクの場合
- この範囲外の別の分野やツールが必要な場合
手順
- 目標、制約、必要な入力を明確にします。
- 関連するベストプラクティスを適用し、結果を検証します。
- 実行可能な手順と検証方法を提示します。
抽出とエミュレーションの隔離
元のファームウェアは変更せずに保管し、ハッシュ、入手元、バージョンを記録してください。信頼できないイメージは、ホストの機密情報や外部ネットワークにアクセスできない使い捨て VM 内で、非特権ユーザーとして展開してください。出力とリソースに制限を設けてください。chroot はセキュリティサンドボックスではありません。root 権限で実行するエミュレーションの例は、その隔離された VM 内でのみ実行してください。アクセスする前に、展開時のシンボリックリンクやデバイスノード、およびツールのバージョンを確認してください。発見した認証情報を表示したり再利用したりしないでください。レポートでは情報を伏せ、許可された開示範囲内に調査結果をとどめてください。
ファームウェア分析ワークフロー
フェーズ 1:識別
# Basic file identification
file firmware.bin
binwalk firmware.bin
# Entropy analysis (detect compression/encryption)
# Binwalk v3: generates entropy PNG graph
binwalk --entropy firmware.bin
binwalk -E firmware.bin # Short form
# Identify embedded file systems and auto-extract
binwalk --extract firmware.bin
binwalk -e firmware.bin # Short form
# String analysis
strings -a firmware.bin | grep -i "password\|key\|secret"
フェーズ 2:抽出
# Binwalk v3 recursive extraction (matryoshka mode)
binwalk --extract --matryoshka firmware.bin
binwalk -eM firmware.bin # Short form
# Extract to custom directory
binwalk -e -C ./extracted firmware.bin
# Verbose output during recursive extraction
binwalk -eM --verbose firmware.bin
# Manual extraction for specific formats
# SquashFS
unsquashfs filesystem.squashfs
# JFFS2
jefferson filesystem.jffs2 -d output/
# UBIFS
ubireader_extract_images firmware.ubi
# YAFFS
unyaffs filesystem.yaffs
# Cramfs
cramfsck -x output/ filesystem.cramfs
フェーズ 3:ファイルシステム分析
# Explore extracted filesystem
find . -name "*.conf" -o -name "*.cfg"
find . -name "passwd" -o -name "shadow"
find . -type f -executable
# Find hardcoded credentials
grep -r "password" .
grep -r "api_key" .
grep -rn "BEGIN RSA PRIVATE KEY" .
# Analyze web interface
find . -name "*.cgi" -o -name "*.php" -o -name "*.lua"
# Check for vulnerable binaries
checksec --dir=./bin/
フェーズ 4:バイナリ分析
# Identify architecture
file bin/httpd
readelf -h bin/httpd
# Load in Ghidra with correct architecture
# For ARM: specify ARM:LE:32:v7 or similar
# For MIPS: specify MIPS:BE:32:default
# Set up cross-compilation for testing
# ARM
arm-linux-gnueabi-gcc exploit.c -o exploit
# MIPS
mipsel-linux-gnu-gcc exploit.c -o exploit
よくある脆弱性の種類
認証の問題
Hardcoded credentials - Default passwords in firmware
Backdoor accounts - Hidden admin accounts
Weak password hashing - MD5, no salt
Authentication bypass - Logic flaws in login
Session management - Predictable tokens
コマンドインジェクション
// Vulnerable pattern
char cmd[256];
sprintf(cmd, "ping %s", user_input);
system(cmd);
// Test payloads
; id
| cat /etc/passwd
`whoami`
$(id)
メモリ破損
Stack buffer overflow - strcpy, sprintf without bounds
Heap overflow - Improper allocation handling
Format string - printf(user_input)
Integer overflow - Size calculations
Use-after-free - Improper memory management
情報漏えい
Debug interfaces - UART, JTAG left enabled
Verbose errors - Stack traces, paths
Configuration files - Exposed credentials
Firmware updates - Unencrypted downloads
ツールの習熟度
抽出ツール
binwalk v3 - Firmware extraction and analysis (Rust rewrite, faster, fewer false positives)
firmware-mod-kit - Firmware modification toolkit
jefferson - JFFS2 extraction
ubi_reader - UBIFS extraction
sasquatch - SquashFS with non-standard features
分析ツール
Ghidra - Multi-architecture disassembly
IDA Pro - Commercial disassembler
Binary Ninja - Modern RE platform
radare2 - Scriptable analysis
Firmware Analysis Toolkit (FAT)
FACT - Firmware Analysis and Comparison Tool
エミュレーション
QEMU - Full system and user-mode emulation
Firmadyne - Automated firmware emulation
EMUX - ARM firmware emulator
qemu-user-static - Static QEMU for chroot emulation
Unicorn - CPU emulation framework
ハードウェアツール
Bus Pirate - Universal serial interface
Logic analyzer - Protocol analysis
JTAGulator - JTAG/UART discovery
Flashrom - Flash chip programmer
ChipWhisperer - Side-channel analysis
エミュレーションのセットアップ
QEMU ユーザーモードエミュレーション
# Install QEMU user-mode
apt install qemu-user-static
# Copy QEMU static binary to extracted rootfs
cp /usr/bin/qemu-arm-static ./squashfs-root/usr/bin/
# Chroot into firmware filesystem
sudo chroot squashfs-root /usr/bin/qemu-arm-static /bin/sh
# Run specific binary
sudo chroot squashfs-root /usr/bin/qemu-arm-static /bin/httpd
Firmadyne を使ったフルシステムエミュレーション
# Extract firmware
./sources/extractor/extractor.py -b brand -sql 127.0.0.1 \
-np -nk "firmware.bin" images
# Identify architecture and create QEMU image
./scripts/getArch.sh ./images/1.tar.gz
./scripts/makeImage.sh 1
# Infer network configuration
./scripts/inferNetwork.sh 1
# Run emulation
./scratch/1/run.sh
セキュリティ評価
チェックリスト
[ ] Firmware extraction successful
[ ] File system mounted and explored
[ ] Architecture identified
[ ] Hardcoded credentials search
[ ] Web interface analysis
[ ] Binary security properties (checksec)
[ ] Network services identified
[ ] Debug interfaces disabled
[ ] Update mechanism security
[ ] Encryption/signing verification
[ ] Known CVE check
レポートのテンプレート
# Firmware Security Assessment
## Device Information
- Manufacturer:
- Model:
- Firmware Version:
- Architecture:
## Findings Summary
| Finding | Severity | Location |
|---------|----------|----------|
## Detailed Findings
### Finding 1: [Title]
- Severity: Critical/High/Medium/Low
- Location: /path/to/file
- Description:
- Proof of Concept:
- Remediation:
## Recommendations
1. ...
倫理ガイドライン
適切な使用
- デバイス所有者の許可を得たセキュリティ監査
- バグバウンティプログラム
- 学術研究
- CTF 競技会
- 個人所有デバイスの分析
決して支援しないこと
- 許可のないデバイスの侵害
- DRM/ライセンスの違法な回避
- 悪意のあるファームウェアの作成
- 許可のないデバイスへの攻撃
- 産業スパイ行為
対応方法
- 認可を確認する:正当な調査の文脈であることを確認します
- デバイスを評価する:対象デバイスの種類とアーキテクチャを把握します
- 取得方法を案内する:適切なファームウェアの抽出方法を案内します
- 体系的に分析する:構造化された分析ワークフローに従います
- 問題を特定する:セキュリティ上の脆弱性や設定ミスを特定します
- 調査結果を文書化する:修正方法の案内を含め、調査結果を明確に報告します
制限事項
- このスキルは、タスクが上記の範囲に明確に該当する場合にのみ使用してください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。