Исследовательская заметка N.02 · 2026-10-04

Как вас видит EDR.

Карта современного стека детекта: хуки в пользовательском режиме, ядерные колбэки, ETW, AMSI и движок корреляции, который и есть настоящий продукт. Где каждый слой силён, а где тихо проваливается.

ВРЕМЯ ЧТЕНИЯ ≈ 6 МИН АВТОР КОМАНДА AXIS

Маркетинг вендоров говорит «ИИ нового поколения». Инженерная реальность менее мистична и полезнее для понимания: современный EDR — это слоистая телеметрия плюс движок корреляции. Каждое проектное решение в AXIS начинается с этой карты, и эта заметка — сама карта, на уровне категорий, как мы брифим заказчиков. Знание местности важнее коллекции трюков.

Рис. A — стек детектаПять свидетелей, один прокурор

Слой первый: хуки в пользовательском режиме

Классический слой. EDR внедряет свою библиотеку в новые процессы и патчит точки входа нативного API — прежде чем ваш вызов дойдёт до ядра, агент уже прочитал его аргументы. Это слой, который видит «кто попросил исполняемую память» с полным стеком вызовов. У него же больше всего публичной контр-литературы: снятие хуков, прямые сисколлы и их многочисленные потомки. Всё это противодействует ровно одному слою из пяти.

Структурная слабость слоя — охват. Библиотека хуков видит только процессы, в которые внедрена: процессы, запущенные до сенсора, процессы, блокирующие загрузку чужих модулей, и всё, что логика внедрения решила пропустить. Защищённые процессы — и уровень protected-light, под которым теперь работает большинство продуктов безопасности, — для этого слоя недоступны вовсе.

Слой второй: ядерные колбэки

Драйвер EDR подписывается на собственные каналы уведомлений ОС: создание процессов и потоков, загрузку образов, операции с реестром, запросы дескрипторов. Это слой, который может урезать права дескриптора до того, как ваш процесс его получит — поэтому открытие полного доступа к наблюдаемому процессу молча возвращает меньше, чем просили, и без ошибки. Минифильтры добавляют вид файловой системы; драйверы раннего запуска ставят сенсор впереди почти всего при загрузке.

Слабости здесь — тайминг и объём. Уведомления приходят после создания, а не до — достаточно быстрый актор выигрывает малые гонки. А каждый колбэк стоит вендору процессорного времени на каждой машине заказчиков, поэтому вендоры агрессивно настраивают выборку: высокочастотные события семплируются, а семплированная телеметрия по определению неполна.

Слой третий: ETW

Event Tracing for Windows — это операционная система, рассказывающая о себе: события потоков и памяти, загрузка образов, компиляция сборок .NET, выполнение скриптов, сетевые потоки. Продукты безопасности читают провайдер threat-intelligence и его соседей, чтобы видеть поведение, которое вообще не касается перехваченных API. Именно этот слой похоронил план «мы просто не вызываем нативный API напрямую».

Слабость в том, что рассказ производится внутри процесса, а потребляется снаружи. Процесс может мешать собственной сессии ETW — но ослепление провайдера само по себе громкое, хорошо каталогизированное поведение. Честный вопрос про ETW не «можно ли его отключить», а «что попытка отключения сообщит движку корреляции».

Слой четвёртый: AMSI

Antimalware Scan Interface направляет содержимое скриптов и макросов — PowerShell, автоматизацию Office, хосты JavaScript, загрузки сборок .NET в памяти — через провайдера защиты в момент исполнения, изнутри процесса-хоста. Всё, что живёт в скриптовых поверхностях, проходит этот слой. Граница столь же ясна: содержимое, которое никогда не входит в скриптовый хост, никогда не встречает AMSI. Это контрольный пост на конкретных дорогах, а не стена вокруг страны.

Слой пятый: сеть и песочница

Полностью за пределами конечной точки: паттерны DNS, метаданные TLS, периодичность сессий и детонация подозрительных файлов в инструментированных средах. Сетевой детект нельзя «отцепить» ничем, что вы делаете на хосте, — поэтому мы считаем профиль трафика первоклассным проектным решением, а не дополнением, и поэтому каждая сборка AXIS прогоняется против актуальных версий сенсоров в рамках релизного QA.

Продукт — это движок корреляции

Одиночные события — шум. Сигнал — последовательность.

Самая важная часть, которую фольклор об обходах игнорирует. Выделение памяти ничего не значит; выделение, запуск потока в него, неподписанный образ у родителя и новая TLS-сессия девяносто секунд спустя значат всё. Настоящий продукт вендора — движок, который соединяет события всех пяти слоёв — по хосту, по пользователю, по парку машин — и оценивает последовательность. Поэтому «я пропатчил хуки» не значит «невидим»: вы убедили одного свидетеля из пяти, а остальные четыре теперь показывают процесс, который первый свидетель загадочно перестал описывать.

ПОТОК СОБЫТИЙ — ИЛЛЮСТРАЦИЯJSONL
{"ts":"14:31:02.114", "ev":"process.create", "pid":5104, "img":"svchost.exe", "parent":"services.exe"}
{"ts":"14:31:04.772", "ev":"mem.alloc",     "pid":5104, "size":"64 КБ", "prot":"RWX", "src":"unbacked"}
{"ts":"14:31:04.815", "ev":"thread.start",  "pid":5104, "entry":"unbacked+0x1a20"}
{"ts":"14:32:33.090", "ev":"net.tls",       "pid":5104, "sni":"cdn-metrics.example"}
# любая строка по отдельности: шум. последовательность: score 0.97 → алерт
Рис. B — что соединяет движокЧетыре слоя, один процесс, девяносто одна секунда

Что мы из этого извлекаем

Доктрина, а не рецепты — рецепты остаются в лицензионных материалах. Живучие импланты растворяются в последовательностях, а не в одиночных вызовах: ведут себя как программное обеспечение, которому место на машине, в темпе, нормальном для машины, по каналам, которые профиль способен честно объяснить. Каждая техника уклонения — сигнал со сроком годности; хорошо стареют те, что устраняют необходимость в сигнале вообще. Когда операции действительно нужны громкие варианты — работа на уровне ядра, злоупотребление драйверами — правильная мысленная модель: «покупка времени против движка корреляции», и бюджет всегда меньше, чем обещает фольклор.

Что из этого извлечь защитникам

Охотьтесь на последовательности, а не на артефакты. Включайте телеметрию, которая стоит денег, — ETW threat-intel, логирование блоков скриптов, аудит загрузки драйверов, — потому что слои, до которых имплант не дотягивается, ваше самое дешёвое преимущество. Считайте события порчи сенсора алертами высшего класса: EDR, который внезапно видит меньше, сам является детектом. И измеряйте покрытие по пяти слоям, а не по маркетинговой схеме: любой слой, который вы не можете перечислить, уже принадлежит импланту.