简介Windows应用程序兼容性缓存分析有一个局限性:缓存中的数据仅在系统关闭或重新启动时序列化到注册表。为什么这个限制如此重要?因为为了解析应用程序兼容性缓存,今天的工具依赖于在Windows注册表中找到的序列化缓存,这意味着该数据只有在系统最近重新启动时才有效****的。Shim缓存解析器和内存分析框架(包括总部位于美国的MedianInternetSecurity公司自己的框架)都依赖于在内存中找到的Windows注册表副本。目前的工具让研究人员只有两个选择:重启系统以强制缓存——这可能会破坏其他证据——或者在系统重启时限制研究人员的数据分析。这个问题的解决方案是直接从内核内存中分析应用程序兼容性缓存。本文介绍了应用程序兼容性缓存的内存结构,它允许实时检索已执行的最近最少使用(LRU)应用程序。还将引入Volatility插件(ShimCacheMem),以启用基于内存结构的实时应用程序兼容性缓存检索。我们将使用恶意软件生成和运行其他恶意程序的示例。ApplicationCompatibilityCache随着Windows操作系统的升级,一些功能也在不断变化,但这可能会影响一些程序的执行。为缓解此类问题,Microsoft引入了ShimInfrastructure用于特定版本的应用程序修复,现在称为“垫片”。ApplicationCompatibilityCache或ShimCache是Windows操作系统的应用程序兼容性模块的一部分,用于快速识别由于兼容性问题需要填充的应用程序。它存储在内核中,并在关机时序列化到注册表中。在Windows10中,序列化也会在重启时发生。示例在此示例中,恶意启动器软件向网站发出HTTP请求,然后将可执行文件下载到磁盘并执行以检索CNC服务器的URL。图1:启动程序在执行前出现在Temp文件夹中图2:向网站发送HTTP请求以获取CNC服务器的URL图3显示了成功下载可执行文件后Temp文件夹的内容;请注意下载的文件的名称-0CD8-是随机生成的:在执行其功能之前,磁盘上的启动程序将被删除并运行下载的可执行文件。图4:启动器软件已被删除:如果没有适当的文件监控程序,在对系统进行取证调查时可能会遗漏此细节。前面提到过,我们可以重启系统,使用ShimCacheAnalyzer工具来分析注册表中序列化的应用兼容性缓存。或者从内核内存中获取内存转储并直接使用ShimCacheMem插件分析应用程序兼容性缓存。图5显示了IntelRC.exe恶意软件执行之前ShimCacheMemVolatility插件的输出;请注意,恶意软件尚未执行。图6显示了IntelRC.exe恶意软件执行后ShimCacheMemVolatility插件的输出。列表中的顺序提供了实际的执行顺序,第1项是最近执行的应用程序。看第4项,IntelRC.exe,它在第1项中下载的恶意软件是0DE9.exe。ShimCacheMemVolatility插件识别了恶意软件在受感染系统上的执行,尽管一些文件已经从磁盘中删除。单击此处了解更多详细信息结论应用程序兼容性缓存提供了文件执行的有力证据。然而,由于缓存仅在系统关闭或重新启动时才加载到注册表中,因此现有工具尚未提供查看最近缓存数据的方法。但是无论系统何时重启,使用shimcachememVolatility插件可以最快地查看缓存。
