80+ готовых к production правил, срабатывающих на реальные угрозы — persistence, defense evasion, privesc, lateral movement, exfiltration и impact. Минимум ложных срабатываний с учётом контекста процессов. Исходный код доступен.
Алерт на создание ransom note, переименование файлов в encrypted-расширения (LockBit, Akira, Cl0p и 30+ других), массовое переименование и команды уничтожения бэкапов.
delete_module, kexec_load и kexec_file_load из неожиданных родителей — выгрузка rootkit, live-замена ядра и Diamorphine-style анти-форензика.
Процесс в контейнере монтирует диск (mount /dev/sda1 /mnt) или иерархию cgroup v1, release_agent которой ядро хоста запускает от root (CVE-2022-0492) — побег привилегированного контейнера на хост.
AF_ALG-сокет привязан к AEAD authencesn, которым пользуется только IPsec в ядре, — примитив Copy Fail (CVE-2026-31431) для записи в кэш страниц файла, который процесс может только читать.
Setuid- или setgid-программа выполняет код, отличный от её файла на диске: кэш страниц изменили без записи в файл (Copy Fail, Dirty Pipe), чтобы получить root, а проверка целостности файлов этого не видит.
Алерт на создание, изменение или link файлов PAM (/etc/pam.d/*, .../security/*.so) не-пакетным менеджером — persistence с обходом аутентификации.
Алерт на создание или изменение sshd_config (или sshd_config.d/*) не-пакетным менеджером и не-средством конфигурации.
Алерт на создание или изменение конфигурации bootloader, EFI или initramfs процессом вне bootloader/kernel-package allowlist.
Алерт на изменение или удаление utmp/wtmp/btmp/lastlog процессом вне login-stack allowlist — скрытие сессий.
Алерт на удаление канонических логов под /var/log не-logrotate процессом или cmdline truncation, нацеленной на /var/log/.
Алерт, когда ProcessSignal нацелен на агент SecureExec с terminating-сигналом (SIGKILL, SIGTERM, …) — попытка отключить телеметрию.
Алерт на exec pkexec с пустым argv — точная сигнатура PwnKit / CVE-2021-4034 local root exploitation.
Алерт на destructive disk-wipe/format cmdline для block devices: dd of=/dev/..., shred, mkfs.*, wipefs --all, blkdiscard. Provisioning contexts в allowlist.
Алерт, когда один процесс удаляет ≥5 различных файлов под /var/log/ за 10 секунд — bulk log destruction / уничтожение улик.
Указатель cred задачи равен глобальному init_cred ядра на момент execve — отпечаток LPE, перезаписавшего учётные данные задачи. Легитимный процесс всегда держит подготовленную копию, а не сам init_cred.
Процесс имеет UID 0 на момент execve без setuid-root бинарника и без setuid-syscall, а его родитель зафиксирован как не-root — отпечаток эксплойта ядра, вызвавшего commit_creds(&init_cred).
Ядро (kthreadd/kworker) запускает программу не из числа известных usermodehelper из системного каталога — форма перезаписи modprobe_path / core_pattern или payload эксплойта через call_usermodehelper (ksmbd, netfilter).
Детект смены UID на root из не-root процессов через setuid/setreuid, с исключением известных privilege-separation бинарников (например, sshd).
Алерт на загрузку модулей ядра процессами, кроме известных инструментов (insmod, modprobe, kmod).
Ловит shell-процессы (bash, sh, zsh, dash, ksh), устанавливающие исходящие сетевые соединения — техника #1 пост-эксплуатации.
Детект использования memfd_create — основного вектора fileless malware, выполняемого полностью из памяти.
Детект кросс-процессной записи в память через process_vm_writev — используется инструментами инъекции для записи shellcode.
Алерт на запись в /etc/passwd, /etc/shadow, /etc/hosts, /etc/ld.so.preload и другие файлы, которые атакующие изменяют для закрепления или эскалации привилегий.
Алерт на создание cron-задач в /etc/cron.* и /var/spool/cron/ не-системными процессами.
Алерт на запись в любой файл .ssh/authorized_keys процессами, кроме ssh-copy-id.
Детект записи в /etc/sudoers или /etc/sudoers.d/ процессами, кроме visudo.
Алерт при создании нового .service-файла в /etc/systemd/system/ неожиданным процессом.
Алерт на успешный SSH-вход после 3+ неудачных попыток с того же IP в течение 10 минут.
Алерт при сбоях sanity-check BPF ABI: несовпадение offset, отсутствующие tracepoint или недоступный tracefs/BTF — покрытие детекции может быть ненадёжным.
Детект процессов, запущенных с непустой переменной LD_PRELOAD — распространённая техника перехвата системных вызовов.
Флагирует подозрительные вызовы unshare/setns с флагами user, PID или mount namespace от неожиданных процессов.
Алерт, когда downloader (curl/wget/python/…) подключается к публичному IP с литералом IP в cmdline — сильный индикатор C2/dropper без DNS.
Загрузчик (curl/wget/python/…) соединяется с публичным IP, который хост не резолвил через DNS, — адрес из конфига, переменной окружения или кода программы, как дроппер или C2-маяк ходит на зашитый адрес. Соседнее правило c2_direct_ip_egress ловит IP в командной строке.
Алерт, когда неожиданный процесс выставляет execute-биты на файл в /tmp, /var/tmp или /dev/shm — классическая стадия dropper.
Алерт при создании, изменении, rename или link файла в каталоге системных бинарников/библиотек — binary-swap или library-hijack.
Детектирует имена процессов майнеров, stratum-паттерны в командных строках, порты майнинг-пулов и DNS-запросы к известным пулам.
Чтение /etc/shadow, SSH-ключей, облачных секретов, токенов реестров пакетов и GitHub (~/.npmrc, ~/.pypirc, ~/.cargo, gh, gcloud, az, terraform, vault), логинов ИИ-ассистентов и токенов их MCP-серверов (Claude Code, Codex, Gemini, Copilot) процессом, которому они не принадлежат, — то, что собирают вредоносные install-скрипты пакетов npm и PyPI.
Открытие /proc/kcore, /proc/kallsyms, /proc/<pid>/mem, /dev/mem или /dev/kmem не-root или неожиданным процессом — используется для дампа символов ядра и обхода KASLR.
Сильный сигнал подготовки reverse-shell: dup2(socket, 0|1|2) от shell-подобного процесса или setsid + ioctl(TIOCSCTTY) от bash/sh/socat/ncat — срабатывает ещё до connect().
Запись в опасные sysctl: kernel.yama.ptrace_scope, kernel.kptr_restrict, kernel.modules_disabled, kernel.unprivileged_bpf_disabled, net.ipv4.ip_forward — атакующие ослабляют их перед инъекциями и pivoting.
prctl(PR_SET_NAME) переименование процесса в kernel threads ([kworker], [ksoftirqd], [migration]) или системные демоны (systemd-*, dbus-daemon, sshd), когда бинарник лежит в /tmp, /var/tmp, /dev/shm, /home.
Вызов pivot_root вне известных container-runtime (runc, containerd, crun, docker-init, kubelet) — классический примитив побега из mount-неймспейса.
bpf(BPF_PROG_LOAD) от кого угодно, кроме systemd, runc при создании контейнера и агента SecureExec — eBPF-руткиты (VoidLink, ebpfkit, TripleCross), перехватывающие системные вызовы, чтобы прятать процессы и файлы.
Монтирование поверх каталога процесса в /proc (mount --bind /tmp/empty /proc/<pid>) — процесс продолжает работать, но ps, top и мониторинг, читающие /proc, его больше не видят.
Корневая файловая система хоста примонтирована в контейнер (docker run -v /:/host, hostPath-том /) — любой процесс в нём читает ключи хоста и меняет его cron-задачи, юниты и бинарники.
Процесс отобразил или переключил память одновременно на запись и исполнение (RWX-mmap или mprotect, делающий страницу исполняемой) — почерк внедрения кода в память или подготовки шелл-кода — вне языковых рантаймов, чей JIT делает это штатно.
setxattr/fsetxattr пишет security.capability в файл под /tmp, /var/tmp, /dev/shm или /home — даёт root-эквивалентные права (CAP_SYS_ADMIN, CAP_DAC_READ_SEARCH) без setuid.
Алерт на создание или изменение общесистемных shell init файлов (/etc/profile, /etc/bash.bashrc, /etc/profile.d/*) не-пакетным менеджером.
Алерт на изменение файлов NSS/DNS (/etc/nsswitch.conf, /etc/resolv.conf, /etc/hosts) процессом вне сетевого стека allowlist.
Алерт на создание или изменение конфигурации репозиториев/ключей пакетного менеджера — supply-chain persistence.
Алерт на изменение загрузочных / логин-скриптов (/etc/rc.local, /etc/rc.d/, /etc/init.d/, /etc/update-motd.d/, хуки диспетчеров NetworkManager и networkd, скрипты сессии X11) процессом вне allowlist пакетного менеджера / систем управления конфигурацией.
Алерт на создание, изменение или удаление конфигурации/правил auditd процессом вне auditd/pkg-manager allowlist.
Алерт на команды сброса или отключения firewall (iptables -F, nft flush ruleset, ufw disable) — defense evasion. Сбросы container chain в allowlist.
Алерт при установке SUID/SGID через chmod в user-writable каталоге (/tmp, /home/*, /dev/shm) — staging для privilege escalation.
Алерт на каноничные GTFOBins SUID-escape cmdline: find -exec /bin/sh, awk 'BEGIN{system(...)}', vim -c '!sh', python os.system(...).
Алерт, когда useradd/adduser/usermod/gpasswd добавляет пользователя в привилегированную группу (sudo, wheel, docker, lxd, adm) или создаёт вторую учётную запись с UID 0 — устойчивое повышение привилегий и закрепление через манипуляцию учётными записями.
Алерт, когда web-сервер (nginx, apache2, php-fpm, tomcat, gunicorn, …) напрямую порождает shell или интерпретатор — классический web shell.
Алерт, когда неожиданный процесс подключается к metadata service (169.254.169.254) или резолвит metadata.google.internal — кража IAM-токенов.
Алерт на exec ssh/autossh с -R (remote port forward) или -D (dynamic SOCKS) — pivot / reverse-tunnel через SSH.
Агрегирует DNS-запросы: алерт на burst длинных QNAME или высокоэнтропийных меток — характерно для dnscat2, iodine и DNS-exfil.
Коррелирует создание архива в /tmp/ с исходящим connect на публичный IP из того же process tree за 120 секунд — smash-and-grab exfiltration.
Гипервизор (QEMU, Firecracker, cloud-hypervisor) запускает что-либо кроме своих сетевых хелперов — активность после побега из ВМ — или сам запущен из пользовательского каталога, ВМ, скрытая от хоста (в стиле CRON#TRAP).
Инфраструктурный демон (smbd, ceph-*, libvirtd, rpc.*, vsftpd, …) порождает shell или интерпретатор — payload в стиле web-shell от эксплуатации сервиса, например SambaCry (CVE-2017-7494).
Процесс, создавший непривилегированный user namespace, затем вызывает примитив побега из ядра (perf_event_open, userfaultfd, AF_VSOCK, TCP_ULP) — тело цепочки userns-LPE / побега из контейнера.
Детектирует команды остановки или отключения auditd — типичный шаг атакующего для снижения покрытия детекции.
Алерт на setenforce 0 или запись permissive/disabled режима в /etc/selinux/config.
Флагирует sudo-вызовы для установки SUID-битов, chmod 777 или записи в чувствительные системные пути.
Флагирует новые или изменённые файлы udev rules, записанные процессами, кроме udevadm или известных пакетных менеджеров.
Stateful-детекция повторных SSH-ошибок с одного IP во временном окне, с cooldown для предотвращения флуда алертов.
Алерт, когда агент сообщает о новых дропах событий в ring buffer eBPF — возможная потеря видимости на нагруженном хосте.
Алерт, когда не-сетевые процессы устанавливают исходящие соединения на известные сервисные порты (22, 25, 53, 80, 443, 3306, 5432).
Создание AF_PACKET / SOCK_RAW сокетов или включение PACKET_MR_PROMISC процессами, кроме tcpdump, dhclient, NetworkManager и других allowlisted инструментов.
io_uring_setup от процесса, кроме известных пользователей (MariaDB, QEMU) — через io_uring чтение, запись и соединения идут мимо системных вызовов, которые отслеживают средства мониторинга, как в руткитах вроде Curing.
5+ неудачных вводов пароля sudo от одного пользователя за 60 секунд — локальный privilege escalation или украденные креды.
Алерт на создание файлов в /var/spool/at/ процессом, отличным от at/atd/batch — отложенное выполнение через планировщик `at`.
Алерт на удаление history-файлов (.bash_history, .zsh_history, …) или cmdline очистки history (history -c, HISTFILE=/dev/null, truncate ~/.bash_history).
Алерт на `chattr +i` или `+a` на чувствительных путях (/etc/, /root/.ssh/, /home/, /var/log/) — блокировка удаления backdoor.
Алерт, когда один хост инициирует ≥50 исходящих connect на разные порты одной /24 за 30 секунд — network-service discovery.
Хотите увидеть, как эти правила срабатывают на реальном Linux-хосте?