
Linux-Kernel-Integritätsmonitor zur Erkennung von Syscall-Hooking
ksentinel überwacht kritische Kernel-Funktionen und die Syscall-Tabelle auf nicht autorisierte Änderungen. Es erkennt häufige Syscalls, die von den meisten Rootkits angegriffen werden, darunter ftrace-Hooks, kprobes und Syscall-Table-Hijacking.
HINWEIS: ksentinel befindet sich in der ersten Version; weitere Verbesserungen werden in zukünftigen Commits folgen.
VFS-Schicht:
Netzwerkstack:
Berechtigungen:
Modulsystem:
Tracing-Infrastruktur:
Plus über 500 zusätzliche Syscall-Wrapper durch Präfixvergleich.
make
Während der Kompilierung wird ein zufälliger 32-stelliger Entsperrschlüssel generiert und angezeigt. Notieren Sie ihn sofort. Dieser Schlüssel ist im kompilierten Modul eingebettet und wird nicht extern gespeichert.
Bewahren Sie ihn sicher auf, falls der Anti-Entlade-Schutz aktiviert ist.
sudo make install
Das Modul lädt versteckt vor lsmod mit standardmäßig aktiviertem Anti-Entlade-Schutz.
sudo insmod ksentinel.ko
sudo ./ksentinel-manager.sh load # load module
sudo ./ksentinel-manager.sh status # check status
sudo ./ksentinel-manager.sh watch # monitor live
sudo ./ksentinel-manager.sh violations # view alerts
dmesg -wT | grep ksentinel
Wenn der Anti-Entlade-Schutz aktiviert ist, muss das Modul vor der Entfernung entsperrt werden:
echo "your_32char_key" > /proc/.ksctl
Oder verwenden Sie den Manager:
sudo ./ksentinel-manager.sh unlock
sudo rmmod ksentinel
Beispiel mit benutzerdefinierten Parametern:
sudo insmod ksentinel.ko period_ms=5000 anti_unload=false
ksentinel führt periodische Integritätsprüfungen basierend auf dem period_ms-Parameter durch.
Niedrigere Intervalle bieten schnellere Erkennung, erhöhen aber die CPU-Auslastung. Das Standardintervall (2000ms) hat minimale Auswirkungen auf moderne Systeme.
ksentinel: [CHANGE - HOOK PATTERN] sys_getdents64 @ 0xffffffff81234567
baseline=1234567890abcdef current=fedcba0987654321
bytes: e9 ab cd ef 12 90 90 90 ...
flags: JMP/CALL_DETECTED ENDBR64_PREFIX
ksentinel: [SCT HOOK] syscall[78] expected=0xffffffff81111111 got=0xffffffffa0222222 (fake_getdents+0x0)
ksentinel: [LSTAR TAMPERED] baseline=0xffffffff81800000 now=0xffffffffa0300000 (evil_syscall_entry+0x0)
ksentinel kann Änderungen erkennen, die von folgenden Rootkits vorgenommen wurden:
Die Erkennung hängt davon ab, dass ksentinel vor dem Rootkit geladen wird.
Kernel-Konfiguration:
Unterstützte Kernel:
Überprüfen Sie die Kernel-Konfiguration:
grep -E "KALLSYMS|KPROBES" /boot/config-$(uname -r)
Das Modul ist mit Anti-Entlade-Schutz versteckt. Entsperren Sie es zuerst:
sudo ./ksentinel-manager.sh unlock
make clean # clean build artifacts
make # compile module
make install # load module
make uninstall # unload module
Beiträge sind willkommen. Halten Sie den Codestil ein und fügen Sie Tests für neue Funktionen hinzu.
GPL-2.0-only
Dieses Programm ist freie Software, lizenziert unter der GPL Version 2.0. Alle Änderungen müssen die Namensnennung des ursprünglichen Autors beibehalten und unter derselben Lizenz verbreitet werden.
Siehe LICENSE-Datei für die vollständigen Bedingungen.
MatheuZSecurity
Rootkit-Forscher-Community: https://discord.gg/66N5ZQppU7
Dieses Tool dient der Sicherheitsforschung und Systemadministration. Verwenden Sie es verantwortungsbewusst. Der Autor übernimmt keine Haftung für Missbrauch oder Schäden, die durch diese Software verursacht werden.
| Parameter | Type | Default | Description |
|---|
| period_ms | uint | 2000 | Integritätsprüfintervall in Millisekunden |
| sym_prefixes | string | "sys_,x64_sys,do_sys,ksys_" | Komma-getrennte Symbolpräfixe zur Überwachung |
| extra_syms | string | "" | Zusätzliche spezifische Symbole zur Überwachung |
| anti_unload | bool | true | Anti-Entlade-Schutz aktivieren |