使用 Wifiphisher 的“Without a Spoofer”SSL Stripping 选项

Beginner
立即练习

引言

SSL stripping 是一种中间人(Man-in-the-Middle, MITM)攻击,它会强制浏览器通过未加密的 HTTP 连接访问网站,即使用户本意是安全地通过 HTTPS 连接。这使得攻击者能够拦截并读取用户与网站之间的所有通信。

在本实验中,你将使用 Wifiphisher 工具执行 SSL stripping 攻击。具体来说,你将探索“无欺骗器”(Without a spoofer)选项,该选项依赖于在不使用伪造 SSL 证书的情况下拦截和修改流量。这个实践练习将帮助你在一个受控且安全的环境中理解这种攻击的机制。

发起钓鱼页面攻击

在此步骤中,你将启动 Wifiphisher 工具来创建一个伪造的接入点(AP)并发起钓鱼页面攻击。由于 LabEx 虚拟环境没有物理无线网卡,我们将使用特定选项来模拟攻击。

首先,打开一个终端。我们将使用 sudo 来运行 wifiphisher,因为它需要提升的权限来管理网络接口和服务。我们将使用 --nojamming 选项来阻止它尝试干扰真实的 WiFi 网络,并使用 --essid "Free WiFi" 来命名我们的伪造网络。我们还需要指定一个钓鱼页面场景;我们将使用 firmware-upgrade

在你的终端中执行以下命令:

sudo wifiphisher --nojamming --essid "Free WiFi" -p firmware-upgrade

运行命令后,Wifiphisher 将启动。它会自动检测你的网络接口。系统可能会提示你选择 AP 的接口和连接互联网的接口。对于这两个提示,你通常可以按 Enter 来接受默认选择,通常是 eth0

在工具初始化时,你将看到类似以下的输出:

[*] Starting Wifiphisher 1.4GIT ( https://wifiphisher.org ) at 2023-10-27 10:00
[+] Timezone detected. Setting channel hopping to the appropriate regulatory domain.
[+] Selecting eth0 for the AP interface.
[+] Selecting eth0 for the Internet-connected interface.
...

当提示 SSL 时,选择“无欺骗器”选项

在此步骤中,你将配置攻击的 SSL stripping 方法。在初始设置后,Wifiphisher 会询问你希望如何处理 SSL/TLS 保护的流量。这是一个关键选择,它决定了中间人攻击的性质。

Wifiphisher 将显示一个提示,其中包含两个主要选项:

  1. 带欺骗器(With a spoofer):此方法会即时生成一个伪造的 SSL 证书并将其呈现给客户端。这通常会在客户端浏览器中触发安全警告。
  2. 无欺骗器(Without a spoofer):此方法尝试在不使用任何证书的情况下将连接降级为纯 HTTP。它依赖于客户端浏览器不强制执行安全连接。

你将在终端中看到类似以下的提示:

[?] How do you want to handle SSL/TLS-protected traffic?
1. With a spoofer (Generate a fake cert on the fly and spoof the domain)
2. Without a spoofer (Downgrade to HTTP)
[1/2]:

在本实验中,我们探索第二个选项。输入 2 并按 Enter

2

在你做出选择后,Wifiphisher 将完成伪造 AP 和钓鱼页面的设置。然后它将准备好接受客户端连接。终端将显示消息,表明 HTTP 和 HTTPS 代理服务器正在运行。

[*] Starting the HTTP and HTTPS proxy servers...
[*] Starting AP...

理解此方法依赖于客户端浏览器漏洞

在此步骤中,我们将讨论“无欺骗器”SSL stripping 选项背后的机制。这里没有需要运行的命令;本节仅供你概念性理解。

“无欺骗器”方法是一种更隐蔽的攻击形式。其工作原理如下:

  1. 初始请求:受害者连接到你的伪造“Free WiFi”网络。他们打开浏览器并尝试导航到一个安全网站,例如 https://example.com
  2. 拦截:Wifiphisher 作为网关,在请求到达互联网之前拦截此请求。
  3. 降级:Wifiphisher 不会尝试用伪造证书冒充 example.com,而是采取不同的做法。它会将用户的请求转发给真实的 https://example.com,但通过纯粹的 http:// 连接将内容返回给受害者。
  4. 内容重写:至关重要的是,Wifiphisher 会扫描从真实服务器接收到的 HTML 内容,并重写所有链接。任何原本是 https://... 的链接都会被更改为 http://...。这使得用户尽可能长时间地停留在未加密的会话中。

此攻击的成功取决于两个主要因素:

  • 用户没有注意到浏览器锁形图标的缺失。
  • 目标网站没有使用 HTTP Strict Transport Security (HSTS)。HSTS 是一种安全策略,Web 服务器可以使用它来告知浏览器应该通过 HTTPS 进行通信。如果浏览器之前已从某个网站接收到 HSTS 标头,它将拒绝通过 HTTP 连接,从而使此攻击失效。

连接客户端并尝试浏览 HTTPS 网站

在此步骤中,你将模拟一个客户端连接到伪造 AP 并尝试访问安全网站。在实际场景中,受害者会将其设备连接到“Free WiFi”网络。在这里,我们将使用新终端中的 curl 命令来模拟此过程。

首先,打开一个新的终端标签页。你可以通过点击终端面板中的 + 图标来完成此操作。这个新终端将充当我们的“受害者客户端”。

在这个新终端中,我们将使用 curl 来尝试访问一个 HTTPS 网站。我们将使用 httpforever.com,这是一个为测试目的设计的网站,它不强制执行 HSTS。-v(verbose,详细)标志将向我们显示有关连接过程的详细信息。

新终端中执行以下命令:

curl -v https://httpforever.com

由于 Wifiphisher 控制着网络,此请求将被拦截。它不会到达真实的 httpforever.com,而是由我们的攻击工具处理。

观察连接是否降级为 HTTP

在此步骤中,你将观察客户端和攻击者终端中的攻击结果,以确认连接已成功降级。

首先,查看你的客户端终端(你运行 curl 的地方)的输出。详细输出将显示你对 https://httpforever.com 的请求导致了重定向。你将看到一个 302 Found 状态码和一个指向 HTTP 地址的 Location 标头,该地址是强制门户页面。

输出将类似如下内容:

*   Trying 10.0.0.1:443...
* Connected to httpforever.com (10.0.0.1) port 443 (#0)
...
< HTTP/1.1 302 Found
< Location: http://10.0.0.2:8080/
< Content-Length: 0
< Date: Fri, 27 Oct 2023 10:05:00 GMT
< Server: Python/3.10 aiohttp/3.8.5
...

注意 Location 标头将你重定向到一个 http:// 地址。这证实了降级。

接下来,切换回运行 wifiphisher第一个终端。你将看到新的日志条目,显示已有客户端连接,并且其请求正在被处理。它将记录来自模拟客户端的 HTTP GET 请求。

[+] 192.168.1.100 victim-device connected to Free WiFi
[*] Sent a captive portal page to 192.168.1.100
[+] GET 192.168.1.100: http://httpforever.com/

这证实了攻击者正在成功地以明文形式拦截流量。

要完成此实验,请切换到 Wifiphisher 的终端并按 Ctrl+C 来停止该工具。

总结

在此实验中,你成功演示了使用 Wifiphisher 中的“Without a spoofer”(无欺骗器)选项进行的 SSL stripping(SSL 剥离)攻击。

你学会了如何:

  • 启动 Wifiphisher 以创建一个用于强制门户攻击的伪造 AP。
  • 选择“Without a spoofer”SSL stripping 方法。
  • 在单独的终端中使用 curl 模拟客户端连接。
  • 通过分析客户端和攻击者工具的输出,观察从 HTTPS 到 HTTP 的连接降级证据。

这个练习突显了 HSTS 等安全机制在防范此类降级攻击方面的重要性。恭喜你完成此实验!