【论文详解】Fred Cohen——“Computer Virus: Theory and Experiments“

本文内容架构

  1. 文献信息

  2. 论文详解

  3. 论文内容架构

  4. 总结

一、文献信息

文献索引

F. Cohen, “Computer viruses: Theory and experiments,” Computers & Security, vol. 6, no. 1, pp. 22–35, Feb. 1987, doi: 10.1016/0167-4048(87)90122-2.

Fred Cohen

Frederick B. Cohen(出生于 1956 年)是一位美国计算机科学家,因计算机病毒防御技术的发明者而闻名。他给出了“计算机病毒”的定义。——维基百科

  • Fred Cohen流传最广的故事便是1983年,他在美国南加州大学工程学院编写了一个具备病毒特性的程序,鉴于此事及其在计算机病毒方面的研究工作又被人们称其为“计算机病毒之父”。(关于“计算机病毒之父”,笔者认为他和我们一样都是普通的科学工作者罢了,我们可以去赞美他的研究为人类科学带来的贡献,但不必将一个人过度神圣化。)

  • Cohen在1983年写病毒程序这事儿在网上去查,得到的内容往往显示这事儿是他在南加州大学工程学院就读研究生的时候发生的,可能有人会觉得研究生就能做出这样的事情这个Cohen可真了不起,然而此“研究生”非彼“研究生”。也许在国内一提到研究生,大家都会以为是硕士,但事实上硕士和博士都可以被称为研究生,硕士是“硕士研究生”,博士是“博士研究生”,所以说一个人是研究生的时候未必就一定是硕士,这可能是大部分人(包括笔者)的思维惯性罢了。回到Cohen身上,其实1983年Cohen已经从匹兹堡大学拿到了硕士学位,正在南加州大学攻读博士学位,所以这里的“研究生”指的是博士研究生,所以硕士同学(其实是笔者自己,嘤嘤嘤)也不必过度自卑。

  • 这是文献原文对Fred Cohen的介绍,这里注意到机构介绍中提到了美国的里海大学和匹兹堡大学,但是里海大学并不是Cohen的母校,匹兹堡大学也不是Cohen搞出病毒的南加州大学,这是为什么呢?其实本文的发表时间回答了这个问题。该文献于1987年发表于Elsevier,而Cohen于1977年毕业于卡内基梅隆大学取得学士学位,于1981年毕业于匹兹堡大学取得硕士学位,然后于1986年毕业于南加州大学取得博士学位。显而易见1987年Cohen已经博士毕业了,里海大学自然就是他工作的部门,匹兹堡大学是合作部门,至于为什么是里海大学呢?其实Cohen于1956年出生于宾夕法尼亚州,他的两个母校卡内基梅隆大学和匹兹堡大学,还有这个里海大学也同样位于宾夕法尼亚州,剩下的就不需要过多解释了。

Abstract

本文首次引入了“计算机病毒”的概念并研究了“计算机病毒”的广泛传播对计算机系统所造成的伤害。文章展示了一些基础的理论成果以及大规模系统中病毒防护的不可行性,并阐述了病毒防御框架和部分实验结果。

Keywords

Computer Viruses,System Integrity,Data Integrity

计算机病毒、系统完整性、数据完整性


二、论文详解

2.1 Introduction

Paragraph 1

...The virus is interesting because of its ability to attach itself to other programs and cause them to become viruses as well...

该段首先介绍了文章的核心论述对象——计算机病毒;然后介绍了前人的工作;最后引出下文。(标准的introduction框架)

  • Cohen首先提到计算机病毒一个非常有趣的特征,那就是能够感染其他程序使之也变为计算机病毒。

      这个特征可以说是计算机病毒之所以称之为“病毒”的重要原因了,这种寄生繁殖的方式与生物学中的病毒及其相似(可以回想一下T2噬菌体侵染大肠杆菌的实验),笔者认为这应该是计算机病毒的核心特征了。

  • Cohen紧接着说,如果携带有Trojan木马的病毒在计算机相互共享的过程中得到传播将会对计算机系统集群(可能那个时候还没有计算机网络,所以笔者在这里用计算机集群代替)造成巨大的威胁。

      由此可见Trojan horse概念的诞生应该早于计算机病毒,否则Cohen不会不加说明地使用这个概念并附上参考文献。Cohen在这里提到“携带有Trojan木马的病毒”,从这点来看,计算机病毒和Trojan木马的关系就比较微妙了,但很显然的一点是,计算机病毒和Trojan木马在概念上没有包含和被包含的关系,后世的一些书籍中把Trojan木马归为计算机病毒的一类,从源头上来讲这种分类方法是不科学的。

  • 回到原文,前人都做了哪些工作呢?Cohen说,前人做的大部分工作都致力于防御信息的非法传播,但是有关如何防御进入一个领域的信息造成破坏的工作比较少;同时Cohen又提到在计算机系统中,信息传播的路径有很多,一类是合法且授权的,另一类是隐蔽的,比如通过用户的路径;然后Cohen对文章做了一个说明,在这篇论文中不去讨论通过隐蔽路径传播的信息。

      Cohen是从计算机病毒防御的角度来展开叙述的,他本人的工作也是有关计算机病毒防御的(白帽子嘛)。后面说的信息路径什么的读到这里我也没看懂,主要是不知道这几句话跟计算机病毒有啥关系,也许读完全文就知道了。

Paragraph 2

  • 前人所做的有关安全防御的工作,列举了针对一些攻击如dos攻击的防御手段,并说明了诸如精准标记信息流、非信任信息的阻拦等问题都属于NP完全问题,解决起来异常困难,防御攻击的能力十分有限。

Paragraph 3

  • 最新(1987年)出现的一些攻击手段。Xerox蠕虫程序,可以在网络中传播并且造成dos攻击;“芯片大战”,程序员间的一种游戏,他们让两个程序相互尝试吞并对方。

      从这里可以看出,蠕虫从概念上来讲也不能被划分为病毒,因为它的概念出现的比病毒早。当时的大环境下病毒程序的雏形已经隐约诞生,Cohen做了深入的研究将这类程序特征提取出来从而提出了计算机病毒的概念。

  • APL,一种编程语言。

Paragraph 4

  • 能够广泛传播的安全问题对政府、企业、科研机构等都构成了潜在的巨大威胁,目前(1987)来看这些组织或机构采取的防御措施大多是临时防御机制,没有一个建立在理论基础之上的稳定防御机制。就军方来看,对这类威胁所采取的主要应对方法就是有效的隔离,但是信息交互是新一代的系统一个重要设计理念,在已发表的各种研究中却并没有能够针对病毒攻击做出有效防御的技术

Paragraph 5、6、7

  • 文章的主要内容结构,先说计算机病毒感染传播的过程,再通过实验展示计算机病毒的极大威胁,最后举出一些防御计算机病毒的方法,并对文章做一个简要的总结。

      introduction这部分对文章主体内容和结构的介绍基本上算是对文章的概览,这对学习知识来讲是远远不够的,但是阅读这种概览会给人一种已经看完本篇文章的感觉,笔者竟有种怅然若失的感觉,甚至要对后面论文的本体失去部分兴趣。因此,笔者认为这种出现在文章开头部分的概述与书籍的绪论类似,应当在阅读完全文后再回过头来看这一部分,不仅会有更多的收获,笔者个人认为这样做能更大程度保留探索未知知识的乐趣,让阅读论文的过程少一些枯燥乏味。


2.2 A Computer Virus

We define a computer 'virus' as a program that can 'infect' other programs by modifying them to include a possibly evolved copy of itself. With the infection property, a virus can spread throughout a coumputer system or network using the authorizations of every user using it to infect their programs. Every program that gets infected may also act virus and thus the infection grows.

  • Cohen在这里应该是正式提出了计算机病毒的定义:即计算机病毒是这样一种具备“感染能力”的程序,这种“感染”的过程表现为计算机病毒会修改被感染的程序,修改后的程序会包含一段病毒本体或者变体的代码

  • 从Cohen给出的定义以及后面相应的解释可以看出,计算机病毒的核心在于“感染性”,也就是说使得原本“健康”的程序或计算机系统变得不再“健康”,这种“不健康”主要的表现是被感染的程序会表现得像病毒一样会在被运行的时候尝试感染其他程序或计算机系统。这种特性的确和生物学中的病毒极为类似,所以将这类程序命名为“病毒”实在是太贴切了(优雅,太优雅了~)。

  • Cohen在这里也提到了,计算机病毒感染其他程序的前提是用户使用(运行)了他们,而这种操作由于是由用户发出的,所以被计算机系统认为是合法授权的,也就是说计算机病毒的危害并在于非法传播过程而是在于被传播之后会对原有健康程序或系统进行恶意的修改,这也呼应了Introduction部分现有的研究大多是防御信息的非法传播,而通过合法途径进入到一个空间中的信息所造成的破坏却鲜有人研究(这大概就是创新性,不过笔者更喜欢研究意义这一说法)。

  • 按Cohen的说法,笔者认为,计算机病毒除了具备“感染性”这一核心特性外,还有一个隐藏的特性应该是“被动性”,也就是说病毒的传播和感染并不是主动的而是需要一定的触发条件的,比如运行病毒程序。显然,这一点很容易就让人联想到蠕虫程序,与病毒相比蠕虫程序显然更加主动,它会不断扫描计算机系统或网络中存在的缺陷并尝试入侵。可能这种性质会使得蠕虫看上去要比病毒危害更大一些,但笔者认为这种主动的攻击以及大范围的扫面很容易被一些防御措施检测出来从而使得入侵的成功率不会很高;相反病毒的被动触发性使得它具有很好的隐蔽性,例如一些防御机制可能会通过监控各个端口的访问情况来识别恶意攻击,可是病毒在触发之前就只是内存或者硬盘中的一段代码不会执行任何操作,这就使得病毒很难被检测出来,而当它被检测出来的时候,很可能系统中的许多资源都已经被悄无声息的“污染”了。

  • “狩猎的虎与冬眠的蛇”。笔者想到这里才渐渐发觉计算机病毒的可怕之处,与蠕虫程序这种狩猎的虎相比,病毒程序更像是冬眠的蛇,人们往往能够比较容易发现藏匿在山林中游荡狩猎的老虎,却很难注意到脚下草丛中一条冬眠的毒蛇,遇到老虎可以合力驱逐,可以理智逃跑,不管怎样我们都是占据主动的一方,可是一旦被蛇咬上一口,不管是否严重,我们至少已经流了血或者中了毒。(瞎写了一堆,就是觉得自己想出来的这个比喻好像挺不戳的哈哈~)

  • 上面展示的就是一个计算机病毒的伪代码。Cohen把一个计算机病毒分为三个模块:感染模块、破坏模块、条件触发模块。在主程序中,首先执行感染模块,在感染模块执行后根据条件触发模块的触发与否选择执行或不执行破坏模块。

      这恰恰印证了笔者之前的想法,即计算机病毒的核心特征是其感染性,体现在代码中感染模块的必然执行;除此之外计算机病毒虽然具有破坏性,但这种破坏性是需要被动触发的,这方面体现在代码中的条件判断语句。

  • 感染模块:这个模块的原理很简单,计算机病毒会不停地执行一个循环去寻找系统中没有“1234567”前缀的程序(也就是没有被感染过的程序),然后将病毒代码作为前缀插入到该程序中。注意到病毒程序本身就是带有“1234567”前缀的代码,所以将病毒本身插入到原程序中不仅使得原程序被感染(中毒)同时也给感染后的程序附加了“已被感染”的标记。这种给程序加标签的行为在蠕虫程序中也可以见到,这种标签被部分学者称为“指纹”。

      中毒后的程序由于具有病毒代码前缀所以在运行的时候就具有了病毒的特性,在运行时会尝试感染其他程序。(就像丧尸一样,不如以后笔者称这类被感染的程序为“丧尸程序”吧哈哈~)

      如果说破坏模块是病毒的主要威胁,那么感染模块的作用就是把这种威胁无限制地放大。感染模块就像打入我军内部的特务一样到处安装定时炸弹(或者说是不定时炸弹),炸弹越多被触发的可能性就越大,爆炸产生的威胁也可能越大。(嗯~,又用了比喻,忍不住哈哈)

...The key property of a virus is its ability to infect other programs, thus reaching the transitive closure of sharing between users. As example, if V infected one user A's executables (E), and user B then ran E, V could spread to user B's files as well...

  • Cohen在这里再次说明计算机病毒的核心性质在于“感染性”,条件触发和破坏性一些其他程序如蠕虫程序也会具有,但唯独“感染健康正常的程序”是计算机病毒的独特能力

  • 病毒的感染能力使它能够逐渐到达传播边界(笔者认为可以理解为宿主系统与其他系统的交互接口),然后通过传播边界感染新的系统。这个过程细想其实和其他攻击方式在细节处还是有很多不同的。

  • 由于计算机病毒的隐蔽性和感染性,在不能有效消灭系统内所有病毒的情况下,防止危害进一步扩大的最好办法就是isolation(隔离)。这点其实Cohen在Introduction部分有提到过。

It should be pointed out that a virus need not be used for evil purposes or be a Trojan horse...

...a compression virus...

  • 很想笑有没有,Cohen这是在劝人向善吗?作为一个科学研究工作者和一个白帽子,Cohen自然是希望世界和平美好的,可问题是并非所有人都这么想。笔者认为作为白帽子其实要比黑帽子考虑更多的攻击方式,只有尽可能多的罗列出攻击方可能的攻击方式(甚至是黑帽尚未使用的攻击),才能更好地应对来自网络世界形形色色的攻击。

  • Cohen还在后面举了一个利用病毒完成友好任务的例子——压缩病毒。这种病毒我就不展开说了,我估计Cohen在这里也就是想通过这个例子展示如何去利用病毒的传染性,例子里实现的功能完全没必要使用病毒来完成,甚至使用病毒去完成任务还会产生一些问题,当然也没必要展开去说。

...do-damage as an infinite loop...

  • 最后两段话主要是将计算机病毒的巨大危害。Cohen在这里举了一个例子,比如将病毒的破坏模块设置为死循环,而将触发条件设置为某个特定的时间点,那么如果这种病毒得到了广泛传播,当“毒发”的时候就会造成大面积的系统瘫痪,而且这种破坏的修复往往要付出较大的代价。这点倒是没什么好说的,可以联想一下勒索病毒。

  • 笔者在吃饭时想,什么样的病毒才算是“优秀的”病毒呢?也就是说,三大模块:感染模块、条件触发模块、破坏模块要如何设计才能使一个病毒的威胁达到最大呢?(感觉是不错的一个命题呢)


2.3 Prevention of Computer Viruses

2.4 Cure of Computer Viruses

2.5 Experiments with Computer Viruses

2.6 Summary, Conclusion, and Further Work

三、论文内容架构

四、总结

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChangF Li

告诉小丑,蝙蝠侠找到了!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值