2、虚拟机搭建:VMware/VirtualBox安装、Ubuntu 20.04 LTS 系统安装与配置
好,咱们正式开始动手了。这一章说白了就是搭窝——把二进制漏洞利用的“实验室”给建起来。我见过太多新手,环境没配好就开始搞 exploit,结果各种莫名其妙的问题,最后发现是虚拟机配置的锅。嗯,咱们别走弯路,一次搞定。
2.1 选哪个虚拟机?VMware 还是 VirtualBox?
我个人习惯用 VMware Workstation Pro,原因很简单:稳定、快、对 Linux 内核支持好。但 VirtualBox 免费开源,也完全够用。怎么选?看下面这张表:
| 特性 | VMware Workstation Pro | VirtualBox |
|---|---|---|
| 价格 | 付费(有试用期) | 免费开源 |
| 性能 | 更优,尤其 I/O 密集场景 | 够用,但稍逊一筹 |
| 快照/克隆 | 支持,且速度快 | 支持,但稍慢 |
| 3D 加速 | 好 | 一般 |
| 调试兼容性 | 对 GDB、pwndbg 等工具兼容性好 | 偶尔有小坑 |
我建议:如果你只是学习,VirtualBox 完全够用。但如果你打算长期做二进制安全研究,甚至跑一些复杂的 fuzzer 或调试器,VMware 会让你少掉很多头发。我在项目中遇到过 VirtualBox 下 GDB 断点命中后虚拟机直接卡死的奇葩问题,换 VMware 就没事了。
2.2 安装 VMware Workstation Pro
咱们以 VMware 为例,因为它在二进制安全圈子里更常见。安装过程其实很简单,但有几个细节要注意。
- 下载:去 VMware 官网下载 Workstation Pro 最新版。别下 Player 版,功能阉割太多。
- 安装:Windows 下双击 exe,一路 Next。Linux 下给 .bundle 文件加执行权限然后运行。
- 许可证:试用期 30 天,到期后要么买,要么……嗯,你懂的。我个人建议支持正版。
2.3 创建 Ubuntu 20.04 LTS 虚拟机
Ubuntu 20.04 LTS 是我做二进制漏洞利用的首选系统。为什么?因为它的内核版本(5.4)和 glibc 版本(2.31)刚好卡在一个“经典”的位置——既支持现代漏洞利用技术,又有大量现成的 exploit 和 writeup 可以参考。你想想看,用太新的内核,很多老的利用技巧就失效了;用太老的,又缺乏代表性。20.04 是个黄金平衡点。
创建步骤:
- 下载 ISO:去 Ubuntu 官网下载 20.04.6 LTS 桌面版 ISO。
- 新建虚拟机:VMware 里点“创建新的虚拟机”,选“典型(推荐)”。
- 选择 ISO:浏览到你下载的 Ubuntu 20.04 ISO 文件。
- 配置硬件:
- 内存:至少 4GB,建议 8GB。做漏洞利用时经常要开多个终端和调试器,内存不够会卡死。
- CPU:至少 2 核,建议 4 核。有些 fuzzer 是多线程的,核多跑得快。
- 硬盘:至少 40GB,建议 80GB。你后面会装各种工具、下载源码、编译,空间很快就吃完了。
- 网络:选 NAT 模式。桥接模式虽然也能用,但 NAT 更安全,虚拟机不会直接暴露在局域网里。
- 启动安装:开机后按提示安装 Ubuntu,语言选中文,键盘布局选 English (US)。
2.4 安装 VMware Tools 或 Open VM Tools
这一步很多人会忽略,但非常重要。VMware Tools 能让你在宿主机和虚拟机之间自由拖拽文件、复制粘贴文本,还能自动调整分辨率。没有它,你会觉得像在隔着毛玻璃干活。
安装方法:
# 更新包列表
sudo apt update
# 安装 open-vm-tools(推荐,比官方 VMware Tools 更稳定)
sudo apt install open-vm-tools open-vm-tools-desktop -y
# 重启
sudo reboot
重启后,试试从宿主机拖一个文件到虚拟机里。能拖进去,说明成功了。如果不行,检查一下 VMware 的“虚拟机”菜单里“重新安装 VMware Tools”是否已勾选。
2.5 系统基础配置
系统装好了,工具也装好了,接下来做几项基础配置。这些配置看似琐碎,但能让你后续的工作流畅很多。
2.5.1 更换软件源
Ubuntu 默认的软件源在国外,下载速度很慢。换成国内镜像源,比如阿里云或清华的。
# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑源文件
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# 更新
sudo apt update && sudo apt upgrade -y
2.5.2 安装常用开发工具
做二进制漏洞利用,下面这些工具是标配:
sudo apt install -y \
build-essential \
gdb \
gcc-multilib \
g++-multilib \
git \
vim \
curl \
wget \
net-tools \
python3 \
python3-pip \
python3-dev \
libssl-dev \
libffi-dev \
zlib1g-dev \
libncurses5-dev \
libgdbm-dev \
libnss3-dev \
libreadline-dev \
libsqlite3-dev \
libbz2-dev
这里面有几个重点:gcc-multilib 和 g++-multilib 是编译 32 位程序用的,很多 CTF 题目和旧版 exploit 都是 32 位的,没有这个你编译都过不了。gdb 是调试器,后面我们会装 pwndbg 或 gef 插件,但基础版先装上。
2.5.3 配置 Python 环境
Python 3 是必须的,很多漏洞利用脚本都用 Python 写。我建议用虚拟环境管理,避免包冲突。
# 安装 pip 和虚拟环境
sudo apt install python3-pip python3-venv -y
# 创建一个专门用于漏洞利用的虚拟环境
python3 -m venv ~/exploit_env
# 激活环境
source ~/exploit_env/bin/activate
# 安装常用库
pip install pwntools
pip install ropper
pip install capstone
pip install unicorn
pwntools 是 CTF 和漏洞利用的瑞士军刀,后面你会天天用到它。ropper 用来找 ROP gadget,capstone 是反汇编引擎,unicorn 是 CPU 模拟器。这些工具在后面的章节都会用到。
2.5.4 关闭 ASLR(可选,但建议)
做漏洞利用调试时,ASLR(地址空间布局随机化)会干扰你的分析。我建议在虚拟机里暂时关闭它,等学完了再打开。
# 临时关闭(重启后失效)
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
# 永久关闭
echo 'kernel.randomize_va_space = 0' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
2.6 验证环境
配置完了,咱们验证一下环境是否正常。写一个简单的 C 程序,编译并调试:
// test.c
#include <stdio.h>
#include <string.h>
void vulnerable(char *input) {
char buffer[64];
strcpy(buffer, input);
printf("Hello, %s\n", buffer);
}
int main(int argc, char *argv[]) {
if (argc < 2) {
printf("Usage: %s <input>\n", argv[0]);
return 1;
}
vulnerable(argv[1]);
return 0;
}
编译并调试:
# 编译(关闭栈保护,方便调试)
gcc -fno-stack-protector -z execstack -no-pie -g -o test test.c
# 用 GDB 调试
gdb ./test
(gdb) break vulnerable
(gdb) run AAAA
(gdb) info registers
(gdb) x/20x $rsp
如果 GDB 能正常启动、断点能命中、寄存器能显示,说明环境没问题。如果报错说缺少某个库,用 apt search 找到并安装即可。
strcpy 没有触发栈溢出,别慌。检查一下编译选项是否加了 -fno-stack-protector。Ubuntu 20.04 默认开启了栈保护(canary),不加这个选项的话,strcpy 会被编译器自动替换成安全的 __strcpy_chk,你就看不到经典的栈溢出了。
2.7 快照:你的后悔药
环境配好了,第一件事就是拍快照。快照相当于游戏里的存档,万一你后面把系统搞崩了(相信我,你一定会搞崩的),一键恢复,不用重装。
在 VMware 里:虚拟机 -> 快照 -> 拍摄快照。命名成“初始环境已配置”。
以后每装一个重要的工具或库,都拍一个快照。我个人的习惯是:
- 快照 1:初始系统(刚装完 Ubuntu)
- 快照 2:基础工具(GCC、GDB、Python 等)
- 快照 3:漏洞利用工具(pwndbg、pwntools、ROPgadget 等)
- 快照 4:特定实验环境(比如装了特定版本的 glibc)
这样你可以在不同快照之间来回切换,非常灵活。
2.8 本章小结
嗯,到这一步,你的虚拟机环境就搭好了。我们装了 VMware,建了 Ubuntu 20.04 LTS,配了开发工具和 Python 环境,还拍了快照。整个过程大概需要 30-60 分钟,取决于你的网速和电脑性能。
下一章,我们会在这个环境里安装 pwndbg、gef 等调试插件,并配置一个完整的漏洞利用工作流。到时候你会发现,前面这些“苦力活”都是值得的。
记住:环境搭得好,漏洞挖到老。别偷懒,每一步都做扎实了。