本文目录导读:

DNS劫持(DNS Hijacking)是一种常见的网络攻击手段,攻击者通过篡改域名解析结果,将用户引导至恶意网站,从而窃取信息或植入恶意软件,针对DNS劫持的防御与处置,可以从技术防护、检测与应急响应三个层面展开。
以下是系统化的防御与处置方案:
防御措施
防御的核心是确保DNS查询请求和响应的完整性、真实性,并减少对单一来源的依赖。
使用加密DNS协议
传统DNS查询是明文的,易被中间人篡改,加密DNS能有效防止劫持。
- DNS over HTTPS (DoH):将DNS查询封装在HTTPS流量中,与正常网页访问同端口(443),难以被中间设备干扰。
- DNS over TLS (DoT):使用独立的TLS加密通道进行DNS查询,防止窃听和篡改。
- 操作:在浏览器(Chrome/Firefox/Edge的安全设置中)或操作系统层面启用加密DNS,并选择受信任的提供商(如Cloudflare 1.1.1.1、Google 8.8.8.8、Quad9 9.9.9.9)。
验证DNSSEC(域名系统安全扩展)
DNSSEC通过数字签名验证DNS记录的来源和完整性,防止伪造的响应。
- 适用场景:企业和域名所有者应在自己的域名注册商处启用DNSSEC支持;ISP和公共DNS提供商也应部署验证。
- 注意:客户端本身无需额外操作,但需要公共DNS服务器(如Cloudflare)支持验证。
使用可靠且独立的DNS服务
避免仅依赖ISP(网络服务提供商)默认的DNS服务器。
- 更换为公共DNS:如114.114.114.114(国内)、阿里DNS(223.5.5.5)、腾讯DNS(119.29.29.29)或前述国际DNS。
- 企业网络:部署公司内部的权威或递归DNS服务器,并定期进行安全审计。
加固路由器与终端设备
- 修改路由器默认密码:攻击者常利用弱密码登录路由器,并修改DNS配置,设置强密码,禁用远程管理。
- 关闭UPnP:通用即插即用(UPnP)可能被恶意软件利用来篡改路由器DNS设置。
- 更新固件:及时修补路由器已知漏洞。
- 终端防护:安装杀毒软件,防止本地恶意软件劫持系统的
hosts文件或网络配置。
企业级额外防护
- 部署DNS安全网关/防火墙:对内部DNS查询进行深度包检测(DPI),拦截已知恶意域名。
- 实施零信任架构:对内部DNS访问进行身份验证和最小权限控制。
检测与发现
如果怀疑已遭受劫持,可通过以下方法确认:
对比法(最直接)
- 操作:在浏览器输入
ping或nslookup目标域名(如baidu.com),然后在两个不同的DNS服务器下(如默认ISP DNS vs 8.8.8.8)观察解析到的IP地址是否一致。 - 判断:如果不同,且一个IP指向了未知或可疑地址,则很可能已遭劫持。
使用在线检测工具
- 网站:访问
ipinfo.info、dnsleaktest.com或各安全厂商的DNS检测页面。 - 功能:这些工具通常模拟来自多个国家/地区的DNS查询,对比结果是否存在异常。
浏览器行为异常
- 访问银行、支付、电商网站时,页面URL正确但出现不安全的HTTP连接(而非HTTPS)、证书错误(浏览器提示证书无效或不匹配)或弹窗要求额外登录。
- 输入错误域名后,被重定向到满是广告的页面(浏览器主页被锁定)。
排查本地配置文件
- Windows:检查
C:\Windows\System32\drivers\etc\hosts文件,看是否有对常用域名(如0.0.1 localhost之外)的手动重定向条目,若无必要,应清除非默认条目。 - Linux/Mac:检查
/etc/hosts和/etc/resolv.conf(确认DNS服务器地址是可信的)。
路由器DNS检查
- 登录路由器管理界面(通常为
168.1.1或168.0.1),查看网络设置或WAN口设置下的DNS服务器地址,如果显示的不是你的公共DNS(如8.8.8.8),而是奇怪的IP地址(如0.2.xxx或xxx.xxx.xxx),说明路由器已被篡改。
应急处置(发现被劫持后)
一旦确认劫持,应立即执行以下步骤:
立即断开网络连接
- 断开网线或关闭Wi-Fi,阻止攻击链继续窃取数据或下载恶意软件。
重置路由器
- 操作:找到路由器背面的Reset(重置)孔,用针按住10-30秒,恢复出厂设置。重要:恢复后必须立刻修改管理员密码(不要使用默认密码),并重新配置Wi-Fi密码和首选DNS服务器(设置为公共DNS)。
- 检查固件更新:重置后立即更新路由器固件。
扫描终端设备
- 运行杀毒软件(如Windows Defender、卡巴斯基、火绒等)进行全盘扫描,清除可能存在的恶意软件(如Trojan:Win32/DNSChanger等变种)。
- 检查所有浏览器扩展和插件,移除未知来源的扩展。
清除DNS缓存
- Windows:
ipconfig /flushdns - Mac:
sudo killall -HUP mDNSResponder - Linux:
sudo systemd-resolve --flush-caches或sudo service nscd restart
修改关键账户密码
- 在已确认安全的环境(如手机热点连接另一台设备)中,立即修改在劫持期间可能访问过的账户密码(尤其是网银、邮箱、社交、购物网站)。
- 开启多因素认证(MFA/2FA):为高价值账户增加二次验证。
报告与溯源
- 向ISP(网络服务提供商)报告:说明DNS劫持情况,要求其调查是否因骨干网问题或上游劫持导致。
- 向安全响应中心报告(企业用户):
- 向国家网络安全监测中心(如 CNCERT)报告。
- 如果劫持指向了仿冒的知名网站(如仿冒的12306),向该网站官方安全部门报告。
- 检测后门:检查所有防火墙、路由器和DNS服务器日志,分析攻击源头(IP地址、时间戳、触发URL),如果劫持是在路由器后端的局域网内发生,要排查内部设备(如被植入木马的企业服务器)。
特殊场景:严重劫持
如果发现所有正常网站(如百度、谷歌、微软)的解析结果均指向同一个陌生IP(通常指向攻击者的仿冒钓鱼页面),这可能不是简单的路由器篡改,而是网络运营商的DNS污染或骨干网DNS劫持。
- 应对:这种情况下,更换公共DNS(如
8.8.8)可能无效(因为运营商可能封禁UDP 53端口或直接缓存污染),必须使用加密DNS(DoH/DoT) 才能绕过,应联合其他用户向工信部或通信管理局举报。
总结建议
防御DNS劫持的关键在于:
- 加密:全面切换到DNS over HTTPS/TLS。
- 可信:使用独立、可靠的公共DNS服务。
- 源头:保护好你的路由器(强密码+固件更新)。
- 一致性:经常使用
nslookup对比解析结果。 - 备份:对关键数据(如路由器配置文件、hosts文件)进行备份,以便快速恢复。
一个简单的日常自保习惯:在浏览器地址栏左侧看到小锁图标,表明HTTPS连接有效,如果访问银行或支付网站时没有小锁,或显示“不安全”,而且你确信你输入的网址是正确的,那么不要输入任何信息,这很可能就是DNS劫持正在进行中。