T1574.013: KernelCallbackTable

Злоумышленники могут изменить таблицу KernelCallbackTable процесса, чтобы перехватить поток его исполнения и запустить свою полезную нагрузку. Таблица KernelCallbackTable располагается в блоке операционного окружения процесса (PEB) и инициализируется массивом графических функций, доступных процессу графического интерфейса после загрузки user32.dll.

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

Указатель на адрес KernelCallbackTable в памяти можно получить, определив местоположение PEB (например, с помощью вызова функции NtQueryInformationProcess() нативного API). После получения указателя можно дублировать KernelCallbackTable и задать для функции в таблице (например, fnCOPYDATA) адрес полезной нагрузки (например, через вызов WriteProcessMemory()). Затем PEB обновляется и получает новый адрес таблицы. При вызове подмененной функции будет активирована полезная нагрузка.

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

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

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

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

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

Отслеживание вызовов Windows API, связанных с разными типами внедрения кода, сопряжено с генерацией больших объемов данных. Для эффективной защиты нужно осуществлять сбор данных только при определенных условиях, чтобы выявлять известные вредоносные последовательности вызовов. В противном случае будет трудно выделить вредоносные вызовы API среди множества легитимных. Например, для реализации этой техники могут использоваться такие функции API Windows, как WriteProcessMemory() и NtQueryInformationProcess() со значением параметра ProcessBasicInformation.

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

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

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