0%

软件安全——第6章

Chapter 6 宏病毒和脚本病毒

6.1 宏的基本概念和使用

宏(Macro):能组织到一起作为独立的命令使用的一系列word命令,可以实现任务执行的自动化,简化日常工作。

6.2 宏病毒

存在于数据文件或模板中(字处理文档、数据表格、数据库、演示文档等),使用宏语言编写,利用宏语言的功能将自己寄生到其他数据文档。

在Word宏中,使用AutoOpen、AutoClose、AutoExec、AutoExit、AutoNew等函数能够自动进行文件的打开与关闭、命令的执行等操作。在Excel宏中可以使用AutoOpen、AutoClose、AutoActivate、AutoDeactivate等。

宏病毒感染

宏分为两种:

  • 内建宏:位于文档中,对该文档有效,如文档打开(AutoOpen)、保存、打印、关闭等。
  • 全局宏:位于office模板中,为所有文档所共用,如打开Word程序(AutoExec)。

其传播路线为:
单个文档->office模板->多个文档
在网络中多以电子邮件的形式传播(Mellisa病毒)

感染方案:让宏病毒在数据文档和文档模板之间互相感染。

宏病毒代码中包含自我保护、代码导出与导入等模块,其中自我保护指关闭警告弹窗显示、关闭进度条显示、关闭病毒防护等。代码导出即将病毒代码保存到某个位置便于后续感染该计算机上的其他文档。代码导出即从该路径导入宏病毒以进行传播。

自我保护

  1. 禁止提示信息
  • On Error Resume Next '如果发生错误,不弹出出错窗口,继续执行下面语句
  • Application.DisplayAlerts = wdAlertsNone '不弹出警告窗口
  • Application.DisplayStatusBar = False '不显示状态栏,以免显示宏的运行状态
  • Options.VirusProtection = False '关闭病毒保护功能,运行前如果包含宏,不提示
  • Options.SaveNormalPrompt = False '如果公用模块被修改,不给用户提示窗口而直接保存
  • Application.ScreenUpdating = False '不让刷新屏幕,以免病毒运行引起速度变慢
  • Application.EnableCancelKey = wdCancelDisabled ‘不允许通过ESC键结束正在运行的宏
  1. 屏蔽命令菜单,不允许查看宏
  • 通过特定宏定义屏蔽
    1
    2
    3
    Sub ViewVBCode()
    MsgBox "Unexcpected error",16
    End Sub
    • ViewCode:该过程和ViewVBCode函数一样,如果用户按工具栏上的小图标就会执行这个过程。
    • ToolsMacro:当用户按下“ALT+F8”或者“工具—宏”时调用的过程函数。
    • FileTemplates:当显示一个模板的所有宏时,调用的过程函数。
  • Disable或删除特定菜单项
    • CommandBars(“Tools”).Controls(16).Enabled = False:使“工具—宏菜单失效”
    • CommandBars(“Tools”).Controls(16).Delete:删除“工具—宏”菜单
  1. 隐藏真实代码
    “自动宏”中,不包括任何感染或破坏的代码,但包含了创建、执行和删除新宏(实际进行感染和破坏的宏)的代码。
    将宏代码字体颜色设置成与背景一样的白色等。

6.3 VBS脚本

VBS:Visual Basic Script,VB脚本语言。

使用COM组件、WMI、WSH、ADSI访问系统中的元素,对系统进行管理。

VBScript可以通过Windows脚本宿主(Windows Scripting Host,WSH)调用COM,因而可以使用Windows操作系统中可以被使用的程序库。

6.4 VBS脚本病毒

用VBScript编写,能够进行自我传播的破坏性程序,其需要人工干预触发执行。

如何感染文件

直接进行自我复制,其中大多数代码可以直接附加在其他同类程序之中

如何获得控制权

  • 修改注册表启动项
  • 添加程序到“开始”-“程序”-“启动”选项
  • 修改系统配置文件win.ini、system.ini、wininit.ini、winstart.bat、autoexec.bat等的相关启动选项。
  • 通过映射文件执行方式
  • 欺骗用户,让用户自己执行
  • desktop.ini和folder.htt互相配合

对抗反病毒软件的技巧

  • 自加密
    • 为防止反病毒软件进行特定字符串的检索,对文件本身进行自加密修改其中的部分字节。
  • 运用Execute函数
    • Execute函数能够执行一个存在于字符串中的命令,可以避免使用FileSystemObject以绕过检查。
  • 改变某些对象的声明方法
    • 对字符串进行拼接、编码等防止字符串检索。
  • 扫描进程并关闭反病毒软件