从《钢铁侠》里现代软件工程设计思想谈起
第四届CCF计算机科普内容征集活动
优秀科普图文作品
从《钢铁侠》里现代软件工程设计思想谈起
作者:大东话安全团队
一、《钢铁侠》
大东:在经历了二月份春节贺岁档的影市爆发后,三月相对来说蕴藏了更多感动。
小白:对对对,三月上映的电影对我们来说简直就是春天中的“春天”!
大东:哟,看来小白还是个电影迷呀!那你有什么特别关注的电影吗?
小白:《惊奇队长》!
大东:的确,简单点来说,《惊奇队长》就是漫威宇宙第三阶段收官(《复仇者联盟4》)的前哨战。她的出现,预示着老复联的谢幕和新英雄的崛起。
小白:作为漫威老粉,我可真是迫不及待了。
大东:从2008年到2018年,我们见证了漫威光辉十载,铸就英雄之路。那小白你最喜欢漫威哪一个英雄呢?
小白:“我愿用我所有的能力守护我爱的一切,因为有了你我才知道自己要不断变强,因为守护过世界,我才找到了自己与战衣的意义。”
大东:没有钢铁侠就没有漫威电影。
小白:钢铁侠就是我心目中的英雄!
大东:哈哈,那你知道钢铁侠的战甲吗?
小白:那当然了,钢铁侠的战甲可是一代一代不断升级的。《钢铁侠1》和《钢铁侠2》的战甲是成套的,无法拆开的,但到了《钢铁侠3》的时候战甲就是分离的了,胳膊是胳膊,腿是腿。
大东:嗯嗯,这就是我们目前常说的现代软件工程的设计思想。
小白:嗯?这个怎么说?
大东:哈哈这你就不懂了吧,听我慢慢道来。
二、组件化设计
大东:我们先来说软件工程。软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法集合起来。
小白:那现代软件工程指的是什么呢?
大东:软件在发展,软件工程也在发展中。现在软件工程是在传统软件工程基础上发展起来的,既是传统软件工程概念和技术的自然演化,又具有区别于传统软件工程的独特的基本特征。
小白:怎么说?
大东:软件工程是一门涉及软件计划、需求分析、设计、编码、测试和维护的原理、方法及工具的研究和应用的学科。
小白:范围这么广!
大东:《钢铁侠3》里面可分离的战甲就是一种组件化的设计方式,这个也是现代软件工程的设计思想。
小白:长知识了!
大东:说到组件化,小白你还记得我们上一次提到的病毒吗?
小白:当然啦,就是蠕虫病毒嘛!我还记得这个病毒能自动扫描程序的漏洞,并不断复制,一旦发现其他目标,又能迅速扩散,非常活跃。
大东:小白果然不错,说过的东西都能记得。
小白:哈哈。那蠕虫病毒和组件化之间有什么联系呢?
三、Flame病毒
大东:我们拿火焰病毒(Flame,又名Flamer,sKyWIper,Skywiper)举例,它的攻击原理就是组件化——先扔给受害者一个感知模块,了解用户的环境属性,再针对具体情况进行不同攻击模块的加载。
小白:Flame!我要记住这个名字。
大东:火焰病毒是一种2012年5月被发现的计算机病毒,也译作“超级火焰”,以Lua和C++语言写成,利用微软公司Windows操作系统的两处瑕疵侵入计算机并注入其他程序,被称为有史以来最复杂的恶意软件,在中东大范围传播。
小白:听这个名字就很…
大东:火焰病毒伪装成微软开发的合法程序,侵入个人计算机,窃取私密数据。主要功能在收集个人信息,并上传到网络,以数种方式进行活动,包括录音、截取屏幕画面、侵入邻近的蓝牙设备等。大小约为20MB,包含数个模块,包括解压缩程序库、SQL数据库、和Lua虚拟器等。
小白:那不会被发现吗?
大东:因为它在收到指令的情况下,会自我删除,而且其注入其他程序后,会将自己所在内存区块设置为用户态不可读、用户态不可写、用户态不可执行,所以很难被用户态下的其它程序侦测出来。
小白:这也太恐怖了吧。
大东:火焰病毒和熊猫烧香一样也是一种经过多次变种的“蠕虫病毒”变种,2005年10月9日开始肆虐网络,它主要通过下载的档案传染。对计算机程序、系统破坏严重。
小白:果然病毒与病毒之间都是有联系的啊。
四、臭名昭著的Stuxnet(震网)病毒
大东:既然如此我就不得不说到这个~
小白:嗯?还有什么?
大东:Flame病毒的出现引起了人们对于网络间谍活动和网络战争的高度关注。伊朗方面认为,Flame病毒与之前针对工业系统的臭名昭著的Stuxnet(震网)病毒有密切的关联。
小白:果然真的病毒之间都是有联系的!
大东:根据分析,Flame病毒是一种模块化的、可扩展和可更新的,具有广泛隐蔽性和很强攻击性的威胁。Flame病毒有强大的攻击能力,它可以运行于Windows XP、Windows Vista 和 Windows 7 系统、像Stuxnet一样把自己隐藏为名为“ ~ ”的临时文件,同时使用内核模式和用户模式逻辑等等。
小白:而且“功能强大”。
大东:总体而言,Flame病毒在一些工作原理上与 Stuxnet 十分类似,但代码库和具体实施上则差别很大。
小白:所以Flame病毒更加复杂,攻击能力更强吗?
大东:就是如此,Flame采用了相似但又复杂得多的结构,这在很多方面都提醒了研究人员,这些攻击具有高危性。
小白:说的我毛骨悚然啊,那它和刚才说的Stuxnet病毒有什么区别呢?
大东:通过分析,可以发现虽然Flame病毒代码库与Stuxnet蠕虫病毒不同,但二者的攻击目标和技术非常相似。显然,这一威胁经过了数年的开发,幕后很可能是一支训练有素的大型而专门的团队。
小白:要不然也不可能平白无故这么厉害吧。
大东:Stuxnet于2010年7月被发现,这种蠕虫病毒专门针对德国西门子公司设计制造的供水、发电等基础设施的计算机控制系统。 Stuxnet当年成名的一个重要原因在于其使用了“零日漏洞”攻击,即病毒编写者利用自己发现的4个系统漏洞,在软件公司发布补丁之前发起攻击。而Flame病毒利用的已知漏洞中就包括Stuxnet曾攻击的两个漏洞。
五、防范
小白:大东,Flame 病毒这么危险,有没有什么预防的办法呢?
大东:Flame 病毒的危险性是无容置疑的,对于政企等涉密机构来说 Flame 病毒绝对是需要重点防范的对象。目前已有多种 Flame 病毒检测工具,勿须对 Flame 病毒感到紧张。
小白:检测一下就ok!
大东:综合来说,Flame 病毒依旧处于“雷声大,雨点小”的状态,目前还没有证据表明 Flame 病毒在中国存在实际上感染的事例,因此我们无需太过紧张。Flame 病毒因为之前的stuxnet 和 Duqu 病毒所带来的“狼来了”的效应使得它获得很大的关注,这在一定程度上使其危害性得到了不少放大,那些“最**”就是记号。诚然,它本身的危险性确实很高,但综合来说还是一款针对政企的工业病毒,对普通用户来说直接威胁性不是很大。
小白:作为普通用户的我,那就是一点都不用担心咯?
大东:哈哈,当然这也不能作为我们麻痹大意的借口,该预防一下还是要预防一下。
小白:那有些什么措施呢?
大东:平时多进行病毒查杀,做好备份,一旦出事立马格机,然后再原地满血复活。
小白:做好备份那是一定要的啦~
大东:哈哈!聪明的小白。