Обход обнаружения EDR с помощью использования аппаратных точек останова на уровне процессора. Согласно отчету специалистов Praetorian, этот метод позволяет злоумышленникам управлять телеметрией в пользовательской среде без изменения кода ядра, что представляет собой серьёзную проблему для традиционных средств защиты.
🧑💻 Роль ETW в EDR
⏺️Современные EDR в значительной степени полагаются на ETW — средство отслеживания на уровне ядра, которое регистрирует события как в пользовательском режиме, так и в режиме ядра.
⏺️ETW предоставляет важную информацию о действиях системы, таких как выделение памяти, управление потоками и асинхронные вызовы процедур. Платформы EDR используют эти журналы для обнаружения вредоносных действий и реагирования на них в режиме реального времени.
⏺️Однако зависимость ETW от конкретных триггеров событий делает его уязвимым для злоумышленников, стремящихся обойти обнаружение.
💻 Использование аппаратных точек останова
Аппаратные точки останова используют регистры отладки на уровне процессора для отслеживания определённых адресов памяти или инструкций. По словам специалистов они вызывают исключения, когда по отслеживаемому адресу происходят такие операции, как чтение, запись или выполнение. В отличие от программных точек останова, которые изменяют код в памяти, аппаратные работают на аппаратном уровне, что затрудняет их обнаружение.
Традиционно приложения пользовательского режима устанавливают аппаратные точки останова с помощью API, таких как SetThreadContext, которые переходят в режим ядра для обновления регистров отладки. Однако эти операции генерируют события ETW, которые могут отслеживать EDR.
Для обхода данных ограничений, злоумышленники используют альтернативные методы, такие как NtContinue, которые обновляют контексты потоков, включая регистры отладки, без запуска регистрации ETW.
📈 Пример
Злоумышленник устанавливает точку останова в функции AmsiScanBuffer или NtTraceEvent. При вызове этих функций она вызывает исключение, обрабатываемое векторным обработчиком исключений. Затем обработчик может управлять ходом выполнения или изменять возвращаемые значения, не оставляя заметных следов в журналах ETW.
Post #8716
5.35K

- 🔥 14
- ❤ 6
- 👍 6
- 👏 1