路由器被黑后手机上网突然跳转广告网站 DNS劫持原理介绍及日常防护方法
你是不是也有过这种经历:明明打开的是浏览器想查点东西,结果页面突然跳转到一个满屏广告的网站,关都关不掉?或者随便点一个链接,手机就自动弹出各种赌博、色情、虚假购物平台的广告?别慌,这很可能不是你的问题,而是你的路由器被人动过手脚了。
我来给你捋一捋这到底是怎么回事。
DNS是什么?为什么它会成为攻击目标
先把事情说清楚。你用手机或者电脑上网的时候,输入的是一个像 www.baidu.com 这样的域名,但互联网通信的底层是靠IP地址进行的,比如 110.242.68.3。
DNS(Domain Name System,域名系统)就是互联网里的”电话号码本”,它负责把域名翻译成对应的IP地址。每次你在浏览器输入网址,设备都会先向DNS服务器发请求:”喂,这个域名对应的IP是多少?”DNS服务器回答:”是这个IP,去吧。”然后你的设备才能跟真正的网站建立连接。
问题来了:DNS服务器本身是可以被篡改的。
攻击者不需要入侵百度或淘宝的服务器,只需要把你的DNS请求”调包”——你把”去百度”的请求发出去,被拦下来的人给你返回一个假的IP地址,这个IP指向的是攻击者控制的广告服务器。于是你访问百度,看到的却是满屏弹窗广告。
这就是DNS劫持。
路由器是怎么被黑的?
很多人以为路由器很安全,其实不然。路由器是家庭网络的”大门”,控制了它,就等于控制了家里所有设备的上网路径。
常见的入侵方式有这么几种:
第一,弱密码。 很多家庭路由器出厂时管理员密码是默认的 admin 或者 12345678,从来没改过。攻击者在全国范围扫弱密码路由器,扫中一个就是一个。
第二,固件漏洞。 老旧的路由器固件存在安全漏洞,攻击者利用这些漏洞可以远程写入恶意代码,或者修改DNS设置。
第三,中间人攻击。 虽然听起来很高端,其实原理很简单。攻击者在同一个Wi-Fi网络下(比如公共Wi-Fi),拦截你的数据流,把你的DNS请求重定向到恶意的DNS服务器。
第四,恶意软件。 有些伪装成免费游戏、破解应用的软件,安装后会静默修改系统的DNS设置,甚至入侵路由器。
一旦路由器被控制,攻击者可以做的就多了:修改DNS、劫持流量、植入广告、窃取信息、甚至把路由器变成”肉鸡”帮别人干坏事。
DNS劫持的具体原理
用大白话讲,DNS劫持就是”调包计”。
正常情况下,你的请求和响应是这样的:
你的手机 → 路由器 → DNS服务器(比如运营商提供的或8.8.8.8)→ 返回真实IP → 访问目标网站
被劫持后,流程变成了:
你的手机 → 路由器 → DNS服务器(已被篡改,指向攻击者的服务器)→ 返回假IP → 跳转到广告网站
我们可以用一段简单的Python脚本来验证你的DNS是否被劫持:
import socket
import subprocess
import sys
def check_dns_hijack(domain, expected_ip):
"""检查指定域名的DNS解析结果是否异常"""
try:
# 方法1:使用socket查询DNS
resolved_ip = socket.gethostbyname(domain)
# 方法2:使用系统nslookup获取更详细的信息
result = subprocess.run(
['nslookup', domain],
capture_output=True,
text=True,
timeout=10
)
print(f"域名: {domain}")
print(f"解析结果: {resolved_ip}")
print(f"预期IP: {expected_ip}")
if resolved_ip == expected_ip:
print("✓ DNS解析正常")
return True
else:
print(f"⚠ DNS解析异常!可能遭遇了DNS劫持")
print(f"\n详细DNS信息:")
print(result.stdout)
return False
except Exception as e:
print(f"查询出错: {e}")
return False
def main():
# 常见网站的官方IP段(仅供参考,IP可能变化)
checks = [
("www.baidu.com", "110.242.68.3"),
("www.qq.com", "14.119.136.185"),
("www.taobao.com", "106.11.206.119"),
]
print("=" * 50)
print("DNS劫持检测工具")
print("=" * 50)
hijacked = False
for domain, expected_ip in checks:
if not check_dns_hijack(domain, expected_ip):
hijacked = True
print("\n" + "=" * 50)
if hijacked:
print("检测结果:你的网络可能存在DNS劫持,请检查路由器设置")
else:
print("检测结果:暂未发现DNS劫持迹象")
print("=" * 50)
if __name__ == "__main__":
main()
运行这个脚本,如果你的解析结果和预期IP不一致,那就说明DNS可能已经被篡改了。
还有一个更直观的测试方法:
# 在终端或命令行中运行
# 方法1:直接查询DNS
nslookup www.baidu.com
# 方法2:使用运营商提供的公共DNS对比
nslookup www.baidu.com 8.8.8.8
nslookup www.baidu.com 114.114.114.114
# 方法3:查看当前DNS设置(Windows)
ipconfig /all
# 方法3:查看当前DNS设置(Linux/Mac)
cat /etc/resolv.conf
如果不同DNS服务器返回的结果不一样,那大概率你的路由器DNS被改了。
为什么运营商DNS有时会”抽风”
需要澄清一个常见的误解:有时候DNS劫持并不是被黑客攻击了,而是你的运营商”优化”了你的DNS。
国内很多运营商为了广告收入或者网络管理,会把自己的DNS服务器设置成”智能DNS”,会根据你的地理位置返回不同的IP。有时候这种”优化”过了头,就把广告服务器插进来了,导致你在访问正规网站时弹出广告。
这种情况的辨别方法是:换用公共DNS(比如 8.8.8.8 或 114.114.114.114),如果广告消失了,说明之前是运营商DNS的问题;如果广告还在,那就是路由器被黑了。
发现DNS劫持了怎么办?
别急,一步一步来。
第一步:换DNS测试
在你的手机或电脑上,手动设置DNS为公共DNS,看看广告是否消失。
以小米手机为例:
设置 → WLAN → 点击已连接Wi-Fi右侧的箭头 → IP设置 → 静态
DNS 1: 8.8.8.8
DNS 2: 114.114.114.114
以iPhone为例:
设置 → 无线局域网 → 点击已连接Wi-Fi右侧的"i" → 配置DNS → 手动
添加服务器: 8.8.8.8
添加服务器: 114.114.114.114
如果换了DNS广告就没了,那问题就在路由器上。
第二步:登录路由器管理后台
路由器的管理地址一般是 192.168.1.1 或者 192.168.0.1,具体看路由器背面标签。
登录后,找到”DNS设置”或” WAN设置”,把DNS改成可靠的公共DNS:
- 国内:
114.114.114.114或223.5.5.5(阿里DNS) - 国际:
8.8.8.8或1.1.1.1(Cloudflare DNS)
第三步:修改路由器密码
把管理员密码改成强密码,不要用默认的,不要用 123456。建议用 大小写字母+数字+特殊符号 的组合,比如 R0ut3r#2024! 这种。
第四步:升级路由器固件
去路由器官网下载最新固件,刷上去。很多老路由器厂商早就停止更新了,这种情况只能考虑换路由器了。
第五步:检查是否有恶意软件
有些时候不是路由器被黑,而是手机或电脑上的恶意软件改了DNS。用杀毒软件全盘扫描一下。
日常怎么预防?
预防永远比补救简单。养成这些习惯,能挡住90%的风险:
1. 路由器管理员密码一定要改
出厂默认密码是全球黑客的”公钥”,改了就没人用默认密码了。
2. 关闭路由器的WPS功能
WPS(Wi-Fi Protected Setup)是一个方便连接的功能,但它存在安全漏洞,很多路由器被黑就是从这个入口进来的。进路由器后台把WPS关掉。
3. 定期升级固件
就像手机系统要更新一样,路由器固件也要定期更新,修补安全漏洞。
4. 不要随意连接陌生Wi-Fi
公共Wi-Fi是最容易遭受中间人攻击的地方。如果必须用,尽量只浏览非敏感网站,不要在公共Wi-Fi下登录网银或输入密码。
5. 在设备上锁定DNS
不只是手机,电脑上也可以锁定DNS。比如Windows可以在网络适配器设置里固定DNS,这样即使路由器被改了,设备也能用正确的DNS。
6. 用HTTPS Everywhere
安装浏览器插件 “HTTPS Everywhere”,它会自动把不安全的HTTP连接升级到HTTPS,即使DNS被劫持,攻击者也无法看到你的具体请求内容,只能知道你访问了哪个网站。
7. 考虑换用更安全的DNS
除了上面提到的公共DNS,还有一些专门注重隐私和安全的DNS服务:
| DNS服务 | 地址 | 特点 |
|---|---|---|
| Cloudflare DNS | 1.1.1.1 | 速度快,不记录日志 |
| Google DNS | 8.8.8.8 | 稳定可靠 |
| 阿里公共DNS | 223.5.5.5 | 国内加速好 |
| 114 DNS | 114.114.114.114 | 国内老牌 |
| OpenDNS | 208.67.222.222 | 自带恶意网站过滤 |
8. 买个靠谱的路由器
便宜的杂牌路由器往往安全更新跟不上,固件漏洞一堆。哪怕多花两百块买tp-link、华为、小米的主流型号,安全系数都高很多。
如果路由器已经被深度控制了怎么办?
有时候攻击者不仅仅是改了DNS,还植入了后门,即使你改了密码和DNS,下次重启路由器恶意代码又重新出现了。
这种情况下:
- 恢复出厂设置——不是重启,是真正的”恢复出厂设置”,把路由器的所有配置全部清空。
- 刷官方固件——从官网下载固件重新刷一遍,别用第三方固件,除非你确定它安全。
- 重新配置一切——从管理员密码到Wi-Fi密码到DNS,全部重新设置,不要沿用之前的配置。
- 如果还是不行,换路由器——有些低端路由器硬件太老,安全架构本身就有问题,修修补补不如换新的。
一个真实的小故事
我有个朋友,用着某品牌的廉价路由器,五年没更新过固件,密码一直是 admin。有一天他突然发现,不管打开什么网站,页面上都会弹出一个”你的电脑可能中了病毒”的假警告,点进去就是各种垃圾软件的下载页面。
折腾了半天才发现,他的路由器早已被人控制了,DNS被改成了攻击者的服务器。他按照上面的方法:恢复出厂设置→刷最新固件→改强密码→改DNS,广告弹窗才彻底消失。
后来他跟我说:”早知道路由器也要当电脑一样维护,我至于折腾那么久吗?”
其实很多人都有这个误区,觉得路由器是个”装上去就不管了”的东西。但路由器就是你家网络的门户,门没锁好,谁都能进来翻东西。
最后说几句
DNS劫持听起来很高深,但原理其实就一句话:你的上网请求被拦下来,”电话号码本”被人改了,你找错了人,然后就被带进了广告商的坑。
预防的关键就三个词:改密码、更固件、锁DNS。做到这三点,绝大多数风险都能挡在外面。
如果你发现家里网络不对劲,别慌,按照我上面说的步骤一步一步排查,问题通常都能解决。要是搞不定,把路由器恢复出厂设置是最快的方法——相当于把门换了把新锁,让想进的人进不来。
网络世界鱼龙混杂,但只要我们多一分警惕,少一分懒惰,就能让自己的上网环境干净很多。
