先举两个例子:
DNS劫持的现象:你输入的网址是http://www.qi70.com,出来的是百度的页面。
HTTP劫持的现象:你打开的是知乎的页面,右下角弹出唐老师的不孕不育广告(2018年更:右下角弹出:偶系渣渣辉)。
目前,运营商比较常见的作恶方式就是这两种
DNS劫持
DNS是Domain Name System的简写,即域名系统,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。
简单地说,如果我们想访问某网址,本来需要输入网站主机的IP地址,但是DNS可以将网址解析成对应的IP地址,我们就不需要记住复杂的IP地址了。
DNS劫持有这三种情况:
1、错误域名解析到纠错导航页面,导航页面存在广告。判断方法:访问的域名是错误的,而且跳转的导航页面也是官方的,如电信的114,联通移网域名纠错导航页面。
2、错误域名解析到非正常页面,对错误的域名解析到导航页的基础上,有一定几率解析到一些恶意站点,这些恶意站点通过判断你访问的目标HOST、URI、 referrer等来确定是否跳转广告页面,这种情况就有可能导致跳转广告页面(域名输错)或者访问页面被加广告(页面加载时有些元素的域名错误而触发)这种劫持会对用户访问的目标HOST、URI、 referrer等会进行判定来确定是否解析恶意站点地址,不易被发现。
3、直接将特点站点解析到恶意或者广告页面,这种情况比较恶劣,而且出现这种情况未必就是运营商所为,家里路由器被黑,或者系统被入侵,甚至运营商的某些节点被第三方恶意控制都有可能。具体情况要具体分析,这里就不展开了。
DNS劫持常见于使用自动的DNS地址,所以,不管有没有被劫持,尽量不要使用运营商默认的DNS,用户可以通过修改DNS来解决。
关于DNS劫持和HTTP劫持,打个比方来描述这两种劫持,DNS劫持就是你想去存钱运营商却把你拉到了劫匪手中;而HTTP劫持就是你从服务器买了一包零食电信给你里面放了一点屎,横竖都很恶心人。
劫持判断
一般情况下,可以通过检测TTL的变化或HTML元素检查来判定
HTTPS劫持
目前,解决HTTP劫持的方法主要是网站启用HTTPS加密,目前知名大网站基本都启用了HTTPS加密访问,不过采用HTTPS加密会提升网站运营商成本,目前中小网站相对还没有普及开来。
https本来就是预防劫持的,但是也有个别的情况。
伪造证书,通过病毒或者其他方式将伪造证书的根证书安装在用户系统中。
代理也有客户的证书与私钥,或者客户端与代理认证的时候不校验合法性,即可通过代理来与我们服务端进行数据交互。