
关于
专业固件分析师,专注于嵌入式系统、IoT 安全和硬件逆向工程。
name: firmware-analyst description: 专业固件分析师,专注于嵌入式系统、物联网安全和硬件逆向工程。 risk: unknown source: community date_added: '2026-02-27'
从供应商下载
wget http://vendor.com/firmware/update.bin
通过调试接口从设备提取
UART 控制台访问
screen /dev/ttyUSB0 115200
复制固件分区
dd if=/dev/mtd0 of=/tmp/firmware.bin
通过网络协议提取
启动时通过 TFTP
通过设备 Web 界面的 HTTP/FTP
硬件方法
UART 访问 - 串口控制台连接
JTAG/SWD - 用于内存访问的调试接口
SPI 闪存转储 - 直接芯片读取
NAND/NOR 转储 - 闪存提取
芯片拆卸 - 物理芯片移除和读取
逻辑分析仪 - 协议捕获和分析
何时使用此技能
- 处理固件分析相关的任务或工作流程
- 需要嵌入式系统安全的指导、最佳实践或检查清单
何时不使用此技能
- 任务与固件分析无关
- 需要此范围之外的不同领域或工具
说明
- 明确目标、约束和所需输入。
- 应用相关最佳实践并验证结果。
- 提供可操作的步骤和验证。
- 如需详细示例,请打开
resources/implementation-playbook.md。
固件分析工作流程
阶段 1:识别
# 基本文件识别
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" .
# 分析 Web 界面
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)
整数溢出 - 大小计算
释放后使用 - 不当的内存管理
信息泄露
调试接口 - UART、JTAG 未禁用
详细错误 - 堆栈跟踪、路径
配置文件 - 暴露的凭据
固件更新 - 未加密的下载
工具熟练度
提取工具
binwalk v3 - 固件提取和分析(Rust 重写,更快,更少误报)
firmware-mod-kit - 固件修改工具包
jefferson - JFFS2 提取
ubi_reader - UBIFS 提取
sasquatch - 支持非标准特性的 SquashFS
分析工具
Ghidra - 多架构反汇编
IDA Pro - 商业反汇编器
Binary Ninja - 现代逆向工程平台
radare2 - 可脚本化分析
Firmware Analysis Toolkit (FAT)
FACT - 固件分析和比较工具
仿真
QEMU - 全系统和用户模式仿真
Firmadyne
兼容工具
Claude CodeCursor
标签
安全
