Was macht Analyse von Linux-Kernel-Rootkits?
Überblick
Linux-Kernel-Rootkits operieren auf Ring 0 und manipulieren Kernel-Datenstrukturen, um Prozesse, Dateien, Netzwerkverbindungen und Kernel-Module vor Benutzerraum-Tools zu verstecken. Die Erkennung erfordert entweder Arbeitsspeicherforensik (Analyse von physischen Arbeitsspeicherauszügen mit Volatility3) oder Cross-View-Analyse (Vergleich von /proc, /sys und Kernel-Datenstrukturen auf Inkonsistenzen). Diese Skill-Anleitung behandelt den Einsatz von Volatility3 Linux-Plugins zur Erkennung von Syscall-Table-Hooks, versteckten Kernel-Modulen und modifizierten Funktionszeigern, ergänzt durch Live-System-Scans mit rkhunter und chkrootkit.
Wann verwenden
- Bei der Untersuchung von Sicherheitsvorfällen, die die Analyse von Linux-Kernel-Rootkits erfordern
- Beim Erstellen von Erkennungsregeln oder Threat-Hunting-Abfragen für diese Domäne
- Wenn SOC-Analysten strukturierte Verfahren für diesen Analysetyp benötigen
- Bei der Validierung der Sicherheitsüberwachungsabdeckung für verwandte Angriffstechniken
Voraussetzungen
- Volatility3 installiert (
pip install volatility3) - Linux-Arbeitsspeicherauszug (erfasst via LiME, AVML oder /proc/kcore)
- Volatility3 Linux-Symboltabelle (ISF), die zur Ziel-Kernel-Version passt
- rkhunter und chkrootkit für Live-System-Scans
- Referenz-Bekannt-gut-Kernel-Image zum Vergleich
Schritte
Schritt 1: Arbeitsspeicherauszug erfassen
Erfassen Sie den physischen Linux-Arbeitsspeicher mit dem LiME-Kernel-Modul oder AVML für Cloud-Instanzen.
Schritt 2: Mit Volatility3 analysieren
Führen Sie die Plugins linux.check_syscall, linux.lsmod, linux.hidden_modules und linux.check_idt aus, um Rootkit-Artefakte zu erkennen.
Schritt 3: Cross-View-Analyse
Vergleichen Sie die Modullisten aus /proc/modules, lsmod und /sys/module, um Module zu identifizieren, die in einer Ansicht versteckt sind, in einer anderen jedoch vorhanden.
Schritt 4: Live-System-Scan
Führen Sie rkhunter und chkrootkit aus, um bekannte Rootkit-Signaturen, verdächtige Dateien und modifizierte Systembinärdateien zu erkennen.
Erwartete Ausgabe
JSON-Bericht mit erkannten Syscall-Hooks, versteckten Kernel-Modulen, modifizierten IDT-Einträgen, verdächtigen /proc-Diskrepanzen und rkhunter-Ergebnissen.
Beispielausgabe
$ sudo python3 rootkit_analyzer.py --memory /evidence/linux-mem.lime --profile Ubuntu2204
Linux Kernel Rootkit Analysis Report
=====================================
Memory Image: /evidence/linux-mem.lime
Kernel Version: 5.15.0-91-generic (Ubuntu 22.04 LTS)
Analysis Time: 2024-01-18 09:15:32 UTC
[+] Scanning syscall table for hooks...
Syscall Table Base: 0xffffffff82200300
Total syscalls checked: 449
HOOKED SYSCALLS DETECTED:
┌─────────┬──────────────────┬──────────────────────┬──────────────────────┐
│ NR │ Syscall │ Expected Address │ Current Address │
├─────────┼──────────────────┼──────────────────────┼──────────────────────┤
│ 0 │ sys_read │ 0xffffffff8139a0e0 │ 0xffffffffc0a12000 │
│ 2 │ sys_open │ 0xffffffff8139b340 │ 0xffffffffc0a12180 │
│ 78 │ sys_getdents64 │ 0xffffffff813f5210 │ 0xffffffffc0a12300 │
│ 62 │ sys_kill │ 0xffffffff8110c4a0 │ 0xffffffffc0a12480 │
└─────────┴──────────────────┴──────────────────────┴──────────────────────┘
WARNING: 4 syscall hooks detected - rootkit behavior confirmed
[+] Checking for hidden kernel modules...
Loaded modules (lsmod): 147
Modules in kobject list: 149
HIDDEN MODULES:
- "netfilter_helper" at 0xffffffffc0a10000 (size: 12288)
- "kworker_sched" at 0xffffffffc0a14000 (size: 8192)
[+] Scanning /proc for discrepancies...
Processes in task_struct list: 234
Processes visible in /proc: 231
HIDDEN PROCESSES:
- PID 31337 cmd: "[kworker/0:3]" (disguised as kernel thread)
- PID 31442 cmd: "rsyslogd" (fake, real rsyslogd is PID 892)
- PID 31500 cmd: "" (unnamed process)
[+] Checking IDT entries...
IDT entries scanned: 256
Modified entries: 0 (clean)
[+] Running rkhunter scan...
Checking for known rootkits: 68 variants checked
Diamorphine rootkit: WARNING - signatures match
System binary checks:
/usr/bin/ps: MODIFIED (SHA-256 mismatch)
/usr/bin/netstat: MODIFIED (SHA-256 mismatch)
/usr/bin/ls: MODIFIED (SHA-256 mismatch)
/usr/sbin/ss: OK
[+] Network analysis...
Hidden connections (not in /proc/net/tcp):
ESTABLISHED 0.0.0.0:0 -> 198.51.100.47:4443 (PID 31337)
ESTABLISHED 0.0.0.0:0 -> 198.51.100.47:8080 (PID 31442)
Summary:
Rootkit Type: Loadable Kernel Module (LKM)
Probable Family: Diamorphine variant
Syscall Hooks: 4 (read, open, getdents64, kill)
Hidden Modules: 2
Hidden Processes: 3
Hidden Connections: 2 (C2: 198.51.100.47)
Modified Binaries: 3 (/usr/bin/ps, netstat, ls)
Risk Level: CRITICAL