跳转至

额外窗口内存注入

对手可能通过额外窗口内存(EWM)注入恶意代码,以规避基于进程的防御措施并可能提升权限。EWM注入是一种在单独的活动进程的地址空间中执行任意代码的方法。 在创建窗口之前,基于图形的Windows进程必须遵循或注册一个窗口类,该类规定了外观和行为(通过窗口过程,这些过程是处理数据输入/输出的函数)。(引用: Microsoft Window Classes) 新窗口类的注册可以包括请求将最多40字节的EWM附加到该类每个实例的分配内存中。这个EWM旨在存储特定于该窗口的数据,并具有特定的应用程序编程接口(API)函数来设置和获取其值。(引用: Microsoft GetWindowLong function) (引用: Microsoft SetWindowLong function) 尽管很小,但EWM足够存储一个32位指针,通常用于指向一个窗口过程。恶意软件可能会利用这个内存位置作为攻击链的一部分,包括将代码写入进程内存的共享部分,将指针放置在EWM中,然后通过将执行控制返回到进程的EWM中的地址来调用执行。 通过EWM注入授予的执行可能允许访问目标进程的内存并可能提升权限。将有效负载写入共享部分还可以避免使用高度监控的API调用,如WriteProcessMemoryCreateRemoteThread。(引用: Elastic Process Injection July 2017) 更复杂的恶意软件样本还可能通过触发一系列窗口过程和其他系统函数,将恶意负载重写到目标进程的可执行部分,从而绕过数据执行保护(DEP)等保护机制。(引用: MalwareTech Power Loader Aug 2013) (引用: WeLiveSecurity Gapz and Redyms Mar 2013) 在另一个进程的上下文中运行代码可能允许访问该进程的内存、系统/网络资源,并可能提升权限。通过EWM注入的执行还可以规避安全产品的检测,因为执行被掩盖在合法进程下。