什么是运营商劫持?有什么预防措施?
什么是运营商
运营商是指那些提供宽带服务的 ISP,包括三大运营商中国电信、中国移动、中国联通,还有一些小运营商,比如长城宽带等。运营商提供最基础的网络服务,掌握着通往用户武力大门的钥匙,目前运营商劫持很普遍。
劫持方式
常见的方式有三种,分别是 DNS 劫持、HTTP 劫持(HTTP 是明文传输)、HTTPS 劫持
DNS 劫持
这种劫持会将页面链接重定向到其他网站,所熟知的钓鱼网站就是如此,但是因为它的违法性, 现在被严厉监管起来。DNS 是域名和 IP 地址相互映射的一个分布式数据库,DNS 使用 TCP 和 UDP 端口。DNS 劫持是通过某种技术手段,篡改正确域名和 IP 地址的映射关系,使得域名映射到了错误的 IP 地址,因此可以认为 DNS 劫持是一种 DNS 重定向攻击。
本地 DNS 劫持
客户端侧发生的 DNS 劫持统称为本地 DNS 劫持。本地 DNS 劫持可能是:
- 黑客通过木马病毒或者恶意程序入侵 PC,篡改 DNS 配置(host 文件,DNS 服务器地址,DNS 缓存等)
- 黑客利用路由器漏洞或者攻击路由器管理账号入侵路由器并且篡改 DNS 配置。
- 一些企业配置设备(如 Cisco Umbrella intelligent proxy)针对切页内部场景对一些特定的域名做 DNS 劫持解析为指定的结果。
DNS 解析路径劫持
DNS 解析过程中发生在哭护短和 DNS 服务器网络通信时的 DNS 劫持统一归类为 DNS 解析路径劫持。通过对 DNS 解析报文在查询阶段的劫持路径进行划分,又可以将 DNS 解析路径劫持划分为以下 3 类
- DNS 请求转发:通过技术手段(中间盒子,软件等)将 DNS 流量重定向到其他 DNS 服务器。
- DNS 请求复制:利用分光设备将 DNS 查询复制到网络设备,并先于正常应答返回 DNS 劫持结果(一个 DNS 查询抓包返回两个不同的应答)
- DNS 请求代答:网络设备或软件直接代替 DNS 服务器对 DNS 查询进行应答
篡改 DNS 权威记录
串改 DNS 权威记录是指黑客非法入侵 DNS 权威记录管理账号,直接修改 DNS 记录的行为(黑客黑入域名的管理账户,篡改 DNS 权威记录指向自己的恶意服务器以实现 DNS 劫持。
DNS 劫持应对策略
- 安装杀毒软件,防御木马病毒和恶意软件;定期修改路由器管理账号密码和更新固件
- 选择支持 DNSSEC 域名解析服务商,并且给自己的域名实施 DNSSEC。DNSSEC 能够保证递归 DNS 服务器和权威 DNS 服务器之间的通信不被篡改。(阿里云 DNS)
- 在客户端和递归 DNS 服务器通信的使用 DNS 加密技术,例如 DNS-over-TLS,DNS-over-HTTPS 等
HTTP 劫持
有时页脚会出现一些小广告,有时这些广告不是站点的,而是第三方运营商提供的
HTTP 劫持的步骤:
- 标识 HTTP 连接,在总舵的 TCP 链接中,找到应用层采用了 HTTP 协议的链接,进行标识
- 篡改 HTTP 的响应体,可以通过网关来获取数据包进行内容的篡改
- 抢先回包,将篡改后的数据包强心正常点返回的数据包先到达用户侧,这样后面正常的数据包在达到之后会被直接丢弃
HTTP 劫持的防范
一般都是插入静态脚本或者是 HTML Contenet,或者是将整体替换成 iframe,然后在顶层的 iframe 上进行内容的植入。(script、iframe 注入型劫持)
HTTP 劫持的防范主要分为
- 事前加密
- https,TLS 握手会有 2 次 RTT 延迟
- 加密代理:加密代理是在用户侧和目标 web 服务器之间增加一个代理服务器,在用户和代理之间使用 HTTP 请求,只需确认代理与 web 服务之间不会被 HTTP 劫持就可以避开 HTTP 劫持
- 事中规避
拆分 HTTP 请求数据包 - 事后屏蔽
通过浏览器 Api,根据若干规则去匹配 DOM 中的节点,对匹配到的节点作拦截和隐藏
CSP(内容安全策略),DOM 事件监听等。
HTTPS 劫持
HTTPS 劫持有两种:
- 伪造证书,通过病毒或者其他方式将伪造证书的根证书安装在用户系统中
- 代理也有客户的证书与私钥,或者客户端与代理认证的时候不校验合法性,即可通过代理来与我们服务端进行数据交互(较多)
MITM
中间人攻击(man-in-the-middle attack, abbreviated to MITM),简单的讲,就是黑客悄悄的躲在通信双方之间,窃听甚至篡改通信信息。而通信双方并不知道消息已经被截获甚至篡改了。
也有一些人通过代理服务器浏览外网,这里的代理服务器其实就是充当中间人的角色,所以要当心使用免费 vpn。
在通信过程中,客户端或者操作系统内置了权威 CA 的根证书,而服务器在通信之初,会先返回在 CA 那里获取的签名证书,然后客户端用根证书验证证书有效性,最后使用验证通过的证书提供公钥加密数据
早年 12306 使用了自己签名的证书,但是主流浏览器不认可,导致用户需要在首次下载证书并安装,不发纷争完全可以利用这个机制把非法、书安装到用户设备上,但如今 12306 已经采用 digiCert 颁布的证书了
除了 CA 数字证书,还有一些专用的秘钥交互协议,比如 ZRTP、HPKP、DNSSEC 等,他们都能在一定程度上保证通信安全