跳到主要内容
全部文章
学习5 分钟

在家搭建安全实验室:合法、安全地学习攻防

如何配置虚拟机、隔离网络和故意留有漏洞的靶机,让你在不触犯法律、不影响家庭网络的前提下练习攻击与防御。

目录

读再多安全方面的书,也只能带你走一段路,真正的本领要靠动手练出来。问题是,在不属于你的系统上动手就是违法。家庭实验室正好解决这个问题:在你自己的电脑上搭一个由虚拟机组成的小网络,在里面可以放心地攻击、破坏、观察和修复。下面讲讲如果从零开始,我会怎么搭建。

唯一的规则:获得授权

只测试属于你自己的系统,或者你拿到了书面授权的系统。扫描邻居的 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 一条命令就能启动,并且只绑定在你自己的电脑上:
Bash
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 上执行:

Bash
# 我的地址是什么,在哪个网络里?
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 就明令禁止,而且这样也会破坏其他人的乐趣。

继续阅读

一起做点​了不起的东西吧。

无论是新项目、合作,还是只想聊聊技术,都欢迎来信。

  • 乌兹别克斯坦,塔什干接受远程工作

  • 塔什干现在 (GMT+5)