回到首页| 网络安全 名人故事 申请书 | 名人名言 财富榜 关于我们

当前位置:名人故事传 > 互联网 > Win服务器 > > 正文

新病毒利用office完成自启动

08-02  Win服务器     来源: 未知  

我们发现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”读取注册表项并加载指定模块,然后试图从该模块中寻找“[email protected]”导出函数,如图4

图4 代码显示wwlib.dll加载dll并查找调用_[email protected]函数

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

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

“wwlib.dll”除了在注册表项指定的dll中查找“[email protected]”,函数外,还查找以下函数:

_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不受影响。

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

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

图5 Office Test流程图


总结

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

互联网 网络安全 申请书 创业资讯 创业故事明朝十六帝故事
© 2012-2022 名人故事传网版权所有 关于我们 | 版权声明 | 网站协议 | 友情申请 | 免责声明 | 网站地图 | 联系我们 | 广告服务