虚拟专用网络(VPN)使我们能够连接到私有(内部)网络,并访问其中的主机和资源,就如同我们直接连接到了目标私有网络一样。它是在共享的公共网络(例如,员工从家中远程连接到其公司的企业网络)上建立的一个安全通信通道,用于连接至私有网络。VPN通过加密通道中的通信来防止窃听和访问传输中的数据,从而提供一定程度的隐私和安全性。

从高层次看,VPN的工作原理是将我们连接设备的互联网通信流量,经由目标VPN的私有服务器进行路由,而不是通过我们的互联网服务提供商(ISP)。当连接到VPN时,数据看似源自VPN服务器而非我们的计算机,并且会显示为一个不同于我们真实公网IP地址的公共IP地址。
远程接入VPN主要有两种类型:基于客户端的VPN和SSL VPN。SSL VPN使用Web浏览器作为VPN客户端。连接在浏览器和SSL VPN网关之间建立,可以配置为仅允许访问基于Web的应用程序(如电子邮件和内部网站点),甚至可以访问内部网络,而无需终端用户安装或使用任何专用软件。基于客户端的VPN则需要使用客户端软件来建立VPN连接。一旦连接成功,用户的主机在大多数情况下的工作方式将如同直接连接到公司网络一样,并且能够访问服务器配置所允许的任何资源(应用程序、主机、子网等)。有些企业VPN为员工提供对企业内部网络的完全访问权限,而有些则会将用户置于专为远程工作人员保留的特定网段。
为何使用VPN?
我们可以使用VPN服务(例如NordVPN或Private Internet Access),并连接到位于国内其他地区或世界另一区域的VPN服务器,以隐藏我们的浏览流量或伪装我们的公网IP地址。这可以为我们提供一定程度的安全性和隐私性。然而,由于我们是连接到公司的服务器,始终存在数据被记录或VPN服务未遵循安全最佳实践或其宣传的安全特性的风险。使用VPN服务伴随着提供商言行不一并记录所有数据的风险。使用VPN服务并不能保证匿名性或隐私,但它对于绕过某些网络/防火墙限制或在可能存在敌意的网络(例如公共机场无线网络)上连接时非常有用。切勿抱有VPN能保护我们免受进行恶意活动所带来的后果的想法而使用它。
连接到HTB VPN
HTB以及其他提供故意存在漏洞的虚拟机/网络的服务,要求玩家通过VPN连接到目标网络,以访问私有的实验网络。HTB网络内的主机无法直接连接到互联网。当连接到HTB VPN(或任何以渗透测试/黑客技术为重点的实验环境)时,我们应始终将该网络视为”敌对的”。我们应仅从虚拟机进行连接,如果我们的攻击虚拟机启用了SSH,则应禁止密码认证,锁定任何Web服务器,并且不在我们的攻击虚拟机上留下敏感信息(例如,不要使用与执行客户评估时相同的虚拟机来进行HTB或其他易受攻击网络的操作)。当连接VPN(无论是在HTB Academy内还是主HTB平台)时,我们使用以下命令进行连接:
guhusf@htb[/htb]$ sudo openvpn user.ovpn
Thu Dec 10 18:42:41 2020 OpenVPN 2.4.9 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Apr 21 2020
Thu Dec 10 18:42:41 2020 library versions: OpenSSL 1.1.1g 21 Apr 2020, LZO 2.10
Thu Dec 10 18:42:41 2020 Outgoing Control Channel Authentication: Using 256 bit message hash 'SHA256' for HMAC authentication
Thu Dec 10 18:42:41 2020 Incoming Control Channel Authentication: Using 256 bit message hash 'SHA256' for HMAC authentication
Thu Dec 10 18:42:41 2020 TCP/UDP: Preserving recently used remote address: [AF_INET]
Thu Dec 10 18:42:41 2020 Socket Buffers: R=[212992->212992] S=[212992->212992]
Thu Dec 10 18:42:41 2020 UDP link local: (not bound)
<SNIP>
Thu Dec 10 18:42:41 2020 Initialization Sequence Completed
最后一行显示 Initialization Sequence Completed,这告诉我们已成功连接到VPN。
其中,sudo指示我们的主机以提升权限的root用户身份运行命令,openvpn是VPN客户端,而 user.ovpn文件是我们从Academy模块部分或主HTB平台下载的VPN密钥文件。如果我们在另一个终端窗口中输入 ifconfig,若成功连接到VPN,我们将看到一个tun适配器。
guhusf@htb[/htb]$ ifconfig
<SNIP>
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
inet 10.10.x.2 netmask 255.255.254.0 destination 10.10.x.2
inet6 dead:beef:1::2000 prefixlen 64 scopeid 0x0<global>
inet6 fe80::d82f:301a:a94a:8723 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen
输入 netstat -rn将显示可通过VPN访问的网络路由信息。
guhusf@htb[/htb]$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.2 0.0.0.0 UG 0 0 0 eth0
10.10.14.0 0.0.0.0 255.255.254.0 U 0 0 0 tun0
10.129.0.0 10.10.14.1 255.255.0.0 UG 0 0 0 tun0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
这里可以看到,用于HTB Academy机器的 10.129.0.0/16网络可通过tun0适配器经由 10.10.14.0/23网络进行访问。
VPN连接帮助
如果您是第一次使用VPN,Hack The Box支持门户上的以下资源将会很有帮助:
- 实验环境访问简介
- 连接故障排除




