关于网络漏洞,还没有一个全面、准确统一的定义。一般可以理解为在硬件、软件和协议等的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。通俗描述性定义是存在于计算机网络系统中的、可能对系统中的组成和数据等造成损害的一切因素。具体举例来说:比如在 IntelPentium 芯片中存在的逻辑错误,在 Sendmail 早期版本中的编程错误,在 NFS 协议中认证方式上的弱点,在 Unix 系统管理员设置匿名 Ftp 服务时配置不当的问题都可能被攻击者使用,威胁到系统的安全。这些都可以认为是系统中存在的安全漏洞。
关于网络漏洞,还没有一个准确统一的定义。有学者从访问控制的角度出发,认为:当对系统的各种操作与系统的安全策略发生冲突时,就产生了安全漏洞。
也有专家认为:计算机系统是由若干描述实体配置的当前状态所组成,可分为授权状态和非授权状态、易受攻击状态和不易受攻击状态,漏洞就是状态转变过程中能导致系统受损的易受攻击状态的特征。
以上两种观点,都是从各自的专业角度对网络漏洞进行描述,并没有给出一个全面的准确的定义。
网络漏洞会影响到很大范围的软硬件设备,包括作系统本身及其支撑软件,网络客户和服务器软件,网络路由器和安全防火墙等。换而言之,在这些不同的软硬件设备中都可能存在不同的安全漏洞问题。在不同种类的软、硬件设备,同种设备的不同版本之间,由不同设备构成的不同系统之间,以及同种系统在不同的设置条件下,都会存在各自不同的安全漏洞问题。
漏洞问题是与时间紧密相关的。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,这些早先被发现的漏洞也会不断被系统供应商发布的补丁软件修补,或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版本中具有漏洞的同时,也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现。漏洞问题也会长期存在。
因而脱离具体的时间和具体的系统环境来讨论漏洞问题是毫无意义的。只能针对目标系统的操作系统版本、其上运行的软件版本以及服务运行设置等实际环境来具体谈论其中可能存在的漏洞及其可行的解决办法。
同时应该看到,对漏洞问题的研究必须要跟踪当前最新的计算机系统及其安全问题的最新发展动态。这一点如同对计算机病毒发展问题的研究相似。如果在工作中不能保持对新技术的跟踪,就没有谈论系统安全漏洞问题的发言权,即使是以前所作的工作也会逐渐失去价值。
计算机系统安全的分级标准一般都是依据“橘皮书”中的定义。橘皮书正式名称是“受信任计算机系统评量基准”(Trusted ComputerSystem EvaluationCriteria)。
橘皮书中对可信任系统的定义是这样的:一个由完整的硬件及软件所组成的系统,在不违反访问权限的情况下,它能同时服务于不限定个数的用户,并处理从一般机密到最高机密等不同范围的信息。
橘皮书将一个计算机系统可接受的信任程度加以分级,凡符合某些安全条件、基准规则的系统即可归类为某种安全等级。橘皮书将计算机系统的安全性能由高而低划分为 A、B、C、D 四大等级。其中:
D 级——最低保护(Minimal Protection),凡没有通过其他安全等级测试项目的系统即属于该级,如 Dos,Windows 个人计算机系统。
C 级——自主访问控制(DiscretionaryProtection),该等级的安全特点在于系统的客体(如文件、目录)可由该系统主体(如系统管理员、用户、应用程序)自主定义访问权。例如:管理员可以决定系统中任意文件的权限。当前 Unix、Linux、Windows NT 等作系统都为此安全等级。
B 级——强制访问控制(MandatoryProtection),该等级的安全特点在于由系统强制对客体进行安全保护,在该级安全系统中,每个系统客体(如文件、目录等资源)及主体(如系统管理员、用户、应用程序)都有自己的安全标签(Security Label),系统依据用户的安全等级赋予其对各个对象的访问权限。
A 级——可验证访问控制(Verified Protection),而其特点在于该等级的系统拥有正式的分析及数学式方法可完全证明该系统的安全策略及安全规格的完整性与一致性。 '
可见,根据定义,系统的安全级别越高,理论上该系统也越安全。可以说,系统安全级别是一种理论上的安全保证机制。是指在正常情况下,在某个系统根据理论得以正确实现时,系统应该可以达到的安全程度。
系统安全漏洞是指可以用来对系统安全造成危害,系统本身具有的,或设置上存在的缺陷。总之,漏洞是系统在具体实现中的错误。比如在建立安全机制中规划考虑上的缺陷,作系统和其他软件编程中的错误,以及在使用该系统提供的安全机制时人为的配置错误等。
安全漏洞的出现,是因为人们在对安全机制理论的具体实现中发生了错误,是意外出现的非正常情况。而在一切由人类实现的系统中都会不同程度的存在实现和设置上的各种潜在错误。因而在所有系统中必定存在某些安全漏洞,无论这些漏洞是否已被发现,也无论该系统的理论安全级别如何。
在商业世界,漏洞主要是因为设计和实施中出现错误所致,造成信息完整性、可获得性和保密性受损。错误通常在软件中,也存在于各个信息系统层,从协议规格到设计到物理硬件。网络漏洞还可能是恶意用户或自动恶意代码故意为之。重要系统或网络中单个漏洞可能会严重破坏一个机构的安全态势。
美国国防部对“漏洞”一词的定义是易受攻击性或“利用信息安全系统设计、程序、实施或内部控制中的弱点不经授权获得信息或进入信息系统。”这里的关键词是“弱点”。任何系统或网络中的弱点都是可防的。
但是,系统或网络中的弱点表明解决方案是已知的,能够实施的。有许多系统和网络漏洞分析器,包括自动漏洞检测系统和 TIGER 系统。网络攻击向量是对某一或多个具体目标实施攻击的明确的路径。自动漏洞检测系统和 TIGER 系统利用模拟网络攻击分析网络的整个态势,常规失败概率很低。
网络专家利用的其他类似工具有安全管理员网络集成工具(SAINT)和网络映射器(NMAP)——基于漏洞的评估工具,既快又可靠。由于 NMAP 携带方便、操作简单,黑客也常常使用。它有用于 Linux, UniX 和微软 Windows 平台的多种版本,能轻松扫描包含成百上千个系统和服务器的巨型网络。SAINT 和 NMAP 能对网络的端口或服务系统进行扫描,显然也能被恶意和非恶意者利用。攻击特征和地址性质决定了新的攻击或攻击向量能躲过大多数漏洞评估工具。
例如,如果端口 21——文件传输协议(FTP)的默认端口正在运行的话,对网络服务器进行快速漏洞检查能发现潜在的问题。传统的 FTP 程序不提供数据加密,用户认证级别很低,因此传输中相对容易窃取未加密数据。由于用户认证系统功能不强,黑客如果能诱骗系统认为他是 FTP 服务器的合法用户,就能进入系统,这就出现了另外一个问题。解决这些漏洞就是应用加密技术。Secure-shell (SSH)FTP 或 SFTP 通过加密保证数据的完整性和保密性。SFTP 利用 SSH 进行可靠的数据连接保证远程文档安全传输。该协议使用端口 22,系统管理员不用传统的 FTP 服务器,因此不需要使用端口 21.令人惊讶的是,当他们运行 SFTP 时,有几个管理员错误地忘记关掉 FTP,这样为黑客留下可利用的后门。
漏洞评估工具是双向的。尽管它们提供管理员评估系统和网络状态非常需要的能力,但这些工具也为恶意黑客提供了扫描能力。任何端口扫面工具能远程刺探网络服务器,决定哪个端口是对外部开发的。黑客还能发现这些开发的端口是否可以利用。
网络漏洞的种类数不胜数,人们多根据其产生的原因、存在的位置和利用漏洞攻击的原理来进行分类。分类情况可见表:
网络中有许多的漏洞都是由于设计人员和程序员的疏忽或失误及对网络环境的不熟悉造成的。进行网络开发时,许多设计开发者并不重视网络的安全情况,也不完全了解程序的内部工作机理,致使程序不能适应所有的网络环境,造成网络功能与安全策略发生冲突,最终导致漏洞的产生。另有一部分漏洞则是网络用户刻意为之的。网络管理员为了更好地监管和控制网络,往往预留秘密通道,以保证对网络的绝对控制。而部分网络用户或黑客也许会出于好奇而在网络中秘密种下木马、逻辑炸弹或是陷门。网络中的漏洞可以存在于硬件和软件中,但更多还是以软件漏洞的形式存在。无论是网络应用软件,还是单机应用软件,都广泛隐藏有漏洞。网络中的聊天软件如 QQ,文件传输软件如 FlashFXP、CuteFTP,浏览器软件如 IE,单机中的办公软件如 MSWord,这些应用软件中都存在着可导致泄密和招致网络攻击的漏洞。在各种操作系统中也同样存在着大量漏洞,如:Windows 系统中存在 RPC 远程任意代码执行漏洞等,RedHat 中存在可通过远程溢出获得 root 权限的漏洞等,各种版本的 Unix 系统中同样存在着大量可导致缓冲器溢出的漏洞等。在 Internet 中提供服务的各种服务器中,漏洞存在的情况和招致的危害更是严重。无论是 Web 服务器、FTP 服务器、邮件服务器,还是数据库服务器和流媒体服务器都存在着可导致网络攻击的安全漏洞。脚本语言的设计缺陷和使用不规范,更是令因特网的安全状况雪上加霜。
网络漏洞的广泛存为网络攻击提供了机会,但在一般情况下,普通的网络用户不易受到恶意攻击。相比而言,由于网络服务器在网络中的重要作用,而且其安装的软件和开放的端口更多,也就更容易招致网络攻击。但无论对于接受服务的个人用户还是提供服务的服务器用户,都不能对网络中的漏洞掉以轻心,必须充分认识网络漏洞的危害,并对利用漏洞发动网络攻击的原理有一定的了解。下面将从网络攻击原理来对网络漏洞进行更深入的分析。
拒绝服务攻击(DoS:Denail ofService)是一种针对 TCP/IP 协议漏洞的一种网络攻击手段,其原理是利用 DoS 工具向目标主机发送海量的数据包,消耗网络的带宽和目标主机的资源,造成目标主机网段阻塞,致使网络或系统负荷过载而停止向用户提供服务。常见的拒绝服务攻击方法有 SYNFlood 攻击、Smurf、UDP 洪水、Land 攻击、死亡之 Ping、电子邮件炸弹等。影响最大、危害最深的是分布式 DoS 攻击。它利用多台已被攻击者控制的计算机对某一台计算机进行攻击,很容易导致被攻击主机系统瘫痪。对 DoS 攻击的防护措施主要是设置防火墙,关闭外部路由器和防火墙的广播地址,利用防火墙过滤掉 UDP 应答消息和丢弃 ICMP 包,尽量关闭不必要的 TCP/IP 服务。
简单地说,缓冲区溢出的原因是向一个有限的缓冲区复制了超长的字符串,结果覆盖了相邻的存储单元。这种覆盖往往会导致程序运行的失败,甚至是死机或是系统的重启。另外,黑客利用这样的漏洞可以执行任意的指令,掌握系统的操作权。缓冲区溢出漏洞广泛存在于应用软件和操作系统中,其危害是非常巨大的,但一直以来并没有引起系统和软件开发者足够的重视。要防止缓冲区溢出攻击,首要的是堵住漏洞的源头,在程序设计和测试时对程序进行缓冲区边界检查和溢出检测。而对于网络管理员,必须做到及时发现漏洞,并对系统进行补丁修补。有条件的话,还应对系统进行定期的升级。
欺骗类攻击主要是利用 TCP/IP 协议自身的缺陷发动攻击。在网络中,如果使用伪装的身份和地址与被攻击的主机进行通信,向其发送假报文,往往会导致主机出现错误操作,甚至对攻击主机做出信任判断。这时,攻击者可冒充被信任的主机进入系统,并有机会预留后门供以后使用。根据假冒方式的不同,这种攻击可分为:IP 欺骗、DNS 欺骗、电子邮件欺骗、原路由欺骗等。下面以 IP 欺骗攻击为例分析欺骗攻击的过程。在这种攻击中,发动攻击的计算机使用一个伪装的 IP 地址向目标计算机主机发送网络请求;当主机收到请求后,会使用系统资源提供网络连接服务,并回复确认信息;但由于 IP 地址是假的,主机不可能得到回应,这种情况下,主机将会继续重复发送确认信息。尽管操作系统规定了回复的次数和超时的时间,但完成多次回复仍要占用主机资源较长时间,严重降低主机的工作效率。例如 WindowsNT 系统在缺省回复次数下,从建立连接到资源的释放大约用时 190 秒。对于解决欺骗类攻击的方法,最好是充分了解主机的系统状况,只启用必用的应用程序和只开放提供服务所用到的端口。
在网络的主机中存在着许多服务程序错误和网络协议错误。换句话说就是,服务程序和网络协议无法处理所有的网络通信中所面临的问题。人们利用这些错误,故意向主机发送一些错误的数据包。对于主机来说,往往不能正确处理这些数据包,这会导致主机的 CPU 资源全部被占用或是死机。服务程序存在错误的情况很多,多种操作系统的服务程序都存在。例如 WinNT 系统中的 RPC 服务就存在着多种漏洞,其中危害最大的要数 RPC 接口远程任意代码可执行漏洞,非常流行的冲击波病毒就是利用这个漏洞编制的。对付这类漏洞的方法是尽快安装漏洞的补丁程序,在没有找到补丁之前,应先安装防火墙,视情况切断主机应用层服务,即禁止从主机的所有端口发出和接收数据包。
通常网络攻击者在获得一台主机的控制权后,会在主机上建立后门,以便下一次入侵时使用。后门的种类很多,有登陆后门、服务后门、库后门、口令破解后门等。这些后门多数存在于 Unix 系统中。建立后门常用的方法是在主机中安装木马程序。攻击者利用欺骗的手段,通过向主机发送电子邮件或是文件,并诱使主机的操作员打开或运行藏有木马程序的邮件或文件;或者是攻击者获得控制权后,自己安装木马程序。对付后门攻击的方法是经常检测系统的程序运行情况,及时发现在运行中的不明程序,并用木马专杀工具进行查杀木马。
但网络攻击的方法千变万化,尽管可以对网络攻击从原理上进行分类,但在网络攻击的具体实例中,有时又很难简单地将其归于某一类的攻击。例如,利用 ping 命令向一台主机发送超过 65535 的 EchoRequest 数据包,目标主机就会因缓冲区溢出而拒绝继续提供服务,既可以将这种攻击看作是拒绝服务攻击,也可以视为缓冲区溢出攻击。正是由于网络漏洞种类繁多,攻击方法也多种多样,很难对网络攻击的具体实例进行一一分析,所以下面将以 DoS 攻击为例,对网络攻击的步骤和方法作进一步的介绍。
Dos 攻击是网络攻击中常见的,也是危害比较大的一种,其攻击的手法多样。在拒绝服务攻击中,利用 Windows 操作系统中的 RPC 服务漏洞进行攻击是一种常见的拒绝服务攻击。漏洞存在于 Windows 系统的 DCE-RPC 堆栈中,远程攻击者可以连接 TCP135 端口,向其发送畸形数据,可导致 RPC 服务的关闭,进而引起系统停止对新的 RPC 请求进行响应,产生拒绝服务。由于系统的许多服务都依赖于 RPC 服务,这就使得系统变得极不稳定,许多正常的操作无法进行,甚至造成系统的频繁重新启动。实现这种攻击的方法较为容易,也不需要太多的专业知识,但造成的危害却不小。一般情况下,攻击者会利用 stan、nMap、X-scan 等工具扫描网络中的计算机,获得被攻击主机的 IP 地址和相关端口信息,有的攻击者甚至不利用扫描工具,直接猜测一个 IP 地址发动攻击。获得相应信息后,攻击者会利用 dcom.exe 程序进行攻击。在 DOS 状态下,输入 dcom.exeIP 地址,然后确认。这时攻击主机没有任何提示,但被攻击主机如果存在这一漏洞,将出现一个系统对话框提示 svchost.exe 程序错误,继而出现关机对话框,关机消息为 Remote ProcedureCal(RPC)服务意外终止,60 秒后系统重新启动。这样对方主机只要利用 RPC 服务,系统就会重新启动,也就无法使用网络资源。
若遭受 RPC 服务 DoS 攻击,应首先断开网络并采用手工的防范措施。依次打开计算机“控制面板”—“管理工具”—“计算机管理”图标,展开管理界面左侧的“服务和应用程序”项中的“服务”选项,从界面右侧找到 Remote ProcedureCall(RPC)服务,单击鼠标右键,选择“属性”,打开属性面板,选择其中的“恢复”标签,将失败后计算机反应选项全部改为“不操作”,如图 1 所示。虽然经过手工设置之后,计算机不再重新启动,但主机的一些正常功能也被破坏,因此还需要给系统打上微软提供的安全补丁才行。
通过对 RPC 服务 DoS 攻击的分析,可大体了解网络攻击的步骤。事实上,尽管网络攻击的方法和原理各不相同,但其发动攻击的步骤是基本一致的,通常都是采用以下 4 个步骤: 1) 确定攻击目标的位置;
2) 利用公开协议和工具通过端口扫描、网络监听收集目标的系统类型、提供的服务等信息;
3) 利用自编入侵程序或公开的工具扫描分析系统的安全漏洞;
4) 针对发现的网络漏洞展开攻击。
通过对网络漏洞攻击原理和攻击步骤的分析,可以知道:要防止或减少网络漏洞的攻击,最好的方法是尽力避免主机端口被扫描和监听,先于攻击者发现网络漏洞,并采取有效措施。提高网络系统安全的方法主要有:
1) 在安装操作系统和应用软件之后及时安装补丁程序,并密切关注国内外著名的安全站点,及时获得最新的网络漏洞信息。在使用网络系统时,要设置和保管好账号、密码和系统中的日志文件,并尽可能的做好备份工作。
2)及时安装防火墙,建立安全屏障。防火墙可以尽可能屏蔽内部网络的信息和结构,降低来自外部网络的攻击。对个人用户而言,个人防火墙还有探测扫描、攻击,并自动防御和追踪的功能。例如金山毒霸和瑞星防火墙就具有扫描网络漏洞的功能,而蓝盾防火墙则设计了自动反扫描的机制,外部的扫描将找不到任何端口。
3)利用系统工具和专用工具防止端口扫描。要利用网络漏洞攻击,必须通过主机开放的端口。因此,黑客常利用 Satan、Netbrute、SuperScan 等工具进行端口扫描。防止端口扫描的方法:一是在系统中将特定的端口关闭,如利用 Win 系统中的 TCP/IP 属性设置功能,在“高级 TCP/IP 设置”的“选项”面板中,关闭 TCP/IP 协议使用的端口;二是利用 PortMapping 等专用软件,对端口进行限制或是转向。
4) 通过加密、网络分段、划分虚拟局域网等技术防止网络监听。
5) 利用密罐技术,使网络攻击的目标转移到预设的虚假对象,从而保护系统的安全。
随着计算机和网络技术在各个领域的迅速普及与广泛应用,网络漏洞的种类越来越层出不穷。