进程双重映射
对手可能会通过进程双重映射将恶意代码注入进程,以规避基于进程的防御并可能提升权限。进程双重映射是一种在单独的活动进程的地址空间中执行任意代码的方法。 Windows Transactional NTFS (TxF) 在 Vista 中引入,作为执行安全文件操作的方法。(引用: Microsoft TxF) 为确保数据完整性,TxF 仅允许一个事务句柄在给定时间写入文件。在写入句柄事务终止之前,所有其他句柄都与写入者隔离,并且只能读取在打开句柄时存在的已提交版本的文件。(引用: Microsoft Basic TxF Concepts) 为避免损坏,如果系统或应用程序在写入事务期间失败,TxF 会自动回滚。(引用: Microsoft Where to use TxF) 尽管已弃用,但截至 Windows 10,TxF 应用程序编程接口 (API) 仍然启用。(引用: BlackHat Process Doppelgänging Dec 2017) 对手可能会滥用 TxF 执行无文件的进程注入变体。类似于进程空洞,进程双重映射涉及替换合法进程的内存,从而使恶意代码的隐蔽执行可能规避防御和检测。进程双重映射使用 TxF 还避免了使用高度监控的 API 函数,如NtUnmapViewOfSection
、VirtualProtectEx
和SetThreadContext
。(引用: BlackHat Process Doppelgänging Dec 2017) 进程双重映射分为 4 个步骤(引用: BlackHat Process Doppelgänging Dec 2017): * 事务 – 使用合法可执行文件创建 TxF 事务,然后用恶意代码覆盖文件。这些更改将被隔离,并且仅在事务上下文中可见。 * 加载 – 创建共享内存段并加载恶意可执行文件。 * 回滚 – 撤销对原始可执行文件的更改,有效地从文件系统中删除恶意代码。 * 动画 – 从污染的内存段创建进程并启动执行。 由于注入的进程是从注入进程生成的(因此继承了注入进程的安全上下文),这种行为可能不会导致权限提升。然而,通过进程双重映射执行可能会规避安全产品的检测,因为执行被掩盖在合法进程下。