环境搭建:Linux虚拟机安装、Binwalk工具编译与安装、Sasquatch补丁安装、固件分析工具链配置
做固件分析这么多年,我有个深刻的体会:环境搭不好,后面全是坑。很多新手一上来就急着解包,结果各种报错,最后连问题出在哪都不知道。这一章,咱们就把地基打牢。
一、Linux虚拟机安装——选对系统,少走弯路
我个人习惯用 Ubuntu 20.04 LTS 作为主力分析环境。为什么是这个版本?
- 软件包更新及时,兼容性好
- 社区活跃,遇到问题容易搜到答案
- 对 Binwalk 等工具的依赖支持最完善
你可能会问:用 WSL 行不行?嗯,这里要注意——WSL 对某些底层文件系统操作支持不完整,特别是后面我们要处理 SquashFS 文件系统时,容易出莫名其妙的问题。所以,我建议老老实实装个虚拟机。
二、Binwalk 工具编译与安装——从源码开始
Binwalk 是固件分析的瑞士军刀。但直接用 apt 安装的版本往往太旧,我建议从 GitHub 拉最新源码编译。
具体步骤:
# 安装依赖
sudo apt-get update
sudo apt-get install -y build-essential autoconf automake libtool
sudo apt-get install -y python3 python3-pip python3-dev
sudo apt-get install -y git
# 克隆最新源码
git clone https://github.com/ReFirmLabs/binwalk.git
cd binwalk
# 编译安装
sudo python3 setup.py install
安装完成后,验证一下:
binwalk --help
如果看到版本信息,说明安装成功。我曾经遇到一个坑:某些旧版本 Binwalk 对 Python 3.10+ 支持不好,编译时会报错。所以我才推荐 Ubuntu 20.04 自带的 Python 3.8,稳得很。
三、Sasquatch 补丁安装——解决 SquashFS 解包难题
思科路由器固件大量使用 SquashFS 文件系统,但标准版的 unsquashfs 工具对某些非标准压缩格式支持不全。这时候就需要 Sasquatch 补丁。
说白了,Sasquatch 就是给 unsquashfs 打了个补丁,让它能识别更多压缩算法。我当年第一次遇到思科固件解不开,折腾了两天才发现是这个原因。
安装步骤:
# 克隆 Sasquatch 仓库
git clone https://github.com/devttys0/sasquatch.git
cd sasquatch
# 编译安装
sudo ./build.sh
编译过程可能比较长,耐心等待。如果遇到依赖缺失,根据提示安装即可。
四、固件分析工具链配置——打造你的武器库
除了 Binwalk 和 Sasquatch,还有几个工具我几乎每次分析都会用到:
| 工具名称 | 用途 | 安装方式 |
|---|---|---|
| strings | 提取二进制文件中的可读字符串 | 系统自带 |
| hexdump / xxd | 十六进制查看与编辑 | 系统自带 |
| file | 识别文件类型 | 系统自带 |
| firmware-mod-kit | 固件解包与重打包工具集 | 需编译安装 |
| binutils | 二进制分析工具集(objdump、readelf等) | apt install binutils |
安装 firmware-mod-kit 的参考命令:
git clone https://github.com/rampageX/firmware-mod-kit.git
cd firmware-mod-kit
./extract-firmware.sh
这个工具集里包含了多个解包脚本,对思科固件特别友好。
五、知识体系总览
下面这张图,是我自己梳理的环境搭建逻辑。你跟着这个流程走,基本不会漏掉什么:
这张图把环境搭建分成了三层:基础环境 → 核心工具 → 辅助工具。每一层都依赖下一层,缺一不可。我建议你按照这个顺序一步步来,别跳步。
好了,环境搭好之后,下一章咱们就可以真正开始解包思科固件了。到时候你会发现,前面这些准备工作,每一分钟都花得值。