久久首页
免费软件
网络时尚
网络学堂
专题讨论
网络资源
网络游戏
网络文档
网络产品
网站导航: 首页 > 网络服务 > DNS 学堂讨论 | 推荐文章

DNS欺骗


2004-05-25  
 
本文仅用于研究目的!与此相关所产生的一切作者概不负责!

【摘要】

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 DNS欺骗

本文仅用于研究目的!与此相关所产生的一切作者概不负责!

【摘要】

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值
 
发表评论 推荐文章 关闭窗口
 相关内容
- 如何在Linux服务器上设置DNS 2004-05-25
- 动态负载平衡DNS简介 2004-05-25
- DNS“堵死”局域网 2003-11-13
- Windows DNS 服务器泄露管理员的用户名 2004-05-22
 
 学堂分类
网络知识操作系统
网络应用网络服务
网页开发网络编程
数据存储网络设备
 文章搜索
 
网站简介 | 广告服务 | 编程支持 | 设计服务 | 诚邀合作 | 访客留言
Copyright © 1999-2004 99NET. All Rights Reserved
版权所有 久久网络工作室
Email:webmaster@99net.net