
Инструмент обнаружения персистентности в Linux на Bash для расследований DFIR. Сканирует 15+ механизмов персистентности (systemd, cron, модули ядра, SSH, контейнеры) с оценкой достоверности и генерирует CSV/JSONL отчеты для криминалистического анализа.
Комплексный инструмент обнаружения механизмов сохранения доступа (persistence) в Linux для расследований в области цифровой криминалистики и реагирования на инциденты (DFIR).
Persistnux — это инструмент на Bash, предназначенный для выявления известных механизмов сохранения доступа в Linux, используемых злоумышленниками для поддержания контроля над скомпрометированными системами. Он выполняет всесторонние проверки системы и генерирует подробные отчёты в форматах CSV и JSONL для дальнейшего анализа.
.service) в /etc/systemd/system, /lib/systemd/system, /usr/lib/systemd/system/etc/crontab, /etc/cron.d/*)/etc/cron.{daily,hourly,weekly,monthly})/etc/cron.allow и /etc/cron.deny — записи, ссылающиеся на несуществующих пользователей, помечаются/etc/profile, /etc/bash.bashrc, /etc/zshrc)/etc/profile.d/*).bashrc, .bash_profile, .zshrc, .profile и т. д.)/etc/rc.local и его варианты/etc/init.d)/etc/rc*.d)/etc/ld.so.preload) — каждая указанная библиотека проверяется через менеджер пакетов/etc/ld.so.conf, /etc/ld.so.conf.d/) — проверка целостности conf-файлов и сканирование .so-файлов в нестандартных путях/etc/environment LD_PRELOAD/LD_LIBRARY_PATH — помечается как HIGH; указанные пути библиотек проверяются (неуправляемые/изменённые → CRITICAL)/etc/modprobe.d/, /etc/modprobe.conf) — целостность файлов; анализ директив install на предмет подозрительных целей команд; blacklist модулей безопасности (apparmor, selinux, seccomp) помечается как HIGH/etc/modules, /etc/modules-load.d/) — целостность конфигураций; имена модулей разрешаются в .ko-файлы через modinfo и проверяютсяlsmod) — перечисление и проверка целостности.config/autostart, /etc/xdg/autostart) — при работе от root сканируются все домашние каталоги пользователей/etc/environment) — проверка путей библиотек LD_PRELOAD/LD_LIBRARY_PATH/etc/sudoers, /etc/sudoers.d/) — шаблоны NOPASSWD/ALL → HIGH.so проверяются через менеджер пакетов; обрабатываются директивы @include; включается /etc/pam.confpam_exec.so — отсутствующие/подозрительные скрипты → CRITICALpam_python.so / pam_perl.so — скрипт извлекается и анализируетсяpam_script.so в /etc/security/pam_env.conf и ~/.pam_environment/etc/security//etc/update-motd.d/) — проверка пакета; изменённые → CRITICAL~/.ssh/authorized_keys — недавно изменённые ключи помечаются; анализируется содержимое опции command= на предмет подозрительных шаблонов~/.ssh/rc — наличие помечается как MEDIUM; подозрительное содержимое/обратная оболочка → HIGH/CRITICALdpkg -V на Debian/Ubuntu, rpm -Va на RHEL/CentOS)/usr/bin, /usr/sbin, /bin, /sbin → CRITICAL/lib/security → CRITICALinit= в GRUB (/etc/default/grub, /etc/default/grub.d/*.cfg)/pre-pivot, записывающими в /sysroot/etc/shadow/etc/initramfs-tools/scripts/ и /hooks//boot/initrd.img-* (по mtime).pkla с безусловными ResultAny/ResultInactive/ResultActive=yesunix-user:*).rules с безусловным polkit.Result.YES (Polkit на JavaScript, версия >= 0.106)Exec= (/usr/share/dbus-1/system-services/)allow own="*" или send_destination="*"/etc/NetworkManager/dispatcher.d/)RUN+=, выполняющие произвольные команды или скрипты (/etc/udev/rules.d/, /lib/udev/rules.d/)/run/udev/rules.d/at/cron в RUN+= (распространённый обход ограничений на выполнение в фоновом режиме)--privileged, --pid=host)docker.sock внутрь контейнеров (полный контроль над хостом через Docker API)nsenter -t 1 в точках входа контейнеров или Dockerfilegetcap — cap_setuid+ep на GTFOBins → CRITICAL.original, .old, .bak, .real) с скриптами-обёртками/etc/passwd/etc/passwdauthorized_keys SSH