1.4 重大网络安全威胁汇总
1.4.1 Scanning
对于位于网络中的计算机系统来说,一个端口就是一个潜在的通信通道,也就是一个入侵通道。对目标计算机进行端口扫描能得到许多有用的信息,从而发现系统的安全漏洞。通过端口扫描可以使系统用户了解系统目前向外界提供了哪些服务,从而为系统用户管理网络提供了一种参考的手段。
从技术原理上来说,端口扫描向目标主机的TCP/UDP服务端口发送探测数据包,并记录目标主机的响应。通过分析响应来判断服务端口是打开还是关闭,从而得知端口提供的服务或信息。端口扫描也可以通过捕获本地主机或服务器的流入/流出IP数据包来监视本地主机的运行情况,它不仅能对接收到的数据进行分析,而且能够帮助用户发现目标主机的某些内在的缺陷,而不会提供进入一个系统的详细步骤。一般说来,端口扫描的目的通常是如下的一项或者多项。
- 发现开放端口:发现目标系统上开放的TCP或UDP端口。
- 了解主机操作系统信息:端口扫描可以通过操作系统的“指纹”来推测被扫描系统或者应用程序的版本等信息。
- 了解软件或者服务版本:软件或服务版本可以通过“标志获取”或者通过应用程序的“指纹”来识别获得。
- 发现脆弱的软件版本:识别软件和服务的缺陷,从而有助于发起针对漏洞的攻击。
端口扫描主要有经典的扫描器(全连接)以及所谓的SYN(半连接)扫描器,此外,还有间接扫描和秘密扫描等。TCP扫描方式是通过与被扫描主机建立标准的TCP连接来进行扫描,因此这种方式最准确,很少漏报、误报,但是容易被目标主机察觉、记录。SYN方式是通过与目标主机建立半打开连接来进行扫描,这样就不容易被目标主机记录,但是扫描结果会出现漏报,在网络状况不好的情况下这种漏报比较严重。
1.4.2 木马
特洛伊木马源于古希腊的特洛伊木马神话(见图1-2),传说希腊人围攻特洛伊城,但是久久不能得手。后来想出了一个木马计,让士兵藏匿于巨大的木马中。大部队假装撤退,而将木马摒弃于特洛伊城,让敌人将其作为战利品拖入城内。而隐藏在木马内的士兵则趁夜晚敌人庆祝胜利、放松警惕的时候从木马中爬出来,与城外的部队里应外合,攻下了特洛伊城。
图1-2 特洛伊木马
在计算机网络安全领域,特洛伊木马通常是指一个包含在合法程序中的非法程序。该非法程序在用户不知情的情况下被执行。一般的木马都有客户端和服务器端两个执行程序,其中客户端是攻击者用于远程控制植入木马的机器,服务器端程序即是木马程序。攻击者要通过木马攻击系统,他所做的第一步是把木马的服务器端程序植入到被攻击用户的计算机中。
目前木马入侵的主要途径还是先通过一定的方法(如邮件、下载等)把木马执行文件放到被攻击者的电脑里,然后通过一定的提示故意引导被攻击者打开执行文件。比如谎称这个木马执行文件是朋友发来的贺卡,当用户打开这个文件时确实有贺卡的画面出现,但这时木马可能已经悄悄地在被攻击者电脑的后台运行了。
一般的木马执行文件非常小,大都是几KB到几十KB,如果把木马捆绑到其他正常文件上,你很难发现,所以,一些网站提供的下载软件中往往捆绑了木马文件,用户在执行这些下载的文件的同时也运行了木马。木马也可以通过Script、ActiveX及ASP、CGI交互脚本的方式植入,木马被植入攻击主机后,一般会通过一定的方式把入侵主机的信息(如主机的IP地址、木马植入的端口等)发送给攻击者,这样攻击者通过这些信息就能够控制被攻击主机。
在早期,木马程序大多通过发送电子邮件的方式把入侵主机的信息告诉攻击者,有一些木马文件干脆把主机所有的密码用邮件的形式发给攻击者,这样攻击者就不用直接连接攻击主机,即可获得一些重要数据,如攻击OICQ密码的GOP木马。使用电子邮件的方式对攻击者来说并不是最好的一种选择,因为如果木马被发现,可以通过这个电子邮件的地址找出攻击者。现在还有一些木马通过发送UDP或者ICMP数据包的方式通知攻击者。
木马主要有如下几种类型,用户需多加注意。
- 破坏型:唯一的功能就是破坏并且删除文件,可以自动删除电脑上的DLL、INI、EXE文件。
- 密码发送型:可以找到隐藏密码并把它们发送到指定的信箱。有人喜欢把自己的各种密码以文件的形式存放在计算机中,认为这样方便;还有人喜欢用Windows系统提供的密码记忆功能,这样就不必每次都输入密码了。许多黑客软件可以寻找到这些文件,然后把它们送到黑客手中。也有些黑客软件长期潜伏,记录用户的键盘操作,然后从中寻找有用的密码。
- 远程访问型:最普遍的是特洛伊木马,只要有人运行了服务器端程序,如果客户端知道了服务器端的IP地址,就可以实现远程控制。这类远程控制程序可以监控被攻击者在系统中的一举一动,危害非常大,比如早些年一直流行的“冰河”木马软件。这类程序多数采用UDP协议,是因特网上广泛采用的通信协议之一。与TCP协议不同,它是一种非连接的传输协议,没有确认机制,可靠性不如TCP,但其效率却比TCP高,因此将其用于远程屏幕监视还是比较适合的。
- 键盘记录木马:这种特洛伊木马非常简单,通常只完成一件事情,就是记录被攻击者的键盘敲击并且在相应的日志文件里查找密码。这种特洛伊木马随着系统的启动而启动,有在线和离线记录选项,分别用于记录被攻击用户在线和离线状态下敲击键盘时的按键情况。从这些按键中攻击者可以很容易地得到被攻击者的密码等有用信息。当然,对于这种类型的木马,邮件发送功能也是必不可少的。
- DoS攻击木马:随着DoS攻击应用越来越广泛,被用做DoS攻击的木马也越来越流行。当攻击者成功入侵了一台计算机,他通常会给这台计算机种上DoS攻击木马,那么日后这台计算机就成为攻击者实行DoS攻击的最得力助手了。攻击者控制的肉鸡数量越多,其发动DoS攻击取得成功的几率就越大。所以,这种木马的危害不是体现在被感染的计算机上,而是体现在攻击者可以利用它来攻击多台计算机,从而给网络造成很大的危害。还有一种类似于DoS的木马叫做邮件炸弹木马,一旦机器被感染,木马就会随机生成各种主题的信件,然后对特定的邮箱不停地发送邮件,一直到对方计算机瘫痪,不能接收邮件为止。
- 代理木马:黑客在入侵的同时掩盖自己的踪迹,谨防别人发现自己的身份是非常重要的,因此,给被控制的“肉鸡”种上代理木马,让其变成攻击者发动攻击的跳板,这就是代理木马最重要的任务。通过代理木马,攻击者可以在匿名的情况下使用Telnet、ICQ、IRC等程序,从而隐蔽自己的踪迹。
- FTP木马:这种木马可能是最简单、古老的木马了,其唯一功能就是打开21端口,等待用户连接。现在新FTP木马还加上了密码功能,这样只有攻击者本人才知道正确的密码。
- 程序杀手木马:上面介绍的木马功能虽然多种多样,不过到了对方计算机上要发挥自己的作用,首先还要躲避防木马软件的查杀这一关。常见的防木马软件有ZoneAlarm、Norton Anti-Virus等。程序杀手木马的功能是关闭对方计算机上运行的这类防木马程序,让其他的木马更好地发挥作用。
- 反弹端口型木马:木马开发者在分析了防火墙的特性后发现,防火墙对于连入的连接往往会进行非常严格的过滤,但是对于连出的连接却疏于防范。于是,与一般的木马相反,反弹端口型木马的服务器端(被控制端)使用主动端口,客户端(控制端)使用被动端口。木马定时监测控制端的存在,一旦发现控制端上线,立即弹出端口,主动连接控制端打开的主动端口。为了隐蔽起见,控制端的被动端口一般开在80,即使用户使用扫描软件检查自己的端口,发现类似TCP UserIP:3020 ControllerIP:80ESTABLISHED的情况,稍微疏忽一点,就会以为是自己在浏览网页。
1.4.3 拒绝服务攻击和分布式拒绝服务攻击
1.DoS攻击
从网络攻击的各种方法和所产生的破坏情况来看,DoS是一种很简单但又很有效的进攻方式。其目的就是拒绝用户的服务访问,破坏服务器的正常运行,最终使用户的部分Internet连接和网络系统失效,如图1-3所示。DoS的攻击方式有很多种,最基本的DoS攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务。
DoS攻击的基本过程是:首先攻击者向服务器发送众多的带有虚假地址的请求,服务器发送回复信息后等待回传信息,由于地址是伪造的,所以服务器一直等不到回传的消息,那么分配给这次请求的资源就始终没有被释放。当服务器等待一定的时间后,连接会因超时而被切断,攻击者会再度传送新的一批请求,在这种反复发送伪地址请求的情况下,服务器资源最终会被耗尽。
图1-3 拒绝服务攻击示意图
DoS根据漏洞产生的来源划分,可以分为如下4类。
(1)利用软件实现的缺陷
OOB攻击(常用工具winnuke),teardrop攻击(常用工具teardrop.c boink.c bonk.c),land攻击,IGMP碎片包攻击,jolt攻击,Cisco 2600路由器IOS version 12.0(10)远程拒绝服务攻击等,这些攻击都是利用了被攻击软件实现上的缺陷完成的。通常这些攻击工具向被攻击系统发送特定类型的一个或多个报文,这些攻击通常都是致命的,而且很多攻击是可以伪造源地址的,所以即使通过IDS或者别的Sniffer软件记录到攻击报文,也不能找到是谁发动的攻击,而且此类型的攻击多是特定类型的几个报文和非常短的少量的报文,如果伪造源IP地址的话,几乎不可能进行追查。
(2)利用协议的漏洞
这种攻击的生存能力非常强。为了能够在网络上进行互通、互联,所有的软件实现都必须遵循既有的协议,而如果这种协议存在漏洞,那么所有遵循此协议的软件都会受到影响。
最经典的攻击是SYN Flooding攻击,它利用TCP/IP协议的漏洞完成攻击。通常一次TCP连接的建立包括3个步骤,首先客户端发送SYN包给服务器端,服务器分配一定的资源给这个连接并返回SYN/ACK包,然后等待连接就建立的最后的ACK包,最后客户端发送ACK报文,这样两者之间的连接就建立起来,并可以通过连接传送数据了。而攻击的过程就是疯狂发送SYN报文,而不返回ACK报文,由于服务器占用过多资源,导致系统资源占用过多,没有能力响应别的操作,或者不能响应正常的网络请求。这个攻击是典型的以小搏大的攻击,即自己使用少量资源占用对方的大量资源。一台Pentium 4的Linux系统大约能发30MB~40MB的64字节的SYN Flooding报文,而一台普通的服务器发20MB的报文就基本没有响应了(包括鼠标、键盘)。SYN Flood不仅可以远程进行,而且可以伪造源IP地址,从而给追查造成很大的困难。
对于伪造源IP地址的SYN Flooding攻击,除非攻击者和被攻击的系统之间所有的路由器的管理者都配合查找,否则很难追查。当前一些防火墙产品声称有抗DoS攻击的能力,但通常它们的能力有限,包括国外的硬件防火墙,大多100Mbit/s防火墙的抗SYN Flooding的能力只有20Mbit/s~30Mbit/s(64字节SYN包)。这里涉及它们对小报文的转发能力,再大的流量甚至能导致防火墙崩溃。现在有些安全厂商认识到DoS攻击的危害,已经开始研发专用的抗拒绝服务产品。
由于TCP/IP协议相信报文的源地址,因此出现了另一种攻击方式,即反射拒绝服务攻击,另外,还可以利用广播地址和组播协议辅助反射拒绝服务攻击,这样效果更好。不过大多数路由器都禁止广播地址和组播协议的地址。
还有一类攻击方式是使用大量符合协议的正常服务请求,由于每个请求耗费大量的系统资源,导致正常服务请求不能成功。如HTTP协议是无状态协议,攻击者构造大量的搜索请求,这些请求耗费大量的服务器资源,从而导致DoS攻击。这种方式的攻击比较好处理,由于是正常请求,因此暴露了正常的源IP地址,直接禁止这些IP地址就可以了。
(3)资源消耗
这种攻击方式凭借丰富的资源,发送大量的垃圾数据侵占用户的资源,导致DoS攻击。比如,ICMP Flood、mstream Flood、Connection Flood。为了获得比目标系统更多的资源,通常攻击者会发动DDoS(Distributed DoS,分布式拒绝服务)攻击。前两类攻击是可以伪造IP地址的,追查起来也非常困难,而第三种攻击由于需要建立连接,因此可能会暴露攻击“肉鸡”的IP地址,通过防火墙禁止这些IP地址就可以了。对于难于追查、禁止的攻击行为,需要依靠专用的抗拒绝服务产品。
(4)常见的DoS攻击类型
在日常的网络威胁中,有如下几类DoS攻击较为常见。
- 死亡之Ping(Ping of Death)攻击:ICMP(控制信息协议)在Internet上用于错误处理和传递控制信息。它的功能之一是与主机联系,通过发送一个回应请求(Echo Request)信息包查看主机是否“存活”。最普通的Ping程序就拥有这个功能。而在TCP/IP的RFC文档中对包的最大尺寸都有严格的限制,许多操作系统的TCP/IP协议栈都规定ICMP包大小为64KB,且在对包的标题头进行读取之后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。“Ping of Death”攻击就是故意产生畸形的测试Ping(Packet Internet Groper)包,声称自己的尺寸超过ICMP的上限,也就是加载的尺寸超过64KB,使未采取保护措施的网络系统出现内存分配错误的现象,导致TCP/IP协议栈崩溃,最终造成接收方死机。
- Teardrop攻击:也叫“泪滴攻击”。它利用在TCP/IP协议栈实现中信任IP碎片的包的标题头所包含的信息来实现自己的攻击。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP协议栈在收到含有重叠偏移的伪造分段时将崩溃。
- UDP“泛洪”攻击(UDP Flooding):在Internet上UDP(用户数据报协议)的应用比较广泛,很多提供WWW和Mail等服务的设备通常使用Linux的服务器,它们默认打开一些被黑客恶意利用的UDP服务。如Echo服务会显示接收到的每一个数据包,而原本作为测试用的Chargen服务会在收到每一个数据包时随机反馈一些字符。UDP Flood假冒攻击就是利用这两个简单的TCP/IP服务的漏洞进行恶意攻击,通过伪造与某一主机的Chargen服务之间的一次UDP连接,回复地址指向开着Echo服务的一台主机,通过将Chargen和Echo服务互指,来回传送毫无用处且占满带宽的垃圾数据,从而在两台主机之间生成足够多的无用数据流。这一拒绝服务攻击飞快地导致网络可用带宽耗尽。
- SYN“泛洪”攻击(SYN Flooding):该攻击方式与上面介绍的利用协议的漏洞的攻击方式一致,此处不再赘述。
- Land攻击(Land Attack):在Land攻击中,黑客利用一个特别伪造(Spoof)的SYN包(它的源地址和目标地址都被设置成某一个服务器地址)进行攻击。此举将导致接收服务器向它自己的地址发送SYN/ACK消息,结果这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留直到超时,在Land攻击下,许多Linux系统将崩溃。
- IP欺骗(IP Spoofing)攻击:这种攻击利用TCP协议栈的RST位来实现,它使用IP欺骗,迫使服务器把合法用户的连接复位,影响合法用户的连接。假设现在有一个合法用户A已经同服务器建立了正常的连接,攻击者构造攻击的TCP数据,伪装自己的IP地址为A的IP地址,并向服务器发送一个带有RST位的TCP数据段。服务器接收到这样的数据后,认为从用户A发送的连接有错误,就会清空缓冲区中已建立好的连接。这时,合法用户A再发送合法数据,但是服务器已经没有这样的连接了,该用户就被拒绝服务,只能重新开始建立新的连接。
2.DDoS攻击
(1)DDoS攻击原理
与基本的DoS攻击不同,DDoS攻击是一种基于DoS的特殊形式的拒绝服务攻击,是一种分布、协作的大规模攻击方式,它主要瞄准比较大的站点,像商业公司、搜索引擎和政府部门的站点。通常,DoS攻击只要一台单机和一个MODEM就可实现,与之不同的是,DDoS攻击利用一批受控制的机器向一台机器发起攻击,这样来势迅猛的攻击令人难以防备,因此具有较大的破坏性。
如图1-4所示,一个经典的DDoS攻击体系分成四大部分。第一部分是黑客(Hacker),他们通常对控制的傀儡机发号施令。第二部分和第三部分分别是控制傀儡机和攻击傀儡机,它们分别用做控制和实际发起攻击。第四部分则是最终的受害者。在该图中需要特别注意控制机与攻击机的区别。对第四部分的受害者来说,DDoS的实际攻击包是从第三部分攻击傀儡机上发出的,第二部分的控制机只发布命令,而不参与实际的攻击。对于第二部分和第三部分计算机,黑客有控制权或者部分的控制权,并把相应的DDoS程序上传到这些平台上,这些程序与正常的程序一样运行并等待来自黑客的指令,通常它们还会利用各种手段隐藏自己。在平时这些傀儡机并没有什么异常,但是一旦黑客连接到它们进行控制并发出指令的时候,攻击傀儡机就成为攻击者去发起攻击了。其实从严格意义上来说,除了第一部分的黑客之外,第二部分至第四部分都是受害者。
图1-4 分布式拒绝服务攻击体系结构
(2)DDoS常见的攻击类型
Smurf攻击、Fraggle攻击、Trinoo攻击、Tribe Flood Network(TFN)攻击、TFN2K攻击以及Stacheldraht攻击是比较常见的DDoS攻击程序。
- Smurf攻击:Smurf是一种简单、有效的DDoS攻击技术,它还是利用Ping程序进行源IP假冒的直接广播进行攻击。Smurf用一个伪造的源地址连续Ping一个或多个计算机网络,这就导致所有计算机响应的那个主机地址并不是实际发送这个信息包的攻击计算机。这个伪造的源地址实际上就是攻击的目标,它将被极大数量的响应信息所淹没。对这个伪造信息包做出响应的计算机网络就成为攻击的不知情的同谋。一个简单的Smurf攻击最终可以导致网络阻塞和第三方崩溃,这种攻击方式要比Ping of Death洪水的流量高出一两个数量级。这种使用网络发送一个包而引出大量回应的方式也叫做“Smurf放大”。
- Fraggle攻击:Fraggle攻击对Smurf攻击做了简单的修改,它使用的是UDP应答消息而非ICMP。
- Trinoo攻击:Trinoo是较为复杂的DDoS攻击程序,它是基于UDP Flooding的攻击技术。它使用master程序对实际实施攻击的任何数量的“代理”程序实现自动控制。当然在攻击之前,侵入者为了安装软件,已经控制了装有master程序的计算机和所有安装代理程序的计算机。首先攻击者连接到安装了master程序的计算机,启动master程序,然后根据一个IP地址的列表,由master程序负责启动所有的代理程序。接着,代理程序用UDP信息包冲击网络,向被攻击目标主机的随机端口发出全0的4字节UDP包,在处理这些超出其处理能力的垃圾数据包的过程中,被攻击主机的网络性能不断下降,直到不能提供正常服务,乃至崩溃。
- TFN和TFN2K攻击:TFN与Trinoo一样,使用一个master程序与位于多个网络上的攻击代理进行通信,利用ICMP给代理服务器下命令,其来源可以做假。TFN可以并行发动数不胜数的DoS攻击,类型多种多样,而且还可建立带有伪装源IP地址的信息包。可以由TFN发动的攻击包括SYN Flood、UDP Flood、ICMP回应请求Flood及Smurf等攻击。TFN的升级版TFN2K进一步对命令数据包加密,更难查询命令内容,命令来源可以做假,还有一个后门控制代理服务器。
- Stacheldraht攻击:Stacheldraht同样基于TFN和Trinoo一样的客户机/服务器(Client/Server,C/S)模式,其中master程序与潜在的成千个代理程序进行通信。在发动攻击时,侵入者与master程序进行连接。Stacheldraht增加了新的功能,比如,攻击者与master程序之间的通信是加密的,命令来源可以做假,而且可以防范一些路由器用RFC2267过滤,若检查出有过滤现象,它将只做假IP地址的最后8位,从而让用户无法了解到底是哪个网段的哪台机器被攻击;同时使用远程复制技术对代理程序进行自动更新。Stacheldraht同TFN一样,可以并行发动数不胜数的DoS攻击,类型多种多样,而且还可建立带有伪装源IP地址的信息包。Stacheldraht所发动的攻击包括UDP Flooding、TCP SYN Flooding等。
1.4.4 病毒
虽然从目前发现的病毒来说,Linux系统下的病毒相对于Windows系统下的病毒来说要少很多,却不可对其忽视,本节将介绍Linux病毒的发展历程以及Linux下病毒的分类。
1.Linux病毒的起源和历程
1996年的Staog是Linux系统下的第一个病毒,它出自一个叫做VLAD的组织(Windows 95下的第一个病毒程序Boza也系该组织所为)。Staog病毒是用汇编语言编写的,专门感染二进制文件,并通过三种方式去尝试得到root权限。Staog病毒并不会对系统有什么实质性的破坏。该病毒应该算是一个演示版,它向世人揭示了Linux可能被病毒感染的潜在危险。Linux系统中第二个被发现的病毒是Bliss病毒,它是一个不小心被释放出来的实验性病毒。与其他病毒不同的是,Bliss本身带有免疫程序,只要在运行该程序时加上“disinfect-files-please”选项,即可恢复系统。
如果说刚开始时Linux病毒向人们展示的仅仅是一个概念,那么在2001年发现的Ramen病毒则已经开始引起很多人的担心。Ramen病毒可以自动传播,无需人工干预,和1988年曾使人们深受其害的Morris蠕虫非常相似。该病毒只感染Red Hat Linux 6.2和7.0版使用匿名FTP服务的服务器,通过两个普通的漏洞RPC.statd和wu-FTP感染系统。从表面看来这不是一个危险的病毒,它很容易被发现,且不会对服务器做出任何有破坏性的事情,但是当其开始扫描时,将占用大量的网络带宽。
从1996年至今,新的Linux病毒屈指可数,这说明Linux是一个健壮的且具有先天病毒免疫能力的操作系统。当然,出现这种情况,除了因为其自身设计优秀外,还有其他的原因。首先,Linux早期的使用者一般是专业人士,就算是今天,虽然其使用者激增,但典型的使用者仍为那些有着很好的计算机背景的人,Linux高手更倾向于鼓励新手支持这样一种文化精神。正因为如此,Linux使用群中的一种倾向就是,为安全起见,尽量避免感染病毒。事实上,所有的操作系统(包括DOS和Windows)在其产生之初,也很少受到各种病毒的侵扰。
然而,2001年3月,美国SANS学院的全球事故分析中心(Global Incident Analysis Center,GIAC)发现,一种新的针对使用Linux系统的计算机的蠕虫病毒正通过互联网迅速蔓延,它将有可能对用户的电脑系统造成严重破坏。这种蠕虫病毒被命名为“狮子”病毒,与Ramen蠕虫病毒非常相似。但是,这种病毒的危险性更大,“狮子”病毒能通过电子邮件把一些密码和配置文件发送到一个位于china.com的域名上。事实上,与“狮子”病毒相比,Ramen病毒是一种比较友善的病毒,它侵入系统后会自动关闭其中的漏洞,而“狮子”病毒却将那些漏洞敞开并开辟新的漏洞。如果用户的系统感染了这个病毒,还不能完全确信这个系统有挽救的价值,它们很有可能选择转移其数据并且重新格式化硬盘。
一旦计算机被彻底感染,“狮子”病毒就会强迫电脑开始在互联网上搜寻别的受害者。不过,感染“狮子”病毒的系统少于感染Ramen病毒的系统,但是其所造成的损失却比后者大得多。
随着Klez病毒在Linux平台上的传染,防毒软件厂商开始提醒我们,微软的操作系统不再是唯一易受病毒攻击的操作系统了。除了Klez以外,其他Linux/UNIX平台的主要威胁有Lion.worm、OSF.8759病毒、Slapper、Scalper、Linux.Svat和BoxPoison病毒,这些都很少被提及。
病毒的制造者是一些精通编写代码的黑客,他们远比那些胡乱涂改网站,却对编写病毒知之甚少的黑客要危险得多。一个被黑客攻击的网站可以很快修复好,而病毒却更加隐蔽,它会带来潜在的安全隐患,并会一直潜伏,直到给系统带来不可挽回的损失。
另外,越多的Linux系统连接到局域网和广域网,这样受攻击的可能性就越大,这是因为很多Linux病毒正在快速地扩散着。使用WINE的Linux/UNIX系统特别容易受到病毒的攻击。WINE是一个公开源代码的兼容软件包,它能让Linux平台运行Windows应用软件。
2.病毒的主要类型
Linux平台下病毒的种类非常多,主要有如下4类。
- 可执行文件型病毒:可执行文件型病毒是指能够寄生在文件中的,以文件为主要感染对象的病毒。病毒制造者无论使用什么“武器”,汇编或者C语言,要感染ELF(Executive Linked File,一种为Linux系统所采用的通用文件格式,支持动态连接)文件都是轻而易举的事情。这方面的病毒如Lindose,当其发现一个ELF文件时,它将检查被感染的机器类型是否为Intel 80386。如果是,则查找该文件中是否有一部分的大小大于2784字节(或十六进制AEO)。如果满足这些条件,病毒将用自身代码覆盖它并添加宿主文件的相应部分的代码,同时将宿主文件的入口点指向病毒代码部分。
- 蠕虫(Worm)病毒:1988年Morris蠕虫爆发后,Eugene H.Spafford为了区分蠕虫和病毒,给出了蠕虫技术角度的定义,“计算机蠕虫可以独立运行,并能把自身的一个包含所有功能的版本传播到另外的计算机上。”在Linux平台下,蠕虫病毒极为猖獗,像利用系统漏洞进行传播的Ramen、Lion、Slapper等这些臭名昭著的病毒,每一个都感染了大量的Linux系统,造成了巨大的损失。它们就是开放源代码世界的Nimda—红色代码。在未来,这种蠕虫病毒仍然会愈演愈烈,随着Linux系统应用越来越广泛,蠕虫的传播程度和破坏能力也会增加。
- 脚本病毒:目前出现得比较多的是使用Shell脚本语言编写的病毒。此类病毒的编写较为简单,但是破坏力同样惊人。我们知道,Linux系统中有许多以.sh结尾的脚本文件,而一个短短数十行的Shell脚本就可以在短时间内遍历整个硬盘中所有的脚本文件,然后进行感染。因此病毒制造者不需要具有很高深的知识,就可以轻易编写出这样的病毒,然后对系统进行破坏,其破坏性包括删除文件,破坏系统正常运行,甚至下载一个木马到系统中等。
- 后门程序:在广义的病毒定义中,后门也已纳入病毒的范畴。活跃在Windows系统中的后门在Linux平台下同样极为活跃。从增加系统超级用户账号的简单后门,到利用系统服务加载,共享库文件注射,RootKit工具包,甚至可装载内核模块(LKM),Linux平台下的后门技术发展非常成熟,其隐蔽性强,难以清除,是Linux系统管理员极为头疼的问题。
从目前的情况来看,由于Linux的开源性以及世界各地高手的维护,其下的病毒相对Windows来说要少很多,而且从整体上来说,Linux的抗病毒性在先天上也优于Windows操作系统。然而,随着病毒技术的不断发展,由于某些物质利益的驱动,众多的黑客极有可能“投身”于Linux病毒的开发,那么,Windows下的病毒发展史也有可能在Linux上重演。
1.4.5 IP Spoofing
即使是很好地实现了TCP/IP协议,但是由于它本身存在着一些不安全的地方,因此照样可以对TCP/IP网络进行攻击。这些攻击包括序列号欺骗、路由攻击、源地址欺骗和授权欺骗。实际上,IP欺骗(IP Spoofing)不是进攻的结果,而是进攻的手段。进攻实际上是信任关系的破坏。
IP欺骗由若干步骤组成,这里先简要地描述一下。首先,目标主机已经选定。其次,信任模式已被发现,并找到了一个被目标主机信任的主机。黑客为了进行IP欺骗,进行以下工作:使得被信任的主机丧失工作能力,同时对目标主机发出的TCP序列号进行采样,猜测出它的数据序列号,然后伪装成被信任的主机,同时建立起与目标主机基于地址验证的应用连接。如果成功,黑客可以使用一种简单的命令放置一个系统后门,以进行非授权操作。
1.4.6 ARP Spoofing
如同IP欺骗一样,ARP欺骗(ARP Spoofing)也是黑客常用的攻击手段之一,ARP欺骗分为两种,一种是对路由器ARP表的欺骗,另一种是对内网PC的网关欺骗。
- 路由器ARP表欺骗:该欺骗的原理是截获网关数据。它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常计算机无法收到信息,而恶意的计算机则可以通过路由器得到被错误转发的数据包,从而有可能窃取别人的机密信息。
- 网关欺骗:它的原理是建立假网关,让被它欺骗的计算机向假网关发送数据,而不是通过正常的路由器途径上网。在计算机看来,就是无法正常上网。
一般来说,ARP欺骗攻击的后果非常严重,大多数情况下会造成大面积网络掉线和正常用户的数据被错误地发往网络上的恶意计算机。因此,从另外一个侧面来说,它也可以作为一种拒绝服务攻击来理解,即正常的用户无法收到数据,网络无法正常工作。
1.4.7 Phishing
“网络钓鱼”(Phishing)就其本身来说,称不上是一种独立的攻击手段,更多的只是诈骗方法(见图1-5)。黑客利用欺骗性的电子邮件和假冒的Web站点(见图1-6)来进行诈骗活动,诱骗访问者提供一些个人信息,如信用卡号、账户名和口令、社保编号等内容(通常主要是那些和财务、账号有关的信息)。黑客通常会将自己伪装成知名银行、在线零售商和信用卡公司等可信的品牌单位,因此,受害者往往也是那些和电子商务有关的服务商和使用者。随着2005年美国4000万信用卡信息被窃案的发生,Phishing事件受到国内外的密切关注。国际反网络欺诈组织APWG发布的统计报告显示,2004年9月发现活跃的仿冒网站数目为546个,12月则达到1707个。CNCERT/CC在2004年共处理200多起Phishing事件,其中上半年20起,8月以后每个月都接到几十起Phishing事件的报告。这类攻击事件越来越频繁,造成的危害也越来越大。
图1-5 常见的“网络钓鱼”方式
图1-6 被冒充的淘宝网
Phishing一词是“Fishing”和“Phone”的综合体,由于黑客起初是以电话作案,所以用“Ph”来取代“F”,创造了“Phishing”。网上黑客采用的“网络钓鱼”方法比较多,归纳起来大概有以下7种。
(1)发送垃圾邮件
该类方法以虚假信息引诱用户中圈套,黑客大量发送欺诈性邮件,这些邮件多以中奖、顾问、对账等内容引诱用户在邮件中填入金融账号和密码,或是以各种紧迫的理由(如在某超市或商场刷卡消费,要求用户核对),要求收件人登录某网页,提交用户名、密码、身份证号、信用卡号等信息,继而盗窃用户资金。
(2)建立假冒网上银行、网上证券网站
骗取用户账号、密码,实施盗窃。黑客建立起域名和网页内容都与真正的网上银行系统、网上证券交易平台极为相似的网站,诱使用户登录并输入账号、密码等信息,进而通过真正的网上银行、网上证券系统盗窃资金。还可利用合法网站服务器程序上的漏洞,在该站点的某些网页中插入恶意HTML代码,屏蔽那些可用来辨别网站真假的重要信息,利用Cookies窃取用户信息。
(3)URL隐藏
根据超文本标记语言的规则可以对文字制作超链接,这样就使“网络钓鱼”者有机可乘。
(4)利用虚假的电子商务进行欺骗
黑客建立电子商务网站,或是在比较知名、大型的电子商务网站上发布虚假的商品销售信息,黑客在收到受害人的购物汇款后就销声匿迹了。除少数黑客自己建立电子商务网站外,大部分黑客采用在知名电子商务网站上(如“易趣”、“淘宝”、“阿里巴巴”等)发布虚假信息,以所谓“超低价”、“免税”等名义出售各种产品,或以次充好,很多人在低价的诱惑下上当受骗。网上交易多是异地交易,通常需要汇款。黑客一般要求消费者先付部分款,再以各种理由诱骗消费者付余款或者其他各种类型的款项,得到钱款或被识破后,就立即切断与消费者的联系。
(5)利用木马和黑客技术窃取用户信息后实施盗窃
黑客通过发送邮件或在网站中隐藏木马等方式大肆传播木马程序,当感染木马的用户进行网上交易时,木马程序就可获取用户账号和密码,并发送给指定邮箱,使用户资金受到严重威胁。
(6)利用用户弱口令等漏洞破解、猜测用户账号和密码
黑客利用部分用户把密码和账号设置得过于简单对账号、密码进行破解。目前已有很多弱口令破解黑客工具,它们可以在很短的时间内破解出各类比较简单的用户名及密码。
(7)其他手段
实际上,黑客在实施“网络钓鱼”犯罪活动的过程中,经常把以上几种手法交织、配合进行。并不排除有新的手段出现,比如现今泛滥成灾的“垃圾手机短信”,其中有一部分是诈骗短信,严格地说,它也应当属于“网络钓鱼”的范畴。所以,推而广之,任何通过网络手段(包括通信)进行诈骗和误导用户,使之遭受经济损失的行为都应当称为“网络钓鱼”。
个人用户要避免成为Phishing的受害者,一定要加强安全防范意识,提高安全防范技术水平,针对性的措施可以归纳为如下几点。
(1)防范垃圾邮件
这是防范“网络钓鱼”最为重要和关键的一步。当今绝大部分的垃圾邮件都携带有“网络钓鱼”的链接,用户经常收到莫名的邮件,因为好奇而点击其中的链接,随之而来的便有可能是被安装上了木马。因此,利用垃圾邮件防护工具或者主动地对不明邮件提高警惕是防范“网络钓鱼”的第一要素。
(2)安装防病毒系统和网络防火墙系统
这是一个非常必要的步骤,多数反病毒软件都具有对间谍软件、木马程序的查杀功能。防火墙系统监视着系统的网络连接,能够杜绝部分攻击意图并及时报警提醒用户注意。由于病毒和黑客攻击手段不断翻新,防病毒和防火墙系统应及时升级,定期杀毒。
(3)及时给操作系统和应用程序打补丁,堵住软件漏洞
Windows操作系统和IE浏览器软件都存在很多已知、未知的漏洞,一般厂家在发现漏洞之后,会迅速推出相应的补丁程序,用户应当经常关注操作系统和应用程序的官方网站,充分利用厂商提供的资源,在发现各种漏洞时第一时间为自己的系统打上安全补丁,避免黑客利用漏洞入侵电脑,减少潜在威胁。
(4)从主观意识上提高警惕,提高自身的安全技术
首先要注意核对网址的真实性,在访问重要的网站时最好能记住其网络域名或者IP地址,确保登录到正确的网站,避免使用点击搜索引擎搜索出的链接等简便方法。第二要养成良好的使用习惯,不要轻易访问陌生网站和有黑客嫌疑的网站,拒绝下载并安装来历不明的软件,拒绝可疑的邮件,及时退出交易程序,做好交易记录,及时核对等。
(5)妥善保管个人信息资料
很多银行为了保障用户的安全,设定了登录密码(查询密码)和支付密码(取款密码)两套密码,用户若保证登录密码与支付密码不相同,这样即使登录密码被窃取,“网络钓鱼”者依然无法操作用户的资金。尽量选择安全的密码,建议选用字母、数字混合的方式,以提高密码猜测和破解的难度。密码等个人资料应妥善保管并定期更新,避免将密码泄露给他人。
(6)采用新的安全技术
数字证书是一种很安全的方式,通过数字证书可以进行安全通信和电子数字签名,电子签名具有法律效力。网上交易在数字证书签名和加密的保护下进行网上数据的传送,杜绝了“网络钓鱼”者使用跨站Cookie攻击以及嗅探侦测的可能。数字证书具有可复制性,如同钥匙一样,用户应妥善保管。对于一些被假冒的机构和政府相关管理部门而言,也应采取相应的措施。例如,银行可积极采取技术措施和宣传活动让用户能够识别真假,避免上当。相关政府职能部门也应沟通合作,及时定位、关闭这些仿冒网站并从其所有者手中追回被盗的用户信息,减少直接和潜在的损失。
1.4.8 Botnet
僵尸网络英文名称为Botnet,是20世纪90年代末兴起的危害互联网的产物,近年来已形成重大安全威胁之一。僵尸网络是指采用一种或多种传播手段,将大量主机感染bot程序(僵尸程序),从而在控制者和被感染主机之间形成一个一对多控制的网络。
攻击者通过各种途径传播僵尸程序,感染互联网上的大量主机,而被感染的主机将通过一个控制信道接收攻击者的指令,组成一个僵尸网络。之所以用“僵尸网络”这个名字,是为了更形象地让人们认识到这类危害的特点。
僵尸网络可以说是一个可控制的网络,这个网络并不是指物理意义上具有拓扑结构的网络,它具有一定的分布性,随着bot程序的不断传播,不断有新位置的僵尸计算机添加到这个网络中来。这个网络是采用一定的恶意传播手段形成的,例如,主动漏洞攻击、邮件病毒等各种病毒与蠕虫的传播手段都可以用来进行Botnet的传播,从这个意义上讲,恶意程序bot也是一种病毒或蠕虫。
Botnet最主要的特点是,它有别于以往简单的安全事件,是一个具有极大危害的攻击平台;它可以一对多地执行相同的恶意行为,将攻击源从一个转化为多个,乃至一个庞大的网络体系,通过网络来控制受感染的系统,同时造成网络危害。
僵尸网络正是由于这种一对多的控制关系,使得攻击者能够以极低的代价高效地控制大量的资源,使它为其服务,这也是Botnet攻击模式近年来受到黑客青睐的根本原因。在执行恶意行为的时候,Botnet充当了一个攻击平台的角色,这也就使得Botnet不同于简单的病毒和蠕虫,也与通常意义上的木马有所不同。
僵尸网络这种受控网络的存在给危害追踪和损失抑制带来了巨大的麻烦,这也就是僵尸网络迅速发展的原因。僵尸网络已经成为国内乃至全世界的网络安全领域最为关注的危害之一。
1.4.9 跨站脚本攻击
跨站脚本(Cross-site Scripting,XSS)攻击指的是恶意攻击者往Web页面里插入恶意HTML代码,当用户浏览该页时,嵌入到Web里面的HTML代码就会被执行,从而达到危害用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽视了其危害性。
XSS攻击分为两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞构造跨站语句;另一类则是来自外部的攻击,主要指的是自己构造XSS跨站漏洞网页或者寻找目标机以外的有跨站漏洞的网页。
XSS攻击有多种方式,主要方式是入侵者通过技术手段在某个页面里插入一个恶意的HTML代码。当然,攻击者有时也会在网页中加入一些以.JS或.VBS为后缀的代码,在用户浏览时,就会被攻击到。目前,如下类型的脚本可以插入到远程页面中,以完成XSS攻击。
- HTML。
- Java。
- VB。
- ActiveX。
- Flash。
1.4.10 零日攻击(Zero Day Attack)
与上述攻击方式相比,零日攻击并不指代一种特定的攻击技术,它更多地指代一种快速采用软件系统等的漏洞对目标进行攻击的这种过程和现象。
据权威机构统计,现在我们使用的操作系统和应用程序,每1000行代码中就有可能存在4~5个编码漏洞。由于系统和应用程序的开发商不可能对所有的代码进行严格的检查,一般都是在系统和应用程序发行后不断地进行后期测试,才会发现这些漏洞,然后才会开发相应的漏洞补丁来修补这些漏洞,这就是我们经常说的系统补丁更新。但是,当系统或应用程序发行后,一些技术高超的黑客也会对它们进行反汇编,然后通过阅读代码找到编码中的漏洞。而由黑客找到的漏洞,他们并不会对外公布,最多也只是在其熟悉的内部流传,然后黑客就会自己编写此漏洞的利用脚本,对系统或应用程序发动攻击。通常,从系统或应用程序新漏洞的发现到利用不会超过24小时,由此人们就形象地把这种攻击称为“零日攻击”,将被利用的新漏洞称为“零日漏洞”。
通常,黑客实施一次零日攻击会按如下的流程来进行。
- 发现漏洞。
- 编写漏洞利用脚本。
- 寻找目标发动攻击。
- 进入目标网络或系统。
- 安装后门控制系统或得到网络中的机密数据。
- 清除攻击痕迹。
但是,并不是所有的黑客都会按这样的流程来进行零日攻击,他们可能在进入系统或控制系统后,对系统所在网络中的其他目标发动新的攻击,以得到更多的数据,或者将被攻入的系统作为攻击其他网络目标的跳板。
目前,所有的操作系统(包括Windows、Linux、FreeBSD和UNIX)以及所有的网络应用程序(包括IIS、FTP、IE和SMTP等)都存在零日漏洞,也就是存在被零日攻击的风险。正是由于零日攻击影响的范围非常广泛,而且由于操作系统或应用程序在编码过程中不可能做到100%的正确,因此,零日攻击的风险会在以后相当长的一段时间内存在,因而现在我们就必须了解可以通过什么样的方法来解决零日攻击带来的安全风险。
1.4.11 “社会工程学”攻击
“社会工程学”(Social Engineering)攻击是一种利用人的弱点(如人的本能反应、好奇心、信任、贪婪等)进行欺骗、伤害等,从而获取自身利益的手法。近年来,由于信息安全厂商不断开发出更先进的安全产品,系统安全防范在技术上越来越严密,使得攻击者利用技术上的漏洞变得越来越困难。于是,更多的人转向利用人为因素的手段——社会工程学来进行攻击。
许多信息技术从业者都普遍存在着类似的一种观念,他们认为自己的系统部署了先进、周密的安全设备,包括防火墙、IDS、IPS、漏洞扫描、防病毒网关、内容过滤、安全审计、身份认证和访问控制系统,甚至最新的UTM和防火墙,以为靠这些安全设施即可保证系统的安全。事实上,很多安全行为出现在骗取内部人员(信息系统管理、使用、维护人员等)的信任,从而轻松绕过所有技术上的保护。信任是一切安全的基础,对于保护与审核的信任,通常被认为是整个安全链条中最薄弱的一环。为规避安全风险,技术专家精心设计的安全解决方案中却很少重视和解决最大的安全漏洞,那就是人为因素。因此,对于当前的企业来说,缺乏对社会工程学防范的信息系统,不管其安全技术多么先进、完善,很可能会成为一种自我安慰的摆设,其投入大笔资金购置的先进的安全设备很可能成为一种浪费。
社会工程学攻击基本上可以分为两个层次:物理的和心理的。与以往的入侵行为相类似,社会工程学在实施之前要完成很多相关的前期工作,这些工作甚至要比后续的入侵行为更为繁重和更具技巧。这些工作包括社会工程学的实施者(一般称为社会工程师)必须掌握心理学、人际关系学、行为学等知识与技能,以便收集和掌握实施入侵行为所需要的相关资料与信息。通常为了达到预期的目的,社会工程学攻击都要将心理的和行为的攻击结合运用。其常见形式包括如下几种。
第一,伪装。从早期的求职信病毒、爱虫病毒、圣诞节贺卡到目前流行的“网络钓鱼”,都是利用电子邮件和伪造的Web站点来进行诈骗活动的。有调查显示,在所有接触诈骗信息的用户中,有高达5%的人会对这些骗局做出响应。攻击者越来越喜欢玩弄社会工程学的手段,把恶意软件、间谍软件、勒索软件、流氓软件等网络陷阱伪装起来欺骗被害者。
第二,引诱。社会工程学是现在多数蠕虫病毒进行传播时所使用的技术,它使计算机用户本能地去打开邮件,执行具有诱惑力同时具有危害的附件。例如,用一些关于某些型号的处理器存在运算瑕疵的“瑕疵声明”或更能引起人的兴趣的“幸运中奖”、“最新反病毒软件”等说辞,并给出一个页面链接,诱惑你进入该页面运行下载程序或在线注册个人相关信息,利用人们疏于防范的心理引诱你上钩。
第三,恐吓。利用人们对安全、漏洞、病毒、木马、黑客等内容会特别敏感的心理,以权威机构的面目出现,散布诸如安全警告、系统风险之类的信息,使用危言耸听的伎俩恐吓、欺骗计算机用户,声称如果不及时按照他们的要求去做,就会造成致命的危害或遭受严重损失。
第四,说服。社会工程师说服目标的目的是增强他们主动完成所指派的任务的顺从意识,从而变为一个可以被信任并由此获得敏感信息的人。
第五,恭维。社会工程师通常十分友善,很讲究说话的艺术,知道如何借助机会去迎合人,投其所好,使多数人友善地作出回应。
第六,渗透。通常社会工程学攻击者都擅长刺探信息,很多表面上看起来毫无用处的信息都会被他们利用来进行系统渗透。通过观察目标对电子邮件的响应速度、重视程度以及可能提供的相关资料(比如一个人的姓名、生日、ID、电话号码、管理员的IP地址、邮箱)来判断目标的网络架构或系统密码的大致内容,从而用口令心理学来分析口令,而不仅仅是使用暴力破解。
除了以上的攻击手段,一些比较另类的行为也开始在社会工程学中出现,其中包括翻垃圾、背后偷窥、反向社会工程学等,这些都是窃取信息的捷径。