代理服务器如何嗅探数据?

信息安全 http代理
2021-09-05 07:28:29

我生活在一个互联网上大多数网站都被政府封锁的国家,所以我们主要使用各种各样的代理,例如网络代理、VPN、SOCKS,其中大部分都是免费的。

我的问题是:有什么办法,即使我们在网页上使用 SSL,那些代理服务器也会嗅探我们的数据?如果有,如何?

4个回答

当 Web 浏览器使用 HTTP 代理时,情况如下。假设目标 URL 是http://www.example.com/index.html. 然后浏览器连接到代理并告诉它:“我想在http://www.example.com/index.html”处获取页面。代理遵守,获取数据,并将其发送回浏览器。通过构建,代理可以看到所有数据。代理和浏览器之间的连接可以加密,但代理仍然可以看到所有内容。

如果目标 URL 使用 SSL ( https://www.example.com/index.html: mind the sin https),则浏览器连接到代理,并告诉它:“我想连接到 443 的端口www.example.com;这样做,然后在两个方向上中继所有字节”。RFC 2817 的第 5.2 节描述了这种机制。然后,代理充当浏览器和 Web 服务器之间所有字节的中继,这些字节编码浏览器和 Web 服务器希望它们成为的任何内容,即实际上是 SSL 握手和后续数据。在这种情况下,代理在 SSL 隧道之外并且看不到交换数据。SSL 隧道仍然在 Web 服务器和浏览器之间,代理是一种纯粹的传输机制。


代理仍然处于尝试中间人攻击的理想位置,因为所有通信都通过它;但是 SSL 受到保护,即通过客户端验证的 Web 服务器证书这当然依赖于人类用户不要点击有关无效证书的警告。在一些组织中,本地系统管理员在桌面系统中安装额外的“流氓”根 CA 证书,以便他们可以在代理上创建虚假服务器证书,并进行中间人攻击,授予他们访问交换数据的权限(以便他们可以应用防病毒过滤器即使在 HTTPS 流量上,至少他们是这么说的)。

除非安装了这种流氓 CA(这基本上是对客户端计算机安全性的破坏),否则代理将无法查看浏览器和 HTTPS 服务器之间交换的数据。代理仍然能够知道联系了哪个服务器,并观察数据交换的大小:加密隐藏了内容,而不是大小。

SOCKS 的情况在概念上是相似的。浏览器和代理之间的对话是不同的,但基本保持不变:代理将能够看到所有的 HTTP 流量,而看不到任何 HTTPS 流量。


编辑:显然,存在一些其他类型的“代理”,其中您的浏览器与专用服务器联系,该服务器本身运行浏览器,为您进行浏览,并将页面返回给您。不幸的是,有些人称其为“Web 代理”,这个术语已经使用了 20 年,用于指定技术上的 HTTP 代理。混乱随之而来。

这种“浏览代理”在概念上与使用远程桌面协议在服务器上打开会话并从那里运行您的浏览器类似。这将所有可以想象的权力授予代理管理员您的浏览活动。如果您不完全信任代理系统管理员,您不想这样做。

如果存在歧义风险,您不希望使用“Web 代理”表达式。

我能想到的唯一可行的方法是您以某种方式允许相关代理软件将其自己的 CA 添加到您的受信任根 CA 列表中。这将允许代理服务器对您的连接执行 MITM 攻击。

如果未完成此步骤,代理服务器将无法读取通过 SSL 发送的数据。

请参阅:中间人 Blue Coat 代理 SSL 还是什么?想要查询更多的信息。

首先,我想区分通常称为HTTP Proxies的内容,对此,其他答案适用,除非您将代理的 CA 添加到受信任的 CA,否则不会破坏机密性;Web 代理(我们仍然无法就名称达成一致,您可以将其称为 HTML 代理或浏览代理)。

我不会详细介绍,但基本上,网络代理是您访问并要求它为您“代理”/“路由”网页的网站。例如,HideMyAssZendProxyAWebProxy,或者如果您在 Google 上搜索“Web 代理”,则基本上是任何结果。

这些网络代理能够破坏您的 HTTPS 会话的机密性,并且它们能够这样做并且不会被检测到。因此,只使用您信任的网络代理,或者,最好不要使用它们。

网络代理位于您和您正在访问的启用 SSL 的网站之间。它充当中间浏览器。它解密服务器发送给您的内容,并加密您发送给服务器的内容。它管理您的会话并处理您的 cookie。坐在应用层,它可以做所有这些,甚至更多。

由于您一直在访问https://web-proxy.com,因此您的浏览器没有理由在代理破坏机密性时警告您。

另一方面,您在浏览器或系统设置中配置的代理可能是安全的。访问应该安全的网站时,请确认您在正确的域中(例如“example.com”)并且 https 连接没有中断(通常在安全时会显示锁定图标)。这与 Web 代理不同,因为使用 Web 代理,域名就是代理的域。

并不真地。但是,请确保您https在 URL 栏中输入而不是http- 大多数网站 301 重定向到 HTTPS,但代理服务器可以阻止这种情况发生。

此外,请注意类似网络钓鱼的攻击——代理服务器可能会为您提供类似mаil.google.coma即 Cryllic)的站点。不过,这应该对大多数实现发出警告——从 HTTPS 站点重定向需要该站点的证书。此外,许多具有登录页面(带有登录)的代理服务器通常会要求您添加 SSL 异常(因为在登录之前尝试访问 HTTPS 页面会导致不安全的重定向)。有可能会利用此 SSL 异常。

请注意,代理服务器可以看到您尝试访问的域。


正如@Adnan 正确提到的那样,Web 代理(您只需在没有浏览器或网络配置的情况下输入网站的网页)是完全不安全的。Web 代理代表您获取页面并将 HTML 转发给您(与其他代理将稍微修改的原始响应转发给您不同)。他们代表您发布请求,并且他们是 HTTPS 连接中的“客户端”(他们只是将解密后的 HTML 副本交给您并为您加密您的响应)。因此,他们可以选择读取您的所有数据。如果您想防止嗅探,请在 HTTP/SOCKS 代理上使用 HTTPS。