3. 固件分析环境搭建:Ubuntu虚拟机配置、必备工具安装、IDA Pro与Ghidra基础
环境搭建这件事,说简单也简单,说复杂也复杂。我见过不少新手,上来就急着装工具,结果装到一半发现依赖冲突,或者跑起来各种报错。嗯,这里我建议你先把基础环境搞扎实了,后面才能省心。
说白了,固件分析需要一个稳定、可控的环境。我个人习惯用 Ubuntu 虚拟机,原因很简单——快照一打,随便折腾,坏了就回滚。你想想看,要是把宿主机搞崩了,那可就得不偿失了。
3.1 Ubuntu 虚拟机配置
我推荐使用 Ubuntu 20.04 LTS 或 22.04 LTS。这两个版本对工具链的支持最成熟,踩坑最少。
3.1.1 虚拟机基础配置步骤
- 下载 Ubuntu ISO:从官网下载 20.04 或 22.04 桌面版。
- 创建虚拟机:VMware 或 VirtualBox 都行,我个人偏向 VMware,磁盘性能好一些。
- 安装系统:一路默认,记得勾选「安装第三方软件」。
- 更新系统:
sudo apt update && sudo apt upgrade -y - 安装基础依赖:
sudo apt install -y build-essential git wget curl unzip \
python3 python3-pip python3-dev \
libssl-dev libffi-dev \
qemu-user-static binfmt-support \
net-tools openssh-server
3.2 必备工具安装
工具不在多,在于精。下面这三个是我每次分析固件都会用到的,缺一不可。
3.2.1 Binwalk — 固件提取利器
Binwalk 是固件分析的入门工具,它能帮你识别固件里嵌了哪些文件系统、压缩包、内核镜像。说白了,就是给固件做「CT 扫描」。
安装方式:
git clone https://github.com/ReFirmLabs/binwalk.git
cd binwalk
sudo python3 setup.py install
sudo pip3 install -r requirements.txt
sudo apt install -y mtd-utils gzip bzip2 tar arj lzop lzma \
p7zip p7zip-full p7zip-rar
装完之后,跑一下 binwalk --help 确认安装成功。我个人习惯用 binwalk -Me 固件名.bin 一键提取,省事。
3.2.2 Firmadyne — 固件模拟框架
Firmadyne 能让你在虚拟机里跑起固件,模拟它的运行环境。这样你就能动态调试,而不是光看静态代码。
安装步骤:
git clone https://github.com/firmadyne/firmadyne.git
cd firmadyne
./download.sh
pip3 install -r requirements.txt
sudo apt install -y busybox-static fakeroot dmsetup kpartx \
netcat-openbsd nmap python3-psycopg2 python3-django \
postgresql postgresql-contrib
安装完成后,需要配置数据库。Firmadyne 用 PostgreSQL 存储固件信息,记得创建用户和数据库。
python3 scripts/getArch.py 固件名.bin 确认架构。ARM 和 MIPS 的 QEMU 参数不一样,搞错了会启动失败。
3.2.3 Firmwalker — 敏感信息扫描
Firmwalker 是个轻量级脚本,专门扫描固件文件系统中的敏感信息,比如硬编码密码、密钥、证书、IP 地址等。
安装方式:
git clone https://github.com/craigz28/firmwalker.git
cd firmwalker
chmod +x firmwalker.sh
用法很简单:./firmwalker.sh /path/to/extracted/filesystem。它会生成一个 firmwalker.txt 报告,里面列出了所有可疑文件。
3.3 IDA Pro 与 Ghidra 基础
这两个工具是逆向分析的「倚天剑」和「屠龙刀」。IDA Pro 是商业软件,功能强大;Ghidra 是 NSA 开源的,免费且支持团队协作。
3.3.1 IDA Pro 基础
IDA Pro 的安装很简单,下载后解压就能用。但要注意,它依赖 Java 运行环境。
基本操作:
- 加载固件:File → Open,选择二进制文件。IDA 会弹出加载选项,选择「Binary file」。
- 选择架构:ARM、MIPS、x86 等。如果选错了,后面反汇编会一团糟。
- 分析:IDA 会自动分析,生成反汇编代码和流程图。
- 查找字符串:View → Open subviews → Strings。这是找硬编码密码最快的方法。
3.3.2 Ghidra 基础
Ghidra 是 Java 写的,安装前确保你有 JDK 11 或更高版本。
安装步骤:
wget https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_10.3.3_build/ghidra_10.3.3_PUBLIC_20231001.zip
unzip ghidra_10.3.3_PUBLIC_20231001.zip
cd ghidra_10.3.3_PUBLIC
./ghidraRun
基本操作:
- 创建项目:File → New Project,选择「Non-Shared Project」。
- 导入固件:File → Import File,选择二进制文件。
- 分析:右键点击文件 → Analyze。Ghidra 会自动识别架构并反汇编。
- 反编译:选中函数,按 F5 或右键 → Decompile。Ghidra 的伪 C 代码可读性很高。
3.4 本章知识体系
下面这张图帮你梳理了本章的核心内容,方便你对照检查。
3.5 环境验证清单
装完工具后,我建议你按下面的清单验证一遍,确保每个环节都跑通了。
| 工具 | 验证命令 | 预期结果 |
|---|---|---|
| Binwalk | binwalk --help |
显示帮助信息 |
| Firmadyne | python3 scripts/getArch.py test.bin |
输出架构信息 |
| Firmwalker | ./firmwalker.sh /tmp/test |
生成报告文件 |
| IDA Pro | 打开一个 ELF 文件 | 显示反汇编窗口 |
| Ghidra | 导入一个二进制文件并分析 | 显示反编译代码 |