首页 理论教育计算机网络与信息安全:网络攻击及相关漏洞

计算机网络与信息安全:网络攻击及相关漏洞

【摘要】:这里说的缺陷,包括软件缺陷、硬件缺陷、网络协议缺陷、管理缺陷和人为的失误。很显然,黑客技术对网络具有破坏能力。典型的漏洞攻击有以下几种:1)Unicode漏洞。2014年4月8日,网络安全协议OpenSSL的超级大漏洞曝光。近来,传统的DOS攻击已经演化为更危险的分布式拒绝服务攻击。分布式拒绝服务攻击不仅更加危险,而且更加难于防范。

(一)黑客与黑客攻击

1.黑客

黑客(hacker),源于英语动词hack,意为“劈,砍”,引申为“干了一件非常漂亮的工作”。一般认为,黑客起源于20世纪50年代的麻省理工学院实验室。在早期麻省理工学院的校园俚语中,“黑客”则有“恶作剧”之意,尤指手法巧妙、技术高明的恶作剧。最初的黑客都是一些顶级程序员或者网络管理员,他们大都非常精通某一个领域,并且不懈地寻找能够更快、更好地提高他们工作效率的方法。这些黑客贡献很大,他们建起Internet,使UNIX操作系统有今天的发展,搭建起Usenet,让WWW正常运转。

但到了今天,黑客一词已被用于泛指那些专门利用电脑搞破坏或恶作剧的家伙。但黑客的本质没有改变,他们热衷于发现和修补漏洞,改善网络中存在的缺陷等。曾经有人说过,“黑客存在的意义就是使网络变得更加安全完善”。

黑客的基本含义是一个拥有熟练计算机技术的人,但大部分媒体将计算机侵入者称为黑客,而实际上,黑客有如下几种:

白帽黑客是指有能力破坏计算机安全但不具恶意目的的黑客。白帽黑客一般遵守道德规范并常常试图同企业合作去改善所发现的计算机安全弱点。

灰帽黑客是指那些懂得技术防御原理,并且有实力突破这些防御的黑客。尽管他们的技术实力往往要超过绝大部分白帽和黑帽,但灰帽通常并不受雇于大型企业,他们往往将黑客行为作为一种业余爱好或者是义务来做,希望通过他们的黑客行为来普告一些网络或者系统漏洞,以达到警示别人的目的,因此,他们的行为没有丝毫恶意。

黑帽黑客别称骇客,经常使用于区分黑帽黑客和一般(正面的)有理性的黑客。这个词流行于1983年,采用了“Safe Cracker”的相似发音,并且理论化为一个犯罪和黑客的混成语。hacker与cracker是分属两个不同世界的族群,基本差异在于,hacker是有建设性的,而cracker则专门搞破坏。对于一个骇客来说,他们只追求入侵的快感,不在乎技术,他们不会编程,不知道入侵的具体细节。

2.黑客攻击

简单地说,是发现计算机系统和网络的缺陷与漏洞,以及针对这些缺陷实施攻击的技术。这里说的缺陷,包括软件缺陷、硬件缺陷、网络协议缺陷、管理缺陷和人为的失误。

很显然,黑客技术对网络具有破坏能力。一个很普通的黑客攻击手段可以把世界上一些顶级的大网站轮流考验一遍,即使是如Yahoo这样具有雄厚的技术支持的高性能商业网站,黑客都可以给他们带来经济损失。这在一定程度上损害了人们对Internet和电子商务的信心,也引起了人们对黑客的严重关注和对黑客技术的思考。

(1)漏洞

漏洞是计算机系统在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷和不足。漏洞一旦被发现,攻击者就可使用这个漏洞获得计算机系统的额外权限,并在未授权的情况下访问或破坏系统,从而危害计算机系统安全

漏洞问题与时间紧密相关。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会被不断暴露出来,在被系统供应商发布的补丁修补或在以后发布的新版系统中得以纠正的同时,也会引入新的漏洞和错误。而且漏洞的修复经常发生延迟,比如公司或政府机构未能执行其安全策略,或者因为补丁安装时会扰乱计算机,导致系统管理员花费大量的时间去修改电脑配置来接收新补丁。

当人们日渐明白操作系统打补丁的重要性时,黑客们利用操作系统漏洞的机会便越来越少,为了能够达到攻入用户电脑的非法目的,黑客们把目标转移到应用软件漏洞上来。被黑客们关注的应用软件都是装机量很大、用户量很多的热门软件,例如下载软件、视频播放软件、文字处理软件等,这些软件都成为黑客们重点挖掘漏洞的对象。

大多数的病毒制造者是把别人挖掘的漏洞加入自己的程序中。但随着黑客人数的日益增多,会有越来越多的第三方软件漏洞被黑客发现并利用。

典型的漏洞攻击有以下几种:1)Unicode漏洞。这实际上是IIS系统内在的漏洞之一,IIS4.0和IIS5.0在unicode字符解码的实现中存在一个安全漏洞,导致用户可以远程通过IIS执行任意命令。当IIS打开文件时,如果该文件名包含unicode字符,它会对其进行解码,如果用户提供一些特殊的编码,将导致IIS错误的打开或者执行某些web根目录以外的文件。2)SMB漏洞。SMB(Session Message Block,会话消息块协议)又叫作NetBIOS或LanManager协议,用于不同计算机之间文件、打印机、串口通信的共享和用于Windows平台上提供磁盘和打印机的共享。3)利用打印漏洞。利用打印漏洞可以在目标的计算机上添加一个具有管理员权限的用户。经过测试,该漏洞在Windows 2000 SP2/SP3以及Windows 2000 SP4版本上依然存在,但是不能保证100%入侵成功。

2014年4月8日,网络安全协议OpenSSL的超级大漏洞曝光。这个漏洞最早是由一批为谷歌和科诺康(Codenomicon,世界顶级安全性测试活动,关注模糊测试安全专题的全球唯一研讨会)工作的编程人员发现的,由于这个漏洞利用了OpenSSL的一个常用扩展工具Heartbeat,因此他们把这个漏洞命名为“Heartbleed”。据悉,这个漏洞已经存在两年多时间,一旦被恶意利用,意味着用户登录电商、网银的账户、密码等关键信息都有可能泄露。而在国外,受到波及的网站也数不胜数,就连NASA(美国国家航空航天局)也宣布,用户数据库遭到泄露。

(2)拒绝服务攻击

拒绝服务(DOS)攻击有可能是Internet上一种最常用的攻击,它们的存在说明了不仅特殊的应用程序中存在大的漏洞,而且在整个TCP/IP协议栈中也存在漏洞。不幸的是,从攻击者的观点来看,这样的攻击十分简单,而从商业用户的观点来看,付出的代价却十分惨重。近来,传统的DOS攻击已经演化为更危险的分布式拒绝服务攻击。分布式拒绝服务攻击不仅更加危险,而且更加难于防范。

拒绝服务(Denial of Service,DoS)攻击从广义上讲可以指任何导致网络设备(服务器、防火墙交换机、路由器等)不能正常提供服务的攻击,现在一般指的是针对服务器的DoS攻击。这种攻击可能是网线被拔下或者网络的交通堵塞等,最终的结果是正常用户不能使用所需要的服务。

DOS攻击是一种可以临时的禁用目标系统或网络的服务的攻击,因此,甚至是合法的Internet和网络用户都不能访问受影响公司的服务。DOS攻击能够暂时阻止顾客、员工、伙伴访问服务、浏览网站、发送电子邮件、开展研究、访问数据库或远程项目进度检查。

下面是几种常见的DoS攻击方法。

①SYN-Flood洪水攻击

SYN-Flood洪水攻击是当前最常见的一种DoS/DDoS攻击方式,它利用了TCP缺陷进行攻击。TCP建立连接时有“三次握手”的过程,首先,客户端发送一个包含SYN同步标志的TCP报文,请求和服务器端连接;服务器将返回一个SYN+ACK的报文,表示接受客户端的连接请求;客户端随即返回一个确认报文ACK给服务器端,至此一个TCP连接完成。SYN-Flood攻击者攻击前伪造一个源IP非自身IP的SYN报文,将此报文发送给服务器端,服务器端在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第3次握手无法完成),这种情况下服务器端一般会重新发送SYN+ACK给客户端,并等待一段时间后丢弃这个未完成的连接,当攻击者发出大量这种伪造的SYN报文时,服务器端将产生大量的“半开连接”,消耗非常多的CPU和内存资源,结果导致服务器端计算机无法响应合法用户的请求。此时从正常客户的角度来看,服务器失去响应。对于SYN攻击,可以通过减少服务器端计算机SYN+ACK应答报文重发次数和等待时间,进行一定程度上的防范,但对于高速度发来的SYN包,这种方法也无能为力。

②死亡之Ping

死亡之Ping(Ping of Death)是最古老、最简单的拒绝服务攻击,发送畸形的、超大尺寸的ICMP数据包,如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。

此外,向目标主机长时间、连续、大量地发送ICMP数据包,最终也会使系统瘫痪。大量的ICMP数据包会形成“ICMP风暴”,使目标主机耗费大量的CPU资源。正确地配置操作系统与防火墙、阻断ICMP以及任何未知协议,都可以防止此类攻击。

③Land攻击

Land攻击也是DoS/DDoS攻击中经常采用的一种攻击方法。在Land攻击中,发送给目标主机的SYN包中的源地址和目标地址都被设置成目标主机的IP地址,这将使目标主机向它自己的IP地址发送SYN+ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时。这样也会占用大量资源,严重时UNIX系统往往会崩溃,而Windows系统也会变得极其缓慢。预防Land攻击的最好办法是通过配置防火墙,过滤掉从外部发来的含有内部源IP地址的数据包。

④Teardrop攻击

Teardrop(泪珠)攻击的原理是,IP数据包在网络传递时,数据包可以分成更小的片段,攻击者可以通过发送两段(或者更多)数据包来实现。第一个包的偏移量为O,长度为N,第二个包的偏移量小于N。为了合并这些数据段,TCP/IP堆栈会分配超乎寻常的巨大资源,从而造成系统资源的缺乏甚至机器的重新启动。

关于Land攻击、泪珠攻击的防范,系统打最新的补丁即可。

⑤UDP-Flood攻击

UDP-Flood攻击也是利用TCP/IP服务来进行,它利用了Chargen和Echo来回传送毫无用处的数据来占用所有的带宽。在攻击过程中,伪造与某一计算机的Chargen服务之间的一次UDP连接,而回复地址指向开着Echo服务的一台计算机,这样就生成在两台计算机之间大量的无用数据流,如果数据流足够多,就会导致带宽完全被占用而拒绝提供服务。防范UDP-Flood攻击的办法是关掉不必要的TCP/IP服务,或者配置防火墙以阻断来自Internet的UDP服务请求。

⑥Smurf攻击

Smurf攻击是利用ICMP协议强迫目标电脑重新启动或死机的DOS攻击。更特别的,Smurf攻击利用ICMP echo请求消息,这个消息通常被用来检查远程电脑是否连接到Internet上,通常,每时每刻主机都会接收到ICMP echo请求消息,它会返还给客户机一个ICMP echo应答消息。证实确实连接到Internet上。

⑦WinNuke攻击

WinNuke攻击的惟一目标就是破坏互联网中没有保护的Windows主机。具体的方法是向目标计算机任何监听的端口发送非法数据包,常见的是139端口。当被攻击后,机器往往会出现蓝屏死机。

⑧DDoS攻击

分布式拒绝服务(Distributed Denial of Service)攻击是一种基于DoS的特殊形式的攻击,是一种分布、协作的大规模攻击方式,主要攻击比较大的站点,如商业公司、搜索引擎和政府部门的站点。

DDoS攻击由攻击者、主控端、代理端3部分组成,三者在攻击中扮演不同的角色。攻击者是整个攻击发起的源头,它事先已经取得了多台主控端计算机的控制权,主控端计算机分别控制着多台代理端计算机。在主控端计算机上运行着特殊的控制进程,可以接收攻击者发来的控制指令,操作代理端计算机对目标计算机发起DDoS攻击。

在一个分布式DOS攻击中,攻击者将按照以下步骤进行攻击:(www.chuimin.cn)

第一,在一个分布式DOS攻击中,不是直接的攻击目标电脑,而是攻击者首先找到一个有较少安全防护的诱骗网络,攻击者用这种方式选择一个有大量电脑的,安全不健全的诱骗网络(100个系统)。

第二,攻击者接着闯入这个安全不健全的诱骗网络,控制所有的系统(在本例中100)。在完成这步之后,攻击者接着在每个系统上安装分布式DOS工具或代理体,作为诱骗网络的一部分。

第三,最后一步,攻击者使用诱骗网络的所有的100个系统(他已经完全控制)对真实的目标系统实施分布式DOS攻击。攻击者使用单命令行的工具就能够控制所有100攻击系统。

近几年来,DDoS攻击的工具不断增加,而且许多集中了各种攻击程序,形成了一个名为“Denial of Service Cluster”(拒绝服务集群)的软件包。TFN(Tribe Flood Network)和TFN2K工具就是这样一个例子,这些程序可以使分散在Internet各处的机器共同完成对一台主机攻击的操作,从而使主机看起来好像是遭到了不同位置的许多主机的攻击。这些分散的机器由几台主控制机操作,进行多种类型的攻击,如UDP Flood、SYN Flood、ICMPecho请求以及ICMP广播等。类似的工具包还有trinoo、Stacheldraht等。

对于DDoS攻击,由于可以集中成千上万台计算机同时进行攻击,危害巨大,并且多层攻击结构使追查攻击者的工作非常困难。为此,做好DDoS攻击的防范非常重要。主要的DDoS的防范措施包括:①增强系统安全性,例如加固系统用户和口令的安全性;及早发现系统存在的攻击漏洞,及时安装系统补丁程序;禁止所有不必要的服务;周期性地对系统进行安全性审核等。②利用防火墙、路由器等网络和网络安全设备加固网络的安全性,例如禁止对主机的非开放服务的连接、限制同时打开的SYN半连接数量、严格限制服务程序的对外访问请求等。③采用DDoS监测工具,加强对DDoS攻击的监测。

(3)缓冲区溢出

缓冲区滥出可能是最具危害性的Internet恶意攻击之一。黑客通常使用缓冲区溢出对目标系统进行部分或完全控制。多数恶意攻击都围绕缓冲区溢出进行,其主要原因之一在于它们一直都是最具破坏性的技术,不但能侵入远端系统,而且会造成毁灭性的破坏。缓冲区溢出攻击不但使黑客能对目标系统进行恶意攻击,而且能在受侵害的系统上安装秘密通道。

如果把1 L的水注入容量为0.5 L的容器中,水就会四处溢出。同理,在计算机内部,如果向一个容量有限的内存空间里存储过量数据,这时数据也会溢出存储空间。在程序编译完以后,缓冲区中存放数据的长度事先已经被程序或者操作系统定义好,如果往程序的缓冲区写超出其长度的内容,就会造成缓冲区的溢出,覆盖其他空间的数据,从而破坏程序的堆栈,使程序转而执行其他指令。

Internet上的每台服务器(主机)都运行着一些特殊服务或后合程序。这些后台程序为客户提供服务,或者访问特定数据、信息或服务。每个后台程序都运行于主机中的特定端口,因此客户可通过特定的端口,以获得特定的服务。比如,运行于25号端口的邮件后台程序允许客户发送邮件,而运行于110端口的POP后台程序用于接收邮件。也就是说,每个应用程序都运行在一个特定的端口上,并为客户提供某一服务。

运行于主机的这些应用程序拥有某一特权。换句话说,由于这些应用程序运行于主机系统自身端口,他们能获取远端系统所不能访问的部分资源。运行于主机中的大多数应用程序都有访问特定系统变量、系统文件甚至在主机系统上执行特定命令的权利。因此,从黑客的角度而言,如果控制了运行于目标系统中易受攻击的应用程序,则黑客就能利用所赋予的特权对目标系统进行恶意攻击。这就是缓冲区溢出攻击的危害所在。

缓冲区溢出是一种程序设计上的漏洞,问题并不在于C语言或是库函数,也不在于操作系统,而在于程序员没有安全意识。因此,程序员在程序设计时,必须采取有效的预防措施,对存入缓冲区的数据要进行超长中断,以防止缓冲区溢出,同时还应当检查返回值。

下面是C语言中一些不能自动中断字符串的函数列表:

在使用这些函数时,应当采取预防措施。注意,在不同的操作系统上,这些函数的实现可能会不同,在编程之前,必须认真地阅读程序设计语言有关的技术说明。

从软件的角度来看,目前有4种基本的方法保护缓冲区免受缓冲区溢出的攻击和影响。

①通过操作系统使缓冲区不可执行,从而阻止攻击者植入攻击代码。

②强制程序员编写正确、安全的代码的方法。

③利用编译器的边界检查来实现缓冲区的保护。这个方法使缓冲区溢出不可能出现,从而完全消除了缓冲区溢出的威胁,但是相对而言代价比较大。

④在程序指针失效前进行完整性检查。虽然这种方法不能使所有的缓冲区溢出失效,但能阻止绝大多数的缓冲区溢出攻击。

(4)口令攻击

口令可能是Internet上最常用的验证方法,大多数的用户在Internet上通常会遇到一些相同形式的口令认证。口令可以保护各种各样的信息,如敏感的电子邮件、保密的银行账户、婚姻介绍、信息公告、文档、知识产权、系统以及其他一些重要资源。在大多数情况下,口令是仅有的保护敏感数据落入坏人之手的防止措施。

一般入侵者常常采用下面几种方法获取用户的密码口令,包括口令猜测、Sniffer密码嗅探、默认口令、暴力破解、社会工程学(即通过欺诈手段获取)以及木马程序或键盘记录程序等手段。

①口令猜测

口令猜测可能是在互联网上流行的一种最普通的口令破解技术。在这种方法中,攻击者需要收集被攻击者尽量多的个人信息,(例如女朋友的姓名,父母姓名,生日,电话号Q等)。一旦这些被攻击者的个人信息被收集到,攻击者试图通过姓名和数字的不同组合,布出被攻击者的口令。

②Sniffer密码嗅探

通过分析网络数据包内容来获取相应的口令。因为很多应用程序在传送用户名和密码等信息时采用的是明文方式,当网络中存在这样的嗅探工具时,信息就会泄露。如FTP操作、HTTP操作、E-mail功能等,常见的软件有SnifferPro、Cain等。

③默认口令

相当数量的本地和在线应用程序在软件开发期间内,已经被注册上默认口令。大多数系统管理员在软件安装时会禁运系统默认的口令,然而,不幸的是,仍然有一些在Internet上运行的程序会使用默认的口令,对攻击者来说,进入一个由默认口令保护的系统,访问敏感信息是非常容易的,在许多时候,默认口令是已知的对口令认证过程的一个完全的嘲弄。因此,对所有的组织来说,禁止使用全部的默认口令是十分必要的。

④暴力密码破解

有关系统用户账户密码口令的暴力破解主要是基于密码匹配的破解方法,最基本的方法有两个:穷举法和字典法。穷举法是效率最低的办法,将字符或数字按照穷举的规则生成口令字符串,进行遍历尝试。在口令稍微复杂的情况下,穷举法的破解速度很低。字典法相对来说较高,用口令字典中事先定义的常用字符去尝试匹配口令。口令字典是一个很大的文本文件,可以通过自己编辑或者由字典工具生成,里面包含了单词或者数字的组合。如果密码是一个单词或者是简单的数字组合,那么破解者就可以很轻易地破解密码。

常用的密码破解工具和审核工具很多,如Windows平台口令的SMBCrack、LophtCrack、SAMInside等。通过这些工具的使用,可以了解口令的安全性。随着网络黑客攻击技术的增强和提高,许多口令都可能被攻击和破译,这就要求用户提高对口令安全的认识。

(二)病毒与病毒攻击

计算机病毒(简称病毒)是指一种人为制造的恶意程序,通过网络、存储介质(如U盘)等途径进行传播,传染给其他计算机,从事各种非法活动,包括控制计算机、获取用户信息、传播垃圾信息、吞噬计算机资源、破坏计算机系统等,成为计算机及其网络系统的公害。

新增的恶意代码中,木马以变种之多、更新频率之快位居各类别之首。蠕虫病毒已失去了其昔日恶意代码的主流地位,可见在感染式病毒渐渐退出恶意代码这个大舞台的同时,蠕虫也失去了以往的主导地位,而是朝着辅助工具的方向发展,主要的用途是作为木马传播的载体,即借助于自身传播能力、攻击能力,以自身作为载体将木马安装到用户系统中。在恶意代码中,蠕虫的占有率日渐萎缩。

木马之所以会发展得如此之快,是因为当今恶意代码的主流不再以比拼技术为主,而是以快速谋取金钱利益为目标。木马开发周期短、上手快,可以最少的成本来获取最大的收益,正迎合了当今恶意代码以利益为导向的发展方向。同时针对计算机的威胁有下滑趋势,而针对智能手机(特别是安卓手机)的安全威胁正在快速增长。在中国,互联网金融、手机理财、手机打车软件正在迅速普及,手机天然与个人隐私密切相关。当智能手机越来越像银行卡的时候,针对移动支付的病毒威胁已迫在眉睫。以心脏出血漏洞(OpenSSL的Heartbleed漏洞)为代表,各种高危安全漏洞层出不穷,攻击者可以在客户端、服务端以及网络传输阶段获取用户隐私信息。当个人信息泄露达到比较严重的程度时,蝴蝶效应最终形成,网银、网购账户、个人信用记录被威胁,网络诈骗高频率出现,每个人都可能成为潜在的受害者。

(三)IP欺骗攻击

欺骗(Spoofing)是一种主动式攻击,即网络上的某台机器伪装成另一台不同的机器。伪装的目的在于哄骗网络中的其他机器,误将冒名顶替者作为原始机器加以接受,诱使其他机器向它发送数据或允许它修改数据。作为一种主动攻击,它能破坏两台其他机器间通信链路上的正常数据流并可能向通信链路上插入数据。窥探常被某些网络安全攻击作为欺骗的前奏曲。

对于那些基于远程过程调用(RPC)的命令,如rlogin、rcp、rsh等都采用客户和服务器模式,在一个主机上运行客户程序(如rlogin),在另一个主机上运行服务程序(如rlogind)。在建立远程连接时,服务程序是根据$HOME/.rhosts以及/etc/hosts.equiv文件进行安全检查的,并且只根据信源IP地址来确认用户的身份,以确定是否接收用户的RPC请求。由于RPC连接是基于特定端口的TCP连接,而建立TCP连接需要经历“三次握手”过程。每次建立TCP连接时,TCP都要为该连接产生一个初始序列号(ISN)。为了防止因TCP报文的延迟和重传带来的不安全因素,TCP协议采用适当的算法来产生初始序列号,而不能随便选取,并且不同的TCP实现系统可能采用不同的生成算法。如果掌握了TCP初始序列号的分配方法及其随时间变化的规律,则很容易实施IP欺骗攻击。

典型的Web欺骗原理如下:攻击者建立一个使人相信的Web页站点的拷贝,这个Web站点拷贝就像真的一样,它具有所有的页面和连接。然而攻击者控制了这个Web站点的拷贝,被攻击对象和真的Web站点之间的所有信息流动都被攻击者所控制了。用户访问Web服务器经过攻击者的机器,这样攻击者就可以监视被攻击对象的所有活动,包括账号、口令以及其他的信息。攻击者既可以假冒成用户给服务器发送数据、也可以假冒成服务器给用户发送假冒的消息。

IP欺骗攻击主要利用了RPC服务器的安全检查仅仅依赖于信源IP地址的弱点。一旦准确地预测了A的ISN,攻击成功率是很大的。如果攻击者控制了A与B之间的路由器,则可以获得A发送给B的数据段,使攻击更加容易。

利用IP欺骗攻击可以得到一个主机的Shell。对于高明的攻击者来说,得到目标主机的Shell后,能够很容易地获得该主机的Root权限,为实施进一步的攻击奠定基础。

预防这种攻击比较容易,例如,删除所有的/etc/hosts.equiv和$HOME/.hosts文件,并修改/etc/inetd.conf文件,使RPC服务无法运行;在路由器中设置过滤器,滤除那些来自外部而信源地址却是内部IP的报文。另外,在TCP实现系统中,应当选择具有较好随机性的ISN生成算法,使ISN的生成和增加更具随机性,让攻击者难以找到规律。