Windows下DNS ID欺骗的原理与实现 一

Windows下DNS ID欺骗的原理与实现 一 - 电脑安全 - 电脑教程网

Windows下DNS ID欺骗的原理与实现 一

日期:2007-07-21   荐:
  本文相关程序 T-DNS 支持对局域网内任意主机发起DNS ID欺骗攻击,使其所访问的任何网站均被指向一个您自定义的WEB服务器,如您自己的个人主页。 域名系统(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相比较,如果匹配则表明接收到的正是自己等待的数据报,如果不匹配则丢弃之。 假如我们能够伪装DNS服务器提前向客户端发送响应数据报,那么客户端的DNS缓存里域名所对应的IP就是我们自定义的IP了,同时客户端也就被带到了我们希望的网站。条件只有一个,那就是我们发送的ID匹配的DSN响应数据报在DNS服务器发送的响应数据报之前到达客户端。下图清楚的展现了DNS ID欺骗的过程:Client PacketSendPacket(lpadapter,lppackets,TRUE); //发送ARP欺骗的响应数据报; 3.getmac()函数 GetAdaptersInfo(padapterinfo,&adapterinfosize); //获取网络适配器的属性; SendARP(destip,0,pulmac,&ullen); //发送ARP请求数据报,过去网络主机的MAC地址; 4.main()函数 PacketGetAdapterNames((char *)adaptername,&adapterlength); //获得本地主机的网络适配器列表和描述; lpadapter=PacketOpenAdapter(adapterlist[open-1]); //打开指定的网络适配器; CreateThread(NULL,0,sniff,NULL,0,&threadrid); CreateThread(NULL,0,arpspoof,NULL,0,&threadsid); //创建两个线程; WaitForMultipleObjects(2,thread,FALSE,INFINITE); //等待其中的某个线程结束;四> 小结与后记 局域网内的网络安全是一个值得大家关注的问题,往往容易发起各种欺骗攻击,这是局域网自身的属性所决定的--网络共享。本文所讲解的DNS ID欺骗是基于ARP欺骗之上的网络攻击,如果在广域网上,则比较麻烦。不过也有一些例外情况:如果IE中使用代理服务器,欺骗不能进行,因为这时客户端并不会在本地进行域名请求;如果你访问的不是网站主页,而是相关子目录的文件,这样你在自定义的网站上不会找到相关的文件,登陆以失败告终。如果你不幸被欺骗了,先禁用本地连接,然后启用本地连接就可以清除DNS缓存。
标签: