T1055.015: ListPlanting

Злоумышленники могут внедрить вредоносный код в перехваченные процессы, используя элементы управления "Представление списка" с целью обхода защиты, действующей на уровне процессов, а также для повышения уровня своих привилегий. ListPlanting — это способ выполнения произвольного кода в адресном пространстве отдельного активного процесса. Выполнение кода посредством ListPlanting также дает возможность избежать обнаружения защитными решениями, поскольку маскируется под легитимный процесс.

Представление списка (list view) — это окно пользовательского интерфейса, отображающее коллекцию элементов. Информация о настройках представления списка приложения хранится в памяти процесса в элементе управления SysListView32.

ListPlanting (разновидность "подрывной атаки" с передачей сообщений) может осуществляться посредством копирования кода в виртуальное адресное пространство процесса, использующего представление списка, с последующим использованием этого кода в качестве обратного вызова (callback) для сортировки элементов списка. Злоумышленники сначала должны скопировать код в пространство памяти целевого процесса, что может быть осуществлено различными способами, включая прямое получение дескриптора дочернего элемента управления SysListView32 окна атакованного процесса (через вызовы API Windows, такие как FindWindow и (или) EnumWindows), или иные методы внедрения кода в процессы.

Некоторые вариации ListPlanting могут выделять память в целевом процессе, после чего использовать сообщения окна для копирования полезной нагрузки во избежание применения часто отслеживаемой функции WriteProcessMemory. Например, злоумышленники могут использовать функции API PostMessage и (или) SendMessage для отправки сообщений LVM_SETITEMPOSITION и LVM_GETITEMPOSITION, фактически копируя по 2 байта полезной нагрузки в выделенную память за раз.

И наконец, полезная нагрузка, находящаяся в новом буфере, активируется отправкой сообщения LVM_SORTITEMS дочернему элементу управления SysListView32 окна процесса и выполняется как обратный вызов ListView_SortItems.

Какие продукты Positive Technologies покрывают технику

Описание методов обнаружения техники пока недоступно

Способы обнаружения

IDDS0009Источник и компонент данныхПроцесс: Изменения в процессеОписание

Отслеживайте изменения в процессах, которые могут использоваться для внедрения вредоносного кода в процессы с целью обхода защиты, действующей на уровне процессов, а также для повышения уровня привилегий. Анализируйте поведение процессов, чтобы выявить подозрительную активность, такую как установление сетевых подключений, чтение файлов и другие подозрительные операции, которые могут быть связаны с действиями злоумышленников после компрометации.

IDDS0009Источник и компонент данныхПроцесс: Вызовы API ОСОписание

По возможности отслеживайте чрезмерное использование функций API SendMessage и (или) PostMessage с аргументами LVM_SETITEMPOSITION и (или) LVM_GETITEMPOSITION.

Отслеживание вызовов Windows API, связанных с разными типами внедрения кода, сопряжено с генерацией больших объемов данных. Для эффективной защиты нужно осуществлять сбор данных только при определенных условиях, чтобы выявлять известные вредоносные последовательности вызовов. В противном случае будет трудно выделить вредоносные вызовы API среди множества легитимных. Для этой техники могут использоваться такие вызовы API Windows, как FindWindow, FindWindowEx, EnumWindows, EnumChildWindows, а также вызовы функций, позволяющих изменять содержимое памяти другого процесса, например VirtualAllocEx/WriteProcessMemory.

Меры противодействия

IDM1040НазваниеПредотвращение некорректного поведенияОписание

В некоторых решениях для обеспечения безопасности конечных точек можно настроить блокирование определенных типов внедрения кода в процессы на основе детектирования распространенных последовательностей действий, характерных для процесса внедрения.