分享

宏病毒研究1

 黑犬黑犬_924 2019-05-28
本系列文章将由浅入深对宏病毒进行全面的剖析。本系列文章共有三个部分,第一部分是入门篇,介绍的是基础理论知识;第二部分是提高篇,对宏病毒进行实例分析,介绍了宏病毒分析的技巧以及一些防治手段;第三部分是深入篇,我们会研究更底层的东西,解析Offcie文档、分析宏数据在文件中的存储方式并研究宏病毒处理的方式。

1. 绪论
宏病毒是一种常见的计算机病毒,寄存在文档或模板中,但是并不会直接感染可执行程序。其诞生于上世纪90年代,自其诞生之日,各种各样的宏病毒不断在网络上涌现。早期的宏病毒是病毒先驱者们展现高超技术的舞台,只感染文档文件,随着时间的推移,宏病毒的危害也越来越大,宏病毒不再只是感染文档文件,而成为了分发恶意程序的常规途经。宏病毒的执行简易隐蔽快速,一旦用户打开含有宏病毒的文档,其中的宏病毒就会被执行。

对于攻击者而言,宏病毒是一把利器,尤其是结合了社会工程学的宏病毒。如乌克兰电网事件(BlackEnergy),工作人员只是打开了一篇看似很正常的文档,然后便造成了无法挽回的损失。不只是BlackEnergy,近来肆虐的各种各样的勒索软件,都离不开Office宏的帮助。借助传统的宏病毒,一旦用户打开含有宏病毒的文档,其中的宏病毒就会被执行,释放并激活恶意软件。

2. 基础知识
2.1宏与宏病毒
宏(英文Macro),广义上的定义是:宏就是把一系列的指令组织成一独立的命令,类似C语言中#define宏定义,避免同一动作的一再重复;狭义上,宏特指office系列办公软件中的宏,Microsoft Office中对宏的定义为“宏就是能够组织在一起的,可以作为一个独立命令来执行的一系列Word 命令,它能使日常工作变得容易。”本文中提到的宏,采用了狭义的定义,即office办公软件中的宏。

使用office文档文件(demo1.doc)时,有时候我们会遇到如下图所示的“安全警告”,这说明该文档文件中含有宏,并且office软件设置了“宏禁用”功能。





这个时候,单击“启用内容”按钮,宏就会执行。
使用快捷键Alt+F11可以打开vb编辑器,查看宏代码:
本例中的宏很简单,其作用就是弹出一个对话框。
执行恶意功能的宏就是宏病毒。

宏病毒是使用宏语言编写的恶意程序,存在于字处理文档、电子数据表格、数据库、演示文档等数据文件中,可以在office系列办公软件中运行,利用宏的功能将自己复制到其他数据文件中。宏病毒感染的是数据文件。宏病毒与传统的病毒有很大的不同,它不感染可执行文件,而是潜伏在Microsoft Office文档中,一旦用户打开含有宏的文档,其中的宏就会被执行。宏是使用VBA编写的,编写过程简单,任何人只需掌握一些基本的宏编写技能就可以编写出破坏力巨大的宏病毒。

宏病毒的强大是建立在强大的VBA组件的基础上的。同时,宏病毒与系统平台无关,任何计算机如果能够运行Microsoft Office办公软件,都有可能感染宏病毒。随着Microsoft Office系列办公软件成为电子文档的工业标准,Word,Excel和PowerPoint等已成为个人计算机和互联网上广泛使用的文档格式,宏病毒成为传播最广泛,危害最大的一类病毒。

根据文档载体的不同,宏病毒可以细分为很多种,Word、Excel、Access、PowerPoint等都有想应的宏病毒。

2.2 VB基础
宏是使用VB语言编写的,所以在进一步研究宏病毒前,我们必须掌握VB的基础知识。本文介绍的VB知识,只是VB的皮毛,以便于在接下来宏病毒分析过程中,我们可以迅速理清宏代码。

打开demo3.doc,我们以其为例进行讲解。其代码如下:
[Visual Basic] 纯文本查看 复制代码
?
1
2
3
4
5
6
Sub autoopen()
b
End Sub
Function b()
MsgBox ActiveDocument.BuiltInDocumentProperties(5)
End Function

(1)sub与function
上述宏代码中,含有一个Sub和一个Function。sub和function都类似于C中的函数。sub在VB中被称为过程,function被称为函数;sub没有返回值,function有返回值;一段宏一定是从sub开始执行的。在demo3中定义了一个过程 autoopen(),“End Sub”表示这个过程的结束。

(2)VB基本函数
demo3 中“MsgBox ActiveDocument.BuiltInDocumentProperties(5)”调用了VB基本函数“MsgBox”,参数是"ActiveDocument.BuiltInDocumentProperties(5)"。这里实际上是“MsgBox (参数)”,但是VBA的容错率较高,不写括号,宏代码依然能够执行。即使我们将“MsgBox”写成“MSgbOx”,宏代码依然能够执行。一些宏病毒就是使用大小写混淆,增加病毒分析难度。

除了MsgBox,VB中还有很多基本函数,各位可以百度“VB函数大全”。

(3)对象
VB中存在很多对象,如Application对象,Document对象,Adobd.stream对象等。对象实际上是代码和数据的组合,我们在使用对象时,要么使用对象的属性(就是数据),要么使用对象的方法(就是代码)。通过 “对象.属性/方法”的方式使用对象的属性/方法。ActiveDocument.BuiltInDocumentProperties(5)中就是使用了ActiveDocument对象的BuiltInDocumentProperties()方法,参数是5。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多