Analyzes firmware images from routers, IoT devices, UEFI/BIOS for malware, backdoors via binwalk extraction, filesystem checks, binary RE, Bootkit detection.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
- 受入侵的 IoT 设备或路由器需要固件分析以识别植入的后门
Analyzes firmware images for malware, backdoors, and modifications in routers, IoT devices, UEFI/BIOS, and embedded systems. Covers extraction, filesystem analysis, binary reverse engineering, and bootkit detection.
Analyzes firmware images for malware, backdoors, bootkits, and modifications in IoT devices, routers, UEFI/BIOS, and embedded systems using binwalk extraction, filesystem scans, and binary RE.
Analyzes firmware from IoT, routers, embedded systems: extraction via UART/JTAG/binwalk, filesystem exploration, credential/vulnerability hunting for security audits.
Share bugs, ideas, or general feedback.
不适用于标准操作系统恶意软件分析;对常规系统上的操作系统级恶意软件,应使用 PE/ELF 分析工具。
pip install binwalk)分析固件镜像结构并提取文件系统:
# 识别嵌入的文件系统和压缩数据
binwalk firmware.bin
# 提取所有识别到的组件
binwalk -e firmware.bin
# 使用签名扫描进行递归提取
binwalk -eM firmware.bin
# 输出通常包含:
# - 引导加载程序(U-Boot、GRUB、自定义)
# - 内核镜像(Linux、RTOS)
# - 根文件系统(SquashFS、JFFS2、CramFS、ext4)
# - 配置数据
# - 数字签名或校验和
# 熵分析以发现加密或压缩区域
binwalk -E firmware.bin
# 识别特定文件系统类型
file _firmware.bin.extracted/*
# 处理 SquashFS 文件系统
unsquashfs _firmware.bin.extracted/squashfs-root.img
ls squashfs-root/
在固件文件系统中搜索恶意修改:
# 目录结构分析
find squashfs-root/ -type f | head -50
# 搜索可疑文件
find squashfs-root/ -name "*.sh" -exec ls -la {} \;
find squashfs-root/ -perm -4000 -type f # SUID 二进制文件
find squashfs-root/ -name "*.so" -newer squashfs-root/bin/busybox # 被修改的库
# 检查启动脚本中的后门
cat squashfs-root/etc/init.d/rcS
cat squashfs-root/etc/inittab
ls -la squashfs-root/etc/rc.d/
# 搜索硬编码凭据
grep -rn "password\|passwd\|secret\|key\|token" squashfs-root/etc/ 2>/dev/null
grep -rn "root:" squashfs-root/etc/shadow 2>/dev/null
# 检查未授权 SSH 密钥
find squashfs-root/ -name "authorized_keys" -exec cat {} \;
# 网络配置后门
cat squashfs-root/etc/hosts
grep -rn "iptables\|nc\|netcat\|ncat" squashfs-root/etc/ squashfs-root/usr/bin/
# 检查 cron 中的反弹 Shell
find squashfs-root/ -name "crontab" -o -name "cron*" | xargs cat 2>/dev/null
# 识别所有 ELF 二进制文件进行分析
find squashfs-root/ -type f -exec file {} \; | grep ELF
分析可能是后门的提取二进制文件:
# 识别架构和格式
file squashfs-root/usr/bin/suspicious_binary
# 提取字符串以发现 IoC
strings squashfs-root/usr/bin/suspicious_binary | grep -iE "http|ip|port|shell|connect|exec"
# 与已知固件二进制文件交叉对比
# 将 SHA-256 哈希与已知正常固件比较
sha256sum squashfs-root/usr/bin/* > current_hashes.txt
# 对比基线:diff baseline_hashes.txt current_hashes.txt
# 导入 Ghidra 进行反汇编(选择正确的架构)
# ARM:ARM/AARCH64(大多数 IoT 设备使用小端序)
# MIPS:MIPS/MIPS64(大端序或小端序,取决于设备)
# x86:用于 UEFI 模块
# 使用 radare2 进行快速分类
r2 -A squashfs-root/usr/bin/suspicious_binary
# 命令:afl(函数列表)、pdf @main(反汇编 main)、iz(字符串)
分析系统固件中的 Bootkit 和植入物:
# 使用 UEFITool 提取 UEFI 固件卷
# GUI:UEFITool -> 文件 -> 打开 -> 选择 firmware.rom
# CLI:UEFIExtract firmware.rom
# 使用 chipsec 分析 UEFI 固件(需要硬件访问)
python chipsec_main.py -m common.bios_wp # BIOS 写保护
python chipsec_main.py -m common.spi_lock # SPI Flash 锁
python chipsec_main.py -m common.secureboot # 安全启动状态
python chipsec_main.py -m common.uefi.s3bootscript # S3 恢复脚本
# 从实时系统转储 UEFI 固件
python chipsec_util.py spi dump firmware_dump.rom
# 与已知正常固件比较
sha256sum firmware_dump.rom
# 与厂商提供的固件哈希比较
# 使用 YARA 扫描已知 UEFI 恶意软件签名
yara -r uefi_malware_rules.yar firmware_dump.rom
已知 UEFI 恶意软件家族:
━━━━━━━━━━━━━━━━━━━━━━━━━━
LoJax: 首个野外发现的 UEFI Rootkit(APT28/Fancy Bear)
修改 SPI Flash 以投放持久化代理
MosaicRegressor:模块化 UEFI 框架,投放多种载荷
CosmicStrand: UEFI 固件 Rootkit,在启动期间修改内核
BlackLotus: UEFI Bootkit,可绕过 Windows 11 安全启动
ESPecter: ESP(EFI 系统分区)Bootkit,修改启动管理器
MoonBounce: SPI Flash 植入物,修改 CORE_DXE 模块
FinSpy UEFI: 具有 UEFI 持久化的监控软件
在模拟环境中运行提取的固件:
# 使用 QEMU 模拟基于 ARM 的 IoT 固件
# 挂载提取的文件系统
sudo mount -o loop squashfs-root.img /mnt/firmware
# 使用 QEMU 用户态模拟 chroot 进入固件
sudo cp /usr/bin/qemu-arm-static /mnt/firmware/usr/bin/
sudo chroot /mnt/firmware /bin/sh
# 或使用 firmadyne 进行自动化固件模拟
python3 fat.py firmware.bin
# 在模拟固件中进行网络服务分析
# 扫描开放端口和服务
nmap -sV localhost -p 1-65535
# 监控模拟固件的网络流量
tcpdump -i tap0 -w firmware_traffic.pcap
整理完整的固件分析发现:
分析文档应涵盖:
- 固件镜像元数据(厂商、型号、版本、构建日期)
- 提取结果(文件系统类型、内核版本、架构)
- 与已知正常基线相比的修改文件
- 发现的后门二进制文件及逆向工程发现
- 硬编码凭据和未授权访问机制
- 网络服务及其安全状态
- UEFI/BIOS 完整性验证结果
- 提取的 IoC(IP、域名、文件哈希、SSH 密钥)
- 修复建议(重刷固件、更换设备、升级)
| 术语 | 定义 |
|---|---|
| 固件 | 永久存储在设备硬件(Flash 存储器、EEPROM)中的软件,控制设备的底层操作和启动过程 |
| UEFI(统一可扩展固件接口) | 取代传统 BIOS 的现代系统固件;提供启动服务、运行时服务和模块化驱动架构 |
| SPI Flash | 存储 UEFI/BIOS 固件的串行外设接口 Flash 存储芯片;可被读取和修改以实现持久化 |
| 安全启动 | UEFI 功能,验证启动组件的数字签名以防止启动期间未授权代码的执行 |
| SquashFS | 只读压缩文件系统,常用于嵌入式 Linux 固件以实现高效存储 |
| Bootkit | 感染启动过程(MBR、VBR、UEFI)以在操作系统之前加载并规避操作系统级安全的恶意软件 |
| 固件模拟 | 在虚拟环境(QEMU、firmadyne)中运行提取的固件以分析行为,无需物理硬件 |
背景:某网络路由器即使在恢复出厂设置后仍持续出现可疑行为(意外的 DNS 解析、向未知 IP 发送流量)。怀疑存在固件级别的入侵。
方法:
注意事项:
固件恶意软件分析报告
===================================
设备: NetGear R7000 路由器
固件版本: V1.0.11.116(已被修改)
架构: ARM(小端序)
文件系统: SquashFS(Linux 3.4.103)
转储方式: UART 调试控制台
完整性检查
厂商固件哈希: aaa111bbb222...(干净的 V1.0.11.116)
被分析固件哈希: ccc333ddd444...(不匹配)
被修改文件: 与厂商基线相比,14 个文件存在差异
后门发现
[!] /usr/bin/httpd_backdoor(新二进制文件,不在厂商固件中)
架构:ARM 32 位
功能:向 185.220.101[.]42:4444 发起反弹 Shell
持久化:已添加到 /etc/init.d/rcS
[!] /etc/shadow 已被修改
root 密码被更改为已知哈希
新增 UID 0 的用户 'admin2'
[!] /etc/crontab 已被修改
添加:*/5 * * * * /usr/bin/httpd_backdoor
[!] /root/.ssh/authorized_keys(新文件)
包含攻击者的 SSH 公钥
提取的 IoC
C2 IP: 185.220.101[.]42
C2 端口: 4444
SSH 密钥: ssh-rsa AAAA... attacker@control
后门哈希: eee555fff666...
修复措施
1. 通过 TFTP 恢复模式刷入干净的厂商固件
2. 更改所有设备凭据
3. 升级到最新固件版本
4. 如可用,启用固件完整性检查
5. 监控是否存在再次入侵的指标