Local DNS Attack Lab

来源:互联网 发布:赛维 干洗 知乎 编辑:程序博客网 时间:2024/05/29 04:14

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。[1]


常见的DNS攻击包括:

  1) 域名劫持

  通过采用黑客手段控制了域名管理密码和域名管理邮箱,然后将该域名的NS纪录指向到黑客可以控制的DNS服务器,然后通过在该DNS服务器上添加相应域名纪录,从而使网民访问该域名时,进入了黑客所指向的内容。

  这显然是DNS服务提供商的责任,用户束手无策。

 2) 缓存投毒

  利用控制DNS缓存服务器,把原本准备访问某网站的用户在不知不觉中带到黑客指向的其他网站上。其实现方式有多种,比如可以通过利用网民ISP端的DNS缓存服务器的漏洞进行攻击或控制,从而改变该ISP内的用户访问域名的响应结果;或者,黑客通过利用用户权威域名服务器上的漏洞,如当用户权威域名服务器同时可以被当作缓存服务器使用,黑客可以实现缓存投毒,将错误的域名纪录存入缓存中,从而使所有使用该缓存服务器的用户得到错误的DNS解析结果。

  最近发现的DNS重大缺陷,就是这种方式的。只所以说是“重大”缺陷,据报道是因为是协议自身的设计实现问题造成的,几乎所有的DNS软件都存在这样的问题。
  3)DDOS攻击

  一种攻击针对DNS服务器软件本身,通常利用BIND软件程序中的漏洞,导致DNS服务器崩溃或拒绝服务;另一种攻击的目标不是DNS服务器,而是利用DNS服务器作为中间的“攻击放大器”,去攻击其它互联网上的主机,导致被攻击主机拒绝服务。
  4) DNS欺骗

  DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。

  原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。

  现在的Internet上存在的DNS服务器有绝大多数都是用bind来架设的,使用的bind版本主要为bind 4.9.5+P1以前版本和bind 8.2.2-P5以前版本.这些bind有个共同的特点,就是BIND会缓存(Cache)所有已经查询过的结果,这个问题就引起了下面的几个问题的存在.

  DNS欺骗

  在DNS的缓存还没有过期之前,如果在DNS的缓存中已经存在的记录,一旦有客户查询,DNS服务器将会直接返回缓存中的记录
  ——

每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议所要完成的功能。
主机名到IP地址的映射有两种方式:
1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;
2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址。[2]
通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。


1.实验环境

我们需要设置实验室环境,如图1所示。为了简化实验室环境,我们让用户的计算机,DNS服务器和攻击者的计算机在一台物理机器上,但使用不同的虚拟机。本实验中使用的网站可以是任何网站。我们的配置基于Ubuntu,它是我们在预构建的虚拟机中使用的操作系统。从图1可以看出,我们在同一个局域网中设置了DNS服务器,用户机器和攻击者机器。我们假设用户计算机的IP地址是192.168.0.100,DNS服务器的IP是
192.168.0.10,攻击者的IP为192.168.0.200。教师注:对于本实验,实验室会议是可取的,特别是如果学生不熟悉工具和环境。如果教练计划举行实验室会议(由他/她自己或由TA),建议在实验室会议中涵盖以下内容1:
1.使用虚拟机软件。
2.使用Wireshark,Netwag和Netwox工具。
3.配置DNS服务器。


1.1安装并配置DNS服务器

步骤1:安装DNS服务器。 在192.168.0.10,我们使用以下命令安装BIND9 [3] DNS服务器:
#sudo apt-get install bind9
BIND9服务器已经安装在我们预先构建的Ubuntu虚拟机映像中
步骤2:创建named.conf.options文件。 DNS服务器需要读取/ etc / bind /
named.conf配置文件启动。 此配置文件通常包括一个名为/etc/bind/named.conf.options的选项文件。 请将以下内容添加到选项文件:
options {
dump-file“/var/cache/bind/dump.db”;
};
应该注意,文件/var/cache/bind/dump.db用于转储DNS服务器的缓存
步骤3:创建区域。 假设我们拥有一个域:example.com,这意味着我们负责提供关于example.com的明确答案。 因此,我们需要在DNS服务器中创建一个区域,方法是将以下内容添加到/etc/bind/named.conf。 请注意,example.com域名保留供文档使用,不属于任何人,因此使用它是安全的。

zone "example.com" {type master;file "/var/cache/bind/example.com.db";};zone "0.168.192.in-addr.arpa" {type master;file "/var/cache/bind/192.168.0";};

注意,我们使用192.168.0.x作为示例。 如果使用不同的IP地址,您需要相应地更改/etc/bind/named.conf和DNS查找文件(如下所述)。
步骤4:设置区域文件。 上述区域中的file关键字后面的文件名称为区域文件。 实际的DNS解析被放在区域文件中。 在/ var / cache / bind /目录中,组成以下example.com.db区域文件(请注意,以下所述的配置文件可以从本实验室的网页下载;输入这些文件可能会引入错误。 如果您对这些配置文件的语法感兴趣,请参阅RFC 1035了解详情):

$TTL 3D@ IN SOA ns.example.com. admin.example.com. (2008111001 ;serial, today’s date + today’s serial number8H ;refresh, seconds2H ;retry, seconds4W ;expire, seconds1D) ;minimum, seconds@ IN NS ns.example.com. ;Address of name server@ IN MX 10 mail.example.com. ;Primary Mail Exchangerwww IN A 192.168.0.101 ;Address of www.example.commail IN A 192.168.0.102 ;Address of mail.example.comns IN A 192.168.0.10 ;Address of ns.example.com*.example.com. IN A 192.168.0.100 ;Address for other URL in;example.com. domain

符号“@”是一个特殊符号,表示来自named.conf的源。 因此,“@”代表example.com。 “IN”是指互联网。 “SOA”是开始权限的缩写。 此区域文件包含7个资源记录(RR):SOA(开始权限)RR,NS(名称服务器)RR,MX(邮件eXchanger)RR和4 A(主机地址)RR。
我们还需要设置DNS反向查找文件。 在/ var / cache / bind /目录中,为example.com域组成一个名为192.168.0的反向DNS查找文件:

$TTL 3D@ IN SOA ns.example.com. admin.example.com. (20081110018H2H4W1D)@ IN NS ns.example.com.101 IN PTR www.example.com.102 IN PTR mail.example.com.10 IN PTR ns.example.com.

步骤5:启动DNS服务器。 现在我们准备好启动DNS服务器。 运行以下命令:
% sudo /etc/init.d/bind9 restart
or
% sudo service bind9 restart

1.2配置用户机器

在用户计算机192.168.0.100上,我们需要让机器192.168.0.10成为默认的DNS服务器。 我们通过更改用户计算机的DNS设置文件/etc/resolv.conf来实现这一点:nameserver 192.168.0.10#刚刚设置的DNS服务器的IP
注意:确保这是您的/etc/resolv.conf中唯一的名称服务器条目。 还要注意,在Ubuntu中,/etc/resolv.conf可能被DHCP客户端覆盖。 为了避免这种情况,我们应该告诉DHCP客户端不要自动设置DNS服务器。 这可以使用以下过程(对于Ubuntu 12.04)来实现:
1.转到“系统设置”,然后单击“网络”图标。
2.选择“有线”选项卡,然后单击“选项”按钮。 将弹出一个对话框。
3.单击“IPv4设置”选项卡,在“方法”条目中,选择“仅自动(DHCP)地址”。 然后在“DNS服务器”条目中输入本地DNS服务器的IP地址。 您不需要在其他两个字段中键入任何内容。 基本上,我们告诉DHCP客户端把我们输入的地址放在/etc/resolv.conf中。
4.最后,单击桌面右上角的网络图标,然后选择“有线连接1”。 这将刷新有线网络连接并更新更改。 应该注意,“有线连接1”是您为连接选择的名称,您可能选择了不同的名称。

1.3配置攻击机

在攻击者机器上,没有太多配置。

1.4预期产出

根据上述步骤设置实验室环境后,您的DNS服务器已准备就绪。 现在,在用户计算机上,发出以下命令:
%dig www.example.com
你应该可以看到这样的:

<<>> DiG 9.5.0b2 <<>> www.example.com;; global options: printcmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27136;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1;; QUESTION SECTION:;www.example.com. IN A;; ANSWER SECTION:www.example.com. 259200 IN A 192.168.0.101;; AUTHORITY SECTION:example.com. 259200 IN NS ns.example.com.;; ADDITIONAL SECTION:ns.example.com. 259200 IN A 192.168.0.10;; Query time: 80 msec;; SERVER: 192.168.0.10#53(192.168.0.10);; WHEN: Tue Nov 11 15:26:32 2008;; MSG SIZE rcvd: 82

注意:ANSWER SECTION包含DNS映射。 您可以注意到www.example.com的IP地址现在是192.169.0.101,这是我们在DNS服务器中设置的。 为了一个简单明了的答案,我们可以使用nslookup代替。 要做DNS反向查找,请发出dig -x N.N.N.N.

1.5安装Wireshark

Wireshark是这个实验室非常重要的工具;你可以嗅探每个通过局域网的包。你可以从http://www.wireshark.org获取Wireshark。虽然Netwox也附带嗅探器,Wireshark是一个更好的嗅探器。 Wireshark已经安装在我们预先构建的虚拟机中。

2实验室任务

对用户进行Pharming攻击的主要目的是当用户尝试使用A的主机名访问机器A时将用户重定向到另一台机器B.例如,当用户尝试访问在线银行(例如www.chase.com)时,如果对手可以将用户重定向到看起来非常像www.chase.com的主网站的恶意网站,则用户可能被欺骗,并给他/她的网上银行帐户的密码。当用户在其浏览器中键入www.chase.com时,用户的计算机将发出DNS查询以查找此网站的IP地址。攻击者的目标是通过虚假的DNS回复欺骗用户的计算机,从而将www.chase.com解析为恶意IP地址。有几种方法来实现这样
攻击。在实验室描述的其余部分,我们将使用www.example.com作为用户想要访问的网站,而不是使用真实的网站名称www.chase.com; example.com域名保留供文档使用,不属于任何人。


任务1:攻击者已经攻击了受害者的机器
任务2:对用户的直接欺骗响应
任务3:DNS服务器高速缓存中毒


下一步是什么

在本实验的DNS缓存中毒攻击中,我们假设攻击者和DNS服务器在同一个LAN上,即攻击者可以观察DNS查询消息。 当攻击者和DNS服务器不在同一个LAN上时,缓存中毒攻击变得更具挑战性。 如果你有兴趣接受这样的挑战,你可以尝试我们的“远程DNS攻击实验室”。

>[1]  http://baike.baidu.com/link?url=hAY2njJixr6WJtTARxx4G-dQe0QGQtQC6yHXt9cDKoGPL_wiAfom35hI28xfEO838POoYEiK7aBXqLQGJLi2zq

原文链接:

【2】http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Networking/DNS_Local/DNS_Local.pdf

0 0
原创粉丝点击