新病毒利用office完成自启动

阅读量189385

|

发布时间 : 2016-07-26 10:48:41

x
译文声明

本文是翻译文章,文章来源:安全客

原文地址:http://researchcenter.paloaltonetworks.com/2016/07/unit42-technical-walkthrough-office-test-persistence-method-used-in-recent-sofacy-attacks/

译文仅供参考,具体内容表达以及含义原文为准。

我们发现Sofacy组织使用了一种新的自启动方式,我们称他为Office Test。

病毒会在office每次运行时被加载。文章发布后,我们收到很多关键该启动方式的问题,特别是它是如何工作的以及那些Office版本受影响。本文章将对该自启动方式做技术分析,我们相信其他组织很快也将会使用该方法。

Office Test 背景故事

在分析Sofacy组织最近的恶意文档时,我们发现文档创建了如下注册表项:

HKEY_CURRENT_USERSoftwareMicrosoftOffice testSpecialPerf

基于我们分析,将恶意dll文件路径添加到这个注册表项后每次打开Office都会加载该dll。我们之前没有见过使用该注册表项作为自启动方式的样本,所以深入研究为什么该注册表项会导致恶意dll被加载。

我们检查了一个安装了office的安全的系统,确认默认是没有该注册表项的如图1。

http://p1.qhimg.com/t01c1f474bcdb6276ce.png

图1:默认安装Office的windows系统并没有”Ofice Test”注册表项

 

在我们样本集中搜索使用了该自启动方式的样本发现所有都属于Sofacy组织。当时,我们认为Sofacy组织发现了一个新的自启动方式,但是让我们惊讶的是,Hexacom在2014年4月的blog中就公布了该注册表项(Hexacorn had revealed this registry key in an April 2014 blog post)。这说明Sofacy组织可能不是自己发现改启动方式。

DLL加载过程  

为了确定该注册表项如何执行恶意DLL,我们分析了启动Office Word后的所有行为。我们分析Word是因为从研究中得知Sofacy组织攻击中正是使用的Word加载了恶意的DLL。然而,office其他应用也被发现易受这个自启动方式的影响,这个我们将在下一节中详细说明。

 

下图2 API调用显示了Office启动过程中和该注册表项有关的活动。ApI调用显示Word(WINWORD.EXE)加载了”wwlib.dll”,这时Word运行时需要加载的一个正常模块,”wwlib.dll”模块打开注册表并查询,查询它的默认值,然后使用LoadLibrary加载了储存在注册表项的病毒DLL(“btecache.dll”)

http://p8.qhimg.com/t018b7cd905e7d1c34f.png

图2 Word加载病毒DLL的API调用

 

图2中,wwlib.dll最后的行为是尝试打开HKEY_LOCAL_MACHINE下的相同注册表项,如下:

HKEY_LOCAL_MACHINESoftwareMicrosoftOffice testSpecialPerf

尝试打开失败的原因是默认安装并没有该项。此外,以自启动为目的使用该注册表项是行不通的,因为行为者需要提升权限才能修改HKLM目录下的注册表项。然而,修改HKCU目录下的Office Test项来加载恶意DLL只需要当前用户权限。


在Sofacy组织攻击中,攻击者将病毒loader命名为btecache.dll(如图2)保存在Office Test注册表项。病毒Loader加载主要功能模块“C:ProgramDatasvchost.dll”到Word中,然后退出,如图3。 “svchost.dll”模块包含着Sofacy组织使用的Carberp病毒的变种代码,“svchost.dll” 将一直运行直到用户关闭Word应用。

 

http://p5.qhimg.com/t0128336b42def7c8d9.png

图3 恶意模块“svchost.dll”运行在Word进程中

OFFICE TEST的本意

基于进程的启动行为,我们看到正常的“wwlib.dll”模块从注册表项中读取并加载了恶意的DLL。我们想知道为什么“wwlib.dll”会从一个默认不存在的注册表项中加载DLL。静态分析显示”wwlib.dll”读取注册表项并加载指定模块,然后试图从该模块中寻找“_GetPerfhostHookVersion@0”导出函数,如图4

http://p8.qhimg.com/t01a94220eddaf806b1.png

图4 代码显示wwlib.dll加载dll并查找调用_GetPerfhostHookVersion@0函数


当”wwlib.dll”使用LoadLibraryW函数加载从注册表项中取得的DLL时,会调用DLL的DllEntryPoint函数。Sofacy组织的“btecache.dll”的DllEntryPoint 函数会查找并加载 “svchost.dll”,运行其功能代码。

在“btecache.dll”中虽然没有导出“_GetPerfhostHookVersion@0”函数,但是这并没什么影响如图4代码显示查找失败只是不会去调用该API而已。

 

“wwlib.dll”除了在注册表项指定的dll中查找“_GetPerfhostHookVersion@0”,函数外,还查找以下函数:

_InitPerf
_PerfCodeMarker
_UnInitPerf


这显示Word(包括其他office应用)使用该注册表项加载指定DLL为了产品性能评估,开发期间调试或者测试阶段使用。这也解释了为什么“SoftwareMicrosoftOffice testSpecialPerf”注册表项默认不存在。

我们也揭漏了”wwlib.dll”试图从HKEY_LOCAL_MACHINESoftwareMicrosoftOffice testSpecialPerfRuntimePerfMeasurement加载DLL。

"RuntimePerfMeasurement的注册表项名也暗示着该注册表项是为了性能测试和调试目的存在。

受影响的应用和版本

为了确定哪些版本Word受影响,我们测试了如下版本中的“wwlib.dll” 模块:2003, 2007, 2010, 2013, 2015 and 2016。确认Office 2007, 2010, 2013, 2015, 2016中的”wwlib.dll”会读取”Office Test”注册表项的数据并加载DLL。Office2003不受影响。

 

我们也测试了Office其他应用(Word, Powerpoint, Excel, Outlook, OneNote, Publisher)为了确定哪些会读取”Office Test”注册表项并加载DLL。有趣的是Office工具包中的一些应用不需要通过DLL去读取注册表项并加载病毒模块,而是主程序直接读取主程序并加载。

图5显示各个应用读取并加载恶意模块的流程。

http://p4.qhimg.com/t01aab2398ed84a97c2.png

图5 Office Test流程图

 

     总结

“Office Test”启动方式允许病毒在用户每次启动Office时运行,这对沙箱自动化分析是个挑战。建议安全软件将该注册表项加入监控中。微软更新了Autoruns支持“Office Test”启动方式检测。我们建议用户自行添加“Office Test”注册表项并设置为只读权限防止被恶意修改。

本文翻译自安全客 原文链接。如若转载请注明出处。
分享到:微信
+11赞
收藏
安全客
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66