60+ готовых к 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 анти-форензика.
Алерт на создание, изменение или 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 / уничтожение улик.
Детект смены 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.
Алерт, когда неожиданный процесс выставляет execute-биты на файл в /tmp, /var/tmp или /dev/shm — классическая стадия dropper.
Алерт при создании, изменении, rename или link файла в каталоге системных бинарников/библиотек — binary-swap или library-hijack.
Детектирует имена процессов майнеров, stratum-паттерны в командных строках, порты майнинг-пулов и DNS-запросы к известным пулам.
Чтение /etc/shadow, SSH host keys, ~/.aws/credentials, ~/.kube/config, ~/.docker/config.json и других хранилищ секретов процессами вне allowlist (исключены sshd, sudo, login, пакетные менеджеры).
Открытие /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-неймспейса.
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.
Детектирует команды остановки или отключения 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 инструментов.
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-хосте?