ATT&CK-CN V1.0 Last Update: 2019-03 [返回索引页]

译者: 林妙倩(清华大学网络研究院网络空间安全实习生) 原创翻译作品,如果需要转载请取得翻译作者同意。

数据来源:ATT&CK Matrices

原文: https://attack.mitre.org/techniques/T1186

术语表: /attack/glossary

Process Doppelgänging

Windows 事务性 NTFS (TxF) 作为一种执行安全文件操作的方法引入 Vista。 为了确保数据的完整性,TxF 在给定的时间只允许一个事务句柄写文件。 在写句柄事务终止之前,其他所有句柄都与写句柄隔离,只能读取打开写句柄时已提交的文件版本。 为了避免损坏,如果系统或应用程序在写事务期间失败,TxF 将自动执行回滚。

尽管不宜使用 TxF 应用程序编程接口 (API),但在 Windows 10 中仍然启用了。

攻击者可以利用 TxF 来执行进程注入 (Process Injection) 的无文件变体,即 Process Doppelgänging。 与进程镂空 ( Process Hollowing) 类似,Process Doppelgänging 涉及替换合法进程的内存,实现可能规避防御和检测的恶意代码的隐藏执行。 Process Doppelganging 利用 TxF 时还避免使用被高度监控的 API 函数,如 NtUnmapViewOfSection、VirtualProtectEx 和 SetThreadContext。

Process Doppelgänging 分 4 步实现,: - 事务-使用合法可执行文件创建 TxF 事务,然后使用恶意代码覆盖该文件。 这些更改将被隔离,并且仅在事务上下文中可见。 - 加载-创建共享内存段并加载恶意可执行文件。 - 回滚-撤消对原始可执行文件的更改,有效地从文件系统中删除恶意代码。 - Animate-从受污染的内存段创建进程并启动执行。

缓解

这种类型的攻击技术无法轻易通过预防性控制缓解或修补,因为它基于对操作系统设计功能的滥用。例如,缓解特定的 API 调用可能会产生意想不到的副作用,例如阻止合法的进程加载机制正常运行。应该集中精力阻止攻击者工具在活动链中更早地运行,并识别后续的恶意行为。

虽然Process Doppelgänging 可用于规避特定类型的防御,识别可用于执行攻击者行动的潜在恶意软件,并在适当的情况下使用白名单审计和/或拦截它(如 AppLocker 的,[ 8] 或软件限制政策 。),这仍然是个好的实践。

检测

监视和分析对 CreateTranscation,CreateFileTransacted,RollbackTransaction 以及其他很少使用的标志 TxF 活动的函数的调用。ProcessDoppelgänging 还通过调用 NtCreateProcessEx 和 NtCreateThreadEx 以及用于修改另一个进程(如 WriteProcessMemory)内存的 API 调用来调用 Windows 进程加载器的过时和未记录的实现。

扫描在 PsSetCreateProcessNotifyRoutine 期间报告的文件对象,它会在创建或删除进程时触发回调,特别注意具有写访问权限的文件对象。 还要考虑将内存中加载的文件对象与磁盘上的相应文件进行比较。

分析进程行为以确定进程是否正在执行通常不执行的操作,例如打开网络连接,读取文件或可能与泄密后行为相关的其他可疑操作。