
Persistnux — Updated!
Bash-basiertes Linux-Persistenzerkennungstool für DFIR-Untersuchungen. Scannt 15+ Persistenzmechanismen (systemd, cron, Kernel-Module, SSH, Container) mit Konfidenz-Bewertung und erstellt CSV-/JSONL-Berichte für die forensische Analyse.
Persistnux
Ein umfassendes Tool zur Erkennung von Linux-Persistenzmechanismen für Digital Forensics und Incident Response (DFIR)-Untersuchungen.
Übersicht
Persistnux ist ein Bash-basiertes Tool, das darauf ausgelegt ist, bekannte Linux-Persistenzmechanismen zu identifizieren, die von Angreifern genutzt werden, um den Zugriff auf kompromittierte Systeme aufrechtzuerhalten. Es führt umfassende Prüfungen im gesamten System durch und erstellt detaillierte Berichte im CSV- und JSONL-Format für die weitere Analyse.
Funktionen
- Umfassende Erkennung: Deckt alle wichtigen Linux-Persistenzmechanismen ab
- Live-Analyse: Läuft direkt auf Live-Systemen mit minimalen Abhängigkeiten
- Detaillierte Ausgabe: Erzeugt CSV- und JSONL-Berichte mit Datei-Hashes, Metadaten und Konfidenzwerten
- Root und Non-Root: Funktioniert mit oder ohne Root-Rechte (mit eingeschränktem Umfang für Nicht-Root)
- DFIR-bereit: Ausgabeformate kompatibel mit gängigen DFIR-Tools und Arbeitsabläufen
- Verdachtsscore: Automatische Konfidenzbewertung (NIEDRIG, MITTEL, HOCH, KRITISCH) basierend auf Indikatoren
- False-Positive-Reduzierung: Integration des Paketmanagers und Whitelisting bekannter, gutartiger Dienste
- Zeitbasierte Analyse: Kürzlich geänderte Dateien erhalten höhere Konfidenzwerte
- Mustererkennung: Erkennt Reverse Shells, Download-und-Ausführen-Muster, Verschleierungstechniken
Erkannte Persistenzmechanismen
1. Systemd-Dienste
- Servicedateien (
.service) in/etc/systemd/system,/lib/systemd/system,/usr/lib/systemd/system - Benutzerebene-Systemd-Dienste
- Filtert deaktivierte Dienste und Dienste ohne ExecStart heraus
- Erkennt verdächtige ExecStart-Befehle
- Überprüft die Paketintegrität ausgeführter Binärdateien/Skripte
2. Cron-Jobs & geplante Aufgaben
- System-Crontabs (
/etc/crontab,/etc/cron.d/*) - Periodische Ausführungsverzeichnisse (
/etc/cron.{daily,hourly,weekly,monthly}) - Benutzer-Crontabs für alle Benutzer (Root-Modus)
- At-Jobs
- Verdächtige Befehlsmuster in geplanten Aufgaben
/etc/cron.allowund/etc/cron.denyACL-Dateien – Einträge, die auf nicht existierende Benutzer verweisen, werden markiert
3. Shell-Profile & RC-Dateien
- Systemweite Profile (
/etc/profile,/etc/bash.bashrc,/etc/zshrc) - Profile.d-Skripte (
/etc/profile.d/*) - Benutzerprofile (
.bashrc,.bash_profile,.zshrc,.profileusw.) - Fish-Shell-Konfigurationen
- Erkennt bösartige Befehle in Profildateien
4. Init-Skripte & RC.local
/etc/rc.localund Varianten- SysV-Init-Skripte (
/etc/init.d) - Runlevel-Skripte (
/etc/rc*.d) - Erkennt verdächtige Download/Ausführungsbefehle
5. Kernelmodule & Library Preloading
- LD_PRELOAD-Konfigurationen (
/etc/ld.so.preload) – jede aufgeführte Bibliothek wird über den Paketmanager verifiziert - Dynamische Linker-Konfigurationen (
/etc/ld.so.conf,/etc/ld.so.conf.d/) – Konfigurationsdateiintegrität + nicht standardmäßige Pfad-.so-Dateien werden gescannt und verifiziert /etc/environmentLD_PRELOAD/LD_LIBRARY_PATH – Umgebungsdatei wird als HOCH markiert; referenzierte Bibliothekspfade werden verifiziert (unverwaltet/modifiziert → KRITISCH)- Kernelmodul-Parameter (
/etc/modprobe.d/,/etc/modprobe.conf) – Dateiintegrität;install-Direktiven werden auf verdächtige Befehlsziele analysiert;blacklistvon Sicherheitsmodulen (AppArmor, SELinux, seccomp) wird als HOCH markiert - Kernelmodul-Autoload-Konfigurationen (
/etc/modules,/etc/modules-load.d/) – Konfigurationsintegrität; referenzierte Modulnamen werden übermodinfozu.ko-Dateien aufgelöst und verifiziert - Geladene Kernelmodule (
lsmod) – Aufzählung und Integritätsprüfung
6. Zusätzliche Mechanismen
- XDG-Autostart-Einträge (
.config/autostart,/etc/xdg/autostart) – alle Benutzerverzeichnisse werden im Root-Modus gescannt - System-Umgebungsdateien (
/etc/environment) – LD_PRELOAD/LD_LIBRARY_PATH-Bibliothekspfade werden verifiziert - Sudoers-Konfigurationen und Drop-Ins (
/etc/sudoers,/etc/sudoers.d/) – NOPASSWD/ALL-Muster → HOCH - PAM (Pluggable Authentication Modules):
- Alle
.so-Module werden über den Paketmanager verifiziert;@include-Direktiven werden verfolgt;/etc/pam.confwird einbezogen pam_exec.so-Skriptanalyse – fehlende/verdächtige Skripte → KRITISCHpam_python.so/pam_perl.so-Relay-Erkennung – Skript wird extrahiert und analysiertpam_script.so-Hook-Dateierkennung in/etc/security/- Konfigurationsdateienintegrität – modifizierte paketbesitzende PAM-Konfigurationen → KRITISCH
pam_env.confund~/.pam_environmentLD_PRELOAD-Bibliotheksverifizierung/etc/security/allgemeiner Scan
- Alle
- MOTD-Skripte (
/etc/update-motd.d/) – Paketüberprüfung; modifiziert → KRITISCH - Git-Credential-Helper und core.pager-Einstellungen – Inhaltsanalyse für alle Benutzer
- Web-Shells in gängigen Web-Verzeichnissen
8. SSH-Persistenz
- Benutzerspezifische
~/.ssh/authorized_keys– kürzlich geänderte Schlüssel werden markiert; Inhalt dercommand=-Option auf verdächtige Muster analysiert - Benutzerspezifische
~/.ssh/rc– Vorhandensein wird als MITTEL markiert; verdächtiger/Reverse-Shell-Inhalt → HOCH/KRITISCH
9. Binary Hijacking
- Überprüft installierte System-Binärdateien gegen die Paketdatenbank (
dpkg -Vauf Debian/Ubuntu,rpm -Vaauf RHEL/CentOS) - Modifizierte Dateien in
/usr/bin,/usr/sbin,/bin,/sbin→ KRITISCHER Fund - Modifizierte PAM-Module in
/lib/security→ KRITISCHER Fund - Conffiles (dpkg-Konfigurationsdateien) werden ausgeschlossen, um False Positives zu vermeiden
10. Bootloader & Initramfs
- GRUB
init=Kernel-Parameter-Injection (/etc/default/grub,/etc/default/grub.d/*.cfg) - Root-Level abgelegte Init-Skripte unter
/ - Dracut-Initramfs-Module mit
pre-pivot-Hooks, die in/sysroot/etc/shadowschreiben - Ubuntu Initramfs-Tools-Hook-Skripte in
/etc/initramfs-tools/scripts/und/hooks/ - Kürzlich modifizierte
/boot/initrd.img-*-Images (mtime-basiert)
11. Polkit (PolicyKit)-Manipulation
.pkla-Dateien mit bedingungslosenResultAny/ResultInactive/ResultActive=yes- Wildcard-Identität (
unix-user:*)-Gewährungen .rules-Dateien mit bedingungslosempolkit.Result.YES(JavaScript-basiertes Polkit >= 0.106)
12. D-Bus & NetworkManager
- Bösartige D-Bus-Systemdienst-
Exec=-Registrierung (/usr/share/dbus-1/system-services/) - D-Bus-Richtlinien-Wildcard
allow own="*"odersend_destination="*"-Direktiven - NetworkManager-Dispatcher-Skripte (
/etc/NetworkManager/dispatcher.d/)
13. Udev-Regeln
- Udev
RUN+=-Direktiven, die beliebige Befehle oder Skripte ausführen (/etc/udev/rules.d/,/lib/udev/rules.d/) - Zur Laufzeit injizierte Regeln in
/run/udev/rules.d/ at/cron-Delegierungsmuster inRUN+=(häufige Umgehung von Vordergrundbeschränkungen)
14. Container Escape
- Privilegierte Docker-Container (
--privileged,--pid=host) docker.sock-Bind-Mounts in Container (vollständige Host-Kontrolle über Docker-API)nsenter -t 1in Container-Entrypoints oder Dockerfiles- Dockerfiles in benutzerbeschreibbaren Verzeichnissen, die Escape-Techniken enthalten
15. Erweiterte Binär- & Privilegienprüfungen
- Aktiver SUID/SGID-Dateisystem-Scan über Systemverzeichnisse hinweg
- Dateifähigkeits-Scan über
getcap–cap_setuid+epauf GTFOBins → KRITISCH - Binary Hijacking: umbenannte Originale (
.original,.old,.bak,.real) mit Wrapper-Skripten - Nicht-Root-Konten mit UID 0 in
/etc/passwd - Shell-Verschleierung durch nachgestellte Leerzeichen im Shell-Feld von
/etc/passwd - Systemkonten (UID 1-999) mit SSH
authorized_keys-Dateien
Installation
# Repository klonen
git clone https://github.com/yourusername/persistnux.git
cd persistnux
# Skript ausführbar machen
chmod +x persistnux.sh