购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.7 计算机病毒环境

如同什么样的外部自然环境决定了何种生物能存活其中一样,计算机病毒的发展与其外部环境也息息相关。从理论上说,任何给定的字符序列,都可定义一个环境,使该序列在其中自我复制。但从实践上说,需要创造这样的环境,使该字符序列可在其中执行,并明确其利用自身代码完成自我复制功能,且可递归地复制下去。计算机病毒环境是计算机病毒赖以生存其中,并能完成其相应功能的计算机软硬件支撑系统,大致包括计算机体系结构、操作系统、文件系统及文件格式、解释环境等(见图1-14)。

图1-14 计算机病毒环境

1.7.1 计算机体系结构依赖

计算机体系结构(Computer Architecture)是描述计算机各组成部分及其相互关系的一组规则和方法,是程序员所看到的计算机属性,即概念性结构与功能特性。计算机体系结构主要包括:计算机组织结构(Computer Organization)和指令系统结构(Instruction Set Architecture,ISA)。

1.冯·诺依曼结构

冯·诺依曼结构的存储程序和指令驱动执行原理是现代计算机体系结构的基础。冯·诺依曼结构的主要特点是:①计算机由存储器、运算器、控制器、输入设备、输出设备五部分组成,其中,运算器和控制器合称为中央处理器(Central Processing Unit,CPU)或处理器。②存储器是按地址访问的线性编址的一维结构,每个单元的位数固定;指令和数据不加区别混合存储在同一个存储器中。③控制器从存储器中取出指令并根据指令要求发出控制信号控制计算机的操作。控制器中的程序计数器指明要执行的指令所在的存储单元地址。程序计数器一般按顺序递增,但可按指令要求而改变。④以运算器为中心,输入/输出(Input/Output,I/O)设备与存储器之间的数据传送都经过运算器。

2.指令系统结构

计算机系统为软件编程提供不同层次的功能和逻辑抽象,主要包括应用程序编程接口(Application Programming Interface,API)、应用程序二进制接口(Application Binary Interface,ABI)及指令系统结构ISA三个层次。

API是应用程序的高级语言编程接口,在编写程序的源代码时使用。常见的API包括C语言、Fortran语言、Java语言、JavaScript语言接口及OpenGL图形编程接口等。使用一种API编写的应用程序经重新编译后可以在支持该API的不同计算机上运行。

ABI是应用程序访问计算机硬件及操作系统服务的接口,由计算机的用户态指令和操作系统的系统调用组成。为了实现多进程访问共享资源的安全性,处理器设有“用户态”与“核心态”。用户程序在用户态下执行,操作系统向用户程序提供具有预定功能的系统调用函数来访问只有核心态才能访问的硬件资源。

ISA是计算机硬件的语言系统,也叫机器语言,是计算机软件和硬件的界面,反映了计算机拥有的基本功能。计算机硬件设计人员采用各种手段实现指令系统,软件设计人员使用指令系统编制各种软件,用这些软件来填补指令系统与人们习惯的计算机使用方式之间的语义差距。ISA通常由指令集合、处理器状态和例外三部分组成。

3.计算机病毒的体系结构依赖性

由于计算机体系结构涉及数据表示、寻址方式、指令系统、中断系统、存储系统、输入输出系统、流失线处理机、超标量处理机、互联网络、向量处理机、并行处理机、多处理机等计算机相关属性,作为程序代码的计算机病毒要在其中执行,必须依赖相关体系结构并遵循相关指令系统,才能利用代码获得对该体系结构的操控权。

所谓的计算机病毒体系结构依赖性,是指任何计算机病毒都必须依赖一种特定的计算机体系结构。计算机病毒的代码编写与运行,都必须依赖特定体系结构中的指令系统和操作系统环境。从理论上说,跨体系结构、跨平台的计算机病毒是能够被设计编写出来的,但实践中通常难以编写出这样的病毒代码,这也是曾经“毒霸一方”的Apple II体系结构中的Elk Cloner病毒,在IBM PC及其兼容机上“风光不再”的主要原因。

1.7.2 计算机操作系统依赖

操作系统(Operating System,OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互操作的界面。

1.操作系统功能

操作系统主要包括以下几个方面的功能:

(1)进程管理:主要工作是进程调度。在单用户单任务的情况下,处理器仅为一个用户的一个任务所独占,进程管理的工作十分简单。但在多道程序或多用户的情况下,要组织多个作业或任务,就要解决处理器的调度、分配和回收等问题。

(2)存储管理:分为存储分配、存储共享、存储保护、存储扩张几种功能。

(3)设备管理:分为设备分配、设备传输控制、设备独立性几种功能。

(4)文件管理:包括文件存储空间的管理、目录管理、文件操作管理、文件保护。

(5)作业管理:负责处理用户提交的任何要求。

2.操作系统对CPU的依赖

一般而言,操作系统必须要依赖一些基本的硬件,或者说需要一些基本硬件的支持,主要包括CPU、内存、中断、时钟等。这里主要介绍CPU的架构、模式等相关特性对操作系统的影响。

CPU架构主要分为:①ARM架构,是一个32位精简指令集(RISC)处理器架构,广泛地使用在许多嵌入式系统设计;②x86架构,是CPU执行的计算机语言指令集,基于Intel 8086且向后兼容的中央处理器指令集架构,包括Intel 8086、80186、80286、80386及80486,由于以“86”作为结尾,因此其架构被称为“x86”,应用于个人计算机、服务器等。

CPU模式,是指CPU的工作状态,以及对资源和指令权限的描述。CPU模式主要有:①内核模式(Kernel Mode),也称核心态或者管理者模式,程序可以访问系统的所有资源,CPU全部指令可以无限制执行,也可以对运行模式进行任意切换;②用户模式(User Mode),也称用户态,应用程序不能访问一些受操作系统保护的资源,应用程序也不能直接切换处理器模式,如果要进行模式切换,则必须产生中断以进入特权模式。

3.计算机病毒的操作系统依赖性

计算机病毒作为一种可执行文件,其正确运行依赖操作系统及相应的CPU指令集。可执行文件中的二进制指令由CPU根据某些指令集解码,多数CPU支持x86(32位)和/或AMD64(64位)指令集。可执行文件还必须符合某种二进制格式,这样操作系统才能正确加载、初始化和启动程序。Windows系统使用可移植可执行(Portable Executable,PE)格式,而Linux系统则使用可执行可链接(Executable Linkable Format,ELF)格式。此外,可执行文件还需要系统API支持,如果程序使用Windows API,则不能在Linux上运行,反之亦然。

由于操作系统是针对特定的CPU体系结构进行的设计编码,加之不同操作系统所采用的文件格式、系统API、存储管理及符号约定等均不相同,因此,在一种操作系统中设计编写的计算机病毒,通常无法运作于另一种不同的操作系统环境中。这种计算机病毒的操作系统依赖性也是DOS病毒无法运作于Windows系统的主要原因。

1.7.3 文件系统及文件格式依赖

文件系统与文件格式均对应于具体的操作系统。不同的操作系统,其所支持的文件系统和文件格式均不相同。计算机病毒在设计编写时,其默认的出厂设置就是其所依赖的具体操作系统中的文件系统和文件格式。

1.文件系统

文件系统(File System),是操作系统用于明确存储设备(磁盘、固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的组件被称为文件管理系统,简称文件系统。文件系统主要由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存储的文件进行保护和检索的系统。

文件系统其实是对磁盘数据进行基本管理的一个软件层。引入文件系统,磁盘上不仅要存放文件数据本身,还需要有对这些数据进行管理的数据,比如文件起始位置、大小、创建时间等。这些数据又称元数据(Metadata)。不同文件系统的元数据是不一样的。元数据会占用额外的磁盘空间,但总体比例不大,它对功能的实现与性能的提升有非常重要的作用。格式化文件系统,其实就是写入一些初始化元数据的过程。Windows系统常用FAT、NTFS等文件系统,Linux系统常用ext4、XFS、BTRFS等文件系统。

2.文件格式

文件格式(或文件类型),是指为了存储信息而使用的对信息的特殊编码方式,用于识别其中储存的信息。每一类信息,都可以使用一种或多种文件格式存储于计算机中。每一种文件格式通常会有一种或多种扩展名用以识别,但也可能没有扩展名。扩展名可以帮助应用程序更好地识别文件格式。

不同文件格式被设计用于存储特殊的数据。例如,JPEG文件格式仅用于存储静态图像,而GIF文件格式既可存储静态图像,也可存储简单动画;Quicktime格式则可存储多种不同的媒体类型;TXT文件一般仅存储简单的ASCII或Unicode的文本;HTML文件可存储带有格式的文本;PDF格式则可存储图文并茂的文本。此外,相同的文件格式,如用不同程序处理则可能会产生截然不同的结果。例如,对于DOC文件,用Microsoft Word可看到其文本内容,而以无格式方式在音乐播放软件中播放,产生的则是噪声。一种文件格式对某些软件会产生有意义的结果,而对其他软件则可能是毫无用途的数字垃圾。

3.计算机病毒对文件系统及文件格式的依赖性

无论计算机病毒以什么形式呈现,其最终表现形式肯定是一种运行于特定操作系统中的某一具体格式的文件。计算机病毒运行的操作系统,决定了其对相应文件系统的依赖。计算机病毒所采用的文件格式,同样决定了其对相关文件格式的依赖。例如,计算机病毒是运行于Windows系统中的EXE文件,则该病毒对Windows系统的FAT32或NTFS文件系统及PE文件格式具有依赖性,如缺乏该环境支持,计算机病毒将无法正常运行。

类似地,如计算机病毒为运行于Linux系统的ELF文件,它必定依赖Linux系统的文件系统(ext2、ext3、ext4、XFS、BRTFS、ZFS等)和ELF文件格式。如计算机病毒为运行于MacOS系统的Mach-O文件,则它将依赖MacOS系统的文件系统APFS(Apple File System)和Mach-O文件格式。

1.7.4 解释环境依赖

对于脚本类计算机病毒,其能否正常运行与目标系统上的解释环境有极大关系。只有借助于相应的脚本解释器,此类脚本病毒才能正常运行。当此类脚本病毒传播至目标系统后,如没有相应的脚本解释系统,则此类病毒将因没有解释器支撑而无法运行。

1.Windows Script Host解释环境

Windows Script Host(简称WSH),是Windows操作系统脚本语言程序的执行环境。Windows Script Host最早出现在Windows 98,经过不断发展与强化,随后的Windows操作系统(包括客户端与服务端版本)都内置了WSH。WSH架构于ActiveX之上,通过充当ActiveX的脚本引擎控制器,WSH为Windows用户充分利用威力强大的脚本指令语言扫清了障碍。用户通过Windows Script Host能自行编写一些程序,用以简化日常工作流程,或制作一些实用的系统管理程序。

后缀名为.vbs或.js的脚本类文件(包括计算机病毒),在Windows系统下执行时,会自动调用一个适当的程序来对它进行解释并执行。而这个程序就是Windows Scripting Host,程序执行文件名为Wscript.exe(若在命令行下,则为Cscript.exe)。

2.Powershell解释环境

PowerShell(包括Windows PowerShell和PowerShell Core)是微软公司开发的任务自动化和配置管理架构,由在.NET Framework和后来的.NET上构建的命令行界面壳层相关脚本语言组成,最初仅是Windows组件,后于2016年8月18日开源并提供跨平台支持。在PowerShell中,管理任务通常由cmdlets(发音为command-lets)执行,这是执行特定操作的专用.NET类。可将cmdlets集合至脚本、可执行文件(一般是独立应用程序)中,或通过常规.NET类(或WMI/COM对象)实例化。

Windows PowerShell将交互式环境和脚本环境组合在一起,从而允许操作人员访问命令行工具和COM对象,同时还可利用.NET Framework类库(FCL)的强大功能。此环境对Windows命令提示符进行了改进,后者提供了带有多种命令行工具的交互式环境;此外,还对Windows Script Host(WSH)脚本进行了改进,后者允许操作人员使用多种命令行工具和COM自动对象,但未提供交互式环境。

Windows PowerShell扩展了交互用户和脚本编写者的能力,从而更易于进行系统管理,cmdlets式命令和.ps1文件都能在Powershell环境中执行。Powershell式无文件病毒的流行,使其对Powershell解释环境的依赖加强。在缺乏相应版本支持的目标系统中,此类计算机病毒可能无法正常运行。 OyimOgUhI9IDKzpHVwhOWOAYXyJghHbAaoBi4SqKeMSCS4jMaIUUrLAeMb27UA/G

点击中间区域
呼出菜单
上一章
目录
下一章
×