浏览器地址栏里输入的网址网址,回车之后跳到了一个完全陌生的劫持解决页面。这种事我遇到过三次,网址最近一次是劫持解决帮朋友看他的电商站点——客户在百度搜品牌词,点进去显示的网址是赌博网站。他以为域名被黑了,劫持解决其实是网址DNS解析被劫持。
网址劫持分好几种,劫持解决得先搞清楚你中的网址是哪一种。
DNS劫持:最常见的劫持解决那种
用户在浏览器输入域名,先要经过DNS服务器把域名翻译成IP地址。网址这个环节被动了手脚,劫持解决翻译出来的网址IP就是攻击者指定的服务器。你访问的劫持解决是
taobao.com,解析结果却指向了境外某台机器。网址判断方法很简单。在命令行里跑
nslookup 你的域名,看返回的IP是不是你服务器真实的IP。如果对不上,基本可以确定是DNS层面出了问题。解决路径有几条:
- 换DNS服务商。国内不少小DNS服务商安全防护形同虚设,换成阿里云DNS、DNSPod或者Cloudflare,情况会好很多。
- 开启DNSSEC。这东西相当于给DNS解析结果加了一个数字签名,篡改后的结果验签不过,浏览器直接拒绝。
- 检查域名注册商账户。有些人DNS被改是因为注册商那边的账号密码被撞库了,攻击者直接登录进去改了NS记录。两步验证必须开。
hosts文件被改:本机层面的问题
Windows系统里有个
hosts文件,优先级高于DNS查询。恶意软件改了它,你访问特定域名就会被导向钓鱼站。路径在C:\Windows\System32\drivers\etc\hosts,用记事本打开看看有没有陌生的条目。正常情况这个文件应该只有注释,没有活跃的解析记录。Mac和Linux同理,在
/etc/hosts。发现异常条目直接删掉,然后全盘杀毒。路由器DNS被篡改
这个坑很多人踩过。家用路由器的管理密码还是默认的
admin/admin,攻击者登录进去把DNS服务器地址改成了自己的。你家里所有设备上网都经过这台路由器,等于全部被劫持。登录路由器后台,检查WAN口设置里的DNS地址。如果是
114.114.114.114或者运营商默认的,正常。如果是某个你从没听说过的IP,那就是被改了。改回来自动获取或者手动填公共DNS,然后立刻修改路由器管理密码。运营商层面的劫持
这个用户自己解决不了。某些地区的宽带运营商会插入广告页面,或者把不存在的域名解析到自己的广告服务器。表现是:你访问一个不存在的域名,出来的不是浏览器报错页,而是一个充满广告的导航站。
对抗方式是用加密DNS。比如DNS over HTTPS(DoH),浏览器直接通过HTTPS通道向DNS服务器发查询请求,运营商看不到也改不了。Firefox和Chrome都支持在设置里开启DoH,填Cloudflare的
https://1.1.1.1/dns-query或者阿里的DoH地址都行。网站自身被入侵
还有一种情况容易被误判为DNS劫持:域名解析正常,但网站代码里被植入了跳转脚本。用户打开页面,JS代码判断来源是搜索引擎,就执行
window.location.href跳到博彩站。这种从服务器端查,看最近有没有被上传webshell,或者数据库里有没有被插入恶意脚本。我那位朋友的站点最后查出来是WordPress插件漏洞,攻击者传了一个PHP文件,在
顶: 4241踩: 628header.php里加了一行跳转代码。跟DNS没关系。所以遇到网址劫持,先定位清楚是哪一层的问题,再动手修。瞎折腾一圈,该被劫持还是被劫持。






评论专区