
Moniteur d'intégrité du noyau Linux pour détecter le hooking d'appels système
ksentinel surveille les fonctions critiques du noyau et la table des appels système pour détecter les modifications non autorisées. Il détecte les appels système courants ciblés par la plupart des rootkits, y compris les hooks ftrace, les kprobes et le détournement de la table des appels système.
NOTE : ksentinel est dans sa version initiale ; d'autres améliorations arriveront dans les prochains commits.
Couche VFS :
Pile réseau :
Identifiants :
Système de modules :
Infrastructure de traçage :
Plus de 500 wrappers d'appels système supplémentaires via correspondance de préfixe.
make
Pendant la compilation, une clé de déverrouillage aléatoire de 32 caractères est générée et affichée. Notez-la immédiatement. Cette clé est intégrée au module compilé et n'est pas stockée en externe.
Conservez-la en lieu sûr si la protection anti-déchargement est activée.
sudo make install
Le module se charge caché de lsmod avec la protection anti-déchargement activée par défaut.
sudo insmod ksentinel.ko
sudo ./ksentinel-manager.sh load # charger le module
sudo ./ksentinel-manager.sh status # vérifier l'état
sudo ./ksentinel-manager.sh watch # surveiller en direct
sudo ./ksentinel-manager.sh violations # voir les alertes
dmesg -wT | grep ksentinel
Lorsque l'anti-déchargement est activé, le module doit être déverrouillé avant d'être retiré :
echo "votre_clé_32_caractères" > /proc/.ksctl
Ou via le gestionnaire :
sudo ./ksentinel-manager.sh unlock
sudo rmmod ksentinel
Exemple avec des paramètres personnalisés :
sudo insmod ksentinel.ko period_ms=5000 anti_unload=false
ksentinel effectue des vérifications d'intégrité périodiques basées sur le paramètre period_ms.
Des intervalles plus bas offrent une détection plus rapide mais augmentent l'utilisation du CPU. L'intervalle par défaut (2000 ms) a un impact minimal sur les systèmes modernes.
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 peut détecter les modifications apportées par :
La détection dépend du chargement de ksentinel avant le rootkit.
Configuration du noyau :
Noyaux supportés :
Vérifiez la configuration du noyau :
grep -E "KALLSYMS|KPROBES" /boot/config-$(uname -r)
Le module est caché avec une protection anti-déchargement. Déverrouillez d'abord :
sudo ./ksentinel-manager.sh unlock
make clean # nettoyer les artefacts de compilation
make # compiler le module
make install # charger le module
make uninstall # décharger le module
Les contributions sont les bienvenues. Maintenez le style de code et ajoutez des tests pour les nouvelles fonctionnalités.
GPL-2.0-only
Ce programme est un logiciel libre sous licence GPL version 2.0. Toute modification doit conserver l'attribution à l'auteur original et être distribuée sous la même licence.
Consultez le fichier LICENSE pour les termes complets.
MatheuZSecurity
Communauté des chercheurs en rootkits : https://discord.gg/66N5ZQppU7
Cet outil est destiné à la recherche en sécurité et à l'administration système. Utilisez-le de manière responsable. L'auteur n'est pas responsable de l'utilisation abusive ou des dommages causés par ce logiciel.
| Paramètre | Type | Défaut | Description |
|---|
| period_ms | uint | 2000 | Intervalle de vérification d'intégrité en millisecondes |
| sym_prefixes | string | "sys_,x64_sys,do_sys,ksys_" | Préfixes de symboles à surveiller (séparés par des virgules) |
| extra_syms | string | "" | Symboles spécifiques supplémentaires à surveiller |
| anti_unload | bool | true | Activer la protection anti-déchargement |