列表植入
攻击者可能滥用列表视图控件将恶意代码注入到被劫持的进程中,以规避基于进程的防御并可能提升权限。列表植入是一种在独立活动进程的地址空间中执行任意代码的方法。(引用: Hexacorn列表植入) 通过列表植入执行的代码还可能规避安全产品的检测,因为执行被掩盖在合法进程下。 列表视图控件是用于显示项目集合的用户界面窗口。(引用: Microsoft列表视图控件) 有关应用程序列表视图设置的信息存储在进程内存中的SysListView32
控件中。 列表植入(一种消息传递“碎片攻击”)可以通过将代码复制到使用列表视图控件的进程的虚拟地址空间,然后使用该代码作为自定义回调来对列出的项目进行排序来执行。(引用: Modexp Windows进程注入) 攻击者必须首先将代码复制到目标进程的内存空间中,这可以通过直接获取受害者进程窗口的SysListView32
子句柄(通过Windows API调用,如FindWindow
和/或EnumWindows
)或其他进程注入方法来完成。 某些列表植入的变体可能会在目标进程中分配内存,但随后使用窗口消息复制有效负载,以避免使用高度监控的WriteProcessMemory
函数。例如,攻击者可以使用PostMessage
和/或SendMessage
API函数发送LVM_SETITEMPOSITION
和LVM_GETITEMPOSITION
消息,有效地将有效负载每次2字节复制到分配的内存中。(引用: ESET InvisiMole 2020年6月) 最后,通过向进程窗口的SysListView32
子句发送LVM_SORTITEMS
消息来触发有效负载,并将新分配的缓冲区中的有效负载作为ListView_SortItems
回调传递并执行。