在Office中通过ActiveX控件绕过Windows ASLR

武汉大学信息安全协会 (hell0 Dawn) | 2015-12-09 13:17

原文链接:http://www.greyhathacker.net/?p=894

这篇小东西旨在探究一种在Office中通过实例化ActiveX控件,使用特定的classid绕过ASLR的方法。我已经在32位的win7+Office环境下测试通过了MS Word,在Excel和Powerpoint上用这种方法应该也可以奏效。

所有下面列出的classid都会给予安全警告,但是在你有其它操作之前库文件仍然会加载。

库文件sqlceca35.dll comes with Microsoft SQL Server Compact是一种嵌入式的数据库,它已经被安装到Office中。我也见过有些系统中安装的是4.0版本,sqlceca40.dll拥有dynamic bit(设置了这个bit就会打开ASLR),因此在这种环境下测试会被ASLR。

如果一次性加载所有的库文件,其中有一些会显示地址被重定位了,但是如果我只单独加载一个的话地址应该是不会变的。

在64位的Office 2010下我们仍可以看到有一些没有被ASLR

禁用Office中的ActiveX控件

通过配置信任中心可以禁用ActiveX控件

文件-选项-信任中心-信任中心设置- ActiveX设置

不过这样会将所有的控件都禁用掉,所以不是很推荐

通过Office kill bit禁用特定的嵌入式ActiveX控件

为了使Office COM kill bit能够禁用一个特定的控件,我们需要在ActiveX的CLSID中增加一个注册表项,然后添加一个值为0x00000400的DWORD到兼容性标志中。注册表中设置Office 2010 COM kill bit的地址是:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Common\COM Compatibility

Microsoft EMET

通过EMET我们看到所有库都被ASLR了。

Office 2013

在Office 2013中确实存在classid,但是所有库文件在加载时都因为dynamic bit的原因而被ASLR了。

所有包含这些classid的文件可以点击这里下载