![]() |
https://forum.antichat.xyz/attachmen...b117797f11.png
Когда на engagement'е попадается Linux-хост с EDR-агентом, первый рефлекс - понять, что именно этот зверь перехватывает. На Windows ответ давно каталогизирован: ntdll-хуки, ETW-провайдеры, kernel callbacks. На Linux картина другая. Агенты разных вендоров используют принципиально разные источники телеметрии - от auditd до eBPF-сенсоров и частных kernel-модулей (проприетарных). И у каждого подхода свои слепые зоны. Вот их-то мы и будем эксплуатировать. По данным Kaspersky Incident Response, уязвимости в публично доступных приложениях стали первопричиной 39% состоявшихся инцидентов. При этом, согласно CrowdStrike 2025 Global Threat Report (данные цитирует Vectra AI), 82% детектов приходятся на malware-free активность - credential theft, living-off-the-land и identity-based атаки, которые Linux EDR особенно плохо отслеживает. Обход EDR Linux перестал быть прерогативой APT-групп: готовые EDR bypass-инструменты продаются на подпольных форумах от 300 долларов. Разберём три фундаментальных вектора обхода EDR на Linux для пентестеров (общий арсенал и контекст - в руководстве по Linux для пентестера): прямые syscall'ы минуя glibc, злоупотребление io_uring и наступательное использование eBPF. Для каждого - конкретный механизм, почему он работает и что проверять на своих хостах. Как Linux EDR собирает телеметрию и что именно хукается Чтобы понять, как работают Linux EDR bypass методы, нужно сначала разобрать, что агент видит. Телеметрия на Linux собирается тремя способами, и у каждого характерные дыры. Три уровня перехвата: auditd, eBPF и kernel modules Auditd (Linux Auditing System) - самый старый и совместимый механизм. Агент подписывается на события аудита ядра: запуск процессов ( Код:
execvehttps://forum.antichat.xyz/attachmen...7310522183.png eBPF-сенсоры - современный подход, который используют Falco, Tracee и коммерческие решения вроде BI.ZONE EDR. Агент загружает eBPF-программы, которые цепляются к kprobes (точки входа в kernel-функции) и tracepoints (предопределённые точки трассировки). Например, kprobe на Код:
__x64_sys_execveКод:
sched:sched_process_execКод:
CONFIG_DEBUG_INFO_BTF=yПроприетарные kernel-модули - отдельные вендоры идут дальше. Kaspersky внедрил технологию UKLM (Universal Linux Kernel Module), которая обрабатывает события через собственный драйвер уровня ядра и, по заявлению вендора, снижает влияние на производительность в 20 раз по сравнению с auditd. Такие модули дают максимальную видимость, но создают зависимость от конкретной версии ядра и дистрибутива. Ключевой вывод: определите, какой механизм использует конкретный EDR-агент - от этого зависит, на каком уровне нужно работать, чтобы остаться невидимым. Syscall hooking Linux evasion: прямые вызовы ядра минуя glibc Большинство пользовательских программ вызывают syscall'ы не напрямую, а через обёртки glibc: Код:
execve()Код:
__libc_execve()Код:
syscallКод:
LD_PRELOADНа Linux, в отличие от Windows, номера syscall'ов стабильны между версиями ядра одной архитектуры. Таблица определена в Код:
arch/x86/entry/syscalls/syscall_64.tblМинимальный пример вызова Код:
execveC: Код:
#include Код:
gcc -nostdlib -nostartfiles -fno-stack-protector -staticКод:
_startКод:
void _start() { char *argv[]={"bin",NULL}; raw_execve("/bin/sh",argv,NULL); asm("mov $60,%rax; xor %rdi,%rdi; syscall"); }Код:
__libc_execveКод:
execvpЧто по-прежнему ловит прямой syscall: kprobes на kernel-стороне ( Код:
__x64_sys_execveКод:
sys_enter_execveКод:
-a always,exit -F arch=b64 -S execveПрямые syscall'ы - не серебряная пуля. Они обходят userspace-хуки, но не kernel-level мониторинг. Тем не менее на практике я регулярно встречаю агенты, которые полагаются исключительно на LD_PRELOAD или uprobe-перехват - для них этой техники за глаза. Практический подход для пентеста Linux и обхода защиты: напишите свой лоадер на C или Go с прямыми syscall'ами для критических операций - Код:
execveКод:
openatКод:
connectКод:
mmapКод:
mprotectio_uring - слепая зона для обхода EDR на Linux Если прямые syscall'ы обходят userspace-хуки, но остаются видны ядерному мониторингу, то io_uring создаёт проблему другого масштаба: операции выполняются в ядре, но не через те syscall entry points, на которых стоят kprobes EDR-агента. https://forum.antichat.xyz/attachmen...7310578911.png io_uring - интерфейс асинхронного ввода-вывода, появившийся в ядре Linux 5.1 (2019). Работает через два кольцевых буфера в shared memory: Submission Queue (SQ), куда процесс помещает запросы, и Completion Queue (CQ), откуда забирает результаты. После начальной настройки через дальнейшие операции не требуют отдельных syscall'ов - ядро забирает запросы из SQ автономно. И вот тут-то начинается самое интересное для уклонения от обнаружения Linux-хостов. EDR-агенты, использующие kprobes на syscall entry points ( Код:
x64_sys_read, Код:
Код:
x64_sys_writeКод:
_x64_sys_connect) или syscall tracepoints ( Код:
sys_enterКод:
*Код:
vfs_readКод:
vfs_writeRingReaper: разбор техник по MITRE ATT&CK RingReaper - пост-эксплуатационный агент, созданный как PoC для демонстрации этой слепой зоны. По данным Picus Security, он полностью заменяет стандартные утилиты разведки io_uring-аналогами: ЗадачаОбычный подходRingReaper (io_uring)MITRE ATT&CKСписок процессов Код:
ps auxКод:
netstatКод:
ssКод:
whoКод:
wКод:
cat /etc/passwdКод:
find / -perm -4000Код:
rm -fКаждая из этих операций тривиальна по отдельности. Но когда они идут через io_uring, eBPF-based EDR с kprobes на Код:
sys_readКод:
sys_openatКод:
sys_unlinkКод:
io_uring_setupКод:
kernel.io_uring_disabledКод:
io_uring_setupНа современных дистрибутивах (Ubuntu 23.04+, RHEL 9, Debian 12) проверьте Код:
cat /proc/sys/kernel/io_uring_disabledeBPF evasion техники: мониторинг как оружие атакующего eBPF позволяет динамически загружать программы в ядро Linux. По данным Cymulate, через kprobe/tracepoint/LSM hooks он даёт возможность наблюдать syscall'ы, точки входа и выхода функций ядра и userspace, сетевые события. Модификация поведения ограничена: Код:
bpf_override_returnКод:
ALLOW_ERROR_INJECTIONС 2023 года появилось несколько руткитов на eBPF: Код:
ebpfkitКод:
TripleCrossКод:
Pamspyhttps://forum.antichat.xyz/attachmen...7310623888.png Ослепление телеметрии - Indicator Blocking (T1562.006, Defense Evasion). Атакующий загружает eBPF-программу, которая цепляется к тем же kprobes, что и EDR, но с более высоким приоритетом. Она модифицирует данные, которые видит агент: скрывает процессы, фильтрует сетевые события, подменяет содержимое файлов. По анализу Red Canary (цитирует windshock.github.io), однажды загруженное eBPF-вредоносное ПО, может скрытно изменять результаты Код:
bpftoolКод:
debugfsПерехват учётных данных. Код:
PamspyОбход файрвола и скрытый C2. Код:
BPFDoorКод:
nmapПочему обход антивируса Linux через eBPF так эффективен? eBPF-программы не лежат на диске в традиционном смысле. Они работают в kernel space, недоступном для userspace-сканеров. eBPF-руткит может манипулировать данными, которые видит сам антивирус. Традиционный файловый сканер попросту не имеет точки наблюдения для обнаружения eBPF rootkit - он слепой по определению. По данным Cymulate, добавление Код:
CAP_PERFMONКод:
CAP_NET_ADMINКод:
BPF_PROG_TYPE_SOCKET_FILTERКод:
/proc/sys/kernel/unprivileged_bpf_disabledДля полноценного eBPF evasion атакующему нужен root. И тут в игру вступают уязвимости повышения привилегий. В sudo до версии 1.9.17p1 опция Код:
--chrootКод:
/etc/nsswitch.confКод:
--chrootКод:
CHROOT=*Код:
pr0v3rbs/CVE-2025-32463_chwootЦепочка для пентестера: непривилегированный доступ (при наличии sudo с --chroot в sudoers) → эксплуатация CVE-2025-32463 → root → загрузка eBPF-программы для ослепления EDR → выполнение основной задачи. Из актуального стоит отметить CVE-2025-31161 в CrushFTP (CVSS 9.8 CRITICAL, CWE-305) - authentication bypass через race condition в AWS4-HMAC авторизации, EPSS 0.8621 (Top 1%). CISA включила эту уязвимость в каталог KEV (актуально эксплуатируется в дикой среде, добавлена 2025-04-07) с пометкой об использовании в ransomware-кампаниях. Практический сценарий: пентест Linux с обходом защиты хоста Требования к окружению
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше Получить доступ просто — достаточно проявить активность на форуме 📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше Получить доступ просто — достаточно проявить активность на форуме Обнаружение eBPF rootkit и защита Linux-хостов Этот раздел - для blue team и для пентестеров, которые пишут рекомендации по итогам engagement'а. Первое, что нужно проверять - загруженные eBPF-программы и их привязки к сетевым интерфейсам: Bash: Код:
bpftool prog showКод:
bpftool prog showКод:
bpftoolИменно поэтому одного мониторинга недостаточно. По данным windshock.github.io, наиболее эффективна комбинация двух инструментов. Tracee (Aqua Security) работает как камера наблюдения - записывает аномальные eBPF-события в реальном времени. Сам он основан на eBPF и отслеживает загрузку новых программ. LKRG (Linux Kernel Runtime Guard) работает как решётка на окне - активно мониторит целостность структур ядра и предотвращает модификации syscall table, подмену callback'ов и DKOM (Direct Kernel Object Manipulation, техника Rootkit - T1014, Defense Evasion по MITRE ATT&CK). Tracee без LKRG - записывает, но не блокирует. LKRG без Tracee - блокирует, но не оставляет forensic-следа. Оба вместе дают и детектирование, и предотвращение. Дополнительные меры для Linux endpoint detection evasion prevention:
На engagement'ах с Falco или Tracee на целевых Linux-хостах - какие kprobes и tracepoints вы видите через Код:
bpftool prog showКод:
type: kprobeКод:
type: tracepointКод:
io_uring_submitКод:
__io_submit_sqeКод:
ruleКод:
condition |
| Время: 06:51 |