导语:本文将简要分析如何使用库文件来保持攻击的持久性,以及在安全检测时要注意的问题。
想象一下有没有这种攻击可能,攻击者在你不知道的情况下,在你的计算机上偷偷放置了一个恶意文件,只要你访问桌面上你最喜欢访问的文件夹时,该恶意文件就会开始执行,例如,Documents文件夹。目前已经出现了这种技术,就是通过利用一种鲜为人知的持久性技术——Windows库文件,实现这种持久化攻击场景。
Windows引入了库文件,允许用户在一个视图中同时查看多个目录的内容。库可以包含存储在本地计算机或远程存储位置上的文件和文件夹。
这些用于持久化的恶意文件一开始是通过维基解密穹顶7(Vault 7)项目发布的,并且与Junction恶意文件有很多相似之处。由于这两种技术都难以检测,因此它们为攻击者提供了很好的选择,甚至对最优秀的检测团队也是一种挑战。
2017年6月22号,维基解密解密了美国中央情报局(CIA)穹顶7(Vault7)网络武器库中的第十二批档案,被披露的档案中详细描述了美国情报机构如何远程隐蔽的入侵访问封闭的计算机网络或独立的安全隔离网络。
根据CIA档案研究人员发现攻击技术的细节,该攻击方式分为四个部分:快捷方式文件夹、Junction文件夹、“库”文件和快捷方式文件,前面三部分是攻击隐蔽技术,用正常的系统特性隐藏快捷方式文件的漏洞攻击,四个部分结合起来就成为了更难以被发现的高级威胁攻击,可以在被攻击系统中长期潜伏。
另外,该秘密文档还介绍了利用Windows库文件的攻击隐藏技术,库文件本质是一个xml配置文件,可以支持指向上文分析的Junction文件夹,在xml文件中指定foldertype和knownfolder字段就可以构造恶意的”库”快捷方式。
本文将简要分析如何使用库文件来保持攻击的持久性,以及在安全检测时要注意的问题。
库文件
默认情况下,Windows库文件位于“%APPDATA%\Microsoft\Windows\Libraries”目录中,文件扩展名为library-ms。这些文件是基于XML的,并有着公开可用的模式。
本文,我将以查看文档库文件(“document .library-ms”)为例,该文件会出现在Documents文件夹。要检测这个文件,最有趣的部分是SimpleLocation元素的URL。此元素会指定基于文件系统或协议处理程序的“搜索连接器”的位置。
本文的样本显示了使用全局惟一标识符(GUID)指向URL元素中两个不同的已知文件夹的库。搜索GUID所指向的两个文档目录:
打开这个库将允许用户在一个视图中查看两个不同目录的内容,下面的截图显示了每个单独文件夹的内容:
然而,当查看库时,所有项目都显示在同一个文件夹中。
创建恶意库文件
那么,我们如何将这个特性用于持久性攻击呢?
最简单的方法是添加另一个URL元素来加载恶意COM对象,因此当访问或呈现文件夹时,它将导致我的COM对象执行。
在下面的样本中,我会创建了一个COM对象,该对象会引用了一个有效载荷“beacon.dll”。
然后向库中添加了一个附加的searchConnector,其中有一个URL元素引用了我之前创建的CLSID。
最后,这个创建的库被保存到桌面,所以它看起来像一个良性的Documents文件夹。如果用户打开该文件夹,它将正常显示Documents文件夹的良性内容。但是,在后台,COM对象也将被执行,从带有PID 5392的rundll32.exe启动我的信标有效载荷。
有趣的是,rundll32没有显示父进程,这是因为在运行COM对象后退出了父进程dllhost.exe(COM Surrogate进程)。在Sysmon中,你将看到一个类似于下面样本的事件,其父级为dllhost.exe,子进程为rundll32.exe。
查看进程监控器,你将看到dllhost.exe查询了我创建的CLSID,然后加载我的beacon.dll,最后执行了rundll32.exe。
虽然这些数据流程点都能被检测到,但你看到的合法活动其实都是动过手脚的。此时,关联数据点可以提供更准确的检测效果。
实现持久性
显然,要实现持久性攻击,我还需要在启动时执行我的library-ms文件,所以你可能想知道我如何才能实现这一点?
除了常用的持久性技术之外,更隐秘的方法是使用Windows资源管理器,当查看包含文件的目录时,该资源管理器将自动执行文件。因此,用户不需要真得单击该文件,只要查看目录就足够了。例如,我可以将库文件放在桌面上,在启动时,资源管理器将渲染它,导致我们的COM对象执行。
从安全检测的角度来看,启动执行和用户单击执行之间的区别在于,启动时父进程将是explorer.exe,因为它是导致库文件呈现的资源管理器。
寻找library-ms文件
我可以通过检查具有library-ms扩展名的任何文件来使用PowerShell来搜索恶意库文件,然后过滤URL标记以获取CLSID并检索相关的注册表项以进行分析。
由于此样本是基于URL元素的滥用;你可能希望寻找其他元素,以发现进一步的异常。
点此链接,我提供了一个脚本,可以执行上述条件检查在%USERPROFILE%文件夹中创建的任何library-ms文件,你可以使用该脚本检查与此技术相关的注册表项中的任何异常。
查找library-ms文件的创建也很有用,这是一个高保真度指示器,因为这些扩展很少被创建。诸如Sysmon之类的工具允许你轻松监控这些事件,只需将以下内容添加到FileCreate标记内的Sysmon配置文件中即可。
当创建library-ms文件时,你将看到如下所示的文件创建事件:
总结
Windows有许多可用于持久性攻击的技术,如注册表、服务、计划任务等,这是许多防御团队关注的重点。正如这篇文章所展示的,library-ms文件呈现了一个很特别的挑战,因为它们可以隐藏在普通的视图中,并通过COM引用执行代码,这使得检测和分析变得更具挑战性。
在这种情况下,安全人员应该专注于创建和修改“.library-ms”文件以及COM条目。除了来自explorer.exe或dllhost.exe的这些可疑进程执行之外,还可以发现恶意活动的其他证据。