DNS ID欺骗的原理与实现

来源: 作者: 2007-10-24 出处:pcdog.com

arp  arp欺骗  dns  dns服务器  安全  
下一页 1 2 3 

源码下载

  域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换信息。通常,网络用户通过UDP协议和DNS服务器进行通信,而服务器在特定的53端口监听,并返回用户所需的相关信息。

  一、DNS协议的相关数据结构

  DNS数据报:

  typedef struct dns
{
  unsigned short id;
  //标识,通过它客户端可以将DNS的请求与应答相匹配;
  unsigned short flags;
  //标志:[QR | opcode | AA| TC| RD| RA | zero | rcode ]
  unsigned short quests;
  //问题数目;
  unsigned short answers;
  //资源记录数目;
  unsigned short author;
  //授权资源记录数目;
  unsigned short addition;
  //额外资源记录数目;
}DNS,*PDNS;

  在16位的标志中:QR位判断是查询/响应报文,opcode区别查询类型,AA判断是否为授权回答,TC判断是否可截断,RD判断是否期望递归查询,RA判断是否为可用递归,zero必须为0,rcode为返回码字段。

  DNS查询数据报:

  typedef struct query
{
  unsinged char *name;
  //查询的域名,这是一个大小在0到63之间的字符串;
  unsigned short type;
  //查询类型,大约有20个不同的类型
  unsigned short classes;
  //查询类,通常是A类既查询IP地址。
}QUERY,*PQUERY;

  DNS响应数据报:

  typedef struct response
{
  unsigned short name;
  //查询的域名
  unsigned short type;
  //查询类型
  unsigned short classes;
  //类型码
  unsigned int  ttl;
  //生存时间
  unsigned short length;
  //资源数据长度
  unsigned int  addr;
  //资源数据
}RESPONSE,*PRESPONSE;

  二、windows下DNS ID欺骗的原理

  我们可以看到,在DNS数据报头部的id(标识)是用来匹配响应和请求数据报的。现在,让我们来看看域名解析的整个过程。客户端首先以特定的标识向DNS服务器发送域名查询数据报,在DNS服务器查询之后以相同的ID号给客户端发送域名响应数据报。这时客户端会将收到的DNS响应数据报的ID和自己发送的查询数据报ID相比较,如果匹配则表明接收到的正是自己等待的数据报,如果不匹配则丢弃之。


更多内容请看PCdog.com--DNS协议专题
下一页 1 2 3 
上一篇:封装较完整的串口类库
下一篇:使用应用程序平台跨越SOA障碍