
Python-CLI/TUI für die forensische Triage von Ubuntu-Systemen — erkennt und behebt Persistenzmechanismen mit Artefakterfassung, Zeitachsenkorrelation und Wazuh-Integration.
Forensische Triage für laufende Ubuntu-Systeme — automatisierte Artefakterfassung, Persistenzerkennung und geführte Behebung in unter 5 Sekunden.
Wenn Sie vermuten, dass ein Linux-System kompromittiert wurde, werden die ersten 30-40 Minuten üblicherweise damit verbracht, dieselben zehn Befehle nacheinander auszuführen: laufende Prozesse prüfen, nach seltsamen Cron-Jobs suchen, nach LD_PRELOAD greppen, authorized_keys auf neue Einträge scannen, sudoers auditieren. Jeder Schritt ist manuell, erfordert Kontextwechsel und ist unter Druck fehleranfällig. Verpassen Sie eine Quelle — etwa /etc/sudoers.d/ statt nur /etc/sudoers, oder Benutzer-Crontabs zusätzlich zu /etc/cron.d/ — und Sie haben ein unvollständiges Bild.
Bestehende Optionen lösen dies nicht sauber. lynis ist ein Härtungs-Auditor, kein Triage-Tool — es meldet Konfigurationsschwächen auf einem sauberen System und erzeugt Rauschen auf einem kompromittierten. chkrootkit und rkhunter prüfen auf bekannte Rootkit-Signaturen, sind aber blind für neuartige Persistenztechniken wie missbrauchte systemd-Timer oder legitim aussehende Cron-Einträge. Generische SIEM-Abfragen erfordern eine Log-Infrastruktur, die auf dem betrachteten System möglicherweise nicht existiert. Und Forensik-Suiten wie Volatility zielen auf Speicherabbilder ab, nicht auf eine Live-Shell auf einem laufenden Host.
Die Lücke ist ein Tool, das jetzt gerade auf dem laufenden System läuft, die gängigsten Persistenzvektoren abdeckt, Aktivitäten über Log-Quellen hinweg zu einer Timeline korreliert und Ihnen genau sagt, was Sie sich ansehen müssen — ohne einen externen Agenten, eine Datenbank oder eine Internetverbindung zu benötigen.
ubuntils läuft in vier aufeinanderfolgenden Phasen:
/proc, Cron-Tabellen, systemd-Units, SSH-Schlüsseln, sudoers-Dateien, Umgebungsdefinitionen, Paketintegrität (dpkg --verify), PAM/NSS-Konfiguration und geladenen Kernelmodulen. Dauert auf einem typischen System etwa 2,5 Sekunden.--rules geladenen benutzerdefinierten Regeln — über die gesammelten Artefakte aus und erzeugt in etwa einer Sekunde eine priorisierte, mit Konfidenzwerten versehene Befundliste.--json).ubuntils selbst führt keine Netzwerkaufrufe durch, und jede Funktion — benutzerdefinierte Regeln und Korrelation eingeschlossen — läuft gegen lokal gesammelte Artefakte. Die einzige Möglichkeit, wie Befunde den Host verlassen können, ist die Wazuh-Integration: Wenn ein Wazuh-Agent installiert ist, schreibt ein Live-scan seine Befunde in eine lokale Datei, die der Agent dann an seinen Manager übermittelt. Übergeben Sie --no-wazuh, um das für einen Lauf abzuschalten.
ubuntils scan ist durch alles Folgende unverändert — es ist weiterhin 100 % live, Single-Host, und jeder bestehende Flag funktioniert identisch. Zwei zusätzliche Befehle, collect und analyze, teilen dieselbe Erkennungs-/Timeline-Pipeline in einen offline-freundlichen Acquire-then-Analyze-Workflow für Fälle auf, in denen Sie die Erkennung nicht direkt auf dem untersuchten Host ausführen können (oder wollen) — siehe Offline-Analyse: collect und analyze unten, einschließlich der Einschränkungen zur Erkennungsabdeckung.
Ubuntu 22.04+ und jedes System mit PEP 668 (empfohlen):
Ubuntu 22.04+ blockiert systemweites pip install. Verwenden Sie pipx — es handhabt die Umgebung transparent, sodass Sie nie darüber nachdenken müssen:```bash
sudo apt install pipx -y
cd ubuntils
pipx install -e .
ubuntils scan
**Ältere Systeme / manuelle Installation:**```bash
git clone https://github.com/asmitdesai/ubuntils.git
cd ubuntils
pip install -r requirements.txt -e .
ubuntils scan
ubuntils benötigt Root-Rechte für den vollständigen Zugriff auf Artefakte. Wenn du ubuntils scan als Nicht-Root-Benutzer ausführst, ruft es sich automatisch selbst mit sudo unter Verwendung desselben Python-Interpreters (über absoluten Pfad) erneut auf, sodass die korrekte Umgebung verwendet wird, ohne deinen PATH an den Root-Prozess weiterzugeben. Jeder externe Befehl (ss, dpkg, systemctl, …) wird über einen festen, root-eigenen Suchpfad aufgelöst, niemals über deinen PATH. Wenn du ohne Root ausgeführt wirst, werden /etc/shadow, einige /proc-Einträge und geschützte Cron-Dateien übersprungen, und für jede wird eine Warnung protokolliert.
Nur Erkennung — interaktive TUI:```bash sudo ubuntils scan
**Erkennung mit JSON-Ausgabe in Datei gespeichert:**```bash
sudo ubuntils scan --json > /tmp/triage-$(hostname)-$(date +%Y%m%d).json
Erkennung mit CLI-Behebungsvorschau (Probelauf — keine Änderungen vorgenommen):```bash sudo ubuntils scan --remediate
**Erkennung mit CLI-Behebung angewendet:**```bash
sudo ubuntils scan --remediate --confirm
Druckversion:```bash ubuntils version
**Ein manipulationssicheres Bundle für spätere oder Offline-Analysen erfassen:**```bash
sudo ubuntils collect --output /path/to/bundle.tar.gz
Analysiere ein zuvor gesammeltes Bundle (keine Root-Rechte erforderlich):```bash ubuntils analyze /path/to/bundle.tar.gz --json
**Analysieren Sie ein gemountetes forensisches Image oder einen extrahierten Dateisystembaum anstelle eines Bundles:**```bash
ubuntils analyze --root /mnt/forensic-image --json
Siehe Offline-Analyse: Sammeln und Analysieren für das Bundle-Format und – wichtig – was die Offline-Analyse im Vergleich zu einem Live-scan nicht erkennen kann.
ubuntils scan [OPTIONS] --json Output JSON to stdout instead of launching the TUI --output FILE Write the JSON report to FILE (implies --json) --remediate Run the remediation engine after detection --confirm Required with --remediate to actually apply changes (else dry-run) --min-confidence N Only auto-remediate findings with confidence >= N (default 40) --no-wazuh Never forward findings to a local Wazuh agent --config FILE YAML allowlist of findings to suppress (see below) --baseline FILE YAML baseline of environment-specific known-good fingerprints to suppress (see below) --since TIME Limit the timeline to events since TIME (e.g. '24h', '7d', '2026-05-20') --rules FILE YAML file of custom detection rules to add (see below) --verbose Verbose structlog output