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

新病毒利用office完成自启动

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


我们发现Sofacy组织使用了一种新的自启动方式,我们称他为Office Test。
病毒会在office每次运行时被加载。文章发布后,我们收到很多关键该启动方式的问题,特别是它是如何工作的以及那些Office版本受影响。本文章将对该自启动方式做技术分析,我们相信其他组织很快也将会使用该方法。
Office Test 背景故事
在分析Sofacy组织最近的恶意文档时,我们发现文档创建了如下注册表项:
HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf
基于我们分析,将恶意dll文件路径添加到这个注册表项后每次打开Office都会加载该dll。我们之前没有见过使用该注册表项作为自启动方式的样本,所以深入研究为什么该注册表项会导致恶意dll被加载。
我们检查了一个安装了office的安全的系统,确认默认是没有该注册表项的如图1。

图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”)。

图2 Word加载病毒DLL的API调用
 
图2中,wwlib.dll最后的行为是尝试打开HKEY_LOCAL_MACHINE下的相同注册表项,如下:
HKEY_LOCAL_MACHINE\Software\Microsoft\Office test\Special\Perf
尝试打开失败的原因是默认安装并没有该项。此外,以自启动为目的使用该注册表项是行不通的,因为行为者需要提升权限才能修改HKLM目录下的注册表项。然而,修改HKCU目录下的Office Test项来加载恶意DLL只需要当前用户权限。
在Sofacy组织攻击中,攻击者将病毒loader命名为btecache.dll(如图2)保存在Office Test注册表项。病毒Loader加载主要功能模块“C:\ProgramData\svchost.dll”到Word中,然后退出,如图3。 “svchost.dll”模块包含着Sofacy组织使用的Carberp病毒的变种代码,“svchost.dll” 将一直运行直到用户关闭Word应用。
 

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

图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为了产品性能评估,开发期间调试或者测试阶段使用。这也解释了为什么“Software\Microsoft\Office test\Special\Perf”注册表项默认不存在。
我们也揭漏了”wwlib.dll”试图从HKEY_LOCAL_MACHINE\Software\Microsoft\Office test\Special\Perf\RuntimePerfMeasurement加载DLL。
"RuntimePerfMeasurement”的注册表项名也暗示着该注册表项是为了性能测试和调试目的存在。
受影响的应用和版本
为了确定哪些版本Word受影响,我们测试了如下版本中的“wwlib.dll” 模块:2003, 2007, 2010, 2013, 2015 and 2016。确认Office 2007, 2010, 2013, 2015, 2016中的”wwlib.dll”会读取”Office Test”注册表项的数据并加载DLL。Office2003不受影响。

[1] [2]  下一页

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