欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

利用Office插件实现恶意程序持久化

来源:本站整理 作者:佚名 时间:2017-04-27 TAG: 我要投稿

对于攻击者而言,通常攻击目标的pc环境中都会有Office软件。既然用的人多,利用Office来实现持久化当然就是个不错的选择了。
下面讨论以下6种机制来实现持久化,并讨论每种方法的优缺点:①利用WLL,XLL插件;②利用Excel与PowerPoint的VBA插件;③利用Office的com插件;④.利用Excel的Automation插件;⑤利用Office中VBA editor插件;⑥利用VSTO插件。
以上6种持久化技术均在office 2013上测试成功,测试操作系统为win7、8.1、10。
利用WLL,XLL插件
Kostas等人利用office模板实现持久化的关键是受信任位置(Trusted Locations)这一理念。在这些目录下的文件,文件中的VBA代码不受通常的宏设置的影响,在宏被禁用的情况下,里面的代码仍然能够在不告警的情况下执行。进一步的研究发现,一些特定的受信任位置,普通用户也具有写权限并且能够用于放置基于DLL的插件。
利用Word的WLL插件
Word的三个受信任位置如下图1所示 。可以看出受信任位置有template(模板)的,也有StartUp(启动的)。

图 1 word受信任位置
进一步深挖发现,受信任位置“StartUp”可以用来放置wll后缀的word插件。该后缀的文件在word97中就有了,现在的word中仍然支持它,不过如何生成这样的文件资料甚少。仔细研究后发现,该文件实质上还是dll文件,套了wll后缀而已。这也就意味着wll文件支持基本的DLL功能,因此我们直接将dll文件的后缀改为wll,并将得到的文件放到受信任位置“StartUp”下,这样word启动时,就能执行任意代码了。而所有这些操作低权限的用户即可完成。
图2为利用wll插件启动calc.exe后的截图,可以看出calc.exe作为Word(进程为winword.exe)的子进程在运行。

图 2 利用wll插件启动calc.exe
测试时有个坑需要注意,使用msfvenom生成的dll执行后word会崩溃,自己用C++编写个dll,并把执行的代码放在入口函数DllMain中word就不会崩溃,代码执行后word能够继续运行。
比较有意思的是,WLL插件能够自动加载,里面的代码能正常执行,但在word加载项中却显示为非活跃应用程序加载项目,如图3所示。也正因为这样,在word的信任中心禁用word插件并不会警用WLL插件。

图 3 WLL插件在加载项中的显示
利用Excel的XLL插件
Excel 用XLL插件来扩展自身功能。与WLL插件在word启动时自动加载不同,需要对注册表特定的key添加一个属性来让Excel加载相应的XLL插件。Key的位置为:

HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Options
需要添加的属性为“OPEN”,其值设置为“/R FileNameOfAddin.xll”。如图4所示:

图 4 添加“OPEN”属性
Excel默认会搜索“%appdata%\Microsoft\AddIns”目录,因此上图OPEN属性中插件并不需要使用绝对路径。不过有意思的是,该路径并未有在Excel的受信任路径中。这可能是因为受信任位置主要涉及VBA执行的安全控制。
Excel执行XLL插件的方式也与word使用WLL插件的方式不同。对每个配置好的XLL插件,Excel都会搜索其中的导出函数,并在适当的时候进行调用。比如,在程序首次加载时,Excel会搜索并调用xlAutoOpen函数。xlAutoOpen函数正如其函数名所暗示的,其行为与VBA的Auto_Open函数类似。
与word的WLL插件不同,XLL插件Excel的加载项中显示为活跃应用程序加载项目,并且可以在信任中心(Trust Center)中对其进行禁用。
优点:①普通用户可对Word的StartUp目录写文件,Excel中Options下的键值普通用户也可编辑;②Word的WLL插件可自动加载,而Excel也只需要修改注册表即可实现自动加载;③通过禁用应用程序插件并不能禁用WLL插件,而Excel的XLL插件禁用插件时会被禁用掉;④WLL插件在word加载项中显示为非活跃应用程序加载项,但却能正常运行。XLL插件则显示为活跃应用程序加载项;⑤可能用于虚拟桌面框架(Virtual Desktop Infrastructure ,VDI)的环境中。
缺点:①需要放置DLL文件到“%appdata%”目录下;②利用xll插件时需要修改注册表。
利用Excel与PowerPoint的VBA插件
与word类似,Excel与PowerPoint中也有与word的StartUp类似的受信任位置。一个是针对所有针对整个系统的,一个是针对特定用户的。针对特定用户的受信任位置为“XLSTART”(针对Excel)与“AddIn”(针对Excel,PowerPoint)。
这些受信任位置原意并不是用来放置基于DLL的插件的,而是存放基于VBA的,并使用了非标准后缀的扩展文件的。
这种持久化机制基于与Kostas的利用模板实现持久化差不多。主要的不同在于,当VBA代码在模板文件中时,只有使用了改模板的文档才会导致VBA代码的执行。而VBA插件与事件挂钩,不管是Excel,还是PowerPoint只要打开文件触发了相应的事件,就会执行VBA插件中的代码,而与选用的模板没有关系。但VBA插件仅限于Excel于PowerPoint。
Excel VBA插件
创建新的Excel文件,打开VBA编辑器(Ps:ctrl +F11),选择“插入模块”(module),利用模块可以实现持久化,如图5所示:

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载