前言:本文旨在分享交流技术,在这里对恶意代码进行全面的介绍和讲解
目录
一.什么是恶意代码
二.恶意代码的发展史
三.恶意代码的相关定义
四.恶意代码攻击机制
PE病毒
PE文件的格式
脚本病毒
脚本文件隐藏方法
宏病毒
浏览器恶意代码
U盘病毒
AutoRun.inf的关键字
网络蠕虫
网络蠕虫的工作流程
一.什么是恶意代码
目前,对于恶意代码始终没有一个统一的概念定义:
在百度百科中它是这样被定义的,恶意代码(Malicious Code)是指没有作用却会带来危险的代码,一个最安全的定义是把所有不必要的代码都看作是恶意的,不必要代码比恶意代码具有更宽泛的含义,包括所有可能与某个组织安全策略相冲突的软件。
定义一:恶意代码又称恶意软件。这些软件也可称为广告软件(adware)、间谍软件(spyware)、恶意共享软件(malicious shareware)。是指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益的软件。与病毒或蠕虫不同,这些软件很多不是小团体或者个人秘密地编写和散播,反而有很多知名企业和团体涉嫌此类软件。有时也称作流氓软件。
定义二:恶意代码是指故意编制或设置的、对网络或系统会产生威胁或潜在威胁的计算机代码。最常见的恶意代码有计算机病毒(简称病毒)、特洛伊木马(简称木马)、计算机蠕虫(简称蠕虫)、后门、逻辑炸弹等。
在网络安全事件中,恶意代码造成的经济损失占有最大的比例,与此同时,恶意代码成为信息战、网络战的重要手段。日益严重的恶意代码问题,不仅使企业及用户蒙受了巨大经济损失,而且使国家的安全面临着严重威胁。恶意代码的机理研究成为解决恶意代码问题的必需途径,只有掌握当前恶意代码的实现机理,加强对未来恶意代码趋势的研究,才能在恶意代码问题上取得先决之机。
二.恶意代码的发展史
恶意代码经过20多年的发展,破坏性、种类和感染性都得到增强。随着计算机的网络化程度逐步提高,网络传播的恶意代码对人们日常生活影响越来越大。
1988 年11 月泛滥的Morris蠕虫,顷刻之间使得6000 多台计算机(占当时Internet 上计算机总数的10%多)瘫痪,造成严重的后果,并因此引起世界范围内关注。
1998 年CIH病毒造成数十万台计算机受到破坏。1999 年Happy 99、Melissa 病毒大爆发,Melissa 病毒通过E-mail 附件快速传播而使E-mail 服务器和网络负载过重,它还将敏感的文档在用户不知情的情况下按地址簿中的地址发出。
2000 年5 月爆发的“爱虫”病毒及其以后出现的50 多个变种病毒,是近年来让计算机信息界付出极大代价的病毒,仅一年时间共感染了4000 多万台计算机,造成大约87 亿美元的经济损失。
2001 年,国信安办与公安部共同主办了我国首次计算机病毒疫情网上调查工作。结果感染过计算机病毒的用户高达73%,其中,感染三次以上的用户又占59%多,网络安全存在大量隐患。
2001 年8月,“红色代码”蠕虫利用微软Web 服务器IIS 4.0 或5.0 中Index服务的安全漏洞,攻破目标机器,并通过自动扫描方式传播蠕虫,在互联网上大规模泛滥。
2003 年,SLammer 蠕虫在10 分钟内导致互联网90%脆弱主机受到感染。同年8月,“冲击波”蠕虫爆发,8天内导致全球电脑用户损失高达20亿美元之多。
2004年到2006年,振荡波蠕虫、爱情后门、波特后门等恶意代码利用电子邮件和系统漏洞对网络主机进行疯狂传播,给国家和社会造成了巨大的经济损失。
2006年的熊猫烧香,短短几个月中感染的个人用户数就达到了几百万。
2010年6月首次被检测出来震网病毒(Stuxnet),是第一个专门定向攻击真实世界中基础(能源)设施的“蠕虫”病毒,比如核电站,水坝,国家电网。“震网”代码非常精密,主要有两个功能,一是使伊朗的离心机运行失控,二是掩盖发生故障的情况,“谎报军情”,以“正常运转”记录回传给管理部门,造成决策的误判。在2011年2月的攻击中,伊朗纳坦兹铀浓缩基地至少有1/5的离心机因感染该病毒而被迫关闭。
2011-12年,勒索软件时代的到来 Reveton 是现代勒索软件的原型,它基本包含现代勒索软件的全部要素,比如锁屏,支付赎金,解密文件等。 Reveton还具备由专业攻击组织运营的所有特征。它不仅在外观上很专业,而且还第一次使用了模板。锁屏将根据地理位置向用户显示不同的内容,并向受害者显示当地执法机构的信息,以及如何付款的说明。
2016年:第一个物联网僵尸网络Mirai,与传统的网络和终端用户设备不同,大多数物联网设备不需要维护。也就是说,它们不像电脑或智能手机那样自动接收更新信息。相反,它们经常被忽视,几乎从未被更新 Mirai 利用了这个漏洞,让它毫无困难地传播。
2017年,美国国家安全局(NSA)的“ShadowBroker”事件。 美国政府正在开发的秘密恶意软件遭到泄露,攻击者有效地重新利用了被发布的工具和漏洞,其中最著名的一个是“永恒之蓝” “永恒之蓝”是美国国家安全局保存的一个零日漏洞,其目标是微软的SMB(服务器消息块)协议(CVE-2017-0444)。
目前,恶意代码问题成为信息安全需要解决的,迫在眉睫的、刻不容缓的安全问题。如图显示了过去20 多年主要恶意代码事件:
恶意代码日趋复杂和完善:从非常简单的,感染游戏的Apple II 病毒发展到复杂的操作系统内核病毒和今天主动式传播和破坏性极强的蠕虫。恶意代码在快速传播机制和生存性技术研究取得了很大的成功。
恶意代码编制方法及发布速度更快:恶意代码刚出现时发展较慢,但是随着网络飞速发展,Internet 成为恶意代码发布并快速蔓延的平台。特别是近年来,不断涌现的恶意代码,证实了这一点。
三.恶意代码的相关定义
四.恶意代码攻击机制
- 感染标志模块:检测目标是否已经被感染过,若已感染过就不再感染,以避免重复感染次数过多而被检测出来。
- 引导模块:首先确定操作系统类型、内存容量、现行区段、磁盘设置等参数,根据参数的情况引导病毒,保护内存中的病毒代码不被覆盖。设置病毒激活和触发条件,使病毒处于可激活状态,以便病毒被激活后,根据满足的条件调用感染模块或破坏表现模块。
- 感染模块:检查目标中是否存在感染标识或感染条件是否满足,如果没有感染标识或条件满足,则进行感染,将病毒代码放入宿主程序。
- 破坏表现模块:实现方式各种各样,根据编写者的特定目标,对系统进行修改。
PE病毒
计算机病毒发展初期因为个人操作系统大多为DOS系统,这一时期大多为DOS病毒。由于Windows的广泛使用,DOS病毒几乎绝迹。但DOS病毒在Win9X环境中仍可以发生感染,因此若执行染毒文件,Windows用户也会被感染。DOS系统病毒主要分成三类:引导型病毒,文件型病毒,以及混合引导型和文件型的病毒。
Win32指的是32位Windows操作系统,Win32的可执行文件,如*.exe、*.dll、*.ocx等,都是PE(Portable Executable)格式文件,意思是可移植的执行体。感染PE格式文件的Win32病毒,简称为PE病毒。它感染Windows下所有PE格式文件,因为它通常采用Win32汇编编写,而且格式为PE,因此得名。
PE病毒数量多,破坏性大,技巧性强 PE病毒在任何Windows环境下都能运行,但是使用Win32汇编语言编写,需要做复杂的文件格式处理,对编程技术要求高。
PE文件的格式
脚本病毒
脚本(Script)病毒是以脚本程序语言编写而成的病毒,主要使用的脚本语言是VBScript和JavaScript。脚本病毒编写比较简单,并且编写的病毒具有传播快、破坏力大等特点。但脚本病毒必须通过Microsoft的WSH(Windows Scripting Host,Windows脚本宿主)才能够启动执行以及感染其他文件。
VBScript是Visual Basic Script的简称,即Visual Basic 脚本语言,有时也被缩写为VBS。因为VBScript 是微软公司出品的脚本语言,因此Windows下大部分脚本病毒都使用VBS编写。例如,爱虫病毒、新欢乐时光病毒等都是用VBScript编写的,称做VBS脚本病毒。
VBS病毒流行的另一个原因是,VBS程序在Windows环境下运行非常方便,在文本文件中输入代码,将文件的保存为“*.VBS”,双击就可以执行。例如在在文本文件中输入:MsgBox "Hello VBS",保存成“a.vbs”,双击就可以执行。
曾经广为流传的“新欢乐时光”病毒,将自己的代码附加在HTML文件的尾部,并在顶部加入一条调用病毒代码的语句。这里实现该病毒的部分感染功能,只感染病毒所在目录下的所有HTML文件,在HTML文件后面加上代码。
脚本文件隐藏方法
脚本文件为了实现自身隐藏,通常有三种方法:
- 方法一:通过将Windows安装的组件“Windows Scripting Host”卸载,来阻止VBS脚本程序执行。
- 方法二:通过改变VBS文件打开方式来阻止VBS脚本程序的执行。默认情况下VBS脚本文件使用wscrip.exe来打开并解释执行的,因此只要将VBS脚本文件改为用“记事本”notepad.exe来打开,那就不会感染这类病毒了。
- 方法三:脚本用户可在运行脚本之前验证其真实性。脚本开发人员对其脚本进行签名,以免发生未经授权的修改。管理员可以强制实施严格的策略,确定哪些用户有权修改本地或远程运行脚本。
宏病毒
宏病毒是单独的一类病毒,因为它与传统的病毒有很大的不同,他不感染.EXE、.COM等可执行文件,而是将病毒代码以“宏”的形式潜伏在Office文档中,当采用Office软件打开这些染毒文件时,这些代码就会被执行并产生破坏作用。
由于“宏”是使用VBA(Visual Basic For Application)这样的高级语言写的,因此其编写过程相对来说也比较简单,而功能又十分强大,如直接使用DOS系统命令调用Windows API、DLL等。这些操作均可能对系统直接构成威胁。
宏病毒的产生标志着制造病毒不再是专业程序员的专利,任何人只要掌握一些基本的“宏”编写技巧即可编写出破坏力极大的宏病毒。随着Office软件在全世界的不断普及,宏病毒成为传播最广泛、危害最大的一类病毒。
宏病毒是能够循环复制自身的,具有破坏作用的一个或多个宏的集合。目前常见的宏病毒根据破坏性主要有以下几种:
- 只进行自身的传播,并不具有破坏性的类型。
- 只对用户进行骚扰,但不破坏系统的类型。
- 使打印中途中断或打印出混乱信息的类型。
- 极具破坏性的类型。
浏览器恶意代码
搜索引擎公司Google曾公布一组调查数据显示,10%的网页含有恶意代码。Google调研人员从全球数以十亿计的网站中抽取的450万个网页的分析测试中发现,至少有45万个页面中含有恶意脚本,即平均每十个搜寻结果里,就有一个含有可能会破坏用户电脑的隐藏性恶意程序。而这还只是一个保守的估计,另外还有70万个网页被视为可疑页面。
国内的反病毒厂商江民科技发布了类似的数据,80%以上的用户是因为浏览网页而感染病毒,有近一半以上的用户是在使用搜索引擎搜索查看信息时感染病毒,同时上正规网站浏览信息未进行其它任何操作而莫名染毒的也占到了近三成的比例。
由于Windows自带的浏览器Internet Explorer使用的非常广泛,因此攻击这个浏览器的恶意代码非常多。因为浏览器大部分配置信息都存储在注册表中,所以针对浏览器的攻击大多是通过修改注册表来实现的。
U盘病毒
U盘病毒也称AutoRun病毒,能通过产生的AutoRun.inf进行传播的病毒,都可以称为U盘病毒。随着U盘、移动硬盘、存储卡等移动存储设备的普及,U盘病毒也开始泛滥,最典型的地方就是各个打字复印社,几乎所有电脑都带有这种病毒。 U盘病毒会在系统中每个磁盘目录下创建AutoRun.inf病毒文件(不是所有的AutoRun.inf都是病毒文件);
借助“Windows自动播放”的特性,使用户双击盘符时就可立即激活指定的病毒。病毒首先向U盘写入病毒程序,然后更改AutoRun.inf文件。 AutoRun.inf文件记录用户选择何种程序来打开U盘。如果AutoRun.inf文件指向了病毒程序,那么Window就会运行这个程序,引发病毒。一般病毒还会检测插入的U盘,并对其实行上述操作,导致一个新的病毒U盘的诞生。
AutoRun.inf的关键字
网络蠕虫
计算机蠕虫是一种可以通过网络连接进行自身复制的程序,与以往病毒方式不同,文件型病毒、宏病毒需要在计算机的硬盘、软盘或文件系统中繁殖,而典型的蠕虫只会在内存中维持一个活动副本,甚至根本不向硬盘写入任何信息。
自从1988年莫里斯从实验室研制出第一个蠕虫以来,蠕虫以其快速、多样化的传播方式不断给网络世界带来灾害。 特别是1999年以来,高危蠕虫不断出现,使世界蒙受了轻则几十亿,重则几百亿美元的巨大经济损失。
从编程角度来看,蠕虫由两部分组成:
- 主程序。一旦在计算机中建立,就开始收集与当前计算机联网的其他计算机的信息,能通过读取公共配置文件并检测当前计算机的联网状态信息,尝试利用系统的缺陷在远程计算机上建立引导程序
- 引导程序。负责把“蠕虫”病毒带到它所感染的每一台计算机中,主程序中最重要的是传播模块,实现了自动入侵的功能,U盘病毒具备蠕虫的一些特性,也可以将其归为蠕虫病毒
网络蠕虫的工作流程
根据蠕虫病毒的程序其工作流程可以分为漏洞扫描、攻击、传染、现场处理四个阶段 首先蠕虫程序随机(或在某种倾向性策略下)选取某一段IP地址,接着对这一地址段的主机扫描,当扫描到有漏洞的计算机系统后,将蠕虫主体迁移到目标主机。 然后,蠕虫程序进入被感染的系统,对目标主机进行现场处理。同时,蠕虫程序生成多个副本,重复上述流程。 各个步骤的繁简程度也不同,有的十分复杂,有的则非常简单。