2、Linux基础环境搭建:虚拟机安装、Ubuntu系统配置、基础工具链安装
做固件安全分析,说白了你得先有个趁手的「工作台」。Windows 当然也能干点活,但大部分逆向工具、调试器、二进制分析框架都是 Linux 原生的。我个人习惯用 Ubuntu LTS 版本,稳定、社区活跃、遇到坑容易搜到答案。
这一章我们就从零开始,把虚拟机、Ubuntu 系统、以及最基础的工具链装好。嗯,每一步我都会把实际项目中踩过的坑指出来。
2.1 为什么选虚拟机而不是双系统?
你可能想:直接装个双系统多干脆?我刚开始也这么干过。但做固件分析时经常要切换不同的内核版本、文件系统、甚至不同的发行版。双系统来回重启太折腾了。
虚拟机的好处很明显:
- 快照回滚:装坏了一个驱动,点一下恢复,不用重装系统
- 隔离性:分析恶意固件时,虚拟机是个沙箱,不会搞坏宿主机
- 灵活迁移:整个虚拟机文件夹拷到另一台电脑就能用
2.2 虚拟机安装与配置
这里以 VMware Workstation Pro 为例(个人学习可以用免费版)。VirtualBox 流程类似,只是界面稍有不同。
2.2.1 创建虚拟机的基本步骤
- 下载 Ubuntu 22.04 LTS 的 ISO 镜像(建议从清华镜像站或中科大镜像站下载,速度快)
- 新建虚拟机 → 选择「典型(推荐)」
- 选择 ISO 镜像文件路径
- 设置虚拟机名称和存储位置(别放 C 盘,空间不够)
- 分配磁盘大小:至少 60GB(固件分析工具链和样本文件很占空间)
- 自定义硬件:内存 ≥ 8GB,处理器 ≥ 2 核
2.2.2 虚拟机网络模式选择
| 网络模式 | 特点 | 适用场景 |
|---|---|---|
| NAT | 虚拟机通过宿主机上网,外部无法直接访问虚拟机 | 日常固件分析、下载工具包 |
| 桥接 | 虚拟机与宿主机在同一网段,可被局域网其他设备访问 | 调试网络设备固件、模拟 IoT 设备通信 |
| 仅主机 | 虚拟机只能与宿主机通信,无法访问外网 | 隔离分析环境,防止恶意固件外联 |
我个人习惯用 NAT 模式装系统和工具,分析恶意固件时切换到仅主机模式。你想想看,万一固件里有后门程序,桥接模式下它可能直接扫描你内网的其他设备。
2.3 Ubuntu 系统配置
系统装好后,别急着装工具。先把系统本身调教好,后面能省很多事。
2.3.1 更换软件源
Ubuntu 默认的软件源在国外,下载速度慢得让人抓狂。换成国内镜像源是第一步。
# 备份原 sources.list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 用 sed 替换为清华源(Ubuntu 22.04 适用)
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
# 更新
sudo apt update && sudo apt upgrade -y
为什么先换源? 我在项目中遇到过:apt install 一个工具,等了半小时还在 10%。换了国内源后,同样的包几十秒就下完了。时间就是生命,尤其是调试到半夜的时候。
2.3.2 安装 VMware Tools / 增强功能
这个步骤很多人会忽略,但直接影响使用体验。不装的话,虚拟机屏幕分辨率调不了、剪贴板不能共享、文件拖拽也不行。
VMware 用户:
sudo apt install open-vm-tools open-vm-tools-desktop -y
sudo reboot
VirtualBox 用户:
sudo apt install virtualbox-guest-dkms virtualbox-guest-x11 -y
sudo reboot
2.3.3 创建快照
系统配置好、重启正常后,立刻创建一个快照。这是虚拟机最实用的功能之一。
- 命名规则:我习惯用「日期 + 状态描述」,比如
2025-01-15_系统初始配置完成 - 后续每装完一组工具链,再拍一个快照
这样做的好处是:万一装某个工具把系统搞崩了,直接回滚到上一个快照,不用重装整个系统。
2.4 基础工具链安装
固件分析需要一套「标配」工具。我把它们分成三类,按顺序装就行。
2.4.1 编译与构建工具
这些是编译固件、解包、重新打包的基础。
sudo apt install build-essential -y
sudo apt install gcc g++ gdb -y
sudo apt install cmake make -y
sudo apt install autoconf automake libtool -y
build-essential 是个元包,会把 gcc、g++、make 等核心编译工具一起装好。我每次装新虚拟机,第一个装的就是它。
2.4.2 固件分析专用工具
| 工具 | 用途 | 安装命令 |
|---|---|---|
| binutils | 二进制文件分析(objdump、readelf 等) | sudo apt install binutils |
| file | 识别文件类型 | sudo apt install file |
| hexdump / xxd | 十六进制查看 | sudo apt install xxd |
| unzip / unrar / 7z | 解压各种固件包 | sudo apt install p7zip-full unzip unrar |
| squashfs-tools | 解压/打包 SquashFS 文件系统(路由器固件常见) | sudo apt install squashfs-tools |
| binwalk | 固件提取与分析(后面章节会详细讲) | sudo apt install binwalk |
2.4.3 网络与调试工具
sudo apt install net-tools -y # ifconfig、netstat 等
sudo apt install tcpdump -y # 网络抓包
sudo apt install nmap -y # 端口扫描
sudo apt install curl wget -y # 下载工具
sudo apt install vim nano -y # 文本编辑器(选一个顺手就行)
2.5 本章知识体系总览
下面这张图把本章的核心流程串起来了。你可以把它当作一个检查清单,装完一项勾一项。
2.6 验证环境是否装好
装完别急着关终端。跑几个简单的命令,确认工具都能正常调用。
# 检查编译工具
gcc --version
gdb --version
# 检查分析工具
file --version
binwalk --help
# 检查网络工具
tcpdump --version
nmap --version
如果每个命令都能正常输出版本信息,说明环境搭好了。如果某个命令报「command not found」,回头检查一下是不是漏装了对应的包。
好了,到这一步,你的 Linux 基础环境已经搭好了。虚拟机跑着 Ubuntu,工具链也装齐了。接下来就可以开始真正的固件分析工作了。