查看文章 |
前面讲了关于安全意识方面的一些问题。这一部分来讲一些系统方面的知识,这些知识帮助我们正确的理解病毒、木马的原理,并对它们的防范形成一些基本的概念。这些基本的系统相关知识归纳为如下几类—— 1 系统体系结构及软件的相关概念
1.1 电脑系统基本体系结构 因此,我们要建立的概念是,CPU只和内存打交道,所有的信息必须经过内存才能被处理。内存比磁盘读写信息的速度快得多,相对来说容量小很多。内存中的信息断电就消失了,只有存在磁盘上的信息才能永久保存。 病毒、木马等也只是某种格式的信息,它们要活动,就必须进入到内存,取得CPU的执行权。存储在磁盘上无法进入到内存并取得执行权的病毒是死病毒,没有任何危害,跟磁盘上被随机写入的一堆二进制数没有任何区别。
电脑软件被分为几个层次。最底层的是与计算机硬件直接打交道的,称为设备驱动程序,这些设备驱动程序在开机时由BIOS(基本输入输出系统)来管理,加载完系统后由操作系统的设备抽象层来管理。设备层之上就是操作系统(对我们大多数电脑用户来说,就是Windows),操作系统是电脑系统的大管家,它为所有我们要运行的应用软件提供基础支持平台,并提供我们访问磁盘信息及使用电脑各个部分的支持。操作系统又分为三个层次:设备抽象层、核心层、用户界面层。操作系统之上就是我们运行的各种应用软件,比如浏览器、字处理软件、游戏等等。 软件是通过软件开发工具,由人设计开发出来的。软件开发工具也是软件,所以最初的软件人们只能利用CPU的指令集合由二进制代码一点一点的拼出来,然后就拼出一种能减轻这种原始工作难度的软件,这就是最初的开发工具。这样,软件和软件工具就螺旋循环进行功能提升。所有的开发工具都是将人的设计意图最终翻译成机器能够执行的指令序列。 病毒、木马等恶意程序也是软件,也就是说是一系列计算机指令与相关数据的集合,理论上讲,恶意软件和正常软件之间是无法区分的。但在实践中,可以通过它们的行为来进行判断,那些帮助我们使用电脑实现某个我们所需要功能的,就是正常软件;那些利用我们电脑实现我们不想要功能、或者阻碍或者危害我们使用电脑的,就是恶意软件。这种区别有时很微妙,比如一个搞笑的程序,一些人看来是个轻松的游戏,另一些人看来则是讨厌的恶意程序。正是这种理论上的不可区分性,才导致病毒的不可消亡性,不存在完全消除病毒的系统和能够杀除一切病毒的杀毒软件。
病毒作为一类特殊形式的软件,它既依赖于操作系统提供的环境,又试图突破操作系统的限制。
因此,隐藏和自我传播是病毒最根本的特征。由于隐藏的需要,它们都比较小,能够较容易地附着在其它程序上,能够通过网络快速复制和传播。它们在指令序列上,往往是非常精巧编制的一段代码。不过,现代病毒越来越复杂,它们不再是一段代码,往往被分成若干个部分,各部分分工合作,有的完成最初的传播,有的进行进一步感染,有的进行自我保护和隐藏,有的完成感染后功能。 从分类上讲,现代病毒可以分为如下类——
2 Windows操作系统与安全相关的知识 2.1 Windows系统的基础 Windows作为一个操作系统,提供的最基础的功能包括:内存管理、进程管理和文件管理。 进程是Windows中一个组件或应用程序运行时在内存中的基本单元。我们在Windows任务栏点右键,选“任务管理器”,在“进程”标签中就可以看到当前正在运行的各个进程的名字及其它一些信息。每个进程会调用一系列的程序模块,这些模块对应于硬盘上的一系列文件。 我们看到的Windows的桌面、任务栏,在资源管理器中表现出来的磁盘及其目录结构,都是由Windows的用户接口层程序提供的,这个程序叫c:\windows\explore.exe。很多病毒感染时都针对这个程序下手。 微软集成在Windows中的IE浏览器程序文件名叫IExplore.exe(大小写无关),运行时在进程中看到同样的名字。浏览器由于在互联网时代的重要性,它实际上已经不是单个的应用程序,微软提供的相应的接口能够在浏览器中插入各种对象,以使得浏览器能够处理更多类型的数据,从而增加浏览器的功能。但是,这种接口也为病毒、木马、广告程序或其它流氓软件扰乱和劫持浏览器的正常运行提供了方便。 Windows分为各种不同的版本,早期的有Win 95、Win 97、Win 98,目前微软基本上以及不提供继续支持了;其后有Windows 2000、Windows XP、Windows 2003,一直到现在正在推出的Windows Vista,这每个版本又包含家庭版、专业版、服务器版等功能侧重不同的版本。解决病毒问题,获取当前系统的Windows版本信息是很关键的。有很多软件工具可以显示当前的系统版本信息。 针对不断发现的Windows安全问题,微软推出了一种给系统打补丁的机制。也就是到微软的站点下载经过更新,修补了已发现安全问题的程序到本地安装。为了简化这种过程,Window包含一个Window Update的程序,在开始菜单中可以看到,帮助我们打系统补丁的操作。
2.2 磁盘结构 安装Windows的磁盘分区叫做系统分区(可以不在C盘)。Windows预定义了一些特殊的文件夹,叫做系统文件夹,这些系统文件夹包括(假定系统安装在C盘): 每个C:\Documents and Settings\[用户帐户]\下,又包含如下的子目录: C:\Program Files\——保存Windows下安装的一些应用程序。缺省象IE浏览器程序,邮件客户端Ooutlook Express等都安装在这个目录 磁盘按照其数据存储的格式可以有FAT32和NTFS两个形式,其中NTFS是Windows推荐的格式,优点是有更好的权限控制,并且更能够节省磁盘空间,不过这种格式的磁盘在普通DOS下看不见,给有时需要DOS下杀毒造成一定的困难。磁盘上的每个文件及文件夹都可以设置为如下属性中的一种或几种:系统、隐藏、只读、归档。NTFS格式的磁盘还可以对用户和用户组设置文件和文件夹的更详细访问权限。 磁盘中的信息有可能被损坏。有两种类型的损坏:逻辑损坏和物理损坏。逻辑损坏是指数据以为某种原因使得其目录信息等发生损坏而造成的逻辑组织错乱;物理损坏是指由于磁盘表面存储数据的位置发生物理错误造成的数据丢失与破坏。Windows提供了从磁盘错误中恢复处理的工具。 每个磁盘分区有一个引导扇区,整个磁盘有一个主引导区,它们是保存磁盘上操作系统加载信息的地方,以前是病毒经常呆的窝子,现在这种病毒少了。不过当前主流的杀毒软件都提供对磁盘引导区和主引导区的扫描。
2.3 注册表 从根本上说,注册表是一个信息的数据库,这个数据库是以树形结构来组织的,里面存储的信息量非常庞大。这种结构有点类似于磁盘的目录结构。微软预定义了这个树形结构大多数最初几个级别的分支。其中最底层几个分支是—— 注册表数据库可以通过一些软件工具来打开和编辑。微软提供了一个注册表的编辑工具,C:\Windoows\regedit.exe,通常我们在开始菜单中选运行,然后输入regedit.exe,就打开的注册表,实际上就是通过这个程序打开的,我们可以在里面逐步展开查看注册表的接口,或修改某些项目。 Windows系统启动时所要加载的程序大部分都在注册表中有相应的项目定义。病毒和木马正是在注册表中这些预定义的项目增加自己来使得自己在下次启动时自动被加载运行的。因此,清理病毒不禁包含对病毒文件的清除,更重要是对注册表相关病毒加载项目的清理。 病毒对系统的重要危害之一就是修改注册表中的一些正常或重要系统配置数据信息,从而导致应用软件甚至系统出现错误或不能正常工作。
2.4 服务与驱动程序 服务 我们的机器联网,都需要一个IP地址。很多情况下这个IP地址并不是事先设置好的,而是系统启动时从服务器动态获得的,而这种获得IP地址的过程,正是机器上一个叫DHCP Client的服务在后台工作的结果。 Windows提供了一个程序,使得我们可以浏览、启动或停止当前系统中存在的所有服务,这个程序可以通过“控制面板/系统工具/服务”项目启动。 Windows允许应用软件也将自身的一部分注册为系统服务,以完成应用软件特定的需要以服务方式来完成的任务。正是这样,病毒和木马也可以将自身的一部分注册为服务,一方面可以在系统启动时不需要人为的干预自动加载,另一方面可以在后台用户不知觉的情况下,完成它的某些功能。要清除病毒,停止并注销病毒注册的服务也是一个重要的步骤。 有经验的用户可以通过浏览系统中注册的服务,从而发现有没有病毒或木马等异常情况的存在。不过,这需要对系统正常的服务比较了解。当前,很多安全工具都提供了对系统服务的管理功能,并将它作为手工清除病毒的手段之一。 驱动程序 一旦驱动程序编制完成,它可以完成的功能是非常强大的,它甚至可以绕过操作系统的限制。现代的很多病毒,也就利用驱动程序的这种强大特性,在底层对自身的其它部分进行隐藏和保护,这使得对这类病毒的清除非常麻烦。识别并停止这种在后台保护的驱动程序,从而停掉病毒的保护伞,是对付现代病毒最关键的步骤。
2.5 IE浏览器 HTTP协议 HTML语言 ActiveX对象 IE的临时文件 IE的安全区域
Windows漏洞的存在,导致了大量针对性的病毒产生。它们通过对漏洞的利用,立即获得了通过互联网广泛传播渗透的能力,从而造成巨大的破坏和社会影响。正确认识漏洞是怎样导致系统被感染的,有利于认识到打补丁的重要性。事实上,绝大多数受感染的系统就是因为没有打齐系统补丁。 微软针对每个被发现的安全问题发布一个安全公告,该公告被命名为类似MS07-XX这样的编号,前一个数字代表年份,后一个数字代表当年安全公告的顺序编号。在每个安全公告中,微软详细说明了该安全漏洞的严重程度、可能影响的系统,针对性补丁的下载位置,以及更加详细的一些技术说明。当前每个公告都有简体中文的翻译版本(在微软的简体中文网站上,搜索时输入比如:MS06-14 site:www.microsoft.com/china)。
这种类型的漏洞占到了微软安全漏洞的大多数。系统中存在的缓冲区溢出是黑客攻击最常利用的东西。这类的漏洞,造就了众多影响全球、破坏巨大的病毒,比如“红色代码”、“冲击波”、“蠕虫王”、“熊猫烧香”以及众多基于脚本的木马下载器(卡巴命名为Trojan-Downloader,xxx,瑞星命名为Trojan.DL.xxx的病毒)等等。
这种易用性设计中的矛盾其实无处不在。从另一个侧面其实也可以看出更多的电脑知识可以减小中毒的机会。当然,一些被总结出来的安全操作行为规范也能够使得这种安全威胁的可能性降低。
3 网络的相关知识 3.1 网络是怎么进行通信的? 在这种发送与接收的过程中,协议起到了关键性的作用。协议通俗地讲就是通讯双方的约定,使得接收方能够正确将通过了通信线路的信息正确地还原,并能够理解发送方信息的含义。从最接近通信线路物理特征到最直接关系应用系统的数据,协议被分为了多个层次。其中规定通信双方物理接口、电气特征的协议被称为物理层,其上是数据链路层,再上面是网络层,最上是应用层。普通用户接触的主要是网络层和应用层的协议。 网络层最主要的协议就是TCP/IP协议,它是互联网的基础。其上的应用层协议有:应用于浏览网页的HTTP协议;收发邮件的POP3和IMAP协议;传输文件的FTP协议等等。 发送和接收的数据在两端经过了一个相反的协议处理过程。比如我们浏览网页时,在浏览器中输入一个地址,这个动作首先被解析为一个HTTP协议的GET请求,这个请求然后被转化网络层的TCP/IP数据包,最终通过物理层的协议转化为发送端的一系列电气信号;接受端将接受到的一系列物理信号通过物理层协议还原,然后向上层的协议递交,被还原层TCP/IP数据包,最后通过应用层的HTTP协议被还原成一个网页的GET请求,接收方的Web服务器于是通过这个GET请求的信息明白了用户端的需求,于是将相应的网页又通过一个相反的通信过程发送回去。
3.2 网络的一些基本概念 IP地址 由于人是不习惯于看二进制数的,你想,32个1和0的组合在一起,谁能轻易地区别这个和哪个?于是,这个32位的数被分为4组,每组8位,同时将8位的二进制数转化为十进制,并将每组用"."隔开。于是,我们看到的IP地址就是类似这样的:192.168.0.1、232.254.10.86、... 我们知道,8位的二进制数在0-255之间,所以"."隔开的每个数都在0和255之间。 有了这个唯一的IP地址后,一台电脑要想与另一台电脑通信,只要在通信的数据包中包含自己(源)的IP地址和要通信电脑(目的)IP地址就可以了。这也是每个IP包的基本特点,包含源和目的的IP地址。IP协议规定了,IP包的发送者在什么位置写和读源IP,什么位置读写目的IP。 互联网由很多个小网络(常常被称为子网)组成,同一个小网络中电脑的IP地址应该有共同的特征,这样便于区分和查找。于是规定同一个网络中IP地址的前面若干位是一样的,叫做网络地址,后面的若干位是子网中主机的地址。为了便于从一个IP地址中提取它的子网网络地址,基于二进制数的特点,人们规定了另一个32位的二进制数,它的前面由若干个1组成,位数与IP地址中网络地址的位数一样,后面剩下的位全部为0,并把这个数称为子网掩码,也就是说,要从一个IP地址中提取网络地址,只要将该IP与子网掩码进行二进制异或运算就可以了。例如,一个24位网络地址的IP地址192.168.1.1,子网掩码是255.255.255.0。可以看出,子网掩码中1的个数越多,子网中可以容纳的主机数越少,网络就越小。 由于互联网的迅猛发展,32位的网络地址发现相当的不够用。于是人们想出了IP地址重用的办法。即在一个网络内部,所有主机的IP地址可以跟互联网的IP地址重复,在外部是看不到这些内部的IP地址的。在内部网络的出口,常常是企业的网络防火墙,使用一种叫NAT(网络地址转换)的技术保证内部机器与外部的通讯。现在,已经有了一种128位IP地址的技术(叫做ipv6,传统32位的ip技术叫做ipv4),用来解决ip地址不够或其它一些32位IP地址上的技术难题。
一种叫静态IP地址,它是网络管理员或我们自己在安装配置电脑时输入的。当然,这个IP地址不是随便输入的,它要保证与同一网络的其它IP地址不冲突,并能够互相通信。 另一种叫动态IP地址,它是机器启动并联网时从互联网服务提供商的服务器,或者局域网服务器动态获得的。服务器上负责维护一个当前可用的IP地址列表,当网络中的主机请求IP地址时,服务器就从列表中选择一个给正在联网的主机。这种动态获取IP地址的技术叫做DHCP,前面讲述Windows服务时已经提到过。DHCP技术是解决IP地址冲突和用较少的IP地址支持一个较大网络的好办法,因为所有的地址都是服务器分配的,不会重复,同时并不是所有的机器都同时联网,只需要给正联网的机器分配IP地址就可以了。
一个域名代表一个逻辑上的子网络。域名前面再加一个主机名就代表子网络中的一台主机,比如我们最常见到的www.xxx.xxx,其中www就是xxx.xxx网络中一台主机名,这台主机被用来作为网站的web服务器,其实也可以取为任意的其它名字,只不过人们约定俗成了www代表一台web服务器。 机器在进行通信时并不认识域名,这是方便人识别、记忆和传播的。于是,需要一种机制,将逻辑的树形结构的域名转换为平面的IP地址。这种技术机制就是下面要讲的名字解析(DNS)。
互联网上的所有这些DNS服务器是协同工作的。比如处于.com.cn域的一台机器要访问.net.tw域的一台服务器,它会向本域的DNS服务器发出解析域名的请求,如果该域的DNS服务器如果本地没有.net.tw的地址缓存,那么它像上级的.cn域名服务器提出请求,.cn域名服务器向互联网根服务器请求,然后根服务器在向下追溯到能够解析.net.tw的DNS服务器,最后解析完的IP地址通过相反的方向返回,最后达到请求解析地址的主机。 所有的主机在配置网络连接互联网时,都必须配置联网需要使用的DNS服务器的地址。如果主机使用的动态IP,DNS服务器的地址也是动态得到的。在DOS下键入ipconfig /all命令可以看到当前DNS服务器的IP地址。 常常还有另一种需求,将IP地址解析为域名,这被称为IP反向解析,这也是由DNS服务器完成的。
[未完待续]
Author: Sanluxia |