我的 ISP 如何能够注入此网页?

信息安全 网络服务商
2021-08-25 22:44:00

最近我注意到我访问的页面http有时在我的 ISP 的顶部有一个大横幅。奇怪的是,当我刷新页面时,我得到了https网站的版本并且横幅不存在。我尝试http在地址栏中输入版本,但是当我单击输入时,我得到了https版本。开发人员工具中的网络选项卡显示 301 在放入http版本时永久移动,然后我重定向了https版本。

所以我对我如何得到这个横幅感到有点惊讶。ISP如何能够注入横幅+在横幅下方显示原始站点?请参见下面的屏幕截图。我会假设页面被重定向到的事实https,即 ISP 将无法显示带有横幅的页面?这里发生了什么?

注意:我的 dns 默认为 1.1.1.1 和 1.0.0.1(都是 cloudflare)

在此处输入图像描述

2个回答

您的屏幕截图显示的是 HTTP(“不安全”)页面,而不是 HTTPS。您的 ISP 实质上对您进行了“SSL 剥离”攻击;他们阻止您获得重定向,自己获取网站的 HTTPS 版本,将他们自己的内容放在检索到的 HTML 之上,然后将修改后的 HTML 返回给您以响应您的原始 HTTP 请求。他们还存储(在他们身边或在您的浏览器 cookie 中)您看到横幅的事实,因此将来对该站点的请求被重定向到 HTTPS,而没有注入任何内容。

请记住,您的 ISP 控制着您的计算机和 Internet 之间的一切。如果连接已经加密(HTTPS),他们能做的就更少了(他们可以切断连接,他们可能知道您正在请求哪个站点,他们可以知道您的请求和响应有多长,他们可以尝试欺骗服务器并希望您单击证书错误消息),但是在未加密的连接上,他们可以做任何他们想做的事情。修改响应,抑制部分响应,添加自己的内容,重定向你,阻止重定向,彻底冒充服务器......

此外,DNS 请求和响应(通常)是不安全地发送的。ISP 也可以在那里为所欲为。将 DNS 请求发送到哪台服务器并不重要;如果它在 Internet 上,您的 ISP 可以看到并篡改它。

请记住,以上所有内容也适用于本地网络攻击者(与您在同一 LAN 上的人,可能在企业、家庭或公共 WiFi 中),如果他们可以获得中间人位置(并且这通常很容易)。

ISP 控制着发送给您的内容,所以我不明白他们能够做到这一点有多疯狂。

ISP 可以检查您的流量......他们必须至少能够看到您发送数据包的 IP 地址,以便它可以到达目的地。HTTPS 连接通过握手启动,其中握手数据包被发送到通过互联网路由的目的地,并发送响应以允许识别和创建用于安全通信通道的方法。Stackoverflow https 数据包可见性- HTTPS RFC2818 - S-HTTP

如果您的 ISP 通过坐在连接中间并冒充双方来篡改此握手,那么他们就有可能完成您在上面所说的操作。ISP 人在中间

假设您有一个恶意 ISP。他们在你的互联网前建立了一个虚假的互联网。因此,您尝试与 64.233.185.113 google.com 进行 TSL 握手。他们从这个 IP 开始与你进行 TSL 握手,解密你的数据包将它们发送给谷歌,在你连接到假网站后,他们开始与他们进行 TSL 握手。现在您正在通过中间代理中的 ISP 人接收真正的 google 内容。当浏览器看到可疑的证书时,它通常会以类似的方式警告您在您上面的图片中,连接显示“不安全”,这可能意味着您在不同的时间点击了某些内容,即使此证书不好,我选择信任它,允许您继续访问该站点。真正处理这个问题的是浏览器。

一些试图缓解问题的事情。

  • 使用代理。如果您有一个值得信赖的朋友,他将允许您连接到他们的服务器并通过他们的 ISP 路由您的数据包。socks-proxy如果横幅在不同的 ISP 上消失,那么它告诉您网络不是您的计算机的问题。

  • 如果您的浏览器出现故障或受到威胁,您可以尝试安装新浏览器或尝试删除所有附加组件和扩展。可以-google-chrome-browser-extensions-be-dangerous

  • 检查 DNS,我仍然认为值得检查以确保不涉及 DNS 劫持。DNS 劫持场景DNS 操纵经常用于 MITM 攻击。中间人 Cloudfare