- A+
原文链接: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中增加一个注册表项,然后添加一个值为0×00000400的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的文件可以点击这里下载