1、第7章 网络安全本章要点r 网络安全与独立系统安全有何相似与不同 r 网络应用程序所面临的威胁:拒绝服务、网站被“黑”、恶意移动代码和协议攻击r 防止网路攻击的控制措施:物理安全、策略与规程以及大量的控制技术 r 防火墙的原理、功能和限制r 入侵检测系统的种类、功能与局限r 安全电子邮件:PGP和S/MIME 我们每天都在跟网络打交道。网络攻击确实是一个至关重要的问题。本章将描述是什么使得网络安全与前面讲过的应用程序和操作安全既有区别又有相似之处。由于网络的增长和变化速度比计算机科学其他方面的发展速度更快,因此,不可能介绍所有最流行的攻击与防御技术。但新的形式和变化都是建立在一些基础知识之上的
2、。这些知识包括:网络基本概念、网络威胁和网络控制等。7.1 网络的概念 由于网络存在单一故障点单一故障点(single point of failure),所以是脆弱的。但是网络具有恢复恢复(resilience)或容错能力容错能力(fault tolerance),所以又是健壮的。一般认为,网络的中间部分很健壮,但其周边却是脆弱的。在一般用户的眼里,一个网络看起来就像一个设计成两端由中间的一条单线连接起来的东西。这里,我们在描述计算机网络时,着重介绍安全的概念,同时也以简化的方式描述网络本身,而避免让网络的复杂性分散注意力。注意,我们描述的网络是对更复杂的实际网络的抽象。7.1.1 网络 简
3、单网络模型可以设想为两台设备通过硬件介质连接起来,并用软件实现设备间通信。可能一台计算机是服务器服务器(server),另一台设备提供输入/输出是客户客户(client)。图 7.1 网络的简单示意图7.1.1 网络(续)但实际网络的状况显然要比这复杂得多。(1)执行用户到计算机通信的简单网络设备通常是一台微型计算机或者工作站,因此,客户端具有相当大的客户端具有相当大的存储容量和计算能力存储容量和计算能力。(2)一个网络可以配置为单个客户与服务器相连,但在通常情况下,是多客户与多个服务器交互的多客户与多个服务器交互的。(3)网络服务通常是由很多台计算机一起提供的网络服务通常是由很多台计算机一起
4、提供的。单个用户会话在客户与服务器之间来回传送消息的过程中,需要经过一些中间计算机。但这些计算机中的部分如果正在实现其他重要的交互服务,则消息可能被暂停传输。(4)在终端用户终端用户接受服务的过程中,通常不会意识到发通常不会意识到发生了很多会话和计算工作生了很多会话和计算工作。7.1.1 网络(续)通常,网络中的一个单一的计算系统称为一个节点节点(node),其任务处理设备(计算机)称为主机主机(host)。两台主机之间的连接称为链路链路(link),网络计算由许多用户、通信介质、可见主机和通常对终端用户不可见的系统组成。系统是一个处理器的集合,通常都具有比工作站工作站(workstation
5、)更强的处理能力和更大的存储空间。图 7.2 更复杂但更典型的网络示意图7.1.1 网络(续)使用环境使用环境 网络具有以下几个典型的特征:(1)匿名性匿名性:网络隐藏了通信者绝大多数的特征,如相貌、声音以及环境,而在通常情况下,我们是以这些特征相互认识的。(2)自动性自动性:通信自动完成。(3)远程性远程性。(4)透明性透明性:用户甚至不清楚当前通信的主机与上一次通信的主机是否相同。(5)路由的多样性路由的多样性:为了维护和提高网络的可靠和性能,通信路由通常动态分配。7.1.1 网络(续)外形和尺寸外形和尺寸 网络按照节点和连接的形式进行组织的方式,称为网络的拓扑结构拓扑结构(topolog
6、y)。其与安全相关的特性有:(1)边界边界:边界将一个网络的元素与不属于该网络的元素区分开来。(2)拥有关系拥有关系:要想知道网络中每台主机的拥有者是很困难的。(3)控制控制:如果说拥有关系是不确定的,那么控制也就是不确定的了。7.1.1 网络(续)通信模式通信模式 数据的通信要么采用数字数字(digital)格式(传输的数据以离散的二进制数值表示),要么采用模拟模拟(analog)格式(传输的数据以连接范围的一系列点来表示,使用的介质采用声音或者电压)。转换工作由调制解调器来完成,可以实现数字和模拟信号之间的双向转换。7.1.2 传输介质 通信可以使用几种传输介质:(1)电缆电缆:可以是双绞
7、线双绞线(twisted pair)或者无无屏蔽双绞线屏蔽双绞线(unshielded twisted pair,UTP)也可以是同轴电缆同轴电缆(coaxial(coax)cable)。(2)光纤光纤:采用极细的玻璃作为传输介质。传输的是光束而不是电能。光纤介质所产生的串扰非常低、价格和重量相对铜线而言都低得多。铜线逐渐被光纤所取代。(3)无线无线:采用无线电信号传送通信信号。很多符合802.11协议的设备都适用于建立办公室或者家庭无线网络。7.1.2 传输介质(续)(4)微波微波:微波信道的容量与双绞线相当。微波信号必须在小于相距49公里的地方进行中继。(5)红外红外:红外线通信传输距离不
8、超过11.5公里。由于传输直线的要求和距离的限制,红外线一般只在像办公室那样有保护措施的范围内使用。(6)卫星卫星:卫星通信链路的质量通常比在地球上铺设的电缆更好。卫星通常在一个很广的范围内传播通信信号。从使用性考虑总是希望信号覆盖很宽的范围,但是覆盖范围越窄,被窃听的危险就越低。7.1.3 协议 通信可以与实际的通信介质相互分开。协议协议(protocol)的定义使得这一独立性的实现成为可能,允许用户以一个较高的、抽象的通信层次看待网络。在通信的两端,通信完成的细节过程通过硬件和软件技术被隐藏了。这些硬件和软件依据协协议栈议栈(protocol stack)行事。协议栈中的每一层都像是定义了
9、一种语言,使用该语言就可实现在该层中相关信息之间的相互交流。目前,网络中用得最多的是两种协议栈:开放系开放系统互连协议统互连协议(OSI)体系体系和传输控制与互连协议传输控制与互连协议(TCP/IP)体系体系。7.1.3 协议(续)ISO OSI参考模型参考模型 OSI参考模型包含7层。我们可以把这些层看成是在一条装配线,每一层将自己提供的服务添加到整个通信过程中。层名称用途7应用层用户级数据6表示层标准数据显示,分块,文本压缩5会话层一个应用中各部分的会话和逻辑连接;消息排队,恢复4传输层流控,端对端错误检测及纠正,优先级服务3网络层路由,将消息块分割成统一尺寸的数据包2数据链路层保证可靠的
10、数据在物理介质上传输;传输错误恢复,将包分离以组成统一尺寸的帧1物理层通过物理介质进行实际通信,独立的位传输表 7.1 OSI协议中的层7.1.3 协议(续)图 7.3 ISO OSI网络模型发送和接收方的平行层也称为“对等层对等层”(peers)7.1.3 协议(续)寻址寻址 在网络层(3),一种称为路由器路由器(router)的设备会将消息准确地从源地址发送到目的地址。网络层所建立的目的地址、源地址和其中的数据一起,合称为一个包包(packet)。图 7.4 网络层传输7.1.3 协议(续)每一台计算机都通过一块网络接口卡网络接口卡(Network Interface Card,NIC)连
11、接到一个网络,在网络接口卡上有一个唯一的物理地址,称为MAC地址地址(MAC为Media Access Control的缩写)。在数据链路层,另外加上了两个头部,其中一个是计算机上的NIC地址(源MAC地址),另一个是路由器上的NIC地址(目的MAC地址)。包含目的MAC地址、源MAC地址和数据的数据链路层结构称为一个帧帧(frame)。图 7.5 数据链路层传输7.1.3 协议(续)图 7.6 传输的消息准备过程分层分层7.1.3 协议(续)表示层(6)将原始消息分割成许多小块。在会话层(5)添加了一个会话头部,以指明发送者、接收者和一些与顺序相关的信息。传输层(4)添加了一些在发送者和接收
12、者之间进行逻辑连接的信息。网络层(3)增加了一些路由信息,并把从传输层(4)传来的一个信息单元进一步分割为多个数据包。数据链路层(2)添加了一个头部和尾部,以保证这些消息块的正确顺序,并检测和校正传输错误。消息和控制的每一比特都在物理层(1)通过物理介质进行传播。7.1.3 协议(续)TCP/IP 一般认为OSI模型过于复杂,其中包含了太多的层次。因此,TCP/IP成为了目前应用最广泛的协议栈。TCP/IP是为实际因特网设计的,并且是根据协议而不是根据层定义的。但是,仍然可以把它看成4层结构:应用层、主机到主机(端到端)的传输层、网络层和物理层。其主要由处于底层的IP传输协议、基于其上用于实现
13、面向连接的通信会话的TCP协议以及第三方协议用户数据报协议(User Datagram Protocol,UDP)组成。7.1.3 协议(续)传输层从应用层接收长度可变的消息,将它们分割成一定大小的单元,按包包(packet)发送出去。网络层以数据报数据报(datagram)方式传输这些包,根据数据的目的地(随数据一起提供的地址)将它们发送至不同的物理连接。物理层实现实际比特流的数据通信。层层动作动作责任责任应用层准备来自用户交互的消息用户交互、寻址传输层将消息转换成包排序,可靠性(完整性),纠错网路层将包转换成数据报流控,路由物理层以独立的比特传输数据报数据通信表 7.2 因特网通信中的层7
14、.1.3 协议(续)TCP协议将无序的包按照正确顺序进行排列,请求重传丢失的包,重新获取一个毁坏包的新副本。对速率或效率要求非常高时,允许数据流中存在少量不准确的数据。TCP数据包是一个数据结构,其中包含一个序列号、一些标记、源端口端口(port)和目的端口号。每一种服务都使用一个众所周知的端口,比如80端口用于HTTP(网页),23端口用于Telnet(远程终端连接),25端口用于SMTP(电子邮件),161端口用于SNMP(网络管理)。简而言之,每种服务都有一个守护进程,以监视指定的端口号,并且当有任何数据传到该端口时为其提供服务。UDP协议不提供TCP协议中的错误检测和误码校正功能,不过
15、它是一种更小、更快的传输协议。7.1.3 协议(续)表7.3 因特网提供的服务层TCP协议UDP协议应用层简单邮件传输协议(Simple Mail Transfer Protocol)超文本传输协议(Hypertext Transfer Protocol)文件传输协议(File Transfer Protocol)远程登录协议(Terminal Emulation Protocol)其他协议简单网络管理协议(Simple Network Monitoring Protocol)系统审计日志(System Audit Log)时钟其他协议传输层TCPUDP网路层IPIP物理层数据通信数据通信7.
16、1.3 协议(续)寻址方式寻址方式 地址是网络中一个节点的唯一标识符。广域网必须遵从已经建立的规则,而局域网中寻址方式的限制相对较小。在基于TCP/IP协议的广域网上的主机都有一个32位的地址,称为IP地址地址(IP address)。IP地址四个8比特一组,通常用十进制表示。网络地址也采用我们熟悉的域名域名(domain name)进行区分,比如ATT.COM或者CAM.AC.UK,由寻址表寻址表完成从这些字符串到数字格式的转换。IP地址按照从右到左的顺序进行解析。最右边的部分,如.COM、.EDU、.ORG或者.GOV以及由两个字符代表的某个国家,如.UK、.FR、.JP或者.DE,称为顶
17、级域名顶级域名(top-level domain),由一些称为因特网注册部门的小型组织机构进行管理。负责进行注册的组织机构需要发布主机地址,这些地址是包含在其管理的顶级域名下的二级域名表中。7.1.3 协议协议(续续)当第一次试图将一个完整的域名解析为它所对应的IP地址时,系统将完成一次从顶级主机开始查找的过程(在随后的解析工作中,系统自身维护一个记录域名的缓存,本地进行域名解析)。最后域名被转换成为一个32位,四个8比特一组的地址,并被包含在所有以该地址为目的地的IP包中。7.1.3 协议(续)路由概念路由概念 主机需要知道如何根据IP地址发送一个包。每台主机都清楚与自己直接相连的其他主机,
18、并且与相邻的主机交换连接信息。主机将它能到达的主机(地址)及代价(跳步数)的描述信息广播给它的邻居。每台主机将流量传递给能提供最小代价路径的某个邻居。7.1.4 网络类型 网络是一个通信主机的集合。局域网局域网 局域网局域网(Local Area Network,LAN)的覆盖范围较小,一般局限于一栋建筑内。LAN的主要优点在于它的所有用户可以很方便地共享数据、程序,以及共享对设备的访问,比如打印机。大多数LAN都具有以下特征:(1)规模小规模小:用户通常不超过100个。(2)局部控制局部控制:都由一个组织统一管理。(3)物理保护物理保护:外部恶意访问者很难访问内部设备。(4)有限范围有限范围
19、:仅覆盖一个很小的范围。7.1.4 网络类型(续)广域网广域网 广域网广域网(Wide Area Network,WAN)和局域网在规模、距离和控制或拥有关系等方面都有较大的区别,但WAN仍然有一些统一的原则。其他相似网络类型还包括校园网校园网(CAN)和城域网城域网(MAN)。以下是WAN的典型特征:(1)单一控制单一控制:通常,一个广域网应该由一个组织机构负责和控制。(2)覆盖范围大覆盖范围大:一个WAN通常比一个LAN的服务范围要大,一般从几公里到整个地球的范围。(3)物理上暴露物理上暴露(常常如此,但不全是常常如此,但不全是):大多数广域网使用公共通信介质,因此,相对来说要暴露一些。7
20、.1.4 网络类型(续)互联网互联网(网际网网际网)由众多网络构成,最典型的互联网是因特网。因特网由因特网协会进行松散的控制。因特网协会指定了一些公平活动的基本规则,以保证所有用户都能接受公平的服务,并且它支持标准协议,以实现用户之间的通信。以下是因特网的一些特征:(1)联合联合:对于因特网的用户甚至是网络服务提供商,我们几乎都不可能给出一个适当描述。(2)巨大巨大:没有谁真正知道因特网到底有多大。(3)异构异构:可能每一款商业硬件和软件中,至少有一个产品连接到了因特网上。(4)物理上和逻辑上暴露物理上和逻辑上暴露:由于没有统一的访问控制,实际上任何攻击者都可以访问因特网,而且由于连接设备的复
21、杂性,他们可以获取网上的任何资源。7.2 网络面临的威胁7.2.1 导致网络脆弱的因素 (1)匿名性匿名性:攻击者可以远隔千里实施攻击,而无需与被攻击者的系统、该系统的管理员或者任何用户进行直接接触。因此,隐藏在电子屏障之后的潜在攻击者处于比较安全的地位。攻击者可能利用很多其他主机来实施攻击,这样就可以隐藏攻击的源头。(2)攻击点多攻击点多既指攻击的目标,也指发动攻击既指攻击的目标,也指发动攻击的地点的地点:攻击者可能来自任何主机,也可能针对任何主机。因此,在一个大型网络中,容易受到攻击的点是很多的。(3)共享性共享性:由于网络允许共享资源和分担负载,所以潜在的访问联网系统的用户比单机系统用户
22、多。7.2.1 导致网络脆弱的因素(续)(4)系统的复杂性系统的复杂性:一个网络操作/控制系统很可能比一个为独立计算设计的操作系统要复杂得多。攻击者也可以利用攻击目标强大的计算能力,将部分计算机工作交给攻击目标完成,从而能够大大提高攻击能力。(5)未知边界未知边界:网络的可扩展性也意味着网络的边界是不确定的。可能怀有恶意的未知或者不受控制的用户团体是网络安全的不利因素。7.2.1 导致网络脆弱的因素(续)图 7.7 无清晰的网络边界7.2.1 导致网络脆弱的因素(续)(6)未知路径未知路径:从一台主机到另一台主机可能存在着多条路径。图 7.8 网络中某种消息的路由过程7.2.2 谁在攻击网络
23、关注动机有助于我们了解谁可能攻击互联网的主机和用户。网络挑战、名声、金钱以及意识形态是4个重要的动机。(1)挑战挑战:对网络攻击者而言,一个最重要的动机就是对智力的挑战。击败看似无懈可击的事物是一些攻击者喜欢的智力刺激。有些攻击者只是希望看看这种不受欢迎的活动深入到什么地步。(2)名声名声:一些攻击者希望通过攻击活动得到认可。也就是说,一方面是出于迎接挑战的考虑,另一方面是为了由此而获得声望。7.2.2 谁在攻击网络(续)(3)金钱与间谍、有组织犯罪金钱与间谍、有组织犯罪:经济回报也是攻击者实施攻击的一个动机。一些组织的行为看似很奇怪,但实际上,工业间谍应该为此负责。工业间谍是非法的,但却经常
24、出现,部分原因是其潜在的高收益。更精心策划的攻击需要不止一个人,所以,出现了有组织的犯罪。到处都有证据表明,有组织的犯罪集团正在利用Internet提供的新机会。(4)意识形态意识形态:Denning曾经把攻击行为分为黑客主义与计算机恐怖主义。黑客主义黑客主义(hactivism)是指“使用黑客技术针对一个目标的一系列活动,目的是干扰其正常运转,但不会造成严重破坏”。计算计算机恐怖主义机恐怖主义(cyberterrorism)是“一种具有潜在动机的黑客活动,目的是造成严重损坏,比如造成死亡或者严重的经济损失”。7.2.3 攻击前侦察 攻击者在采取攻击行动之前,首先要进行充分的调查和计划活动。网
25、络攻击者开始攻击之前需要了解有关攻击目标的大量信息。研究这些攻击的前期工作的目的是:一旦发现了某些特征行为,就可能在攻击真正发生之前采取措施加以阻止。端口扫描端口扫描 收集信息的一种简单方法是采用端口扫描端口扫描(port scan)。针对一个特定的IP地址,扫描程序报告该地址的哪些端口会响应消息,以及目前存在着有哪些已知的弱点。通过端口扫描可以知道三件事情:目标系统上有哪些标准端口或者服务正在运行并响应请求;目标系统上安装了哪些操作系统;目前都有哪些应用程序在提供服务及其版本是什么。可以通过合法的渠道获得端口扫描工具。7.2.3 攻击前侦察(续)社会工程学社会工程学 社会工程学涉及:使用社会
26、技巧和人际关系,使某人透露一些与安全相关的信息,甚至直接为攻击做一些事情。社会工程学不会有多大损失,最多是引起了可能攻击目标的警觉,对不涉及安全管理的人,社会工程学就很容易成功。情报收集情报收集 情报收集情报收集(Intelligence)是收集细节信息的常用手段。在信息安全领域,通常是指通过不同渠道收集不连续的信息比特,而后就像做拼图游戏一样将它们组合到一起。大多数情报收集技术都只需经过很少的训练和最少的时间投入。7.2.3 攻击前侦察(续)操作系统与应用程序特征操作系统与应用程序特征 如果掌握了操作系统和应用程序的种类版本,攻击者就可以查找一张记录了某种软件已知漏洞的表,从而决定利用哪个特
27、殊的漏洞实施攻击。所有与特定类型及版本相关的特性称为操作系统或者应用程序的指纹指纹(fingerprint),可用于标识其开发商和版本。通过与操作系统或者应用程序的简单交互可以确定这些。有时,应用程序会自报身份。如,Server:Netscape-Commerce/1.12 Your browser sent a non-HTTP compliant message.或 Microsoft ESMTP MAIL Service,Version:5.0.2195.37797.2.3 攻击前侦察(续)公告牌与聊天室公告牌与聊天室 有大量秘密公告牌与聊天室支持信息交换。攻击者可以发现最新漏洞和利用技
28、术,永远不会知道谁正在从因特网上读取信息。文档的可用性文档的可用性 开发商自身有时也会发布一些对攻击者有用的信息。7.2.3 攻击前侦察(续)侦察:结束语侦察:结束语 一个计算机站点可能注意到,在短时间内,侦测数量出现异常。但是,一名聪明的攻击者,会采取一种游击战术,即收集一些信息,然后潜伏一段时间,而后再出来收集更多的信息。防御侦察的最好办法是保持沉默。尽可能少地发布与自己站点相关的信息,不管是人为的,还是通过机器自动发布的。7.2.4 传输中的威胁:偷听与窃听 实施攻击最简单的方法是偷听。偷听偷听(eavesdrop)这个词语暗示着无须额外努力就能听到。窃听窃听(wiretap)需通过一些
29、努力窃取通信信息。被动窃听被动窃听(passive wiretapping)只是“听”,与偷听非常相近。而主动窃听主动窃听(active wiretapping)则意味着还要在通信信息中注入某些东西。窃听是否成功与通信媒介有关。7.2.4 传输中的威胁:偷听与窃听(续)电缆电缆 (1)嗅包器嗅包器(packet snifter)软件可以获取一个LAN上的所有数据包。(2)可以对一个网卡重新编程,使它与LAN上另一块已经存在的网卡具有相同的地址。(3)电缆线会发射无线电波。通过自感应自感应(inductance)过程,入侵者可以从电缆线上读取辐射出的信号,而无须与电缆进行物理接触。(4)切断或部
30、分切断电缆,进行分接。7.2.4 传输中的威胁:偷听与窃听(续)网络中传输的信号是多路复用多路复用(multiplexed)的,意味着在某个特定的时刻不只一个信号在传输。LAN传输的常常是截然不同的包,但是在WAN上传输的数据,却在离开发送它们的主机以后,经过了复杂的多路复用处理。这样,在WAN上的窃听者不仅需要截取自己想要的通信信号,而且需要将这些信号,从同时经过多路复用处理的信号中区分开来。7.2.4 传输中的威胁:偷听与窃听(续)微波微波 由于通过空气传播,使得微波信号更容易被局外人接触到。微波链路可携带巨大流量,因此,几乎不可能将特定信号,从进行了多路复用处理的其他传输信号分离出来。专
31、用微波链路,不能很好地获得因容量大而产生的保护。图 7.9 微波信号的路径7.2.4 传输中的威胁:偷听与窃听(续)卫星通信卫星通信 由于在一个几百公里宽上千公里长的区域内都可以截取卫星信号,因此潜在被截取的可能性比微波信号更大。复杂的多路复用处理可以提供信号保护。光纤光纤 光纤具有两个安全优势:第一,在每次进行一个新的连接时,都必须对整个光纤网络进行仔细调整;第二,光纤中传输的是光能,而不是电能。但是,通信线路中的诸如中继器、连接器和分接器等设备,可能是渗透点。7.2.4 传输中的威胁:偷听与窃听(续)无线通信无线通信 在防范入侵和骗取连接服务方面无线通信遇到了困难。无线通信主要的威胁不是干
32、扰,而是截取。由于开放性,很容易对一个无线网络连接采用主动或者被动窃听技术。加上无线通信中通常不使用或使用很弱的加密技术,以及一些软件的缺陷,实施截取比想象中的要容易。另一个问题是:无线网络有骗取网络连接的可能性。很多主机都运行了动态主机配置协议动态主机配置协议(Dynamic Host Configuration Protocol,DHCP),通过该协议,一名客户可以从一个主机获得一个临时IP地址和连接。这个分配机制在用户鉴别方面存在大问题。此外,对这类问题的政策法规也不一致。7.2.5 窃听技术总结 从安全的角度来看,我们应该假设在网络节点之间所有的通信链路都有被突破的可能。采用加强物理上
33、和管理上的安全保护措施,对于本地连接十分必要。图 7.10 网络在窃听技术中暴露的弱点7.2.6 协议的缺陷 互联网联盟为方便详查所有因特网协议,而将它们公开张贴出来。每一种被接受的协议被分配了一个Internet(Request for Comment,RFC)标准(草案)编号。许多协议中存在的问题,被那些敏锐的检查者发现并得到了纠正。但协议本身可能还存在缺陷。7.2.7 假冒 比采用窃听技术获取网络信息更简单的方法,是冒充另一个用户或另一个进程。在广域网中采用假冒技术比局域网中具有更大威胁。但局域网有时会在未经安全考虑的情况下,就被连接到一个更大的网络中去,这方面的问题也不容忽视。下面讨论
34、一些常见的假冒方式:通过猜测突破鉴别通过猜测突破鉴别 方法有:通过简单猜测获取口令、猜测口令为默认口令、休眠账户结合社会工程学获取口令。7.2.7 假冒(续)以偷听或者窃听突破鉴别以偷听或者窃听突破鉴别 鉴别的细节在网络上传输时,它们就暴露在网络上任何一个在监视通信的人面前。这样同样的鉴别细节可以被一个假冒者反复使用,直到它们被改变为止。避开鉴别避开鉴别 对于一个有弱点或者缺陷的鉴别机制来说,攻击者可以绕开鉴别访问系统。在一个典型的操作系统缺陷中,用于接收输入口令的缓冲区大小是固定的,并对所有输入的字符进行计数,包括用于改错的退格符。如果用于输入的字符数量超过了缓冲区的容纳能力,就会出现溢出,
35、从而导致操作系统省略对口令的比较,并把它当做经过了正确鉴别的口令一样对待。7.2.7 假冒(续)不存在的鉴别不存在的鉴别 攻击者可能知道一个系统有一些身份不需要经过鉴别。如,guest或anonymous帐户。在UNIX系统中,.rhosts 文件列出了所有可信主机,.rlogin文件列出了所有可信任用户,他们都被允许不经鉴别可以访问系统。这些“可信任主机”也可以被局外人所利用:他们可以通过一个鉴别弱点(比如猜测出来的口令)获取对一个系统的访问,然后就可以实现对另外一个系统的访问,只要这个系统接受来自其可信任列表中的真实用户。7.2.7 假冒(续)众所周知的鉴别众所周知的鉴别 采用方便的鉴别数
36、据和众所周知的鉴别方法,有时会使得保护形同虚设。系统网络管理协议SNMP使用了一个公用字符串公用字符串(community string),这是一个重要的口令,用于公用设备彼此之间的交互。然而,网络设备被设计成可以进行带有最小配置的快速安装,并且很多管理员并不改变这个安装在一个路由器或者交换机中的默认的公共字符串。可信任鉴别可信任鉴别 当身份识别被委托给其他可信任源时,鉴别会成为一个问题。像UNXI系统中的.rhost,.rlogin和/etc/hosts/equiv中的文件,都可能成为潜在漏洞。通过这些漏洞,一名远程用户或者一名远程攻击者可以获取对系统的访问。7.2.7 假冒(续)欺骗欺骗
37、欺骗欺骗(spoofing),是指一名攻击者在网络的另一端以不真实的身份与目标进行交互。欺骗方式包括:伪装、会话劫持和中间人攻击。伪装伪装 伪装伪装(masquerade)是指一台主机假装成另一台主机。从攻击者的观点看来,在面具被揭开之前,伪装会带来乐趣。典型的形式有“钓钓鱼欺诈鱼欺诈”(phishing)。在另一种伪装方法中,攻击者利用了受害者网页服务器的缺陷,从而覆盖受害者主页。7.2.7 假冒(续)会话劫持会话劫持 会话劫持会话劫持(session hijacking)是指截取并维持一个由其他实体开始的会话。假设有两个实体已经进入了一个会话,然后第三个实体截取了他们的通信并以其中某一方的
38、名义与另一方进行会话。中间人攻击中间人攻击 中间人攻击中间人攻击(man-in-the-middle)是一种与会话劫持相似的攻击形式,也要求有一个实体侵入两个会话实体之间。它们之间的区别在于,中间人攻击通常在会话的开始就参与进来了,而会话劫持发生在一个会话建立之后。7.2.7 假冒(续)图 7.11 中间人攻击中的密钥截取7.2.8 消息机密性面临的威胁 误传误传 因为网络硬件或者软件中存在一些缺陷,可能会导致消息被误传。与网络缺陷相比,人为的错误出现得更为频繁。暴露暴露 消息的内容将暴露在临时缓冲区中;遍及整个网络的交换器、路由器、网关和中间主机中;以及在建立、格式化和表示消息的进程工作区中
39、。攻击者可以利用任意环节暴露消息。流量分析流量分析 不仅消息自身是需要保密的,就连存在这条消息这个事实都是需要保密的。这种情况下,我们既需要保护消息的内容,也需要保护标识发送者和接收者的报头消息。7.2.9 消息完整性面临的威胁 篡改消息篡改消息 攻击者可能会利用我们对消息的信任来误导我们。特别是,攻击者们可能会:(1)改变部分甚至全部消息内容。(2)完整地替换一条消息,包括其中的日期和发送者、接收者的身份。(3)重用一条以前的旧消息。(4)摘录不同的消息片段,组合成一条消息。(5)改变消息的来源。(6)改变消息的目标。(7)毁坏或者删除消息。7.2.9 消息完整性面临的威胁(续)可能采取以下
40、我们已经讨论过的方法实施以上攻击:主机窃听、特洛伊木马、假冒、抢占主机、抢占工作站。噪声噪声 在通信介质上传输的信号会遭到干扰,干扰源可能是相同介质上传输的其他通信和自然干扰源(比如雷电、电机和某些动物)。这些无意干扰通常称为噪声噪声(noise)。通信协议的设计考虑到了这些问题,可以克服噪声的影响。7.2.10 格式失效 网络通过协议建立起来,攻击者可能寻找协议标准中没有定义的漏洞,破坏这些协议。异常包异常包 包与其他数据项有特定的格式。域的大小、信号延续位和有特定意义的其他标志,以及为网络服务应用正确处理的标志统称为协议句柄。协议句柄不必检查错误。攻击者可能修改协议句柄,尝试各种错误的组合
41、。当然,大多数情况下,协议处理器可以检查出异常而只影响攻击者。但当错误影响协议器失效,其结果可能导致拒绝服务、整个系统失效或其他严重后果。7.2.10 格式失效(续)协议失效和实现缺陷协议失效和实现缺陷 (1)某些网络协议的实现,是很多安全缺陷的源头。不同开发商会编写实现他们自己的服务代码,但他们常常基于通用(有缺陷)的原型。(2)协议本身可能是不完整的,没有指定针对特殊情况应该采取什么措施,所以不同的开发商可能产生不同的结果。(3)协议可能存在不知道的安全缺陷。7.2.11 网站漏洞 因为网络几乎完全暴露在用户面前,所以非常脆弱。攻击者在挑战控制权方面具有优势。网站被网站被“黑黑”一种最广为
42、人知的攻击方式是网站被“黑”。由于网络的设计使得代码可以下载,这就允许攻击者能够获得全部超文本文档和在加载进程中与客户相关的所有程序。网站给攻击者提供了太多弱点,使得网站被“黑”的吸引力大大增加。7.2.11 网站漏洞(续)缓冲区溢出缓冲区溢出 网页也存在缓冲区溢出问题。最知名的网页服务器缓冲区溢出,也许就是称为iishack的文件名问题。一些网页服务器对极长的参数字段也很容易发生缓冲区溢出。“./”问题问题 网页服务器代码应该一直运行在一个受限的环境中。在理想情况下,网页服务器上应该没有编辑器、xterm和Telnet程序,甚至连绝大多数系统应用程序都不应该安装。但事实常常不是如此。另种阻止
43、攻击的方法是创建一个界地址来限制网页服务器应用程序的执行区域。但在UNIX和Windows系统中“./”都代表某一个目录的父目录。7.2.11 网站漏洞(续)应用代码错误应用代码错误 网页服务器为了使自己的工作更轻松一些,向用户传递上下文字符串,而要求用户浏览器用全部上下文进行应答。一旦用户可以修改这种上下文内容,就会出现问题。服务器端包含服务器端包含 服务器端包含服务器端包含(sever-side include)问题利用了网页中可以自动调用一个特定的函数的事实。其中一种服务器端包含命令称为exec,用于执行任意一个存放于服务器上的文件。例如,服务器端包含命令:会以服务器的名义打开一个Tel
44、net会话。7.2.12 拒绝服务 可用性攻击,有时称为拒绝访问攻击或者DOS攻击,在网络中比在其他的环境中更加值得重视。传输故障传输故障 在一个主干网络(包括因特网)中,其中的许多通信故障问题都是临时出现或者能够自动恢复(通过绕道的方式)的。连接洪泛连接洪泛 如果攻击者发送了太多数据,以至于通信系统疲于应付,就没空接受其他数据了。因特网协议中有一类协议,称为网间控制报文协议网间控制报文协议(Internet Control Message Protocol,ICMP),通常用于子系统诊断。7.2.12 拒绝服务(续)ICMP协议与用户应用软件没有联系。ICMP协议包括:(1)ping:用于要
45、求某个目标返回一个应答,目的是看目标系统是否可以达到以及是否运转正常。(2)echo:用于请求一个目标将发送给它的数据发送回来,目的是看连接链路是否可靠(ping实际上是echo的一个版本)。(3)destination unreachable:用于指出一个目标地址不能被访问。(4)source quench:意味着目标即将达到处理极限,数据包的发送端应该在一段时间内暂停发送数据包。#由于这些协议都是在网络堆栈中进行处理的,因此在接收端检测或阻塞这些功能很困难。7.2.12 拒绝服务(续)Echo-Chargen chargen是一个产生一串数据包的协议,常用于测试网络的容量。攻击者在主机A上
46、建立一个chargen进程产生一串包要求主机 B返回,这样形成一个无限循环状态。更有甚者,攻击者将第一个包的目的与源地址都设定为主机 B的地址,主机 B陷入一个循环中,不断地对它自己发出的消息做出应答。死亡之ping ping要求接收者对ping请求做出响应,故攻击者需要做的事情就是不断向攻击目标发送大量的ping。7.2.12 拒绝服务(续)smurf smurf攻击是ping攻击的一个变体。首先,攻击者需要选择不知情的受害者所在的网络。假造受害者的主机地址作为ping包中的源地址,以使ping包看起来像是从受害者主机发出。然后,向整个网络广播发送这个请求。7.2.12 拒绝服务(续)图 7
47、.12 smurf攻击7.2.12 拒绝服务(续)同步洪泛 同步洪泛同步洪泛(syn flood)是另一种流行的拒绝服务攻击。攻击利用了TCP协议组,使用这些面向会话的协议来实施攻击。对于一个协议(比如Telnet),在协议的对等层次之间将建立一个虚拟连接,称为一个会话会话(session)。图 7.13 三次连接握手7.2.12 拒绝服务(续)包在传输过程中偶尔会出现丢失或者损坏的情况。因此,在接收端维持着一个称为SYN_RECV连接的队列。攻击者可以通过发送很多SYN请求而不以ACK响应填满该队列。这种攻击通常使用不存在的返回地址,有两个原因:第一,攻击者不希望泄露真实的源地址,以免被通过
48、检查SYN_RECV对列中的包而试图识别攻击者的来源。第二,攻击者想要使得这些伪造的SYN包与用于建立真实连接的合法SYN包没有区别。每一个包有一个不同的地址。7.2.12 拒绝服务(续)teardrop teardrop攻击滥用了设计来改善网路通信的特性。一个网络IP数据报是一个变长变长的对象。数据报协议允许单个数据单元分片,分别发送。在teardrop攻击中,攻击者发送一系列数据报分片,这些数据报分片不能被正确组装。这些在极端情况下,操作系统将把不能重组的数据单元部分锁住,而导致拒绝服务。7.2.12 拒绝服务(续)流量重定向 路由器使用复杂的算法决定如何进行路径的选择。路由器一般是一台带
49、有两块或更多网卡的计算机。假设一台路由器向它的所有邻居路由器报告:它到整个网络的每个其他地址都有最好路径。这台路由器很快就会被大量通信流量所淹没,或者只能将大多数通信一丢了之。7.2.12 拒绝服务(续)DNS攻击 还有一种拒绝服务攻击,事实上是一类基于域名服务器域名服务器(Domain Name Server,DNS)的攻击。通过接管一个域名服务器或者使其存储一些伪造的表项,称为DNS缓存中毒(DNS cache poisoning),攻击者可以对任何通信进行重定向,这种方式带有明显拒绝服务的含义。7.2.13 分布式拒绝服务 要实施分布式拒绝服务分布式拒绝服务(distributed de
50、nial-of-service,DDoS)攻击,攻击者需要先后做两件事情。第一件事情,攻击者使用任何一种方便的攻击在目标计算机上植入特洛伊木马,并不要引起任何注意。这样,每个目标系统就成为了一个zombie。第二件事情,选择了某个攻击目标,就从某个位置发送一个信号给所有的zombie,让它们发动攻击,攻击的方式可以多种多样。常见的 DDoS工具有TFN(Tribal Flood Network),Trin00和TFN2K(Tribal Flood Network,year 2000 edition)。7.2.13 分布式拒绝服务(续)图 7.14 分布式拒绝服务攻击7.2.14 来自活动或者移