tgoop.com/codeby_sec/8716
Last Update:
Обход обнаружения EDR с помощью использования аппаратных точек останова на уровне процессора. Согласно отчету специалистов Praetorian, этот метод позволяет злоумышленникам управлять телеметрией в пользовательской среде без изменения кода ядра, что представляет собой серьёзную проблему для традиционных средств защиты.
Аппаратные точки останова используют регистры отладки на уровне процессора для отслеживания определённых адресов памяти или инструкций. По словам специалистов они вызывают исключения, когда по отслеживаемому адресу происходят такие операции, как чтение, запись или выполнение. В отличие от программных точек останова, которые изменяют код в памяти, аппаратные работают на аппаратном уровне, что затрудняет их обнаружение.
Традиционно приложения пользовательского режима устанавливают аппаратные точки останова с помощью API, таких как SetThreadContext, которые переходят в режим ядра для обновления регистров отладки. Однако эти операции генерируют события ETW, которые могут отслеживать EDR.
Для обхода данных ограничений, злоумышленники используют альтернативные методы, такие как NtContinue, которые обновляют контексты потоков, включая регистры отладки, без запуска регистрации ETW.
Злоумышленник устанавливает точку останова в функции AmsiScanBuffer или NtTraceEvent. При вызове этих функций она вызывает исключение, обрабатываемое векторным обработчиком исключений. Затем обработчик может управлять ходом выполнения или изменять возвращаемые значения, не оставляя заметных следов в журналах ETW.