T1055.015

ListPlanting

Adversaries may abuse list-view controls to inject malicious code into hijacked processes in order to evade process-based defenses as well as possibly elevate privileges. ListPlanting is a method of executing arbitrary code in the address space of a separate live process. It is a form of message-passing 'shatter attack' that copies code into the virtual address space of a process that uses a list-view control (SysListView32), then uses that code as a custom callback for sorting the listed items. Some variations use window messages (PostMessage/SendMessage with LVM_SETITEMPOSITION and LVM_GETITEMPOSITION) to copy the payload 2 bytes at a time, avoiding the use of the highly monitored WriteProcessMemory function. Execution is triggered by sending the LVM_SORTITEMS message to the SysListView32 control with the payload address as the callback.

Microsoft Sentinel / Defender
kusto
// Detect ListPlanting via suspicious cross-process window message sending
// Key indicators: processes sending LVM_ messages to SysListView32 controls in other processes
DeviceEvents
| where Timestamp > ago(24h)
| where ActionType in ("SendMessageApiCall", "PostMessageApiCall", "CreateRemoteThreadApiCall")
| where FileName =~ "explorer.exe" or ProcessCommandLine has "SysListView32"
| where InitiatingProcessFileName !in~ ("explorer.exe", "csrss.exe", "dwm.exe", "winlogon.exe", "ShellExperienceHost.exe", "SearchUI.exe", "taskhostw.exe")
| project Timestamp, DeviceName, AccountName, ActionType, InitiatingProcessFileName, InitiatingProcessCommandLine, FileName
| sort by Timestamp desc
| union (
    // Also detect FindWindow targeting SysListView32
    DeviceProcessEvents
    | where Timestamp > ago(24h)
    | where ProcessCommandLine has_any ("SysListView32", "LVM_SORTITEMS", "ListView_SortItems", "FindWindow", "EnumWindows")
    | where ProcessCommandLine has_any ("inject", "payload", "shellcode", "VirtualAllocEx", "WriteProcessMemory")
    | project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName
)
| sort by Timestamp desc
high severity medium confidence

Data Sources

Process: OS API Execution Process: Process Access Microsoft Defender for Endpoint

Required Tables

DeviceEvents DeviceProcessEvents

False Positives

  • Legitimate applications using SendMessage to interact with list-view controls for UI automation
  • Accessibility tools sending window messages to SysListView32 for screen reading
  • Test automation frameworks (AutoIt, AutoHotkey) interacting with list-view controls
  • Windows shell extensions communicating with explorer's list-view for file management

Unlock Pro Content

Get the full detection package for T1055.015 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections