网络安全刘敏贤副教授西南科技大学计算机科学与技术学院2第5章缓冲区溢出攻击回顾缓冲区溢出攻击的基本原理、方法缓冲区溢出程序的原理及要素攻击UNIX攻击WINDOWS3第7章欺骗攻击欺骗攻击是网络攻击的一种重要手段。常见的欺骗攻击方式有:DNS欺骗攻击;Email欺骗攻击;Web欺骗攻击和IP欺骗攻击等。本章介绍这些主要欺骗攻击的原理、实现技术。4第7章欺骗攻击7.1DNS欺骗攻击7.2Email欺骗攻击7.3Web欺骗攻击7.4IP欺骗攻击52019/10/25概述在Internet上计算机之间相互进行的交流建立在两个前提之下:认证(Authentication)信任(Trust)62019/10/26概述认证:认证是网络上的计算机用于相互间进行识别的一种鉴别过程,经过认证的过程,获准相互交流的计算机之间就会建立起相互信任的关系。72019/10/27概述信任:信任和认证具有逆反关系,即如果计算机之间存在高度的信任关系,则交流时就不会要求严格的认证。而反之,如果计算机之间没有很好的信任关系,则会进行严格的认证。82019/10/28概述欺骗实质上就是一种冒充身份通过认证骗取信任的攻击方式。攻击者针对认证机制的缺陷,将自己伪装成可信任方,从而与受害者进行交流,最终攫取信息或是展开进一步攻击。92019/10/29概述目前比较流行的欺骗攻击主要有5种:IP欺骗:使用其他计算机的IP来骗取连接,获得信息或者得到特权;电子邮件欺骗:电子邮件发送方地址的欺骗;DNS欺骗:域名与IP地址转换过程中实现的欺骗;Web欺骗:创造某个万维网网站的复制影像,从而达到欺骗网站用户目的的攻击。10DNS欺骗攻击DNS欺骗原理假设当提交给某个域名服务器的域名解析请求的数据包被截获,然后按截获者的意图将一个虚假的IP地址作为应答信息返回给请求者,这时,原始请求者就会把这个虚假的IP地址作为它所要请求的域名而进行连接,显然它被欺骗到了别处而根本连接不上自己想要连接的那个域名对那个客户想要连接的域名而言,它就算是被黑掉了,因为客户由于无法得到它的正确的IP地址而无法连接上它第7章第1节112019/10/211DNS工作原理DNS的全称是DomainNameServer即域名服务器,当一台主机发送一个请求要求解析某个域名时,它会首先把解析请求发到自己的DNS服务器上。DNS的功能是提供主机名字和IP地址之间的转换信息。DNS服务器里有一个“DNS缓存表”,里面存储了此DNS服务器所管辖域内主机的域名和IP地址的对应关系。122019/10/212DNS工作原理例如,客户主机需要访问时,首先要知道地址。客户主机获得服务器进行查询。查询过程分四步进行。13DNS解析出IP的过程(1)举个例子,假设今天我们查的DomainName(作为一个dns请求)为时,DNSServer如何处理:(1)你所用的电脑送出一个问题给这台电脑所设定的DNSServer(LocalDNS).问:是什么?(2)这台DNS会先看看是不是在他的cache中,如果是,就给出答案.如果不是,就从最上头(根域)查起。在DNSServer上面一定有设定的.,这个时候它就往.层的任何一台DNS(目前.有13台)问问题,问谁知道?(3).层的DNS会回答:我这没有的记录,我已经把.com的域名解析权交给.com了,我告诉你.com的IP,你去向.com问吧,于是将结果(一个IP地址)返还给你的LocalDNS。(这个时候返回的是一个.comnameserver的IP).14DNS解析出IP的过程(2)(4)接下来你所用的LocalDNS就会向.com这层的DNS问:是什么?.comnameserver经查找自身说:我这没有的记录,我已经把sina.com的域名解析权交给sina.com,我告诉你sina.com的IP地址,你问sina.com好了!也将结果(一个IP地址)返还给LocalDNS。(5)于是LocalDNS再向sina.com这层的DNS问:你知道吗?由于sina.com是上面有记录,于是将这个IP告诉给你的LocalDNS,于是LocalDNS拿到了地址。152019/10/215DNS工作原理上图中有三台主机:客户主机、nipc.com域DNS服务器和dhs.com域DNS服务器。其中nipc.com域DNS服务器直接为客户主机提供DNS服务。下面对这四个过程进行解释。客户主机请求发出者nipc.com域DNS服务器dhs.com域DNS服务器(1)请求解析(2)请求解析(3)解析应答1.2.3.4(4)解析应答1.2.3.4并在本地缓存162019/10/216DNS域名解析过程1)客户主机软件(例如Web浏览器)需要对进行解析,它向本地DNS服务器(nipc.com域)发送域名解析请求,要求回复地址;2)由于本地DNS服务器的数据库中没有的记录,同时缓存中也没有记录,所以,它会依据DNS协议机器配置向网络中的其他DNS服务器提交请求。这个查询请求逐级递交,直到dhs.com域的真正权威DNS服务器收到请求(这里省略了寻找dhs.com域DNS服务器的迭代过程,假定本地DNS服务器最终找到了所需要的信息);172019/10/217DNS域名解析过程(2)3)dhs.com域DNS服务器将向nipc.com域DNS服务器返回IP查询结果(假定为1.2.3.4);4)nipc.com域的本地DNS服务器最终将查询结果返回给客户主机浏览器,并将这一结果存储到其DNS缓存当中,以便以后使用。在一段时间里,客户主机再次访问时,就可以不需要再次转发查询请求,而直接从缓存中提取记录向客户端返回IP地址了。经过上面几步,客户主机获得了它所期待的地址,这样整个域名解析过程就结束了。182019/10/218DNS欺骗的原理及实现步骤当客户主机向本地DNS服务器查询域名的时候,如果服务器的缓存中已经有相应记录,DNS服务器就不会再向其他服务器进行查询,而是直接将这条记录返回给用户。而入侵者欲实现DNS欺骗,关键的一个条件就是在DNS服务器的本地Cache中缓存一条伪造的解析记录。192019/10/219DNS欺骗的原理及实现步骤在上面例子中,假如dhs.com域DNS服务器返回的是经过攻击者篡改的信息,比如将,nipc.com域DNS服务器将会接受这个结果,并将错误的信息存储在本地Cache中。客户主机请求发出者nipc.com域DNS服务器dhs.com域DNS服务器(1)请求解析(2)请求解析(3)解析应答5.6.7.8(4)解析应答5.6.7.8并在本地缓存此服务器已经遭到黑客篡改20以后在这条缓存记录的生存期内,再向nipc.com域DNS服务器发送的对的域名解析请求,所得到的IP地址都将是被篡改过的。2019/10/220DNS欺骗的原理及实现步骤212019/10/221DNS欺骗的原理及实现步骤有了对DNS服务器进行欺骗的可能,攻击者怎样伪造DNS应答信息就成了问题的焦点。目前有两种可能情况下的实现办法:攻击者可以控制本地的域名服务器攻击者无法控制任何DNS服务器222019/10/222第一种可能情况一种可能是,攻击者可以控制本地的域名服务器(假定是nipc.com域的权威),在其数据库中增加一个附加记录,将攻击目标的域名(例如)指向攻击者的欺骗IP。紧接着,攻击者向dhs.com域DNS服务器发送对some.nipc.com域名的解析请求。dhs.com域的DNS服务器自然转而向nipc.com域的DNS服务器发送请求。232019/10/223第一种可能情况(2)这时候,本地的域名服务器除了返回正常的some.nipc.com的IP地址外,还会在返回包中附加的映射记录。如果dhs.com域的DNS服务器允许缓存所有收到的信息的话,发过来到的伪造映射记录便“注射”到其Cache中了。242019/10/224第二种可能情况另一种更现实的情况,就是攻击者无法控制任何DNS服务器,但他可以控制该服务所在网络的某台主机,并可以监听该网络中的通信情况。这时候,黑客要对远程的某个DNS服务器进行欺骗攻击,所采用的手段很像IP欺骗攻击:首先,黑客要冒充某个域名服务器的IP地址;其次,黑客要能预测目标域名服务器所发送DNS数据包的ID号。确定目标DNS服务器的ID号即为DNS欺骗攻击的关键所在252019/10/225第二种可能情况(2)DNS数据是通过UDP协议传递的,在DNS服务器之间进行域名解析通信时,请求方和应答方都使用UDP53端口,而这样的通信过程往往是并行的,也就是说,DNS域名服务器之间同时可能会进行多个解析过程,既然不同的过程使用相同的端口号,那靠什么来彼此区别呢?答案就在DNS报文里面。DNS报文格式头部的ID域,是用于区别不同会话过程的,这有点类似于TCP中的序列号,域名解析的请求方和应答方只有使用相同的ID号才能证明是同一个会话(由请求方决定所使用的ID)。不同的解析会话,采用不同的ID号。262019/10/226第二种可能情况(3)在一段时期内,DNS服务器一般都采用一种有章可循的ID生成机制,例如,对于每次发送的域名解析请求,依次将数据包中的ID加1。如此一来,攻击者如果可以在某个DNS服务器的网络中进行嗅探,他只要向远程的DNS服务器发送一个对本地某域名的解析请求,通过嗅探得到的来自目标DNS服务器的请求数据包(因为远程DNS服务器肯定会转而请求本地的DNS服务器),攻击者就可以得到想要的ID号了。272019/10/227第二种可能情况(4)例子:nipc.com域的DNS服务器向dhs.com域的DNS服务器请求解析,如果攻击者所伪造的DNS应答包中含有正确的ID号,并且抢在dhs.com域的DNS服务器之前向nipc.com域的DNS服务器返回伪造信息,欺骗攻击就将获得成功的。282019/10/228第二种可能情况(5)其实,即使攻击者无法监听某个拥有DNS服务器的网络,也有办法得到目标DNS服务器的ID号。首先,他向目标DNS服务器请求对某个不存在域名地址(但该域是存在的)进行解析。然后,攻击者冒充所请求域的DNS服务器,向目标DNS服务器连续发送应答包,这些包中的ID号依次递增。过一段时间,攻击者再次向目标DNS服务器发送针对该域名的解析请求,如果得到返回结果,就说明目标DNS服务器接受了刚才黑客的伪造应答,继而说明黑客猜测的ID号在正确的区段上,否则,攻者可以再次尝试。292019/10/229第二种可能情况(6)实际攻击中,第二种攻击方法实现比较复杂。知道了ID号,并且知道了ID号的增长规律,以下的过程类似于IP欺骗攻击。302019/10/230一次DNS欺骗攻击的完整过程攻击者X5.6.7.8DNS服务器BDNS服务器C4)X请求解析J5)B请求C解析JID=667主机Y1.2.3.4本地DNS服务器A攻击主机X5.6.7.8DNS服务器B1)X请求解析