读再多安全方面的书,也只能带你走一段路,真正的本领要靠动手练出来。问题是,在不属于你的系统上动手就是违法。家庭实验室正好解决这个问题:在你自己的电脑上搭一个由虚拟机组成的小网络,在里面可以放心地攻击、破坏、观察和修复。下面讲讲如果从零开始,我会怎么搭建。
唯一的规则:获得授权
只测试属于你自己的系统,或者你拿到了书面授权的系统。扫描邻居的 Wi-Fi、学校的网站,或者“只是想看看”某台随便找来的服务器,无论出于什么目的,在几乎所有国家(包括乌兹别克斯坦)都是违法的。本文的所有操作都只在你自己的电脑里进行。
不要把有漏洞的虚拟机接入家庭网络,也不要接入互联网。它们本来就是为了被攻破而设计的,任何能访问到它们的人都能攻破,而不只是你。
需要准备什么
- 一台支持硬件虚拟化(Intel VT-x 或 AMD-V)并在 BIOS 或 UEFI 中开启了该功能的电脑。近十年的电脑大多都支持。
- 内存:16 GB 会很从容。Kali 需要 2–4 GB,小型靶机约 1 GB,Windows 虚拟机需要 4 GB 以上。如果只有 8 GB,同一时间只运行一台攻击机和一台轻量靶机。
- 硬盘:80–100 GB 可用空间,最好是固态硬盘。
不需要额外的路由器,也不需要特殊硬件,什么都不用买。
选择虚拟化软件
虚拟化软件(Hypervisor)就是用来运行虚拟机的程序。在笔记本或台式机上,最简单的选择是 VirtualBox(免费开源)和 VMware Workstation Pro,后者现在也已免费,两者都支持 Windows 和 Linux。如果你有一台闲置电脑,可以装上 Proxmox VE,把它变成一台通过浏览器管理的专用实验服务器。选定一个坚持用下去就好,原理都是相通的。
把实验室隔离起来
把实验室里的每台虚拟机都接入仅主机(Host-only)网络或内部网络(Internal Network)。在 VirtualBox 中,把网卡设置为“Host-only Adapter”或“Internal Network”:虚拟机之间可以互相访问(仅主机模式下还能访问你的电脑),但访问不到你的路由器和互联网。攻击机需要更新时,临时把网卡切换到 NAT,更新完再切回来。有漏洞的靶机则完全不需要联网。
在每台虚拟机还干净的时候拍一个快照,每次做实验前再拍一个。一旦出了问题,几秒钟就能恢复。有了快照,你就可以放心尝试那些自己还没完全弄懂的东西,而这正是实验室存在的意义。
攻击机和靶机
Kali Linux
Kali Linux 就是你的攻击机:一个基于 Debian、预装了数百个安全工具的系统。Kali 官网提供现成的 VirtualBox 和 VMware 镜像,不需要手动安装。
有漏洞的靶机
这些系统本来就是为了被攻破而设计的,非常适合练习:
- Metasploitable 2:一台满是过时服务的老旧 Linux 服务器。千万不要把它接入真实网络。
- DVWA(Damn Vulnerable Web Application):一个 PHP 网站,可以按不同难度练习 SQL 注入、XSS 等经典 Web 漏洞。
- OWASP Juice Shop:一个现代的网上商店,包含一百多个挑战。用 Docker 一条命令就能启动,并且只绑定在你自己的电脑上:
docker run --rm -p 127.0.0.1:3000:3000 bkimminich/juice-shop
然后在浏览器中打开 http://localhost:3000。其中 127.0.0.1 这部分很重要:如果没有它,同一个 Wi-Fi 下的其他设备也能访问这个商店。
观察网络流量
Wireshark 能显示经过网卡的每一个数据包。Burp Suite Community Edition 则位于浏览器和 Web 应用之间,让你查看并修改每一个请求。两者都是免费的,而且比大多数课程更能让你明白 Web 到底是怎么运作的。
第一个练习
在同一个仅主机网络中启动 Kali 和 Metasploitable 2,然后在 Kali 上执行:
# 我的地址是什么,在哪个网络里?
ip -brief address
# 找出你自己实验网络中的机器
# (192.168.56.0/24 是 VirtualBox 默认的仅主机网段,请换成你自己的)
nmap -sn 192.168.56.0/24
# 查看靶机开放的端口和服务版本
nmap -sV 192.168.56.101
慢慢读输出结果。逐个查一查每个服务和它的版本:哪些已经过时多年?关于它们有哪些公开的信息?挑其中一个,弄清楚攻击者会怎样利用它,以及同样重要的,管理员应该怎样修复它。然后打开 Wireshark 再扫描一次,看看从防御者的角度,端口扫描是什么样子。
在线练习平台
当家里的实验室开始显得不够用时,这些网站会在它们自己的服务器上提供合法的靶机:
- TryHackMe:在浏览器里按步骤完成的房间,最友好的入门方式。
- Hack The Box:难度更高的靶机,还有 HTB Academy 课程。
- OverTheWire:免费的闯关游戏,其中 Bandit 通过 SSH 教你 Linux 基础。
- PortSwigger Web Security Academy:免费且质量很高的 Web 安全实验。
- VulnHub:可以下载到自己实验室里的漏洞靶机。
做好笔记
把每条命令、它返回的结果、你当时的理解以及学到的东西都记下来。一个存放 Markdown 文件的文件夹,或者 Obsidian 这样的应用就足够了。笔记能把零散的尝试变成真正的学习,而针对已退役靶机写得清楚的复盘文章,还能成为你的作品集。只是不要公开仍在活跃期的靶机的解法:比如 Hack The Box 就明令禁止,而且这样也会破坏其他人的乐趣。


