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

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

数据来源:ATT&CK Matrices

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

术语表: /attack/glossary

额外窗口内存注入

在创建窗口之前,基于 Windows 的图形化进程必须规定或注册一个窗口类,它规定了外观和行为(通过 Windows 程序,它是处理数据输入/输出的函数)。[1] 新窗口类的注册可以包括请求最多 40 个字节的额外窗口内存(EWM),以附加到该类的每个实例的分配的内存中。此 EWM 旨在存储该窗口的特定数据,并具有特定的应用程序编程接口(API)函数来设置和获取其值。[2] [3]

虽然很小,但 EWM 足以存储 32 位指针,通常用于指向 Windows 程序。恶意软件可能在攻击链的一部分中利用此内存位置,包括将代码写入进程内存的共享部分,在 EWM 中放置指向代码的指针,然后通过将执行控制返回到进程的 EWM 中的地址来调用执行。

通过 EWM 注入授权的执行可以在单独的实时进程的地址空间中进行。与进程注入类似,这允许访问目标进程的内存和潜在的高级权限。将 payload 写入共享部分还可以避免使用高度监控的 API 调用,例如 WriteProcessMemory 和 CreateRemoteThread。[4] 更复杂的恶意软件样本也可能通过触发 Windows 程序和其他系统功能的组合来绕过保护机制,例如数据执行保护(DEP),这些功能将重写目标进程的可执行部分内的恶意负载。[5] [6]

缓解

这种类型的攻击技术无法通过预防性控制轻松缓解,因为它基于对操作系统设计功能的滥用。例如,缓解特定的 API 调用可能会产生意想不到的副作用,例如阻止合法软件(即安全产品)正常运行。应该集中精力防止对手工具在活动链中更早地运行,并确定后续的恶意行为。

虽然 EWM 注入可以用于绕过特定类型的防御,识别可以用于执行攻击的潜在恶意软件,在适当的情况下使用白名单审计和/或阻止它,如 AppLocker,[ 8] [9] 或软件限制政策 [10][11] ,这仍然是一个好的实践。

检测

监视与枚举和操作 EWM 相关的 API 调用,如 GetWindowLong [2] 和 SetWindowLong [3]。与此技术相关的恶意软件也使用 SendNotifyMessage [12] 来触发相关的窗口进程和最终的恶意注入。[4]