环境搭建:Linux虚拟机安装、Binwalk工具编译与安装、Sasquatch补丁安装、固件分析工具链配置

做固件分析这么多年,我有个深刻的体会:环境搭不好,后面全是坑。很多新手一上来就急着解包,结果各种报错,最后连问题出在哪都不知道。这一章,咱们就把地基打牢。

一、Linux虚拟机安装——选对系统,少走弯路

我个人习惯用 Ubuntu 20.04 LTS 作为主力分析环境。为什么是这个版本?

  • 软件包更新及时,兼容性好
  • 社区活跃,遇到问题容易搜到答案
  • 对 Binwalk 等工具的依赖支持最完善

你可能会问:用 WSL 行不行?嗯,这里要注意——WSL 对某些底层文件系统操作支持不完整,特别是后面我们要处理 SquashFS 文件系统时,容易出莫名其妙的问题。所以,我建议老老实实装个虚拟机。

我的小技巧:虚拟机硬盘给 60GB 以上,内存至少 4GB。别省这点资源,后面解包大固件时你就知道好处了。

二、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

编译过程可能比较长,耐心等待。如果遇到依赖缺失,根据提示安装即可。

注意:某些系统上 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

这个工具集里包含了多个解包脚本,对思科固件特别友好。

五、知识体系总览

下面这张图,是我自己梳理的环境搭建逻辑。你跟着这个流程走,基本不会漏掉什么:

固件分析环境搭建知识体系 第一层:基础环境 Ubuntu 20.04 LTS 虚拟机配置(60GB+4GB) Python 3.8 + 依赖包 第二层:核心工具 Binwalk(源码编译) Sasquatch 补丁 firmware-mod-kit 第三层:辅助工具 strings hexdump/xxd file binutils

这张图把环境搭建分成了三层:基础环境 → 核心工具 → 辅助工具。每一层都依赖下一层,缺一不可。我建议你按照这个顺序一步步来,别跳步。

避坑指南:我曾经在 CentOS 上折腾过这套环境,结果因为包管理器不同,编译 Binwalk 时各种缺依赖。后来换回 Ubuntu,半小时搞定。所以,别跟发行版较劲,Ubuntu 20.04 是最省心的选择。

好了,环境搭好之后,下一章咱们就可以真正开始解包思科固件了。到时候你会发现,前面这些准备工作,每一分钟都花得值。


专注资料整理