以下文章小编为您整理的dns欺骗演示及简单原理(共含7篇),供大家阅读。同时,但愿您也能像本文投稿人“陆钓雪de飘飘”一样,积极向本站投稿分享好文章。
实验前的准备:
1.一台linux系统的计算机(安装好了dnsspoof,当然安装好了Dsniff就已经安装了)
2.一台server 系统的计算机(搭建一个web服务器)
3.一台xp系统的计算机(安装sniffer的xp系统)
注:当然你可能没有这么多计算机,但不要紧,用虚拟机就可以了
这是我的Server 2003上的web,及其ip地址
这是linux上用来做dns欺骗的指向文件,
就是这行 192.168.137.100 *.*.com
意思是所有*.*.com网站的ip地址指向192.168.137.100这个ip地址。也就是只要你输入的域名
是*.*.com这个格式的都会解析成192.168.137.100这个ip地址。(www.baidu.com也不例外)
下面启动欺骗程序。
下面是在xp上的测试结果
下面是Sniffer抓包和mac地址和ip地址的映射,
看清楚了,Source=Station 000C2939DAA0 ,源mac成了192.168.137.200的mac了,
也就是说ip地址为192.168.137.200的主机冒充ip地址为58.20.127.238的dns服务器。
打开一个网站,电脑要知道这个域名对应的ip地址,就要通过dns服务器,我们这个台
xp它知道了dns服务器的ip是58.20.127.238 ,就直接通信吗??不是的,它会在局域网
内发送arp广播问“ip地址是58.20.1227.238这个地址所对应的mac地址”这时局域网内所有的
的pc都可以收到,而我这台linux主机就开了个玩笑“ip地址为58.20.127.238所对应的
mac地址是000C2939DAA0”它把自己的mac地址告诉了xp主机,xp主机收到了应答就开始通信。
xp主机就会问dns主机“www.******.com域名所对应的ip地址是多少”,这时候我的linux主机就
开始不负责任了随便告诉它一个ip地址(这里是可以手工指定),也就是说当你要访问www.qq.com
这个网站时,我可以让他出现百度的页面。
定义: DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为,原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“
定义: DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。
现在的Internet上存在的DNS服务器有绝大多数都是用bind来架设的,使用的bind版本主要为bind 4.9.5 P1以前版本和bind 8.2.2-P5以前版本.这些bind有个共同的特点,就是BIND会缓存(Cache)所有已经查询过的结果,这个问题就引起了下面的几个问题的存在.
1>.DNS欺骗
在DNS的缓存还没有过期之前,如果在DNS的缓存中已经存在的记录,一旦有客户查询,DNS服务器将会直接返回缓存中的记录.
下面我们来看一个例子:
一台运行着unix的Internet主机,并且提供rlogin服务,它的IP地址为123.45.67.89,它使用的DNS服务器(即/etc/resolv.conf中指向的DNS服务器)的IP地址为98.76.54.32,某个客户端(IP地址为38.222.74.2)试图连接到unix主机的rlogin端口,假设unix主机的/etc/hosts.equiv文件中使用的是dns名称来允许目标主机的访问,那么unix主机会向IP为98.76.54.32的DNS服务器发出一个PTR记录的查询:
123.45.67.89 -> 98.76.54.32 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 2.74.222.38.in-addr.arpa PTR
IP为98.76.54.32的DNS服务器中没有这个反向查询域的信息,经过一番查询,这个DNS服务器找到38.222.74.2和38.222.74.10为74.222.38.in-addr.arpa.的权威DNS服务器,所以它会向38.222.74.2发出PTR查询:
98.76.54.32 -> 38.222.74.2 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 2.74.222.38.in-addr.arpa PTR
请注意,38.222.74.2是我们的客户端IP,也就是说这台机子是完全掌握在我们手中的.我们可以更改它的DNS记录,让它返回我们所需要的结果:
38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 2 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN: trusted.host.com A 38.222.74.2
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
当98.76.54.32的DNS服务器收到这个应答后,会把结果转发给123.45.67.98,就是那台有rlogin服务的unix主机(也是我们的目标 :) ),并且98.76.54.32这台DNS服务器会把这次的查询结果缓存起来.
这时unix主机就认为IP地址为38.222.74.2的主机名为trusted.host.com,然后unix主机查询本地的/etc/hosts.equiv文件,看这台主机是否被允许使用rlogin服务,很显然,我们的欺骗达到了.
在unix的环境中,有另外一种技术来防止这种欺骗的发生,就是查询PTR记录后,也查询PTR返回的主机名的A记录,然后比较两个IP地址是否相同:
123.45.67.89 -> 98.76.54.32 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: trusted.host.com A
很不幸,在98.76.54.32的DNS服务器不会去查询这个记录,而会直接返回在查询2.74.222.38.in-addr.arpa时得到的并且存在缓存中的信息:
98.76.54.32 -> 123.45.67.89 [Query]
NQY: 1 NAN: 1 NNS: 2 NAD: 2
QY: trusted.host.com A
AN: trusted.host.com A 38.222.74.2
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
那么现在unix主机就认为38.222.74.2就是真正的trusted.host.com了,我们的目的达到了!
这种IP欺骗的条件是:你必须有一台Internet上的授权的DNS服务器,并且你能控制这台服务器,至少要能修改这台服务器的DNS记录,我们的欺 能进行.
2>.拒绝服务攻击 Denial of service
还是上面的例子,如果我们更改位于38.222.74.2的记录,然后对位于98.76.54.32的DNS服务器发出2.74.222.38.in-addr.arpa的查询,并使得查询结果如下:
因为74.222.38.in-addr.arpa完全由我们控制,所以我们能很方便的修改这些信息来实现我们的目的.
38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 2 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN: www.company.com A 0.0.0.1
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
这样一来,使用98.76.54.32这台DNS服务器的用户就不能访问www.company.com了,因为这个IP根本就不存在!
3>.偷取服务 Theft of services
还是上面的例子,只是更改的查询结果如下:
38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 3 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN: www.company.com CNAME www.competitor.com
AN: company.com MX 0 mail.competitor.com
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
这样一来,一个本想访问www.competitor.com的用户会被带到另外一个地方,甚至是敌对的公司的竹叶(想想把华为和北电联起来是什么样的感觉. :) ).并且发给company.com的邮件会被发送给mail.compertitor.com.(越来越觉得在网络上的日子不踏实! xxbin这样想).
4>.限制
对这些攻击,也有一定的限制.
首先,攻击者不能替换缓存中已经存在的记录.比如说,如果在98.76.54.32这个DNS服务器上已经有一条www.company.com的CNAME记录,那么攻击者试图替换为www.competitor.com将不会成功.然而,一些记录可以累加,比如A记录,如果在DNS的缓存中已经存在一条www.company.com的A记录为1.2.3.4,而攻击者却欺骗DNS服务器说www.company.com的A记录为4.3.2.1,那么www.company.com将会有两个A记录,客户端查询时会随机返回其中一个.(呵呵,这不是loading balance么?)
其次,DNS服务器有个缓存刷新时间问题,如果www.netbuddy.org的TTL为7200,那么DNS服务器仅仅会把www.netbuddy.org的信息缓存7200秒或者说两个小时.如果攻击者放入一条TLL为604800的A记录,那么这条记录将会在缓存中保存一周时间,过了默认的两天后,这个DNS服务器就会到处“分发”攻击者假造的记录.
下面是常用的几种可以累加和不能累加的记录:
A can add
NS can add
MX can add
PTR cannot add
【摘要】
DNS欺骗可以用来上BBS隐藏ip,但其作用远远不止这些,
【简述】
熟悉网络的人都知道,当客户向一台服务器请求服务时,服务器方一般会
根据客户的ip反向解析出该ip对应的域名。这种反向域名解析就是一个查DNS
(Domain Name Service)的过程。
如果
客户的ip对应有域名,那么DNS查询会返回其域名。服务器端得到这
一机器名后会将其记录下来并传递给应用程序,于是我们可以看到有人上bbs
来自argo.zsu.edu.cn,其实她来自202.116.64.6――“逸 仙 时 空” BBS。
细心的人会发现BBS上显示ip的栏是有长度局限的,因此若客户机的域名足够
长便可隐藏住自己机器名,如parallelcomput其实是parallelcomputing.xx.
xxx.xxx.xx。这便是隐藏ip的方法之一,此法要和网管比较熟或者咱自己就
是DNS网管。;)
但是您和网管熟吗?反正偶不熟。:(
让我们换个思路:如果服务器在进行DNS查询时能够人为地给它我们自己
的应答信息结果会怎样呢?答案显然不用我说了,这就是著名的DNS欺骗(dns
spoofing)。说实话,DNS欺骗威力巨大,把它用来在BBS上隐藏ip实在是杀
鸡用牛刀。:)
【详述】
现有的大多数DNS服务实现存在两个比较“好”的性质。
其一为当DNS服务器收到一合法的DNS应答信息时它会接受这一返回包中的
所有信息,并存入CACHE。举一个例子:在10.10.1.2的用户要TELNET到100.100
.100.100上,100.100.100.100使用的DNS为100.100.100.200。三次握手后100.
100.100.100会向100.100.100.200发一PTR类型的DNS查询(由IP查主机名):
100.100.100.100 -> 100.100.100.200 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 2.1.10.10.in-addr.arpa PTR
而100.100.100.200并没有关于用户IP对应域的信息。它首先根据DNS协议
极其配置查找出10.10.1.2的授权DNS服务器――10.10.1.5。然后向其发出查
询包:
100.100.100.200 -> 10.10.1.5 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 2.1.10.10.in-addr.arpa PTR
这里隐蔽了iterative与recursive两种方式的区别,一般的DNS设置为
iterative,recursive为可选。详见rfc1034。
10.10.1.5收到该查询信息后便可返回10.10.1.2对应的域名:
10.10.1.5 -> 100.100.100.200 [Answer]
NQY: 1 NAN: 2 NNS: 1 NAD: 1
QY: 2.1.10.10.in-addr.arpa PTR
AN: 2.1.10.10.in-addr.arpa PTR client.host.com
AN: client.host.com A 10.10.1.2
NS: 1.10.10.in-addr.arpa NS ns.host.com
AD: ns.host.com A 10.10.1.5
返回的包中给出了10.10.1.2对应的域名为client.host.com,并指出
client.host.com对应的IP为10.10.1.2(请注意这两个对应的是不同的概念!)
,
如果这个返回包能由我们给出,岂不是爽呆了!
那么怎么做呢?可以控制住你的DNS,然后你想设成什么就是什么。但是
太暴力了,偶不推荐这种方式:)。还有更温和的方法――如果局域网内有DNS
服务器,那么可以通过监听、响应的方法实现DNS欺骗。
即先sniff传到局域网来的DNS查询包,然后代替本网段的DNS服务器给出
应答信息(罗嗦了这么多,这里最重要,呵呵)。
但是本网段的DNS服务器也会同时给出应答信息,这样我们构造的包与它
的包会有冲突,通常是我们的慢:(这样的DNS欺骗是不成功的。
为了获得稳定的DNS欺骗的效果,这就涉及到第二个DNS实现的“好”的
性质:
当DNS服务器发查询包时,它在包内有一query id,应答信息只有query
id及ip都对上时才能为服务器所接受。而这一id每次加一,所以可以通过第
一次向要欺骗的DNS SERVER发一个查询并监听到该id值,随后再发一查询,紧
接着马上send我们构造好的应答包,包内的query id为预测的query id值(可
以指定一个范围,比如从previous_id+1到previous_id+100)。
接上例,如10.10.1.2的用户要欺骗100.100.100.100,他可以对100.100.
100.200进行欺骗:
11.11.11.11 -> 100.100.100.200 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 12345.host.com A
由于host.com的域名由10.10.1.5控制,100.100.100.200向10.10.1.5发
查询包:
100.100.100.200 -> 10.10.1.5 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0 QID: 2345
QY: 12345.host.com A
10.10.1.2的用户可以监听到给包,得到QID: 2345。然后再向100.100.
100.200发第二次查询:
11.11.11.11 -> 100.100.100.200 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 67890.host.com A
紧接着发带预测QID的应答包:
10.10.1.5 -> 100.100.100.200 [Answer]
NQY: 1 NAN: 0 NNS: 0 NAD: 0 QID: 2346
QY: 2.1.10.10.in-addr.arpa PTR
AN: 2.1.10.10.in-addr.arpa PTR you.want.name
you.want.name就是用户自己指定的域名。注意发这个包时应该用10.10.
1.5这一IP地址。
大功告成!##$##^
【后记】
如果您对DNS不熟甚至根本不知其为何物那么请您先参考有关资料
本文仅用于研究目的!与此相关所产生的一切作者概不负责!
【摘要】
DNS欺骗可以用来上BBS隐藏ip,但其作用远远不止这些,
【简述】
熟悉网络的人都知道,当客户向一台服务器请求服务时,服务器方一般会根据客户的ip反向解析出该ip对应的域名。这种反向域名解析就是一个查DNS
(DomainNameService)的过程。
如果客户的ip对应有域名,那么DNS查询会返回其域名。服务器端得到这
一机器名后会将其记录下来并传递给应用程序,于是我们可以看到有人上bbs来自argo.zsu.edu.cn,其实她来自202.116.64.6DD“逸仙时空”BBS。
细心的人会发现BBS上显示ip的栏是有长度局限的,因此若客户机的域名足够长便可隐藏住自己机器名,如parallelcomput其实是parallelcomputing.xx.xxx.xxx.xx。这便是隐藏ip的方法之一,此法要和网管比较熟或者咱自己就是DNS网管。;)
但是您和网管熟吗?反正偶不熟。:(
让我们换个思路:如果服务器在进行DNS查询时能够人为地给它我们自己的应答信息结果会怎样呢?答案显然不用我说了,这就是著名的DNS欺骗(dnsspoofing)。说实话,DNS欺骗威力巨大,把它用来在BBS上隐藏ip实在是杀鸡用牛刀。:)
【详述】
现有的大多数DNS服务实现存在两个比较“好”的性质。
其一为当DNS服务器收到一合法的DNS应答信息时它会接受这一返回包中的所有信息,并存入CACHE。举一个例子:在10.10.1.2的用户要TELNET到100.100.100.100上,100.100.100.100使用的DNS为100.100.100.200。三次握手后100.100.100.100会向100.100.100.200发一PTR类型的DNS查询(由IP查主机名):
100.100.100.100->100.100.100.200[Query]
NQY:1NAN:0NNS:0NAD:0
QY:2.1.10.10.in-addr.arpaPTR
而100.100.100.200并没有关于用户IP对应域的信息,
它首先根据DNS协议极其配置查找出10.10.1.2的授权DNS服务器DD10.10.1.5。然后向其发出查询包:
100.100.100.200->10.10.1.5[Query]
NQY:1NAN:0NNS:0NAD:0
QY:2.1.10.10.in-addr.arpaPTR
这里隐蔽了iterative与recursive两种方式的区别,一般的DNS设置为iterative,recursive为可选。详见rfc1034。
10.10.1.5收到该查询信息后便可返回10.10.1.2对应的域名:
10.10.1.5->100.100.100.200[Answer]
NQY:1NAN:2NNS:1NAD:1
QY:2.1.10.10.in-addr.arpaPTR
AN:2.1.10.10.in-addr.arpaPTRclient.host.com
AN:client.host.comA10.10.1.2
NS:1.10.10.in-addr.arpaNSns.host.com
AD:ns.host.comA10.10.1.5
返回的包中给出了10.10.1.2对应的域名为client.host.com,并指出client.host.com对应的IP为10.10.1.2(请注意这两个对应的是不同的概念!)。如果这个返回包能由我们给出,岂不是爽呆了!
那么怎么做呢?可以控制住你的DNS,然后你想设成什么就是什么。但是太暴力了,偶不推荐这种方式:)。还有更温和的方法DD如果局域网内有DNS服务器,那么可以通过监听、响应的方法实现DNS欺骗。
即先sniff传到局域网来的DNS查询包,然后代替本网段的DNS服务器给出应答信息(罗嗦了这么多,这里最重要,呵呵)。
但是本网段的DNS服务器也会同时给出应答信息,这样我们构造的包与它的包会有冲突,通常是我们的慢:(
这样的DNS欺骗是不成功的。
0×01.1 域名系统(Domain Name System)
DNS 即 Domain Name System 的缩写,域名系统以分布式数据库的形式将域名和IP地址相互映射,DNS协议即域名解析协议,简单的说:DNS是用来解析域名的。有了DNS我们就不用再记住烦人的IP地址,用相对好记的域名就可以对服务器进行访问,即使服务器更换了IP地址,我们依旧可以通过域名访问该服务器,这样能够使我们更方便的访问互联网。
为了方便理解DNS的工作原理,我简单做了一幅图:
假如我们要访问 www.baidu.com ,首先要向本地DNS服务器发出DNS请求,查询 www.baidu.com 的IP地址,如果本地DNS服务器没有在自己的DNS缓存表中发现该网址的记录,就会向根服务器发起查询,根服务器收到请求后,将com域服务器的地址返回给本地DNS服务器,本地DNS服务器则继续向com域发出查询请求,域服务器将 baidu.com 授权域名服务器的地址返回给本地DNS服务器,本地DNS服务器继续向 baidu.com 发起查询,得到 www.baidu.com 的IP地址。
本地DNS服务器得到 www.baidu.com 对应的IP地址后以dns应答包的方式传递给用户,并且在本地建立DNS缓存表。
Windows下查看和刷清空DNS缓存表的命令: ipconfig /displaydns ipconfig /flushdns
0×01.2 DNS欺骗原理
尽管DNS在互联网中扮演着如此重要的角色,但是在设计DNS协议时,设计者没有考虑到一些安全问题,导致了DNS的安全隐患与缺陷。
DNS欺骗就是利用了DNS协议设计时的一个非常严重的安全缺陷。
首先欺骗者向目标机器发送构造好的ARP应答数据包(关于ARP欺骗请看文章《中间人攻击——ARP欺骗的原理、实战及防御 》),ARP欺骗成功后,嗅探到对方发出的DNS请求数据包,分析数据包取得ID和端口号后,向目标发送自己构造好的一个DNS返回包,对方收到DNS应答包后,发现ID和端口号全部正确,即把返回数据包中的域名和对应的IP地址保存进DNS缓存表中,而后来的当真实的DNS应答包返回时则被丢弃。
假设嗅探到目标靶机发出的DNS请求包有以下内容
Source address : 192.168.1.57
Destination address : ns.baidu.com
Source port : 1234
Destination port : 53 (DNS port)
Data : www.baidu.com
我们伪造的DNS应答包如下:
Source address : ns.baidu.com
Destination address : 192.168.1.57
Source port : 53 (DNS port)
Destination port : 1234
Data : www.baidu.com 192.168.1.59
目标靶机收到应答包后把域名以及对应IP保存在了DNS缓存表中,
这样 www.baidu.com 的地址就被指向到了192.168.1.59上,
0×02.1 实战DNS欺骗
同ARP欺骗一样,DNS欺骗也可以被称为DNS毒化,属于中间人攻击,我还是用虚拟机来模拟DNS欺骗攻击用到的工具是Ettercap
首先来看目标靶机,
很明显现在www.baidu.com指向到的IP地址是正确的,
接着我们用ettercap来进行DNS欺骗,首先找到etter.dns这个配置文件并且编辑
添加一条A记录,将 www.baidu.com 指向到本机IP
保存并且退出,使用ettercap开始欺骗:
接着我们在到受到攻击的主机上看一下:
可以看到,目标主机对域名www.baidu.com的访问已经被指向到192.168.1.59
在浏览器中访问该域名便访问到事先搭建好的一台WEB服务器
以上就是一次成功的DNS欺骗
DNS欺骗的危害是巨大的,我不说大家也都懂得,常见被利用来钓鱼、挂马之类的
0×02.2 DNS欺骗的防范
DNS欺骗是很难进行有效防御的,因为大多情况下都是被攻击之后才会发现,对于避免DNS欺骗所造成危害,本菜鸟提出以下建议
1.因为DNS欺骗前提也需要ARP欺骗成功。所以首先做好对ARP欺骗攻击的防范。
2.不要依赖于DNS,尽管这样会很不方便,可以使用hosts文件来实现相同的功能,Hosts文件位置:
windows xp//vista//7 系统的HOSTS文件位置 c:windowssystem32driversetc 用记事本打开即可进行修改。
3.使用安全检测软件定期检查系统是否遭受攻击
4.使用DNSSEC,DNSSEC详细介绍:baike.baidu.com/view/3421039.htm
by: TaskKilL
定义: DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为,
原理:如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。
现在的Internet上存在的DNS服务器有绝大多数都是用bind来架设的,使用的bind版本主要为bind 4.9.5+P1以前版本和bind 8.2.2-P5以前版本.这些bind有个共同的特点,就是BIND会缓存(Cache)所有已经查询过的结果,这个问题就引起了下面的几个问题的存在.
1>.DNS欺骗
在DNS的缓存还没有过期之前,如果在DNS的缓存中已经存在的记录,一旦有客户查询,DNS服务器将会直接返回缓存中的记录.
下面我们来看一个例子:
一台运行着unix的Internet主机,并且提供rlogin服务,它的IP地址为123.45.67.89,它使用的DNS服务器(即/etc/resolv.conf中指向的DNS服务器)的IP地址为98.76.54.32,某个客户端(IP地址为38.222.74.2)试图连接到unix主机的rlogin端口,假设unix主机的/etc/hosts.equiv文件中使用的是dns名称来允许目标主机的访问,那么unix主机会向IP为98.76.54.32的DNS服务器发出一个PTR记录的查询:
123.45.67.89 -> 98.76.54.32 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 2.74.222.38.in-addr.arpa PTR
IP为98.76.54.32的DNS服务器中没有这个反向查询域的信息,经过一番查询,这个DNS服务器找到38.222.74.2和38.222.74.10为74.222.38.in-addr.arpa.的权威DNS服务器,所以它会向38.222.74.2发出PTR查询:
98.76.54.32 -> 38.222.74.2 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: 2.74.222.38.in-addr.arpa PTR
请注意,38.222.74.2是我们的客户端IP,也就是说这台机子是完全掌握在我们手中的.我们可以更改它的DNS记录,让它返回我们所需要的结果:
38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 2 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN: trusted.host.com A 38.222.74.2
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
当98.76.54.32的DNS服务器收到这个应答后,会把结果转发给123.45.67.98,就是那台有rlogin服务的unix主机(也是我们的目标 ),并且98.76.54.32这台DNS服务器会把这次的查询结果缓存起来.
这时unix主机就认为IP地址为38.222.74.2的主机名为trusted.host.com,然后unix主机查询本地的/etc/hosts.equiv文件,看这台主机是否被允许使用rlogin服务,很显然,我们的欺骗达到了.
在unix的环境中,有另外一种技术来防止这种欺骗的发生,就是查询PTR记录后,也查询PTR返回的主机名的A记录,然后比较两个IP地址是否相同:
123.45.67.89 -> 98.76.54.32 [Query]
NQY: 1 NAN: 0 NNS: 0 NAD: 0
QY: trusted.host.com A
很不幸,在98.76.54.32的DNS服务器不会去查询这个记录,而会直接返回在查询2.74.222.38.in-addr.arpa时得到的并且存在缓存中的信息:
98.76.54.32 -> 123.45.67.89 [Query]
NQY: 1 NAN: 1 NNS: 2 NAD: 2
QY: trusted.host.com A
AN: trusted.host.com A 38.222.74.2
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
那么现在unix主机就认为38.222.74.2就是真正的trusted.host.com了,我们的目的达到了!
这种IP欺骗的条件是:你必须有一台Internet上的授权的DNS服务器,并且你能控制这台服务器,至少要能修改这台服务器的DNS记录,我们的欺 能进行.
2>.拒绝服务攻击 Denial of service
还是上面的例子,如果我们更改位于38.222.74.2的记录,然后对位于98.76.54.32的DNS服务器发出2.74.222.38.in-addr.arpa的查询,并使得查询结果如下:
因为74.222.38.in-addr.arpa完全由我们控制,所以我们能很方便的修改这些信息来实现我们的目的.
38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 2 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN: www.company.com A 0.0.0.1
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
这样一来,使用98.76.54.32这台DNS服务器的用户就不能访问www.company.com了,因为这个IP根本就不存在!
3>.偷取服务 Theft of services
还是上面的例子,只是更改的查询结果如下:
38.222.74.2 -> 98.76.54.32 [Answer]
NQY: 1 NAN: 3 NNS: 2 NAD: 2
QY: 2.74.222.38.in-addr.arpa PTR
AN: 2.74.222.38.in-addr.arpa PTR trusted.host.com
AN: www.company.com CNAME www.competitor.com
AN: company.com MX 0 mail.competitor.com
NS: 74.222.38.in-addr.arpa NS ns.sventech.com
NS: 74.222.38.in-addr.arpa NS ns1.sventech.com
AD: ns.sventech.com A 38.222.74.2
AD: ns1.sventech.com A 38.222.74.10
这样一来,一个本想访问www.competitor.com的用户会被带到另外一个地方,甚至是敌对的公司的竹叶(想想把华为和北电联起来是什么样的感觉. ).并且发给company.com的邮件会被发送给mail.compertitor.com.(越来越觉得在网络上的日子不踏实! xxbin这样想).
4>.限制
对这些攻击,也有一定的限制.
首先,攻击者不能替换缓存中已经存在的记录.比如说,如果在98.76.54.32这个DNS服务器上已经有一条www.company.com的CNAME记录,那么攻击者试图替换为www.competitor.com将不会成功.然而,一些记录可以累加,比如A记录,如果在DNS的缓存中已经存在一条www.company.com的A记录为1.2.3.4,而攻击者却欺骗DNS服务器说www.company.com的A记录为4.3.2.1,那么www.company.com将会有两个A记录,客户端查询时会随机返回其中一个.(呵呵,这不是loading balance么?)
其次,DNS服务器有个缓存刷新时间问题,如果www.netbuddy.org的TTL为7200,那么DNS服务器仅仅会把www.netbuddy.org的信息缓存7200秒或者说两个小时.如果攻击者放入一条TLL为604800的A记录,那么这条记录将会在缓存中保存一周时间,过了默认的两天后,这个DNS服务器就会到处“分发”攻击者假造的记录.
下面是常用的几种可以累加和不能累加的记录:
A can add
NS can add
MX can add
PTR cannot add
你是否遭遇过这样的情况?当你在浏览器中输入正确的URL地址,但是打开的并不是你想要去的网站,
DNS欺骗攻击及防御
,
它可能是114的查询页面,可能是一个广告页面,更可能是一个刷流量的页面,甚至是一个挂马的网站。如果你遇到了上述情况话,那么极有可能你遭遇了DNS欺骗,那么什
★ 欺骗的反义词
★ 欺骗的经典语录
★ 欺骗的近义词