计算机病毒传播的数学模型信息与计算科学2005级何金波指导教师陈涛副教授摘要: 在分析计算机病毒微观传染规律和传染机制的基础上,结合当前操作系统的特点,本文主要建立和分析了计算机病毒在单个计算机系统内的随机传染模型,并通过模型来分析计算机病毒的传播途径。
得出了在单进程操作系统环境下,病毒的感染数量呈线性增长,感染强度相对稳定;在多进程操作系统环境下,病毒的感染数量和感染强度都呈e的指数级增长。
关键词: 计算机病毒,数学模型,泊松过程,随机传染,MATLAB软件Mathematical model of the spread of the computer virusHE Jing-bo Information and Computational Science, Grade 2005Directed by Chen Tao (Associate Prof. Ph. D)Abstract: Based on the analysis of micro-computer viruses and virus transmission laws the transmission mechanism, combined with the characteristics of the current operating system, this paper analyzes the establishment and computer viruses within computer systems in a single random transmission model, and use the mathematical model to analyze the spread of computer viruses. Come, in a single process operating system environment, the number of infections is linear growth, intensity of infection is relatively stable; in a multi-process operating system environment, the number of virus infection and infection intensity of the exponential is Exponential growth. Keywords: Computer virus, Mathematical models, Poisson process, Random transmission, software of MATLAB0 引言随着计算机广泛的应用,人们开始关注与计算机有关的信息安全问题[1]。
在威胁计算机安全的众多技术之中有一种特殊的计算机程序实现技术——病毒,它对计算机系统的潜在危害性十分巨大。
计算机病毒的出现并不是偶然的,而是在计算机实现技术的脆弱性和特殊的政治、军事目的等多种因素共同作用下产生的。
目前,对计算机病毒尚没有一个统一的、确切的定义美国计算机安全专家Freerick cohen 博士将计算机病毒定义为[2]:计算机病毒是一个能传染其他程序的程序,病毒是靠修改其他程序,并把自身的拷贝嵌入到其他程序中而实现的。
B W.bumhan认为[3]:计算机病毒是一种能够使其自身的拷贝插入(通常以非破坏方式)到某个接受拷贝的程序中(或宿主程序中)的指令序列。
这些定义都从一定的角度阐述了计算机病毒的概貌,但这似乎还不够、仅仅是说明了计算机病毒的一些形式。
在国内,基本上有这样一个大家所普遍接受的计算机病毒的定义:计算机病毒是一种在计算机系统运动过程中能把自身精确拷贝或有修改地拷贝副其他程序体内的程序它具有隐蔽性、传染性、潜伏性、激发性和破坏性的特性,并且隐藏在可执行程序或数据文件中,是人为的小巧玲珑的程序软件。
病毒一般分成主控模块、传染模块、破坏模块和触发模块4个部分[4]:病毒程序:={ 感染模块:={ 循环:随机搜索一个文件;如果感染条件满足则将病毒体写入该文件;否则跳到循环处运行;}破坏模块:={ 执行病毒的破坏代码;}触发模块:={ 如果触发条件满足返回真;否则返回假;}主控模块:={ 执行传染模块:执行触发模块如果返回为真,执行破坏模块;执行原程序;}}病毒的传染模块主要完成病毒的自我复制,传染的一般过程[5]是:当病毒程序或染毒的程序运行时,病毒截取控制权,寻求感染突破口,当感染条件满足,即将病毒代码自制到宿主程序。
病毒的感染条件根据不同的感染方式有不同的类型。
例如常驻内存病毒一般修改系统中断,插入病毒中断程序,当某程序运行时,如果访问被病毒挂接的中断,则启动病毒中断程序,感染或破坏文件,否则运行原中断过程。
许多文件性病毒在获得运行机会时,会随机搜索相关目录下的可感染文件,判断感染条件,例如是否存在感染标记、可重复感染的次数、文件类型等,条件满足则进行感染。
不同类的病毒,甚至同类不同变种的病毒,它们的感染方式都有很大的不同。
传染是计算机病毒的主要特征之一[6],病毒的传染不仅提高了病毒的存活率,而且对计算机系统资源造成破坏和威胁。
计算机病毒的传染是以计算机系统的运行及读写磁盘为基础的。
没有这样的条件计算机病毒是不会传染的, 因为计算机不启动不运行时就谈不上对磁盘的读写操作或数据共享, 没有磁盘的读写, 病毒就传播不到磁盘上或网络里。
所以只要计算机运行就会有磁盘读写动作, 病毒传染的两个先条件就很容易得到满足。
系统运行为病毒驻留内存创造了条件, 病毒传染的第一步是驻留内存;一旦进入内存之后, 寻找传染机会, 寻找可攻击的对象, 判断条件是否满足, 决定是否可传染;当条件满足时进行传染, 将病毒写入磁盘系统。
根据病毒传染的途径不同,可将计算机病毒的传染分为单机传染、网络传染和人为传染。
单机传染指病毒在单计算机系统内的传染过程;网络传染则是病毒通过网络在网络的各个结点间的传播过程;人为传染则主要是通过人的行为进行的病毒传播,如文件复制或磁盘拷贝等等。
这里主要讨论单机传染。
在单个计算机系统内,病毒的传染主要有以下两类[7]:(1)消极传染:这类病毒的传染处于非主动状态,传染过程主要取决于外界的行为。
如常驻内存病毒,当它驻留内存时,如果外界程序的行为触发了它设置的条件,则病毒对其进行感染或破坏;否则该病毒不会进行传染。
(2)积极传染:这类病毒在获得运行机会时,会主动随机搜索相关文件,并进行感染。
目前,大多数病毒的传染属于这种类型。
计算机病毒程序的传染一般都有下面几个步骤[8]:(1)检查系统是否感染上病毒,若未染上,则将病毒程序装入内存,同时修改系统的敏感资源(一般是中断向量),使其具有传染病毒的机能;(2)检查磁盘(一般是硬盘)上的系统文件是否感染上病毒,若未感染上,则将病毒传染到系统文件上;(3)检查(主)引导扇区上是否染有病毒,若未感染上,则传染之;(4)完成上述工作后,才执行源程序。
通过病毒对文件感染过程的分析,可以知道被感染对象的哪些地方作了修改,病毒存放在什么部位,病毒感染条件以及感染后的特征等,作为以后诊断病毒、消除病毒和免疫的依据[9]。
计算机病毒的危害性[10]主要是对计算机资源的损失和破坏,不但会造成资源和财富的巨大浪费,而且有可能造成社会性的灾难,随着信息化社会的发展,计算机病毒的威胁日益严重,反病毒的任务也更加艰巨了。
1988年11月2日下午5时1分59秒,美国康奈尔大学的计算机科学系研究生,23岁的莫里斯(Morris)将其编写的蠕虫程序输入计算机网络,致使这个拥有数万台计算机的网络被堵塞。
这件事就像是计算机界的一次大地震,引起了巨大反响,震惊全世界,引起了人们对计算机病毒的恐慌,也使更多的计算机专家重视和致力于计算机病毒研究。
1988年下半年,我国在统计局系统首次发现了“小球”病毒,它对统计系统影响极大,此后由计算机病毒发作而引起的“病毒事件”接连不断,前一段时间发现的熊猫烧香、母马下载器[11]等病毒更是给社会造成了很大损失。
1 原理及方法1.1 反病毒软件的原理反病毒软件[14]的任务是实时监控和扫描磁盘。
部分反病毒软件通过在系统添加驱动程序的方式,进驻系统,并且随操作系统启动。
大部分的杀毒软件还具有防火墙功能。
反病毒软件的实时监控方式因软件而异。
有的反病毒软件,是通过在内存里划分一部分空间,将电脑里流过内存的数据与反病毒软件自身所带的病毒库(包含病毒定义)的特征码相比较,以判断是否为病毒。
另一些反病毒软件则在所划分到的内存空间里面,虚拟执行系统或用户提交的程序,根据其行为或结果做出判断。
而扫描磁盘的方式,则和上面提到的实时监控的第一种工作方式一样,只是在这里,反病毒软件将会将磁盘上所有的文件(或者用户自定义的扫描范围内的文件)做一次检查。
另外,杀毒软件的设计还涉及很多其他方面的技术。
脱壳技术,即是对压缩文件和封装好的文件作分析检查的技术。
自身保护技术,避免病毒程序杀死自身进程。
修复技术,对被病毒损坏的文件进行修复的技术。
杀毒软件有待改进的方面有:更加智能识别未知病毒查到病毒后,能够彻底清除病毒保护自身。
目前有些病毒,能够杀死杀毒软件的进程,再继续破坏防盗版技术(部分免费杀毒软件不存在此问题)虚拟机技术。
1.2 研究病毒传染的方法泊松过程[12]是一种累计随机事件发生次数的最基本的独立增量过程。
例如随着时间增长累计某电话交换台收到的呼唤次数,就构成一个泊松过程。
用数学语言说,满足下列三条件的随机过程X={X(t),t 0}≥叫做泊松过程。
①P(X(0)=0)=1。
②不相交区间上增量相互独立,即对一切12n 121n n-10t <t <...<t ,X(t ),X(t )-X(t ),...,X(t )-X(t )≤相互独立。
③增量X(t)-X(s) (t>s)的概率分布为泊松分布,即,式中X(t)为非降非负函数。
若X 还满足④X(t)-X(s)的分布仅依赖于t-s ,则称X 为齐次泊松过程;这时X(t)=t λ,式中常数>0λ称为过程的强度,因为E{X(t)}=X(t)=t λ,λ等于单位时间内事件的平均发生次数。
非齐次泊松过程[13]可通过时间尺度的变换变为齐次泊松过程。
对泊松过程,通常可取它的每个样本函数都是跃度为1的左(或右)连续阶梯函数。
可以证明,样本函数具有这一性质的、随机连续的独立增量过程必是泊松过程,因而泊松过程是描写随机事件累计发生次数的基本数学模型之一。
直观上,只要随机事件在不相交时间区间是独立发生的,而且在充分小的区间上最多只发生一次,它们的累计次数就是一个泊松过程。