2、固件逆向分析环境搭建:虚拟机配置、Linux基础命令、Binwalk、Firmadyne、Ghidra、IDA Pro等工具安装与配置
做固件逆向分析,第一步不是拿工具直接开干,而是先把「窝」搭好。我见过太多人,工具装到一半卡住,或者环境冲突搞到崩溃,最后连个固件都解不开。说白了,环境搭建这件事,决定了你后面能不能顺畅地干活。
这一章,我会带你一步步把虚拟机、Linux基础、以及几款核心工具装好、配好。嗯,都是我在项目里踩过坑之后总结出来的「最优路径」。
2.1 虚拟机配置:选对系统,少走弯路
我个人习惯用 VMware Workstation Pro 或者 VirtualBox。如果你问我选哪个?我建议用 VMware,稳定,快照功能也强。但 VirtualBox 免费,也够用。
操作系统我推荐 Ubuntu 20.04 LTS 或 22.04 LTS。为什么?因为大多数固件分析工具对 Ubuntu 支持最好,社区活跃,遇到问题一搜就有答案。
安装步骤很简单:
- 下载 Ubuntu ISO 镜像
- 新建虚拟机,选择 Linux -> Ubuntu 64-bit
- 分配资源(内存8G+,硬盘80G+)
- 安装系统,一路默认即可
- 安装 VMware Tools 或 VirtualBox Guest Additions(增强功能)
2.2 Linux基础命令:够用就行
你不需要成为 Linux 高手,但下面这些命令必须熟练。我在项目里天天用:
| 命令 | 用途 | 示例 |
|---|---|---|
ls |
列出文件 | ls -la |
cd |
切换目录 | cd /home/user/firmware |
file |
查看文件类型 | file firmware.bin |
strings |
提取可打印字符串 | strings firmware.bin | grep "password" |
hexdump / xxd |
查看十六进制 | xxd firmware.bin | head -20 |
tar / gzip |
解压压缩文件 | tar -xvf firmware.tar.gz |
chmod |
修改权限 | chmod +x script.sh |
sudo |
提权执行 | sudo apt install binwalk |
你想想看,这些命令加起来不超过 10 个,但覆盖了固件分析 90% 的场景。我曾经在分析一个路由器固件时,光靠 strings 和 grep 就找到了硬编码的后门账号。嗯,就是这么简单粗暴。
2.3 Binwalk:固件解包的瑞士军刀
Binwalk 是我最常用的工具之一。它的核心功能是扫描固件中的文件系统、内核、引导加载程序等。
安装方式:
# 从 GitHub 克隆
git clone https://github.com/ReFirmLabs/binwalk.git
cd binwalk
sudo python3 setup.py install
# 安装依赖
sudo apt-get install mtd-utils gzip bzip2 tar arj lhasa p7zip p7zip-full cabextract cramfsprogs cramfsswap squashfs-tools
基本用法:
# 扫描固件
binwalk firmware.bin
# 提取文件系统
binwalk -e firmware.bin
# 递归提取(遇到嵌套压缩包自动解)
binwalk -Me firmware.bin
2.4 Firmadyne:固件模拟与动态分析
Firmadyne 能让你在虚拟机里「跑」固件,从而进行动态分析。说白了,就是把固件当做一个真实的设备来调试。
安装步骤稍微复杂一点:
# 克隆项目
git clone https://github.com/firmadyne/firmadyne.git
cd firmadyne
# 安装依赖
sudo apt-get install busybox-static fakeroot git dmsetup kpartx netcat-openbsd nmap python3 python3-pip python3-magic
# 下载并编译内核
./download.sh
./build.sh
使用流程:
- 用 Binwalk 提取固件文件系统
- 用 Firmadyne 的
scripts/makeImage.sh创建镜像 - 用
scripts/inferNetwork.sh推断网络配置 - 启动模拟:
./run.sh [固件ID]
2.5 Ghidra:NSA 开源的逆向神器
Ghidra 是 NSA 开源的逆向工程平台。它支持多种架构,反编译能力极强,而且免费。
安装前提:需要 Java 11 或更高版本。
# 安装 Java
sudo apt install openjdk-11-jdk
# 下载 Ghidra(从官网或 GitHub)
wget https://github.com/NationalSecurityAgency/ghidra/releases/download/Ghidra_10.1.5_build/ghidra_10.1.5_PUBLIC_20220726.zip
unzip ghidra_*.zip
cd ghidra_*
./ghidraRun
我个人习惯用 Ghidra 做静态分析,尤其是反编译 C 代码。它的反编译质量很高,甚至能还原出变量名和函数调用关系。
2.6 IDA Pro:商业级逆向分析工具
IDA Pro 是逆向界的「老大哥」。功能强大,但价格不菲。如果你有正版授权,那是最好的。如果没有,可以用免费版 IDA Free 或者试用版。
安装很简单:下载安装包,一路下一步即可。但要注意:
- IDA Pro 支持 Windows、Linux、macOS
- 建议安装 Python 插件(IDA Python)
- 常用插件:Hex-Rays Decompiler(反编译器)、Lumina(云端匹配函数签名)
我个人的使用习惯是:
- 用 IDA Pro 做深度逆向,尤其是遇到混淆代码或加壳固件时
- 用 Ghidra 做快速分析和批量处理
- 两者互补,不冲突
2.7 知识体系总览
下面这张图,是我自己梳理的固件逆向分析环境搭建的核心逻辑。你照着这个思路走,不会乱。
这张图把环境搭建分成了三层:基础环境层、核心工具层、应用场景层。你从下往上搭,一层一层来,就不会乱。我当年刚开始学的时候,就是照着这个思路,一周内就把所有工具配好了。
2.8 环境验证:确保一切就绪
装完工具后,别急着开始分析。先做一次「冒烟测试」:
# 验证 Binwalk
binwalk --help
# 验证 Firmadyne(进入目录后)
ls scripts/
# 验证 Ghidra
./ghidraRun --version
# 验证 IDA Pro(如果安装了)
ida64 --help
如果每个命令都能正常输出,恭喜你,环境搭建成功了。如果报错,别慌。99% 的问题都是依赖缺失或路径不对。检查一下,重新装一遍就好。
好了,环境搭好了,工具也装齐了。接下来,我们就可以真正开始分析固件了。记住,环境是基础,基础打牢了,后面才能走得远。
公众号:蓝海资料掘金营,微信deep3321