
大家发现Sofacy组织应用了一种新的启动方式,他们称之为OfficeTest。
每次office运行时都会加载病原体。文章发表后,大家收到了很多关于启动方式的重要问题,特别是如何工作的,以及这些Office版本是如何受到影响的。本文将分析这种引导方法的技术指标,我们坚信其他组织可能会很快应用这种方法。
OfficeTest的背景故事
在分析Sofacy组织最近的恶意文本文档时,我们发现这些文本文档建立了以下注册表项:
HKEY_当前_用户软件MicrosoftOfficetestSpecialPerf
据大家分析,在这个注册表项中加入恶意dll文件路径后,每次打开Office都会加载该dll。我们之前从没见过这个注册表项作为boot方法原型的应用,所以我们会深入分析为什么这个注册表项会导致恶意dll加载。
大家检查了一个安装了office安全的系统软件,确定默认设置如图1所示,没有这个注册表项。
图1:默认情况下,随Office安装的windows系统软件没有“OficeTest”注册表项。
在对所有样本的集中搜索中,发现所有采用这种启动方式的样本都属于Sofacy组织。当时所有人都以为Sofacy找到了新的启动方式,但是出乎我们意料的是,Hexacorn在2014年4月的博文中已经透露了这个注册表键。这表明Sofacy机制可能没有自己找到启动方法。
DLL加载的全过程
为了更好的理解注册表项是如何实现恶意DLL的,大家分析了启动OfficeWord后的所有个人行为。大家之所以分析Word,是因为从科研中了解到,应用在Sofacy组织攻击中的Word加载了恶意DLL。众所周知,office的其他应用程序也被发现容易受到这种启动方法的攻击,这将在下一节中详细介绍。
下图API激活显示信息显示了Office启动全过程中与该注册表项相关的主题活动。ApI显示信息字(WINWORD。EXE)加载“wwlib.dll”,这是Word运行时必须加载的正常控制模块。“wwlib.dll”控制模块打开注册表并查看其初始值,然后使用LoadLibrary加载存储在注册表项中的病原体DLL(“btecache.DLL”)。
图2API激活单词加载病原体DLL
在图2中,wwlib.dll最后的个人行为是尝试打开HKEY_LOCAL_MACHINE下的同一个注册表项,如下所示:
HKEY_本地_机器软件MicrosoftOfficetestSpecialPerf
尝试打开不成功的原因是默认设置安装没有此项。此外,很难将该注册表项应用于启动,因为各个参与者必须先提高他们管理权限,然后才能更改HKLM文件目录中的注册表项。众所周知,更改HKCU文件目录中的Office测试项来加载恶意DLL只需要当前用户的权限。
在Sofacy组织攻击中,网络攻击将病原体加载程序命名为btecache.dll(如图2所示),并将其存储在OfficeTest注册表项中。病原体加载器将关键程序模块“C:ProgramDataVCHost.dll”加载到Word中,然后退出,如图3所示。“svchost.dll”控制模块包括Sofacy应用的Carberp病原体的变体代码,“svchost.dll”将一直运行,直到客户关闭Word。
图3恶意控制模块“svchost.dll”在Word的进程中运行。
办公室测试的本义
根据进程的启动个人行为,我们可以看到所有正常的“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”来 *** 作其函数代码。
虽然“_GetPerfhostHookVersion@0”函数在btecache.dll没有导出,但这并没有什么坏处。如图4中的代码所示,信息搜索不成功,但是启用API并不容易。
“wwlib.dll”在特定于该注册表项的dll中搜索“_GetPerfhostHookVersion@0”,并且还搜索以下函数:
_initperf
_PerfCodeMarker
_UnInitPerf
此显示信息字(包括其他office应用程序)应用此注册表项来加载特定的DLL。为了更好地评估产品特性,有必要在设计阶段开发用于调整或产品测试的应用程序。这也说明了为什么“softwareMicrosoftOfficeTestspecialperf”注册表项的默认设置将不存在。
还发现“wwlib.dll”试图从HKEY_本地_机器软件微软Office测试特殊性能运行时性能测量加载dll。
注册表项名称“RuntimePerfMeasurement”也表示存储该注册表项是为了更好地进行功能测试和程序调整。
受影响的应用程序和版本
为了找出哪个版本的Word受到影响,我们对以下版本的wwlib.dll控制模块进行了测试:2003、2007、2010、2013、2015和2016。确保Office2007、2010、2013、2015、2016中的“wwlib.dll”加载“OfficeTest”注册表项的数据信息并加载dll。Office2003不受影响。
我们还测试了Office的其他应用程序(Word、PowerPoint、Excel、Outlook、OneNote、Publisher),以了解什么将加载“OfficeTest”注册表项和DLL。有意思的是,Office工具箱中的一些应用并不需要根据DLL加载注册表项和病原体控制模块,而是直接将源程序加载到源程序中并加载。
图5显示了为每个信息应用程序加载和加载恶意控制模块的步骤。
图5办公室测试流程图
总结
“OfficeTest”启动方式让病原体在每次客户启动Office时都可以运行,这对沙盒自动化技术的分析是一个挑战。建议保护软件将此注册表项添加到监督中。微软更新了自动运行的“Office测试”启动方法测试。建议客户填写“OfficeTest”注册表项,设置为写保护管理权限,避免恶意更改。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)