劫持网页
打开一个网页,劫持网页你看到的劫持网页是内容。但内容不一定来自你输入的劫持网页网址。
2019年,劫持网页安全研究者发现一批路由器被植入了恶意固件。劫持网页用户访问某些银行网站时,劫持网页页面看起来完全正常——logo、劫持网页排版、劫持网页输入框都对。劫持网页但提交账号密码的劫持网页瞬间,数据被发往了另一个服务器。劫持网页整个劫持过程发生在路由器层面,劫持网页浏览器地址栏显示的劫持网页URL没有任何异常。用户不可能察觉。劫持网页
这就是劫持网页网页劫持的核心逻辑:你看到的页面,和你以为你在看的页面,可以不是同一个东西。
DNS劫持:最粗暴的一种
你在浏览器里敲下“example.com”,电脑先要问DNS服务器:这个域名的IP是多少?如果DNS服务器被篡改,或者你连的WiFi路由器被做了手脚,它返回的IP地址可能指向一台攻击者的服务器。你访问的是假网站,但地址栏里显示的是真域名。
2018年,巴西银行客户遭遇过大规模DNS劫持。攻击者入侵了大量家用路由器的DNS设置,把bank.com之类的域名解析到钓鱼IP。用户打开网银,看到一模一样的界面,输入密码,钱就没了。整个链条里,用户端唯一的异常是——路由器DNS设置被改了,但谁会没事去查那个?
BGP劫持:更底层,更危险
DNS之上还有一层。互联网骨干网靠BGP协议交换路由信息,告诉彼此“哪些IP段在我这里”。如果一个网络运营商错误地或恶意地宣告了不属于它的IP段,流量就会被引导到错误的方向。
2008年,巴基斯坦电信试图在国内屏蔽YouTube,结果错误地向全球宣告了YouTube的IP段。全球用户的YouTube访问请求在短时间内被导向巴基斯坦电信的网络,YouTube在全球范围内短暂瘫痪。这是一次事故,但同样的手法可以用得更精准、更隐蔽——只劫持特定地区的特定目标,持续几分钟,截获数据后恢复,几乎不留痕迹。
HTTPS挡得住吗?
很多人觉得装了HTTPS就安全了。证书验证确实能挡住大部分低级劫持——假网站拿不到真域名的合法证书,浏览器会报警。但攻击者也有对策。一种做法是给用户推送一个伪造的根证书,让浏览器信任攻击者的证书。企业内网做SSL审查用的就是这个原理,只不过攻击者做的时候不会通知你。另一种做法是SSL剥离:把用户的HTTPS请求降级为HTTP,用户端的锁标志消失,但大多数人根本不看那个小锁。
还有一种更省事的思路:不劫持通信,直接劫持浏览器。恶意扩展、被篡改的浏览器版本、甚至运营商在HTTP响应里注入的脚本,都能在页面加载后修改内容。你访问的是真网站,但页面上多了一个浮窗、一段挖矿代码、或者一个被替换的下载链接。
这件事为什么难防
因为劫持发生在你信任的环节里。你信任路由器,信任DNS服务器,信任运营商,信任浏览器。攻击者不需要攻破你的电脑,只需要攻破你依赖的某个中间环节。而互联网的中间环节太多了,每一个都是潜在的攻击面。
普通用户能做的其实有限:检查路由器DNS设置、不随意安装根证书、注意浏览器地址栏的锁标志、用可信的DNS服务。但这些措施挡不住BGP层面的劫持,也挡不住一个被入侵的运营商。
网页劫持的本质是信任链的断裂。你看到的网页,经过了几十个你无法验证的节点。任何一个节点出问题,你看到的就不是你想看的东西。









