2、Linux基础环境搭建:虚拟机安装、Ubuntu系统配置、基础工具链安装

做固件安全分析,说白了你得先有个趁手的「工作台」。Windows 当然也能干点活,但大部分逆向工具、调试器、二进制分析框架都是 Linux 原生的。我个人习惯用 Ubuntu LTS 版本,稳定、社区活跃、遇到坑容易搜到答案。

这一章我们就从零开始,把虚拟机、Ubuntu 系统、以及最基础的工具链装好。嗯,每一步我都会把实际项目中踩过的坑指出来。

2.1 为什么选虚拟机而不是双系统?

你可能想:直接装个双系统多干脆?我刚开始也这么干过。但做固件分析时经常要切换不同的内核版本、文件系统、甚至不同的发行版。双系统来回重启太折腾了。

虚拟机的好处很明显:

  • 快照回滚:装坏了一个驱动,点一下恢复,不用重装系统
  • 隔离性:分析恶意固件时,虚拟机是个沙箱,不会搞坏宿主机
  • 灵活迁移:整个虚拟机文件夹拷到另一台电脑就能用
我的建议:如果你宿主机内存 ≥ 16GB,用 VMware Workstation 或 VirtualBox 都行。我个人偏向 VMware,磁盘性能更好,尤其是做固件解包和文件系统挂载时,IO 快一点是一点。

2.2 虚拟机安装与配置

这里以 VMware Workstation Pro 为例(个人学习可以用免费版)。VirtualBox 流程类似,只是界面稍有不同。

2.2.1 创建虚拟机的基本步骤

  1. 下载 Ubuntu 22.04 LTS 的 ISO 镜像(建议从清华镜像站或中科大镜像站下载,速度快)
  2. 新建虚拟机 → 选择「典型(推荐)」
  3. 选择 ISO 镜像文件路径
  4. 设置虚拟机名称和存储位置(别放 C 盘,空间不够)
  5. 分配磁盘大小:至少 60GB(固件分析工具链和样本文件很占空间)
  6. 自定义硬件:内存 ≥ 8GB,处理器 ≥ 2 核
我曾经踩过的坑:第一次装虚拟机时只给了 20GB 磁盘,结果装了几个工具就满了。后来挂载固件镜像时直接报错「No space left on device」。所以磁盘空间千万别省,60GB 起步,100GB 更安心。

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         # 文本编辑器(选一个顺手就行)
一个小习惯:我每次装完工具链后,会写一个简单的 shell 脚本,把上面所有安装命令放在一起。下次重装系统时,直接跑一遍脚本就完事了。省时省力,还不容易漏装。

2.5 本章知识体系总览

下面这张图把本章的核心流程串起来了。你可以把它当作一个检查清单,装完一项勾一项。

Linux基础环境搭建流程 Linux 基础环境搭建流程 ① 虚拟机安装 ② Ubuntu 系统配置 ③ 基础工具链安装 虚拟机安装子步骤 • 下载 Ubuntu 22.04 LTS ISO • 分配 ≥ 60GB 磁盘、≥ 8GB 内存 • 网络模式:NAT(日常)/ 仅主机(隔离) 系统配置子步骤 • 更换国内软件源(清华/中科大) • 安装 VMware Tools / 增强功能 • 创建初始快照 工具链安装子步骤 • 编译工具:build-essential、gcc、gdb • 分析工具:binutils、binwalk、squashfs-tools • 网络工具:tcpdump、nmap、curl ✅ 环境就绪:可进行固件解包与初步分析 每个阶段完成后建议创建快照,方便回滚 工具链安装顺序:编译工具 → 分析工具 → 网络工具

2.6 验证环境是否装好

装完别急着关终端。跑几个简单的命令,确认工具都能正常调用。

# 检查编译工具
gcc --version
gdb --version

# 检查分析工具
file --version
binwalk --help

# 检查网络工具
tcpdump --version
nmap --version

如果每个命令都能正常输出版本信息,说明环境搭好了。如果某个命令报「command not found」,回头检查一下是不是漏装了对应的包。

注意:binwalk 在某些 Ubuntu 版本中可能版本较旧。如果你发现 binwalk 功能不全(比如不支持某些固件格式),后面章节我们会单独编译最新版。现阶段先用系统自带的版本,够用。

好了,到这一步,你的 Linux 基础环境已经搭好了。虚拟机跑着 Ubuntu,工具链也装齐了。接下来就可以开始真正的固件分析工作了。