一.什么是恶意软件
恶意软件是一种秘密植入用户系统借以盗取用户机密信息,破坏用户软件和操作系统或是造成其它危害的一种网络程序。对于绝大多数系统来说,恶意软件已经成为了最大的外部威胁,给企业和个人都带来了巨大的损失。仅以恶意软件中的间谍软件为例,间谍软件侵犯了用户的隐私,这已经成为企业用户关注的焦点。尽管间谍软件的出现已有时日,但是近几年使用间谍软件侵入系统监视用户行为变得更加猖獗。企业还面临一些与恶意软件相关的非恶意软件威胁。其中司空见惯的就是网络钓鱼,就是使用基于计算机的欺骗方法套出用户的敏感信息。还有就是病毒欺骗,就是对新的恶意软件威胁发出错误的警报。
二.恶意软件分类
一般认为,恶意软件包括病毒,蠕虫,木马,恶意的移动代码,以及这些的结合体,也叫做混合攻击。恶意软件还包括攻击者工具,譬如说,后门程序,rookits,键盘记录器,跟踪的cookie记录。本篇讨论的内容包括,恶意软件怎么样进入和感染系统及其传播;怎么样工作;针对的目标;怎么样影响系统。
2.1 病毒
病毒能够实现自我复制,并且感染其它文件,程序和计算机。每一种病毒都有感染机制;譬如,有的病毒可以直接插入主机或是数据文件。病毒的威力可大可小,有些可能只是小恶作剧,还有可能是相当恶意的攻击。绝大多数的病毒都有诱发机制,也就是诱发其威力的原因,一般需要用户的互动方能实现。目前有两种重要的病毒,一是可编译病毒(compiled virus),主要通过操作系统实现;二是演绎性病毒(interpreted virus),主要通过应用程序实现。
2.1.1 可编译病毒
可编译病毒的源代码可以经由编译器程序转换为操作系统可以直接运行的程序格式。可编译病毒包括以下三种:
■ 文件感染器(file infector) 这种病毒一般将其附加在可执行程序中,譬如word,电子表格和电脑游戏。一旦病毒感染程序,就直接影响系统中的其它程序,还有使用系统作为共享的感染程序。Jerusalem和Cascade就是两种最出名的文件感染病毒
■ 引导区(boot sector)引导区病毒一般感染硬盘驱动的MBR或是硬驱和移动媒介的引导区。引导区,顾名思义就是存储信息的硬盘或是磁盘的开始部分。MBR是磁盘上比较独特的区域,因为电脑的基本输出/输入系统(BIOS)可以加载启动程序的地方就在此。一旦电脑启动的时候,如果硬驱中有感染的磁盘,病毒就自动执行。引导区病毒隐藏性很强,成功率高,破坏性强。其表现就是启动的时候出现错误信息或是启动不稳定。Form,,Michelangelo和Stoned是很典型的引导区病毒。
■ 混合体(Multipartite)混合体病毒使用多种感染方式,典型的是感染文件和引导区。相应地,混合体病毒有上述两种病毒的特征。典型例子:Flip和Invader
除了感染文件之外,可编译病毒还可以躲藏在感染系统的内存中,这样每次执行新的程序的时候就可以感染新的程序。在上述三种病毒中,启动区域病毒最有可能存在于内存中。相比那些非存在于内存中的病毒而言,这种病毒危害性更大,更加频繁。
2.1.2 演绎性病毒
与可编译病毒有操作系统执行不同的是,这种病毒的源代码只能由特定程序来实现。这种病毒以其简单易操作深受欢迎。即使一个不是太熟练的黑客也可以借此编写和修正代码,感染计算机。这种病毒的变体很多,最主要的两种是宏病毒(macro virus)和脚本病毒(scripting virus)
宏病毒是这种病毒中最流行最成功的。病毒一般附加到word,电子表格等,并且使用这些程序的宏编译语言来执行病毒。它们利用的正是很多流行软件的宏编译语言功能,譬如说,微软的办公软件。由于人们共享具有宏功能文档的增多,这种病毒也越来越流行。一旦宏病毒感染发生,就会感染程序的建立和打开文件夹模板程序。一旦模板被感染,所有藉由此模板建立和打开的文件都会被感染。Concept, Marker, 和Melissa 就是很出名的宏病毒。
脚本病毒与宏病毒类似。最大区别在于,宏病毒是以特定软件程序语言为基础,而而脚本病毒是以操作系统理解的语言编程,譬如说Windows脚本主机功能就可以执行VB脚本语言。典型的脚本病毒有First 和 Love Stages病毒。
2.1.3 病毒模糊技术
现在的病毒变得越来越复杂,一般使用多种障眼法达到掩盖自己的目的。病毒越难查出,危害性就越大。下面介绍几种典型的病毒模糊技术。
■ 自我加密和自我解密 有一些病毒能够加密和解密他们的病毒代码,这样就可以躲避杀毒软件的直接检查。使用加密的病毒可能会使用多层加密或是随机加密密钥,这样即使是病毒本身代码是一样的,看起来也有天壤之别。
■ 多态化 多态化是自我加密的形式多样化。一般来说,多态化实现默认加密设置的改变,解码也会随之改变。在多态化病毒中,病毒本身的内容没有改变,加密只改变其外在形式。
■ 变形记 变形记的思路是改变病毒本身实质,而不是使用加密隐藏其实质。病毒的改变有几种方式,譬如,在源代码中加入不必的代码顺序,或是更改源代码的顺序。被替换的代码被重新编译,其执行的时候看起来似乎完全不同。
■ 秘密病毒(stealth)这种病毒使用多种技术隐藏病毒特征。
■ 装甲 使用装甲的目的就是为了阻止杀毒软件或是专家分析病毒功能
■ 隧道法(tunneling)这种病毒一般潜在操作系统的下层接受底层的操作系统请求。由于其位于杀毒软件之下,借用操作系统就可以防止其被杀毒软件查出。
杀毒软件厂商都下大力气防止病毒模糊技术。一些老式的模糊技术,譬如自我加密,多态化,和秘密行动,杀毒软件都能有效地处理。但是新的更加复杂的,譬如,变形技术,现在还很难查杀。
2.2蠕虫
蠕虫能够实现自我复制的程序,蠕虫病毒是一种常见的计算机病毒。它的传染机理是利用网络进行复制和传播,传染途径是通过网络、电子邮件以及优盘、移动硬盘等移动存储设备。蠕虫程序主要利用系统漏洞进行传播。它通过网络、电子邮件和其它的传播方式,象生物蠕虫一样从一台计算机传染到另一台计算机。因为蠕虫使用多种方式进行传播,所以蠕虫程序的传播速度是非常大的。
蠕虫侵入一台计算机后,首先获取其他计算机的IP地址,然后将自身副本发送给这些计算机.蠕虫病毒也使用存储在染毒计算机上的邮件客户端地址簿里的地址来传播程序。虽然有的蠕虫程序也在被感染的计算机中生成文件,但一般情况下,蠕虫程序只占用内存资源而不占用其它资源。
2.3 木马
其名称来源于希腊神话,木马是一种非自我复制程序,但是实际上带有隐蔽的恶意动机。一些木马使用恶意版本替代现有文件,譬如系统和程序中的可执行代码;还有一些在现有文件中添加另外的程序重写文件。木马一般有以下三种模型:
■ 执行正常系统的功能的同时,执行单独的,不相关的恶意活动(譬如,在执行游戏程序的时候收集程序密码)
■ 执行正常系统功能的同时,修正其功能执行恶意活动,或是掩盖恶意活动
■ 完全期待正常系统功能执行恶意程序功能
木马很难被检测到。因为木马病毒在设计之初就掩盖了其在系统中的现形,并且执行了原程序的功能,用户或是系统管理员很难察觉。现在还有一些新的木马使用了模糊化技术躲避检测。
现在,使用木马传播间谍软件越来越频繁。间谍软件一般与支持软件捆绑,譬如说一些点对点的文件共享软件;一旦用户安装了这些貌似正常的软件,间谍软件亦随之安装。木马病毒还会传播其它种类的攻击者工具到系统中,借此可以实现未经授权的访问或是使用感染的系统。这些工具要么是与木马捆绑,要么是木马替代系统文件之后再下载。
木马会导致系统严重的技术问题。譬如说,替代正常系统可执行文件的木马可能会导致系统功能的不正常运行。与间谍软件相关的木马对系统的破坏性特别大,有可能会导致系统不能正常运行。木马及其安装的相关工具会消耗大量的系统资源,导致系统性能的严重下降。著名的木马病毒有SubSeven, Back Orifice和Optix Pro.等等。
2.4恶意的移动代码
移动代码可以在不需要用户指示的情况下实现远程系统在本地系统上的执行。这是编程方法现在很流行,编写的程序被广泛使用于操作系统和应用程序上,譬如说,网络浏览器和电子邮件应用程序。尽管移动代码本身不坏,但是黑客们却发现恶意的移动代码是攻击系统的有效工具,也是传播病毒,蠕虫和密码的良好机制。恶意移动代码与病毒和蠕虫很不同的地方在于它不感染文件或是自我复制。与利用利用系统漏洞不同的是,它利用的是系统给于移动代码的默认优先权。编写恶意移动代码的受欢迎的语言包括Java, ActiveX, JavaScript, 和 VBScript.。其中最出名的恶意移动代码是使用Java脚本的Nimda。
2.5 混合攻击
混合攻击使用多种感染或是攻击方式。著名的Nimda蠕虫实际上就是很典型的混合攻击。它使用了四种分布方法:
■ 电子邮件 一旦用户打开了恶意的邮件附件,Nimda就会利用浏览器上的漏洞展现基于HTML语言的电子邮件。一旦感染了主机,Nimda就会寻找主机上的电邮地址然后发送恶意邮件。
■ Windows共享 Nimda扫描网络服务器,寻找微软的网络信息服务(IIS)上的已知漏洞。一旦发现有漏洞的服务器,马上就会发送复件到这台服务器上感染服务器和文件。
■ 网络客户端 如果有漏洞的网络客户端访问了被Nimda感染的网络服务器,那么客户服务器也被感染了。
除了使用上述描述的方法之外,混合攻击可以通过即时通讯和点对点文件共享软件传播。人们很多时候把混合攻击误认为蠕虫,因为它具有蠕虫的一些特征。实际上,Nimda具有病毒,蠕虫和恶意移动代码的特征。另外一个混合攻击的例子是Bugbear,它既是海量邮件蠕虫也是网络服务蠕虫。由于混合攻击比单一恶意软件更加复杂,所以更难制造。
混合攻击并非同时使用多种方式发动攻击,它们可以依次感染。它越来越作为传播和安全木马的流行方式。
2.6 跟踪cookies
Cookies就是上网时留下的数据文件。Session cookies是对单一网站session有效的临时cookies。长期cookies是未定义地存储在计算机上的cookies以便在以后的访问中确认用户。长期cookies记录下了用户对于网站的喜好以便用户下次的访问。这样长期cookies就可以更加有效地帮助网站服务客户了。
但是,不幸的是,长期cookies会被滥用跟踪用户的网络浏览记录。譬如说,一家市场调查公司可能会在很多网站上发布广告,然后使用cookie跟踪用户访问网站的情况,借此调查用户的行为特征。这叫做跟踪cookies。有跟踪cookies搜集到的信息出售给第三方以便更加有效地发布广告。绝大多数的间谍软件检测和移动工具都可以寻找系统中的跟踪cookies。
另外一个获取用户私人信息的方法是网络bug的使用。网络bug是存在于网页中HTML内容中的小图像。这个小图像除了搜集用户浏览HTML的信息之外,别无其它用途。一般用户看不到网络bug,因为它只有一个像素大小。正如跟踪cookies一样,它也为市场调查机构广泛使用。他们可以收集用户IP地址或是网络浏览器类型,还可以访问跟踪cookies。所有这些使得网络bug可以被间谍软件利用构建用户的个人信息。
2.7攻击者工具
作为恶意软件和其它系统威胁的一部分,各种各样的攻击者工具都可以发送到系统中。这些工具包括各式恶意软件,会让攻击者未经授权访问或是使用被感染系统及其数据,或是发动攻击。一旦被其他恶意软件传播,攻击者工具就会变成恶意软件的同伙。譬如,一台感染蠕虫的系统会直接受蠕虫的指示访问特定的恶意网站,下载工具,然后安装到系统中。下面介绍几种流行的攻击者工具:
2.7.1 后门程序
后门程序是对监听TCP或是UDP端口命令恶意软件的统称。绝大多数的后门程序包括客户端和服务器两部分。客户端在攻击者的远程计算机上,服务器端位于感染的系统上。一旦客户端和服务器之间连接上,远程攻击者就会实现对感染计算机一定程度上的控制。即使最不济的后门程序也会允许攻击者执行一定的系统命令,譬如文件传输,获取密码,或是执行模糊命令。后门程序也有一些功能,如下:
■ 僵尸 最主流的僵尸就是DDoS攻击代理。攻击者可以使用远程命令控制大量计算机对同一目标发动攻击。著名的DDoS攻击代理有Trinoo 和Tribe Flood Network. 。
■ 远程管理员工具(RAT) 从字面意义上说,RAT会使攻击者得到其想要的访问权限。绝大多数的RAT 都可以让攻击者访问系统功能和数据。包括监视系统屏幕上出现的任何东西,或是远程控制系统设备,譬如摄像头,麦克风等。著名的RAT包括Back Orifice和Netbus等。
2.7.2 键盘记录器
键盘记录器用来监视和记录键盘的使用记录。键盘记录器记下输入到系统中的信息,诸如电子邮件内容,用户名和密码,或是金融信息。有一些键盘记录器需要攻击者从系统中找寻数据,还有一些会自动将数据通过电子邮件等发送到系统中。KeySnatch, Spyster, 和 KeyLogger Pro都是常用的键盘记录器。
2.7.3 Rookits
Rookit是指一些安装到系统中的文件,采取恶意的和偷偷摸摸的方式替代系统的正常功能。在一些操作系统中,,譬如Unix和Linux中,rookits修正或是代替数以百计的文件。在其它操作系统中,譬如Windows中,rookit修正或替代文件或是仅仅存在于内存中,或是修正操作系统内置系统请求的使用。许多经rookit修改过的文件都会隐藏rookit的存在,这样就使得rookit的探测变得异常困难。譬如说,rookit经常用来安装其它形式的攻击工具,后门程序或是键盘记录器等。一些rookit包括LRK5, Knark, Adore, 和Hacker Defender(黑客防御者).
2.7.4 网络浏览器插件
网络浏览器帮助用户浏览网络上的内容。攻击者常常借用插件传播间谍软件。一旦安装到浏览器中,这些插件就会监视浏览器的所有所有记录,譬如网页浏览记录,然后将其报告给第三方。因为插件是在浏览器打开的时候自动加载的,这就提供了监视系统网络活动的简单的方法。有一些恶意的网络插件是间谍软件拨号器,它们使用调制调解线在未经用户允许的情况下拨打电话号码。一般说来,拨打的号码都是高收费电话或是紧急电话。
2.7.5 电子邮件生成器
恶意软件可以通过电子邮件生成程序传播到系统中,这样在用户不知情的情况下就会发生大量的邮件到其它的系统中。攻击者一般使用电子邮件生成器发生恶意软件,间谍软件或是垃圾邮件或是其它内容到收件人清单。
2.7.6 攻击者工具包
攻击者使用包含多种工具和脚本的工具包探测和攻击系统。一旦系统受到恶意软件或是其它方式的攻击,攻击者就会在系统中下载和安装工具包。然后工具包就会借此对这一系统或是其它系统发动攻击。在攻击者工具包中常见的程序:
■ 信息包探测器 信息包探测器用来监视网络流量和获取信息包。信息包探测器一般可以嗅探到所有的信息包或是包含某一特征的信息包(TCP端口,或是特定IP地址)。绝大多数的信息包嗅探器也是协议分析器,也就是说它们可以重新配置来自于各个信息包的流量,然后解密使用各种各样协议的通讯。
■ 端口扫描器 端口扫描器远程扫描系统中开放的端口。以此帮助黑客找到潜在的攻击目标。
■ 漏洞扫描器 漏洞扫描器用来寻找本地或是远程系统上的漏洞。以此帮助黑客成功对系统发动攻击。
■ 密码破解器 使用密码破解器破解操作系统和应用程序密码。绝大多数的破解工具都尝试猜测密码或是试遍可能的密码。找出加密密码的时间长短不一,取决于加密手段或是密码本身的复杂程度。
■ 远程登录程序 攻击者常常使用SSH( Secure Shell安全外壳)和telnet(用于远程联接服务的标准协议或者实现此协议的软件)远程登录其它系统。攻击者可以利用这些程序实现很多目的,譬如控制受到威胁的系统,在系统之间传输数据。
■ 攻击 攻击者常常使用各种各样的工具或是脚本对本地或是远程系统进行攻击。攻击者想要达到各种各样的目的,包括危害系统或是发动DoS攻击。
实际上,攻击者工具包中的攻击工具作用两面的,关键是使用它们的人。譬如,信息包嗅探器和协议分析器经常为网络管理员所用寻找网络通讯问题,也可以为攻击者所用窃听私人通讯。上网管理人员可以利用密码破解器测试系统密码的强度。还有些工具内置到操作系统中作为诊断或是管理工具。因此,上述工具的出现并不一定意味着风险的发生。
2.8 非恶意软件威胁
主要讨论两种形式的与恶意软件相关的非恶意软件风险。第一是网络钓鱼;第二是病毒欺骗