本地DNS攻击原理与实例

网络安全 2017-12-03

本文作者: 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 服务器保证实验顺利进行

1.jpg

实战演练

使用嗅探进行 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 打开工具,然后进行如下配置:

2.jpg

该操作将 202.108.22.5 作为 www.example.com 的域名发送

3.jpg

该操作指定攻击主机 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

4.jpg

说明 IP 的重定向成功

DNS缓存投毒攻击

远程登录到 DNS 服务器上

获得 root 权限后输入以下指令清空缓存:

# sudo rndc flush

# sudo rndc dumpdb -cache

# sudo cat /var/cache/bind/dump.db

5.jpg

6.jpg

在 netwox 中将 IP 值改为目标 DNS 服务器的 IP 地址,并将模式更改为 raw

当用户发出 www.google.com 的域名解析请求后,DNS 服务器查询本地 Cahce 失败,便向服务器发送解析请求,这时攻击者便可嗅探到该请求包,构造虚假包发给 DNS 服务器。

用户机上:

ping www.google.com

7.jpg

说明攻击成功

总结

对于 DNS 攻击,一旦攻击成功将对用户的信息和财产安全造成巨大的损害,直接用 IP 访问重要的服务可以有效预防 DNS 攻击,但带来了巨大的不便。

本次实验在局域网内可进行监听的条件下进行了简单的 DNS 攻击,只需要用一个简答的工具攻击者便可达到巨大的效果,由此可见局域网的安全保证极其重要。

那么对于处于远程网络的主机,是否可进行 DNS 攻击呢,答案自然是可以的,但首先我们需要对 DNS 的返回包内容有一个深入的了解,请关注后文远程 DNS 攻击实例。^^


本文由 myh0st 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

楼主残忍的关闭了评论