DNS劫持
约 976 字大约 3 分钟
2025-10-05
简单介绍
DNS 劫持是一种非常常见的攻击方式,从名字即可看出,其核心原理是通过篡改 DNS 解析过程,将用户引导至恶意网站或服务器。以下是常见的 DNS 劫持类型:
- 本地 DNS 劫持:攻击者在用户的计算机上安装病毒,然后修改本地 DNS 设置(host文件),将用户请求重新路由到有害网站。
- 使用路由器劫持 DNS:许多路由器的安全策略较差,或使用默认密码。攻击者可利用此漏洞入侵路由器并更改其 DNS 设置,从而影响所有使用该路由器的用户。
- 中间人(MITM)攻击:攻击者使用中间人攻击技术拦截用户与 DNS 服务器之间的通信,然后将目标定向到恶意网站。
- 恶意 DNS 服务器:黑客可更改 DNS 服务器上的 DNS 记录,使 DNS 请求被重新路由到恶意网站。如果网站伪装得足够逼真,用户可能甚至察觉不到异常。
实际案例
在处理客户故障时,尤其面对教育网环境,这种 DNS 劫持问题更为普遍。下面以【广东职业技术大学】的一次 DNS 故障为例,说明如何定位 DNS 被劫持。
客户现网环境
- 故障信息:域名
lms.gdpt.edu.cn.解析有问题。该域名已配置对应的权威记录,且两台 DNS 设备均已配置该域名。但如果将该域名的请求发送到禅城校区的 DNS 服务器,则会出现出网递归(即请求被转发到外部递归服务器)。 - 现网架构:Master(10.100.0.200) + Backup(10.29.0.200)。
排查步骤
收到此类 DNS 解析异常时,通常按以下三步初步排查:
- 确认客户权威区记录:检查权威区中是否确有对应记录。
- 确认终端命中 ACL:验证用于解析的终端是否能命中对应视图中的 ACL(访问控制列表)。
- 尝试终端解析域名:使用终端解析
lms.gdpt.edu.cn.该域名,查看解析结果,并检查解析日志。
在本次案例中:
- 客户现网确已配置该记录,且视图设置了对应的 ACL。
- 通过判断,确认终端可命中视图 ACL,并应得到内网域名解析结果。因此,前台配置无误。
进一步测试:
- 使用对应 ACL 中的终端解析该域名,发现确实出现出网递归。
- 关键发现:从禅城 DNS 的解析日志中,看不到任何对应记录。从后台查看
query.log日志,也无相关记录。此时,已有充分理由怀疑 DNS 流量被劫持:DNS 请求根本未到达禅城 DNS 设备,而是中途被其他设备(最可能是防火墙)转发出网。
进一步确认劫持
在禅城 DNS 后台开启抓包:
tcpdump -i any -nnv | grep "lms.gdpt.edu.cn."为更精确验证 DNS 劫持,可尝试使用 dig +tcp 进行测试:
- 平时 DNS 查询默认使用 UDP 53 端口(开销小、效率高),但 UDP 无校验,易被中间设备(防火墙)伪造响应包,导致劫持或污染。
- 切换到 TCP 53 端口需三次握手,并有严格校验机制,伪造难度更高。
- 测试方法:如果 UDP 模式下解析结果与 TCP 模式下不一致,则基本可以确认 UDP 流量被劫持或污染。
注意:dig +tcp 主要用于验证排查,无法完全避免劫持(高级攻击仍可能干扰 TCP)。此外,TCP 模式开销更大,通常仅在数据包超 512 字节(TCP协议可以携带的数据包比UDP的高)或启用 DNSSEC 时自动切换。
