💀 EDR следит за тобой: Как обходить стековую телеметрию с Callback и ThreadPool?Современные системы безопасности не просто сканируют файлы и процессы — они активно отслеживают всю цепочку вызовов API, используя
ETW (Event Tracing for Windows). Даже если вредоносный код маскируется, а системные функции подменяются,
анализ стека вызовов выдаст аномалии.
Как EDR палит вредоносные вызовы? Большинство антивирусов и EDR-мониторов перехватывают API-функции не напрямую, а анализируя
контекст вызова. Они смотрят:
1️⃣ Кто вызвал функцию (какой адрес в стеке?).
2️⃣ Есть ли подозрительные «прыжки» в стековом фрейме?
3️⃣ Используются ли техники маскировки (inline-hook, trampolines, shellcode)?
🔴 Простая подмена API больше не спасает – защита работает на глубоком уровне, проверяя вызовы вплоть до
user-mode->kernel-mode
транзита.
Но можно ли скрыть подозрительные вызовы в стеке? Да! Один из мощных способов —
асинхронное выполнение кода через системные механизмы:
🔸 Использование
ThreadPool (TpAllocWork, TpPostWork, CreateThreadpoolWork) — переносит выполнение кода в системные потоки.
🔸 Обратные вызовы (
Callback) и APC (
Asynchronous Procedure Calls) — выполняют код
не напрямую, а в контексте другого потока.
🔸 Использование
NtContinue и ROP для перезапуска стека без явного API-вызова.
Содержание статьи:🔸 Разбор стековой телеметрии EDR на Windows.
🔸 Как Callback & ThreadPool обходят мониторинг стека?
🔸 Практический пример загрузки шеллкода без следов в ETW.
Полный гайд по обходу современных EDR —
читайте в статье!