新发现表明,恶意行为者可以利用偷偷摸摸的恶意软件检测规避技术,并通过操纵 Windows 容器隔离框架来绕过端点安全解决方案。
Deep Instinct 安全研究员 Daniel Avinoam 在本月早些时候举行的DEF CON 安全会议上介绍了这一发现。
微软的容器架构(以及扩展的Windows Sandbox)使用所谓的动态生成的映像将文件系统从每个容器到主机分开,同时避免系统文件的重复。
它只不过是一个“操作系统映像,其中包含可以更改的文件的干净副本,但链接到主机上已存在的 Windows 映像中的无法更改的文件”,从而缩小了完整操作系统的整体大小。
阿维诺姆分享的一份报告中表示:“结果是包含‘幽灵文件’的图像,这些文件不存储实际数据,而是指向系统上的不同卷。”“正是在这一点上,我突然想到了这个想法——如果我们可以使用这种重定向机制来混淆我们的文件系统操作并混淆安全产品呢?”
Windows 容器可以运行的两种“隔离模式”:
- 进程隔离模式(也称为 Windows Server 容器):容器直接与主机内核交互的用户模式隔离。每个容器实例通过命名空间和资源控制与主机隔离。想想 Linux 容器。
- Hyper-V隔离模式(也称为 Hyper-V容器):内核级隔离,为每个容器提供自己的 Hyper-V虚拟机。虚拟机的存在在每个容器以及容器主机之间提供了硬件级隔离。
在这两种情况下,都应该有有效的文件系统分离,并且每个容器应该能够访问系统文件并写入不会影响主机的更改。为每个容器启动复制主卷将导致存储效率低下且不切实际。
这就是 Windows 容器隔离 FS (wcifs.sys) 微筛选器驱动程序发挥作用的地方。该驱动程序的主要目的是处理 Windows 容器与其主机之间的文件系统分离。
驱动程序通过解析其附加的重解析点和关联的重解析标签来处理幻影文件重定向,这些重解析标记唯一地标识所有者,即在 I/O 操作期间对文件执行附加过滤器定义的处理的文件系统过滤器驱动程序的实现者。
根据 Microsoft 的说法,Windows 容器隔离过滤器使用的两个此类重解析标记数据结构是 IO_REPARSE_TAG_WCI_1 和 IO_REPARSE_TAG_WCI_LINK_1。
简而言之,这个想法是让当前进程在构造的容器内运行,并利用微过滤器驱动程序来处理 I/O 请求,以便它可以在文件系统上创建、读取、写入和删除文件,而无需通知安全软件。
图片 |
来源:微软 |
在此阶段值得指出的是,微过滤器通过向过滤器管理器注册它选择过滤的 I/O 操作,间接附加到文件系统堆栈。每个微过滤器都会根据过滤器要求和加载顺序组分配一个 Microsoft 分配的“整数”高度值。
wcifs.sys 驱动程序占据较低的海拔范围180000-189999(特别是 189900),而防病毒过滤器(包括来自第三方的过滤器)在 320000-329999 的海拔范围内运行。因此,可以执行各种文件操作,而无需触发其回调。
“因为我们可以使用 IO_REPARSE_TAG_WCI_1 重新解析标记覆盖文件,而无需检测防病毒驱动程序,因此它们的检测算法不会接收整个情况,因此不会触发,”Avinoam 解释道。
尽管如此,发起攻击需要管理权限才能与 wcifs.sys 驱动程序进行通信,并且它不能用于覆盖主机系统上的文件。
该信息披露之际,这家网络安全公司展示了一种名为NoFilter的隐秘技术,该技术滥用 Windows 过滤平台 (WFP) 将用户权限提升至 SYSTEM 权限,并可能执行恶意代码。
这些攻击允许使用 WFP 复制另一个进程的访问令牌、触发 IPSec 连接并利用 Print Spooler 服务将 SYSTEM 令牌插入表中,并能够获取登录到受感染系统的另一个用户的令牌用于横向运动。