
Herramienta de detección de persistencia en Linux basada en Bash para investigaciones DFIR. Escanea más de 15 mecanismos de persistencia (systemd, cron, módulos del kernel, SSH, contenedores) con puntuación de confianza y genera informes CSV/JSONL para análisis forense.
Una herramienta integral de detección de persistencia en Linux para investigaciones de Informática Forense y Respuesta a Incidentes (DFIR).
Persistnux es una herramienta basada en Bash diseñada para identificar mecanismos de persistencia conocidos en Linux utilizados por atacantes para mantener el acceso a sistemas comprometidos. Realiza comprobaciones exhaustivas en el sistema y genera informes detallados en formato CSV y JSONL para su posterior análisis.
.service) en /etc/systemd/system, /lib/systemd/system, /usr/lib/systemd/system/etc/crontab, /etc/cron.d/*)/etc/cron.{daily,hourly,weekly,monthly})/etc/cron.allow y /etc/cron.deny: se marcan entradas que referencian usuarios inexistentes/etc/profile, /etc/bash.bashrc, /etc/zshrc)/etc/profile.d/*).bashrc, .bash_profile, .zshrc, .profile, etc.)/etc/rc.local y variantes/etc/init.d)/etc/rc*.d)/etc/ld.so.preload): cada biblioteca listada se verifica mediante el gestor de paquetes/etc/ld.so.conf, /etc/ld.so.conf.d/): se escanea la integridad de los archivos de configuración y se verifican los archivos .so en rutas no estándar/etc/environment: el archivo de entorno se marca como ALTO; las rutas de bibliotecas referenciadas se verifican (no gestionadas/modificadas → CRÍTICO)/etc/modprobe.d/, /etc/modprobe.conf): integridad del archivo; se analizan las directivas install en busca de objetivos de comando sospechosos; el blacklist de módulos de seguridad (apparmor, selinux, seccomp) se marca como ALTO/etc/modules, /etc/modules-load.d/): integridad de la configuración; los nombres de módulos referenciados se resuelven a archivos .ko mediante modinfo y se verificanlsmod): enumeración y verificación de integridad.config/autostart, /etc/xdg/autostart): se escanean todos los directorios de usuario cuando se ejecuta como root/etc/environment): se verifican las rutas de bibliotecas LD_PRELOAD/LD_LIBRARY_PATH/etc/sudoers, /etc/sudoers.d/): patrones NOPASSWD/ALL → ALTO.so se verifican mediante el gestor de paquetes; se siguen las directivas @include; se incluye /etc/pam.confpam_exec.so: scripts faltantes/sospechosos → CRÍTICOpam_python.so / pam_perl.so: el script se extrae y analizapam_script.so en /etc/security/pam_env.conf y ~/.pam_environment/etc/security//etc/update-motd.d/): verificación del paquete; modificado → CRÍTICO~/.ssh/authorized_keys por usuario: claves modificadas recientemente marcadas; se analiza el contenido de la opción command= en busca de patrones sospechosos~/.ssh/rc por usuario: presencia marcada como MEDIA; contenido sospechoso/shell inversa → ALTO/CRÍTICOdpkg -V en Debian/Ubuntu, rpm -Va en RHEL/CentOS)/usr/bin, /usr/sbin, /bin, /sbin → hallazgo CRÍTICO/lib/security → hallazgo CRÍTICOinit= en GRUB (/etc/default/grub, /etc/default/grub.d/*.cfg)/pre-pivot que escriben en /sysroot/etc/shadow/etc/initramfs-tools/scripts/ y /hooks//boot/initrd.img-* modificadas recientemente (basado en mtime).pkla con ResultAny/ResultInactive/ResultActive=yes incondicionalesunix-user:*).rules con polkit.Result.YES incondicional (Polkit basado en JavaScript >= 0.106)Exec= (/usr/share/dbus-1/system-services/)allow own="*" o send_destination="*"/etc/NetworkManager/dispatcher.d/)RUN+= que ejecutan comandos o scripts arbitrarios (/etc/udev/rules.d/, /lib/udev/rules.d/)/run/udev/rules.d/at/cron en RUN+= (evasión común de restricciones de primer plano)--privileged, --pid=host)docker.sock en contenedores (control total del host a través de la API de Docker)nsenter -t 1 en puntos de entrada de contenedores o Dockerfiles