performing-firmware-malware-analysis

分析固件镜像中嵌入的恶意软件、后门和未授权修改,目标包括路由器、IoT 设备、UEFI/BIOS 和嵌入式系统。涵盖固件提取、文件系统分析、二进制逆向工程和 Bootkit 检测。适用于固件安全 分析、IoT 恶意软件调查、UEFI Rootkit 检测或嵌入式设备入侵评估等请求场景。

9 stars

Best use case

performing-firmware-malware-analysis is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

分析固件镜像中嵌入的恶意软件、后门和未授权修改,目标包括路由器、IoT 设备、UEFI/BIOS 和嵌入式系统。涵盖固件提取、文件系统分析、二进制逆向工程和 Bootkit 检测。适用于固件安全 分析、IoT 恶意软件调查、UEFI Rootkit 检测或嵌入式设备入侵评估等请求场景。

Teams using performing-firmware-malware-analysis should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/performing-firmware-malware-analysis/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/performing-firmware-malware-analysis/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/performing-firmware-malware-analysis/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How performing-firmware-malware-analysis Compares

Feature / Agentperforming-firmware-malware-analysisStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

分析固件镜像中嵌入的恶意软件、后门和未授权修改,目标包括路由器、IoT 设备、UEFI/BIOS 和嵌入式系统。涵盖固件提取、文件系统分析、二进制逆向工程和 Bootkit 检测。适用于固件安全 分析、IoT 恶意软件调查、UEFI Rootkit 检测或嵌入式设备入侵评估等请求场景。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 执行固件恶意软件分析

## 适用场景

- 受入侵的 IoT 设备或路由器需要固件分析以识别植入的后门
- 调查在操作系统重装后仍能存活的 UEFI/BIOS Rootkit
- 分析固件更新中是否存在供应链攻击或恶意修改
- 从 IoT 设备固件镜像中提取并检查嵌入的 Linux 文件系统
- 在疑似硬件或固件级别入侵后验证固件完整性

**不适用**于标准操作系统恶意软件分析;对常规系统上的操作系统级恶意软件,应使用 PE/ELF 分析工具。

## 前置条件

- binwalk,用于固件镜像分析和提取(`pip install binwalk`)
- Ghidra,带 ARM/MIPS 架构支持,用于嵌入式二进制逆向工程
- UEFI Tool(UEFITool),用于 UEFI 固件解析和分析
- 固件分析工具包(FAT)或 EMBA,用于自动化固件分析
- QEMU,用于模拟提取的固件文件系统
- ARM、MIPS 和其他嵌入式架构的交叉编译工具链

## 工作流程

### 步骤 1:提取并识别固件组件

分析固件镜像结构并提取文件系统:

```bash
# 识别嵌入的文件系统和压缩数据
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/
```

### 步骤 2:分析提取的文件系统

在固件文件系统中搜索恶意修改:

```bash
# 目录结构分析
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
```

### 步骤 3:逆向工程可疑二进制文件

分析可能是后门的提取二进制文件:

```bash
# 识别架构和格式
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(字符串)
```

### 步骤 4:UEFI/BIOS 固件分析

分析系统固件中的 Bootkit 和植入物:

```bash
# 使用 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 持久化的监控软件
```

### 步骤 5:模拟固件进行动态分析

在模拟环境中运行提取的固件:

```bash
# 使用 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
```

### 步骤 6:记录固件分析结果

整理完整的固件分析发现:

```
分析文档应涵盖:
- 固件镜像元数据(厂商、型号、版本、构建日期)
- 提取结果(文件系统类型、内核版本、架构)
- 与已知正常基线相比的修改文件
- 发现的后门二进制文件及逆向工程发现
- 硬编码凭据和未授权访问机制
- 网络服务及其安全状态
- UEFI/BIOS 完整性验证结果
- 提取的 IoC(IP、域名、文件哈希、SSH 密钥)
- 修复建议(重刷固件、更换设备、升级)
```

## 核心概念

| 术语 | 定义 |
|------|------|
| **固件** | 永久存储在设备硬件(Flash 存储器、EEPROM)中的软件,控制设备的底层操作和启动过程 |
| **UEFI(统一可扩展固件接口)** | 取代传统 BIOS 的现代系统固件;提供启动服务、运行时服务和模块化驱动架构 |
| **SPI Flash** | 存储 UEFI/BIOS 固件的串行外设接口 Flash 存储芯片;可被读取和修改以实现持久化 |
| **安全启动** | UEFI 功能,验证启动组件的数字签名以防止启动期间未授权代码的执行 |
| **SquashFS** | 只读压缩文件系统,常用于嵌入式 Linux 固件以实现高效存储 |
| **Bootkit** | 感染启动过程(MBR、VBR、UEFI)以在操作系统之前加载并规避操作系统级安全的恶意软件 |
| **固件模拟** | 在虚拟环境(QEMU、firmadyne)中运行提取的固件以分析行为,无需物理硬件 |

## 工具与系统

- **binwalk**:固件分析工具,用于扫描、提取和分析固件镜像中嵌入的文件系统和压缩数据
- **UEFITool**:开源 UEFI 固件镜像解析器和提取器,用于分析 UEFI 卷、模块和驱动
- **chipsec**:Intel 的开源平台安全评估框架,包括 SPI Flash、安全启动和 UEFI 分析
- **firmadyne**:面向基于 Linux 的嵌入式设备的自动化固件分析和模拟平台
- **Ghidra**:NSA 的逆向工程工具,支持 ARM、MIPS 和其他嵌入式架构,用于固件二进制分析

## 常见场景

### 场景:调查具有持久后门的受攻陷路由器

**背景**:某网络路由器即使在恢复出厂设置后仍持续出现可疑行为(意外的 DNS 解析、向未知 IP 发送流量)。怀疑存在固件级别的入侵。

**方法**:
1. 使用 JTAG/UART 调试接口或厂商管理工具从路由器转储固件
2. 使用 binwalk 提取文件系统,识别 Linux 发行版和内核版本
3. 将文件哈希与厂商提供的已知正常固件镜像进行比较
4. 在启动脚本(rcS、inittab、crontab)中搜索后门条目
5. 使用 Ghidra(ARM/MIPS 架构)分析任何被修改或新增的二进制文件
6. 检查硬编码凭据、未授权 SSH 密钥和反弹 Shell 脚本
7. 模拟固件以观察网络行为并识别 C2 通信

**注意事项**:
- 不要从厂商网站下载固件来分析(下载的是干净版本,而非受攻陷的版本)
- 不要忽视可能钩挂系统函数的被修改共享库(.so 文件)
- 不要遗漏存储在主文件系统之外的固件修改(引导加载程序、配置分区)
- 不要忘记同时检查主固件分区和备用固件分区(某些设备有双 Bank Flash)

## 输出格式

```
固件恶意软件分析报告
===================================
设备:            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. 监控是否存在再次入侵的指标
```

Related Skills

reverse-engineering-rust-malware

9
from killvxk/cybersecurity-skills-zh

使用 IDA Pro 和 Ghidra 对 Rust 编译的恶意软件进行逆向工程,掌握处理非空终止字符串、提取 crate 依赖项和 Rust 特有控制流分析的专项技术。

reverse-engineering-malware-with-ghidra

9
from killvxk/cybersecurity-skills-zh

使用 NSA 的 Ghidra 反汇编器和反编译器对恶意软件二进制文件进行逆向工程,在汇编和伪 C 代码层面理解其内部逻辑、密码学例程、C2 协议和规避技术。适用于恶意软件逆向工程、反汇编分析、反编译、二进制分析或理解恶意软件内部机制等请求。

reverse-engineering-dotnet-malware-with-dnspy

9
from killvxk/cybersecurity-skills-zh

使用 dnSpy 反编译器和调试器对 .NET 恶意软件进行逆向工程,分析 C#/VB.NET 源代码,识别混淆技术,提取配置信息,理解包括信息窃取器、远程访问木马(RAT)和加载器在内的恶意功能。适用于 .NET 恶意软件分析、C# 恶意软件反编译、托管代码逆向工程或 .NET 混淆分析等请求。

reverse-engineering-android-malware-with-jadx

9
from killvxk/cybersecurity-skills-zh

使用 JADX 反编译器对恶意 Android APK 文件进行逆向工程,分析 Java/Kotlin 源代码,识别包括数据窃取、C2 通信、权限提升和覆盖攻击在内的恶意功能。检查 Manifest 权限、Receiver、Service 及原生库。适用于 Android 恶意软件分析、APK 逆向工程、移动端恶意软件调查或 Android 威胁分析等请求。

performing-yara-rule-development-for-detection

9
from killvxk/cybersecurity-skills-zh

通过识别可执行文件中的唯一字节模式、字符串和行为指标,开发精准的 YARA 恶意软件检测规则,同时将误报率降至最低。

performing-wireless-security-assessment-with-kismet

9
from killvxk/cybersecurity-skills-zh

使用 Kismet 通过被动射频监控进行无线网络安全评估,检测流氓接入点(Rogue AP)、隐藏 SSID、弱加密和未授权客户端。

performing-wireless-network-penetration-test

9
from killvxk/cybersecurity-skills-zh

执行无线网络渗透测试,通过捕获握手包、破解 WPA2/WPA3 密钥、检测流氓接入点以及使用 Aircrack-ng 和相关工具测试无线网络分段,评估 WiFi 安全性。

performing-windows-artifact-analysis-with-eric-zimmerman-tools

9
from killvxk/cybersecurity-skills-zh

使用 Eric Zimmerman 的开源 EZ Tools 套件(包括 KAPE、MFTECmd、PECmd、LECmd、JLECmd 和 Timeline Explorer)执行全面的 Windows 取证制品分析,解析注册表 hive、预取文件、事件日志和文件系统元数据。

performing-wifi-password-cracking-with-aircrack

9
from killvxk/cybersecurity-skills-zh

在授权无线安全评估中捕获 WPA/WPA2 握手包,并使用 aircrack-ng、hashcat 和字典攻击进行离线密码破解, 以评估密码短语强度和无线网络安全状况。

performing-web-cache-poisoning-attack

9
from killvxk/cybersecurity-skills-zh

在授权安全测试期间,通过未纳入缓存键的头部和参数毒化缓存响应,利用 Web 缓存机制向其他用户投递恶意内容。

performing-web-cache-deception-attack

9
from killvxk/cybersecurity-skills-zh

通过利用 CDN 缓存层与源服务器之间的路径规范化差异,执行 Web 缓存欺骗攻击,从而缓存并获取敏感的已认证内容。

performing-web-application-vulnerability-triage

9
from killvxk/cybersecurity-skills-zh

使用 OWASP 风险评级方法论对 DAST/SAST 扫描器的 Web 应用程序漏洞发现进行分类,区分真阳性和假阳性,并确定修复优先级。