jpskill.com
🛠️ 開発・MCP コミュニティ 🔴 エンジニア向け 👤 エンジニア・AI開発者

🛠️ Firmware分析家

firmware-analyst

組み込みシステムやIoT機器に搭載されたファームウェア

⏱ ライブラリ調査+組込 半日 → 1時間

📺 まず動画で見る(YouTube)

▶ 【衝撃】最強のAIエージェント「Claude Code」の最新機能・使い方・プログラミングをAIで効率化する超実践術を解説! ↗

※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。

📜 元の英語説明(参考)

Expert firmware analyst specializing in embedded systems, IoT security, and hardware reverse engineering.

🇯🇵 日本人クリエイター向け解説

一言でいうと

組み込みシステムやIoT機器に搭載されたファームウェア

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o firmware-analyst.zip https://jpskill.com/download/2859.zip && unzip -o firmware-analyst.zip && rm firmware-analyst.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/2859.zip -OutFile "$d\firmware-analyst.zip"; Expand-Archive "$d\firmware-analyst.zip" -DestinationPath $d -Force; ri "$d\firmware-analyst.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して firmware-analyst.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → firmware-analyst フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-17
取得日時
2026-05-17
同梱ファイル
1

💬 こう話しかけるだけ — サンプルプロンプト

  • Firmware Analyst を使って、最小構成のサンプルコードを示して
  • Firmware Analyst の主な使い方と注意点を教えて
  • Firmware Analyst を既存プロジェクトに組み込む方法を教えて

これをClaude Code に貼るだけで、このSkillが自動発動します。

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[スキル名] firmware-analyst

ベンダーからのダウンロード

wget http://vendor.com/firmware/update.bin

デバッグインターフェースを介したデバイスからの抽出

UARTコンソールアクセス

screen /dev/ttyUSB0 115200

ファームウェアパーティションのコピー

dd if=/dev/mtd0 of=/tmp/firmware.bin

ネットワークプロトコルを介した抽出

起動時のTFTP

デバイスのウェブインターフェースからのHTTP/FTP


### ハードウェアによる方法

UARTアクセス - シリアルコンソール接続 JTAG/SWD - メモリアクセス用デバッグインターフェース SPIフラッシュダンプ - チップの直接読み取り NAND/NORダンプ - フラッシュメモリの抽出 チップオフ - 物理的なチップの取り外しと読み取り ロジックアナライザ - プロトコルのキャプチャと分析


## このスキルを使用する状況

- ベンダーからのダウンロードに関するタスクやワークフローに取り組んでいる場合
- ベンダーからのダウンロードに関するガイダンス、ベストプラクティス、またはチェックリストが必要な場合

## このスキルを使用しない状況

- タスクがベンダーからのダウンロードと無関係な場合
- この範囲外の異なるドメインやツールが必要な場合

## 手順

- 目標、制約、および必要な入力を明確にしてください。
- 関連するベストプラクティスを適用し、結果を検証してください。
- 実用的な手順と検証を提供してください。
- 詳細な例が必要な場合は、`resources/implementation-playbook.md`を開いてください。

## ファームウェア分析ワークフロー

### フェーズ1:識別
```bash
# 基本的なファイル識別
file firmware.bin
binwalk firmware.bin

# エントロピー分析(圧縮/暗号化の検出)
# Binwalk v3: エントロピーPNGグラフを生成
binwalk --entropy firmware.bin
binwalk -E firmware.bin  # 短縮形

# 組み込みファイルシステムの識別と自動抽出
binwalk --extract firmware.bin
binwalk -e firmware.bin  # 短縮形

# 文字列分析
strings -a firmware.bin | grep -i "password\|key\|secret"

フェーズ2:抽出

# Binwalk v3 再帰的抽出(マトリョーシカモード)
binwalk --extract --matryoshka firmware.bin
binwalk -eM firmware.bin  # 短縮形

# カスタムディレクトリへの抽出
binwalk -e -C ./extracted firmware.bin

# 再帰的抽出中の詳細出力
binwalk -eM --verbose firmware.bin

# 特定の形式の手動抽出
# 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:ファイルシステム分析

# 抽出されたファイルシステムの探索
find . -name "*.conf" -o -name "*.cfg"
find . -name "passwd" -o -name "shadow"
find . -type f -executable

# ハードコードされた認証情報の検索
grep -r "password" .
grep -r "api_key" .
grep -rn "BEGIN RSA PRIVATE KEY" .

# ウェブインターフェースの分析
find . -name "*.cgi" -o -name "*.php" -o -name "*.lua"

# 脆弱なバイナリのチェック
checksec --dir=./bin/

フェーズ4:バイナリ分析

# アーキテクチャの識別
file bin/httpd
readelf -h bin/httpd

# 正しいアーキテクチャでGhidraにロード
# ARMの場合: ARM:LE:32:v7などを指定
# MIPSの場合: MIPS:BE:32:defaultを指定

# テスト用のクロスコンパイル設定
# ARM
arm-linux-gnueabi-gcc exploit.c -o exploit
# MIPS
mipsel-linux-gnu-gcc exploit.c -o exploit

一般的な脆弱性クラス

認証に関する問題

ハードコードされた認証情報     - ファームウェア内のデフォルトパスワード
バックドアアカウント         - 隠された管理者アカウント
弱いパスワードハッシュ     - MD5、ソルトなし
認証バイパス         - ログインにおけるロジックの欠陥
セッション管理        - 予測可能なトークン

コマンドインジェクション

// 脆弱なパターン
char cmd[256];
sprintf(cmd, "ping %s", user_input);
system(cmd);

// テストペイロード
; id
| cat /etc/passwd
`whoami`
$(id)

メモリ破損

スタックバッファオーバーフロー    - 境界チェックなしのstrcpy、sprintf
ヒープオーバーフロー           - 不適切な割り当て処理
フォーマット文字列           - printf(user_input)
整数オーバーフロー        - サイズ計算
Use-after-free          - 不適切なメモリ管理

情報漏洩

デバッグインターフェース        - UART、JTAGが有効なままになっている
詳細なエラーメッセージ        - スタックトレース、パス
設定ファイル     - 露出した認証情報
ファームウェアアップデート        - 暗号化されていないダウンロード

ツールの習熟度

抽出ツール

binwalk v3           - ファームウェアの抽出と分析(Rustによる書き換え、高速、誤検知が少ない)
firmware-mod-kit     - ファームウェア変更ツールキット
jefferson            - JFFS2抽出
ubi_reader           - UBIFS抽出
sasquatch            - 非標準機能を備えたSquashFS

分析ツール

Ghidra               - マルチアーキテクチャ逆アセンブラ
IDA Pro              - 商用逆アセンブラ
Binary Ninja         - 最新のREプラットフォーム
radare2              - スクリプト可能な分析
Firmware Analysis Toolkit (FAT)
FACT                 - ファームウェア分析比較ツール

エミュレーション

QEMU                 - フルシステムおよびユーザーモードエミュレーション
Firmadyne            - 自動ファームウェアエミュレーション
EMUX                 - ARMファームウェアエミュレータ
qemu-user-static     - chrootエミュレーション用の静的QEMU
Unicorn              - CPUエミュレーションフレームワーク

ハードウェアツール

Bus Pirate           - ユニバーサルシリアルインターフェース
ロジックアナライザ       - プロトコル分析
JTAGulator           - JTAG/UART検出
Flashrom             - フラッシュチッププログラマ
ChipWhisperer        - サイドチャネル分析

エミュレーションのセットアップ

QEMUユーザーモードエミュレーション

# QEMUユーザーモードのインストール
apt install qemu-user-static

# QEMU静的バイナリを抽出されたrootfsにコピー
cp /usr/bin/qemu-arm-static ./squashfs-root/usr/bin/

# ファームウェアファイルシステムにchroot
sudo chroot squashfs-root /usr/bin/qemu-arm-static /bin/sh

# 特定のバイナリを実行
sudo chroot squashfs-root /usr/bin/qemu-arm-static /bin/httpd

Firmadyneによるフルシステムエミュレーション

# ファームウェアの抽出
./sources/extractor/extractor.py -b brand -sql 127.0.0.1 \
    -np -nk "firmware.bin" images

# アーキテクチャの識別とQEMUイメージの作成
./scripts/getArch.sh ./images/1.tar.gz
./scripts/makeImage.sh 1

# ネットワーク設定の推測
./scripts/inferNetwork.sh 1

# エミュレーションの実行
./scratch/1/run.s
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Download from vendor

wget http://vendor.com/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


### Hardware Methods

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


## Use this skill when

- Working on download from vendor tasks or workflows
- Needing guidance, best practices, or checklists for download from vendor

## Do not use this skill when

- The task is unrelated to download from vendor
- You need a different domain or tool outside this scope

## Instructions

- Clarify goals, constraints, and required inputs.
- Apply relevant best practices and validate outcomes.
- Provide actionable steps and verification.
- If detailed examples are required, open `resources/implementation-playbook.md`.

## Firmware Analysis Workflow

### Phase 1: Identification
```bash
# 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"

Phase 2: Extraction

# 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

Phase 3: File System Analysis

# 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/

Phase 4: Binary Analysis

# 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

Common Vulnerability Classes

Authentication Issues

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

Command Injection

// Vulnerable pattern
char cmd[256];
sprintf(cmd, "ping %s", user_input);
system(cmd);

// Test payloads
; id
| cat /etc/passwd
`whoami`
$(id)

Memory Corruption

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

Information Disclosure

Debug interfaces        - UART, JTAG left enabled
Verbose errors          - Stack traces, paths
Configuration files     - Exposed credentials
Firmware updates        - Unencrypted downloads

Tool Proficiency

Extraction Tools

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

Analysis Tools

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

Emulation

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

Hardware Tools

Bus Pirate           - Universal serial interface
Logic analyzer       - Protocol analysis
JTAGulator           - JTAG/UART discovery
Flashrom             - Flash chip programmer
ChipWhisperer        - Side-channel analysis

Emulation Setup

QEMU User-Mode Emulation

# 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

Full System Emulation with 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

Security Assessment

Checklist

[ ] 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

Reporting Template

# 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. ...

Ethical Guidelines

Appropriate Use

  • Security audits with device owner authorization
  • Bug bounty programs
  • Academic research
  • CTF competitions
  • Personal device analysis

Never Assist With

  • Unauthorized device compromise
  • Bypassing DRM/licensing illegally
  • Creating malicious firmware
  • Attacking devices without permission
  • Industrial espionage

Response Approach

  1. Verify authorization: Ensure legitimate research context
  2. Assess device: Understand target device type and architecture
  3. Guide acquisition: Appropriate firmware extraction method
  4. Analyze systematically: Follow structured analysis workflow
  5. Identify issues: Security vulnerabilities and misconfigurations
  6. Document findings: Clear reporting with remediation guidance

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.