本文作者: FINatiend ,本文加之前的文章《 TCP 会话劫持原理与测试》,完成两篇总奖励 20 元并且免费邀请加入知识星球。
DNS 是计算机域名系统 ( Domain NameSystem 或 Domain Name Service ) 的缩写,它是由域名解析器和域名服务器组成的。
简单来说,当用户申请访问一个域名时,首先会向 DNS 服务器发送请求包询问该域名的 IP 地址,即 DNS 解析的过程。DNS 的 Cache 中,包含一系列缓存的域名和对应 IP ,当客户端访问的域名在 Cache 中已缓存,则直接返回该域名对应 IP ;若未缓存,则该服务器向其他与之最接近的 DNS 服务器发送查询请求。
由上可知,DNS 攻击的关键就在于伪造一个 IP 地址,返回给用户机。对于本地的 DNS 我们可以从两个方面进行攻击。
(1)监听到用户发送 DNS 解析请求后,在 DNS 返回 IP 之前包含伪造假的 IP 地址的包给用户
(2)利用 DNS 每次都会优先检查本地 Cache 的漏洞,修改 Cache 中指定域名的对应 IP 。
虚拟机配置:
Ubuntu DNS 服务器:192.168.150.136 ( 有关 bind9 的安装配置可自行百度 ) Ubuntu 客户机:192.168.150.137 Ubuntu 攻击机:192.168.150.138
攻击工具:
netwox
实验前配置:
在客户机上做如下配置:
sudo vim /etc/resolv.conf
添加一行:
nameserver 192.168.150.136
并在网络配置中进行如下修改以绑定 DNS 服务器保证实验顺利进行
使用嗅探进行 DNS ID 欺骗
当攻击者和受害者处于同一本地局域网时,当一个用户在 web 浏览器键入一个网址,如 www.chase.com
,用户的机器将向 DNS 服务器发出一个 DNS 请求来解析主机名的 IP 地址。当监听到这个 DNS 请求,攻击者将编造一个假的 DNS 应答。一个假的 DNS 应答如果符合以下标准将会被用户机接受:
1、源 IP 地址必须与 DNS 请求被送往的 IP 地址相匹配
2、目的 IP 地址必须与 DNS 请求送来的 IP 地址相匹配;
3、源端口号( UDP 端口)必须与 DNS 请求被送达(通常是 53 号端口)的端口号相匹配;
4、目的端口号必须与 DNS 请求送来的端口号相匹配;
5、UDP 校验和的计算必须正确无误;
6、传输 ID 必须与 DNS 的传输 ID 相匹配;
7、答复询问部分的域名必须与请求询问部分的域名匹配;
8、答复部分的域名必须与 DNS 请求询问部分的域名匹配;
9、用户电脑必须在收到合法的 DNS 响应之前收到攻击者的 DNS 应答。
满足了 1 到 8 的条件,攻击者就可以嗅探到受害者发送的 DNS 请求信息,然后就可以创建 一个伪造的 DNS 响应,在真正的 DNS 服务器响应之前,发送给受害者。Netwag tool 105 工具提供了执行嗅探和响应的应用。首先在终端下输入 netwag 打开工具,然后进行如下配置:
该操作将 202.108.22.5
作为 www.example.com
的域名发送
该操作指定攻击主机 IP 地址:192.168.150.137
配置成功后点击右下角的 “ Run ” 按钮即可监听受害者机器向自己 DNS 服务器发送的数据包并发送自己伪造的 DNS 包,这样等一小段时间伪造包生成后再
nslookup www.example.com
发现此网站本来的 IP 地址已经改变成攻击者伪造的 IP ,表示 DNS 欺骗成功。
打开 http://www.example.com
发现此网站本来的 IP 地址已经改变成攻击者伪造的 IP ,表示 DNS 欺骗成功。
在用户机上
dig www.example.com
说明 IP 的重定向成功
DNS缓存投毒攻击
远程登录到 DNS 服务器上
获得 root 权限后输入以下指令清空缓存:
# sudo rndc flush # sudo rndc dumpdb -cache # sudo cat /var/cache/bind/dump.db
在 netwox 中将 IP 值改为目标 DNS 服务器的 IP 地址,并将模式更改为 raw
当用户发出 www.google.com
的域名解析请求后,DNS 服务器查询本地 Cahce 失败,便向服务器发送解析请求,这时攻击者便可嗅探到该请求包,构造虚假包发给 DNS 服务器。
用户机上:
ping www.google.com
说明攻击成功
对于 DNS 攻击,一旦攻击成功将对用户的信息和财产安全造成巨大的损害,直接用 IP 访问重要的服务可以有效预防 DNS 攻击,但带来了巨大的不便。
本次实验在局域网内可进行监听的条件下进行了简单的 DNS 攻击,只需要用一个简答的工具攻击者便可达到巨大的效果,由此可见局域网的安全保证极其重要。
那么对于处于远程网络的主机,是否可进行 DNS 攻击呢,答案自然是可以的,但首先我们需要对 DNS 的返回包内容有一个深入的了解,请关注后文远程 DNS 攻击实例。^^