T1055.011: 额外窗口内存注入
摘要
攻击者可能通过额外窗口内存(EWM)将恶意代码注入进程,以规避基于进程的防御,并可能提升权限。EWM 注入是一种在另一个活动进程的地址空间中执行任意代码的方法。 在创建窗口之前,基于图形界面的 Windows 进程必须声明或注册一个窗口类,该类规定外观和行为(通过窗口过程,即处理数据输入/输出的函数)。(Citation: Microsoft Window Classes) 注册新的窗口类时可以请求最多 40 字节的 EWM,附加到该类每个实例所分配的内存中。该 EWM 旨在存储特定于该窗口的数据,并具有特定的应用程序编程接口(API)函数来设置和获取其值。(Citation: Microsoft GetWindowLong function) (Citation: Microsoft SetWindowLong function) EWM 虽然很小,但足以存储一个 32 位指针,并且常用于指向窗口过程。恶意软件可能将这一内存位置用于攻击链的一部分,包括将代码写入进程内存的共享段、在 EWM 中放置指向该代码的指针,然后通过将执行控制返回到进程 EWM 中的地址来调用执行。 通过 EWM 注入获得的执行可能允许访问目标进程的内存并可能获得提升的权限。将载荷写入共享段还避免了使用受高度监控的 API 调用,如 <code>WriteProcessMemory</code> 和 <code>CreateRemoteThread</code>。(Citation: Elastic Process Injection July 2017) 更复杂的恶意软件样本还可能通过触发窗口过程与其他系统函数的组合,将恶意载荷重写到目标进程的可执行部分,从而可能绕过数据执行保护(DEP)等保护机制。(Citation: MalwareTech Power Loader Aug 2013) (Citation: WeLiveSecurity Gapz and Redyms Mar 2013) 在另一个进程的上下文中运行代码可能允许访问该进程的内存、系统/网络资源,并可能获得提升的权限。通过 EWM 注入进行的执行也可能规避安全产品的检测,因为执行被掩盖在合法进程之下。
来源归属
来源:MITRE ATT&CK · 置信度:high
平台
- Windows
战术
Stealth
参考来源
- https://attack.mitre.org/techniques/T1055/011
- https://www.endgame.com/blog/technical-blog/ten-process-injection-techniques-technical-survey-common-and-trending-process
- https://www.malwaretech.com/2013/08/powerloader-injection-something-truly.html
- https://www.welivesecurity.com/2013/03/19/gapz-and-redyms-droppers-based-on-power-loader-code/
- https://msdn.microsoft.com/library/windows/desktop/ms633574.aspx
- https://msdn.microsoft.com/library/windows/desktop/ms633584.aspx
- https://msdn.microsoft.com/library/windows/desktop/ms633591.aspx