Skip to content Skip to sidebar Skip to footer

Техники обхода EDR через аппаратные точки останова

Современные решения для обнаружения и реагирования на угрозы (EDR) часто используют технологию Event Tracing for Windows (ETW), чтобы выявлять вредоносную деятельность без негативного влияния на работоспособность системы. Однако злоумышленники по-прежнему находят способы обойти эти системы и оставаться незамеченными. Они могут использовать аппаратные точки останова на уровне процессора, чтобы перехватывать функции и изменять телеметрию в пользовательском режиме, избегая прямого вмешательства в ядро. Это создает проблемы для традиционных методов защиты.

Защита Kernel Patch Protection (PatchGuard) мешает EDR-решениям перехватывать таблицу дескрипторов системных служб (SSDT) для проверки вызовов функций. Поэтому поставщик ETW Threat Intelligence становится важным ресурсом, предоставляя данные о действиях, таких как выделение памяти, управление потоками, асинхронные вызовы процедур (APC) и другие, с точки зрения ядра.

Злоумышленники могут использовать аппаратные точки останова для изменения работы Windows и скрытия своей деятельности от обнаружения AMSI и ETW. EDR-решения в свою очередь используют поставщиков Threat Intelligence для создания методов обнаружения злоупотреблений аппаратными точками останова.

В этой статье мы рассмотрим, какие действия вызывают события ETW, используя отладчик ядра, и как можно настроить аппаратные точки останова для перехвата функций без создания событий ETW TI.

Поставщик ETW Threat Intelligence регистрирует события, связанные с безопасностью в ядре. Мы можем определить, какие функции ядра вызывают эти события, изучив символы, начинающиеся с EtwTiLog, в отладчике ядра WinDbg. Мы сосредоточимся на интересующих нас событиях и не будем рассматривать другие.

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

Мы рассмотрели, как можно установить аппаратные точки останова, избегая создания событий ETW, которые могут быть использованы для обнаружения таких действий. Например, функция NtContinue позволяет обновлять контекст потока, включая регистры отладки, без вызова EtwTiLogSetContextThread в ядре. Это позволяет скрыто устанавливать аппаратные точки останова и избегать обнаружения EDR, которые полагаются на события SetThreadContext.

Этот метод позволяет злоумышленникам уклоняться от обнаружения и продолжать свою деятельность в обход защитных механизмов. Разработчики EDR должны быть внимательны к таким методам и находить способы защиты от таких угроз.